<?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>The Inquisitive Coder - Davy Brion&#039;s Blog &#187; Opinions</title> <atom:link href="http://davybrion.com/blog/category/opinions/feed/" rel="self" type="application/rss+xml" /><link>http://davybrion.com/blog</link> <description>inquisitive: adjective. given to inquiry, research, or asking questions; eager for knowledge; intellectually curious</description> <lastBuildDate>Mon, 14 May 2012 21:08:36 +0000</lastBuildDate> <language>en</language> <sy:updatePeriod>hourly</sy:updatePeriod> <sy:updateFrequency>1</sy:updateFrequency> <generator>http://wordpress.org/?v=3.3.2</generator> <item><title>It&#8217;s Not About The Number Of Hours You Put In</title><link>http://davybrion.com/blog/2012/04/its-not-about-the-number-of-hours-you-put-in/</link> <comments>http://davybrion.com/blog/2012/04/its-not-about-the-number-of-hours-you-put-in/#comments</comments> <pubDate>Thu, 19 Apr 2012 19:35:18 +0000</pubDate> <dc:creator>Davy Brion</dc:creator> <category><![CDATA[Opinions]]></category> <category><![CDATA[work/career]]></category><guid
isPermaLink="false">http://davybrion.com/blog/?p=3961</guid> <description><![CDATA[There's been a lot of talk on twitter about the 501 Manifesto. Be sure to read it if you haven't, because it's got some very good points, though I don't like the dig at people who contribute to open source since these people are having an ever increasing positive impact on our jobs. Anyways, the [...]]]></description> <content:encoded><![CDATA[<p>There's been a lot of talk on twitter about the <a
href="http://501manifesto.org/">501 Manifesto</a>. Be sure to read it if you haven't, because it's got some very good points, though I don't like the dig at people who contribute to open source since these people are having an ever increasing positive impact on our jobs. Anyways, the manifesto is about being a software developer without being defined by it. I actually think it's a healthy point of view.</p><p>I've always disagreed with this seemingly popular point of view or opinion that every developer should spend a lot of time outside of his/her working hours blogging or publishing their code on Github or contributing to open source. Those activities <em>can</em> be important but aren't necessarily so and the people doing them aren't inherently more valuable or important than developers who choose not to contribute to open source software or who don't feel the need to make a name for themselves. I also disagree with the notions that developers who are only involved with software development during their 8 working hours a day must be inferior or that they can't be passionate about it or that they'll never be great at it or any of that other crap that you'll sometimes hear people say.</p><p>I know some great developers who put their code out there and/or their thoughts by blogging. I also know some bad developers who put their code out there and/or their thoughts by blogging. I know some great developers who aren't involved with software development outside their working hours. I also know some bad developers who aren't involved with software development outside their working hours. There are good and bad developers on both sides of every situation you can come up with.</p><p>I think it depends a lot on what people do <em>during their 8 working hours</em>. Can we really say that developers who work 8 hours a day on challenging projects with strong co-workers in teams where knowledge is passed around continuously are missing out on anything if they don't really spend any other time on software development outside of work? That just doesn't make a lot of sense to me. If I look back on my own career so far, I've typically been rather passive outside of working hours in periods where I felt like I was working on cool things, where I was challenged, where I was learning a lot on the job. Conversely, I've always been much more involved with software development outside of work when I was working on things during working hours that I didn't find challenging or interesting or where I wasn't learning anything new. I'm guessing that this holds true for a lot of people, though certainly not all.</p><p>Of course, if you're not working on interesting things or continuously learning and improving on the job, it's your own responsibility to make sure that your skills and insights stay up to date. You don't <em>have</em> to put in the effort to do that, but if you don't, you don't really have a reason to complain either when you're not happy with the kind of work that you're doing. Your employer is not responsible for your career and your future, you are.</p><p>And if you are working on interesting things and continuously learning and improving on the job, you don't need to pressure yourself to do more outside of your working hours because certain people in the community say you should. A lot of people get involved with blogging and open source with the hope that it'll end up leading to more interesting work in the long term. Who knows, you might just be a step ahead of them already.</p><div
class="bottomcontainerBox" style=""><div
style="float:left; width:85px;padding-right:10px; margin:4px 4px 4px 4px;height:30px;"> <iframe
src="http://www.facebook.com/plugins/like.php?href=http%3A%2F%2Fdavybrion.com%2Fblog%2F2012%2F04%2Fits-not-about-the-number-of-hours-you-put-in%2F&amp;layout=button_count&amp;show_faces=false&amp;width=85&amp;action=like&amp;font=verdana&amp;colorscheme=light&amp;height=21" scrolling="no" frameborder="0" allowTransparency="true" style="border:none; overflow:hidden; width:85px; height:21px;"></iframe></div><div
style="float:left; width:80px;padding-right:10px; margin:4px 4px 4px 4px;height:30px;"> <g:plusone size="medium" href="http://davybrion.com/blog/2012/04/its-not-about-the-number-of-hours-you-put-in/"></g:plusone></div><div
style="float:left; width:95px;padding-right:10px; margin:4px 4px 4px 4px;height:30px;"> <a
href="http://twitter.com/share" class="twitter-share-button" data-url="http://davybrion.com/blog/2012/04/its-not-about-the-number-of-hours-you-put-in/"  data-text="It&#8217;s Not About The Number Of Hours You Put In" data-count="horizontal" data-via="davybrion"></a></div><div
style="float:left; width:105px;padding-right:10px; margin:4px 4px 4px 4px;height:30px;"><script type="in/share" data-url="http://davybrion.com/blog/2012/04/its-not-about-the-number-of-hours-you-put-in/" data-counter="right"></script></div><div
style="float:left; width:85px;padding-right:10px; margin:4px 4px 4px 4px;height:30px;"><script src="http://www.stumbleupon.com/hostedbadge.php?s=1&amp;r=http://davybrion.com/blog/2012/04/its-not-about-the-number-of-hours-you-put-in/"></script></div></div><div
style="clear:both"></div><div
style="padding-bottom:4px;"></div>]]></content:encoded> <wfw:commentRss>http://davybrion.com/blog/2012/04/its-not-about-the-number-of-hours-you-put-in/feed/</wfw:commentRss> <slash:comments>8</slash:comments> </item> <item><title>Most Valuable Professionals? Give Me A Break.</title><link>http://davybrion.com/blog/2012/04/most-valuable-professionals-give-me-a-break/</link> <comments>http://davybrion.com/blog/2012/04/most-valuable-professionals-give-me-a-break/#comments</comments> <pubDate>Sun, 15 Apr 2012 18:11:49 +0000</pubDate> <dc:creator>Davy Brion</dc:creator> <category><![CDATA[Opinions]]></category> <category><![CDATA[Rants]]></category> <category><![CDATA[work/career]]></category><guid
isPermaLink="false">http://davybrion.com/blog/?p=3950</guid> <description><![CDATA[I've always been very skeptical of Microsoft's MVP award. Officially, Microsoft's MVP award stands for Most Valuable Professional, but its true meaning is probably closer to Most Valuable Promoter. The quality and integrity of the MVP's you know is probably dependent on the region in which you work. I work in Belgium, and over here [...]]]></description> <content:encoded><![CDATA[<p>I've always been very skeptical of Microsoft's MVP award. Officially, Microsoft's MVP award stands for Most Valuable Professional, but its true meaning is probably closer to Most Valuable Promoter. The quality and integrity of the MVP's you know is probably dependent on the region in which you work. I work in Belgium, and over here the MVP program is, in my opinion, a joke. I'm going to discuss why I think it's a joke but keep in mind that this will depend on your region. I know that there are indeed great MVP's out there who do have professional integrity and true real world experience in some regions, but I certainly wouldn't be surprised if the state of the MVP program in Belgium occurs in other regions as well.</p><p>First of all, let's take a look at an image that Microsoft uses on its <a
href="http://mvp.support.microsoft.com/">MVP page</a>:</p><p><img
src="http://davybrion.com/mvp.png" alt="MVP image" /></p><p>"Independent Experts. Real world Answers."</p><p>This is indeed what the MVP program <em>should</em> be about. It is however the exact opposite of what I and many others in Belgium have experienced. Let's cover the words in those 2 sentences a bit more in-depth.</p><h3>Independent</h3><p>Most of the .NET MVP's in Belgium work for a handful of companies that happen to be big sponsors of every important Microsoft event in Belgium. Now, could it be possible that the best .NET developers in Belgium all work for these handful of companies? I highly doubt it. I know a lot of great developers in Belgium and none of them work for these companies. And I'm quite sure that none of those people are less valuable or knowledgeable than any of those MVP's. In my experience, there is hardly anything independent about the Belgian .NET MVP's. Most of them got their first MVP award while they were employed by sponsors or 'strategic partners' of Microsoft. Most of them tout the latest and greatest Microsoft technologies, pretty much unquestioned, even if it means contradicting their statements and positions when they were promoting the technology that Microsoft wanted them to promote 3 or 4 years ago. And they're never openly critical of anything Microsoft-related out of fear that it will negatively impact their chances of being renewed as an MVP. They may not work for Microsoft, but they are anything but independent of Microsoft.</p><h3>Experts</h3><p>This is a tough one. What makes one an expert? In some fields, people are considered to be experts based on the amount of research they've done. In other fields, people are considered to be experts based on what they've actually done. I don't think I'm going out on a limb here by saying that in the field of software development, what you've done <em>should</em> be more important than what you've researched or read about. In my opinion, an expert in a specific technology should have built at least one, and ideally more than one, non-trivial system using the technology in question and should be able to tell you about mistakes they've made, things you should avoid, and should never use examples that promote bad practices. I rarely hear MVP's talk about things you should avoid. I rarely hear MVP's talk about mistakes they've learned from. I routinely see examples from MVP's that make me cringe. I routinely hear MVP's promote technologies even though they haven't actually built anything impressive with it. I think of a lot of words when I see examples or proposed solutions by MVP's, but the word 'expert' unfortunately isn't one of them. This also applies to the Microsoft Extended Experts Team by the way. I can only question the validity of such a team if it contains people who are listed as experts of a particular technology when I happen to know for a fact that some of those people have never even used the technology they're supposed to be an expert in in a real world project. Let's be honest here: most of the MVP's and the MEET members simply aren't experts. They are people who have a strong interest in a particular (or more) technology and do their best to promote said technology. There's nothing wrong with that at all, but there's a huge difference between that and being an expert in something.</p><h3>Real world answers</h3><p>This one cracks me up the most because most of the Belgian MVP's hardly work on real world projects. And when they do, they typically work on "multiple projects" as they like to say it. For anyone who's ever worked on multiple projects at the same time: could you honestly say that your contributions were truly valuable to the end result? Let me put it differently: don't we all know that people generally produce the best results when they don't have to juggle too many things at once and can focus on as few things as possible? You will rarely hear about a Belgian MVP working full time on a non-trivial real-world project. A lot of them get to spend a certain number of paid hours each week on 'community work', which means blogging, writing articles for magazines, creating presentations for events, etc. When they're not working on that, you'll often find them talking on Twitter about pretty much anything but interesting or demanding work. And of course, their employers will occasionally send them to clients for a bit of consulting here or there, or to do a product demo. Unless these guys are putting in 60 to 80 hours a week (which I seriously doubt), I'm having trouble figuring out when exactly they do the kind of interesting work on real world projects that would enable them to provide answers based on real world experience.</p><p>It also doesn't help that I've frequently heard rather unflattering stories about these MVP's from people who've worked with them. It's pretty much always the same: they're not invested into the project, they spend too much time 'interacting with the community' and if you let them go near important parts of the code base, bad things usually happen. Now, I'm not the type of person who simply believes everything he hears. In fact, when it comes to matters like these, I generally only believe the stories I hear from people of whom I'm truly sure that they know what they're talking about. And if you've been reading this blog for a while, you'll know I'm rather critical and that I set the bar rather high when it comes to that.</p><p>Lastly, my personal working experience with MVP's has been abysmal as well. I once worked for a client where we had to get rid of 2 people because of how bad they performed in real world circumstances. One of them was an MVP at the time, and now works at Microsoft as an Evangelist. The other wasn't an MVP at the time, but has been one for a few years now and is even one of the Regional Directors of this region. A few years later, I had drinks with a manager of the company they both worked for and he bluntly admitted that both of them are useless on real projects but that their MVP status was a huge benefit to the company from a marketing and image perspective. Not exactly the image or branding I'd be looking to put out there, but hey, to each his own.</p><h3>Why On Earth Did I Write This?</h3><p>For 2 reasons. I think this whole MVP thing sets a bad example to young and impressionable developers who aren't sure what to focus on to advance their careers. To outsiders, these MVP's sure look like they've got a great thing going and it's easy to see how that could impress people who don't know better. There are already quite a few developers who suck up to these MVP's in the hopes of someday getting to 'that level' as well. I'd much rather see these people put effort into learning about concepts that will last them a long time and building skills that are transferable to multiple technologies instead of sucking up to the wrong people, and trying to network their way to more interesting work because the work that results from that is truly mediocre at best. By all means, try to make a name for yourself by blogging and speaking publicly. But do yourself a favor and stay true to yourself and favor quality over quantity when considering the audience you want to target. Hey, it worked for me <img
src='http://d18sni7re4ly7f.cloudfront.net/blog/wp-includes/images/smilies/icon_smile.gif' alt=':)' class='wp-smiley' /></p><p>The second reason is because this whole MVP thing is, in my opinion at least, offensive to the many dedicated professionals who give their all at their jobs as they work on real projects that matter, as they try to mentor younger developers in their workplace, as they try to optimize the way they develop software not only for themselves, but for their teammates and their employers or clients. These are your true <em>valuable professionals</em>.</p><p>I'm sure I'm gonna get a lot of flak for this post, but honestly, it won't really make any difference to me. The people who'll be offended are people I'd rather not work with anyway. And of course, I feel quite confident that I'll rarely, if ever, have to deal with these people in a professional setting since I'm primarily interested in interesting and demanding work <img
src='http://d18sni7re4ly7f.cloudfront.net/blog/wp-includes/images/smilies/icon_smile.gif' alt=':)' class='wp-smiley' /></p><div
class="bottomcontainerBox" style=""><div
style="float:left; width:85px;padding-right:10px; margin:4px 4px 4px 4px;height:30px;"> <iframe
src="http://www.facebook.com/plugins/like.php?href=http%3A%2F%2Fdavybrion.com%2Fblog%2F2012%2F04%2Fmost-valuable-professionals-give-me-a-break%2F&amp;layout=button_count&amp;show_faces=false&amp;width=85&amp;action=like&amp;font=verdana&amp;colorscheme=light&amp;height=21" scrolling="no" frameborder="0" allowTransparency="true" style="border:none; overflow:hidden; width:85px; height:21px;"></iframe></div><div
style="float:left; width:80px;padding-right:10px; margin:4px 4px 4px 4px;height:30px;"> <g:plusone size="medium" href="http://davybrion.com/blog/2012/04/most-valuable-professionals-give-me-a-break/"></g:plusone></div><div
style="float:left; width:95px;padding-right:10px; margin:4px 4px 4px 4px;height:30px;"> <a
href="http://twitter.com/share" class="twitter-share-button" data-url="http://davybrion.com/blog/2012/04/most-valuable-professionals-give-me-a-break/"  data-text="Most Valuable Professionals? Give Me A Break." data-count="horizontal" data-via="davybrion"></a></div><div
style="float:left; width:105px;padding-right:10px; margin:4px 4px 4px 4px;height:30px;"><script type="in/share" data-url="http://davybrion.com/blog/2012/04/most-valuable-professionals-give-me-a-break/" data-counter="right"></script></div><div
style="float:left; width:85px;padding-right:10px; margin:4px 4px 4px 4px;height:30px;"><script src="http://www.stumbleupon.com/hostedbadge.php?s=1&amp;r=http://davybrion.com/blog/2012/04/most-valuable-professionals-give-me-a-break/"></script></div></div><div
style="clear:both"></div><div
style="padding-bottom:4px;"></div>]]></content:encoded> <wfw:commentRss>http://davybrion.com/blog/2012/04/most-valuable-professionals-give-me-a-break/feed/</wfw:commentRss> <slash:comments>29</slash:comments> </item> <item><title>Microsoft And Open Source: Hoping For Better Collaboration</title><link>http://davybrion.com/blog/2012/04/microsoft-and-open-source-hoping-for-better-collaboration/</link> <comments>http://davybrion.com/blog/2012/04/microsoft-and-open-source-hoping-for-better-collaboration/#comments</comments> <pubDate>Mon, 09 Apr 2012 14:04:48 +0000</pubDate> <dc:creator>Davy Brion</dc:creator> <category><![CDATA[Opinions]]></category><guid
isPermaLink="false">http://davybrion.com/blog/?p=3944</guid> <description><![CDATA[By now, you've probably all heard that Microsoft is moving to an open development model for ASP.NET MVC and some other ASP.NET projects. Even though the source code of ASP.NET MVC has always been available under an open source license, its development followed a closed development model. This meant that outside contributions weren't possible, nor [...]]]></description> <content:encoded><![CDATA[<p>By now, you've probably all heard that Microsoft is moving to an open development model for ASP.NET MVC and some other ASP.NET projects. Even though the source code of ASP.NET MVC has always been available under an open source license, its development followed a closed development model. This meant that outside contributions weren't possible, nor were we able to follow the actual commits in the MVC source code repository. With the recent announcements, this is no longer the case and I think this is fantastic news. It finally enables collaboration between Microsoft employees and people outside of Microsoft on a strategically important Microsoft product. This is good for Microsoft as well as the open source .NET community.</p><p>I hope that this newfound appreciation for Open Source within Microsoft will lead to another huge improvement in collaborative development in the open source .NET community. While Microsoft is now open to accepting contributions from the community, it would be a tremendous step forward if Microsoft would also contribute to other prominent open source .NET projects in the future. In the past, we've seen numerous open source .NET projects become popular and widely used. And unfortunately, Microsoft responded to some of those projects by producing their own libraries and frameworks that basically do the same thing. Except that, for most of those projects, they never quite matched the quality of the open source projects they were inspired by. If only all of that effort spent on duplicating already existing libraries would've been spent on <em>improving what was already there</em>, the entire .NET community would've been better for it.</p><p>I'd love to see a Microsoft that works <em>with</em> open source developers and encourages them, instead of trying to duplicate their efforts whenever they feel they need to provide their own library or framework for something that's already covered by a superior open source alternative. These duplicated projects only alienate people that at one point were passionate enough about the .NET platform to work on improving it for free, in their spare time. These are the people that Microsoft needs to cherish and nourish instead of competing with them. Microsoft has shown some interesting signs of better understanding of open source development and collaboration in the past year or so. Here's to hoping they take that critical next step as well.</p><div
class="bottomcontainerBox" style=""><div
style="float:left; width:85px;padding-right:10px; margin:4px 4px 4px 4px;height:30px;"> <iframe
src="http://www.facebook.com/plugins/like.php?href=http%3A%2F%2Fdavybrion.com%2Fblog%2F2012%2F04%2Fmicrosoft-and-open-source-hoping-for-better-collaboration%2F&amp;layout=button_count&amp;show_faces=false&amp;width=85&amp;action=like&amp;font=verdana&amp;colorscheme=light&amp;height=21" scrolling="no" frameborder="0" allowTransparency="true" style="border:none; overflow:hidden; width:85px; height:21px;"></iframe></div><div
style="float:left; width:80px;padding-right:10px; margin:4px 4px 4px 4px;height:30px;"> <g:plusone size="medium" href="http://davybrion.com/blog/2012/04/microsoft-and-open-source-hoping-for-better-collaboration/"></g:plusone></div><div
style="float:left; width:95px;padding-right:10px; margin:4px 4px 4px 4px;height:30px;"> <a
href="http://twitter.com/share" class="twitter-share-button" data-url="http://davybrion.com/blog/2012/04/microsoft-and-open-source-hoping-for-better-collaboration/"  data-text="Microsoft And Open Source: Hoping For Better Collaboration" data-count="horizontal" data-via="davybrion"></a></div><div
style="float:left; width:105px;padding-right:10px; margin:4px 4px 4px 4px;height:30px;"><script type="in/share" data-url="http://davybrion.com/blog/2012/04/microsoft-and-open-source-hoping-for-better-collaboration/" data-counter="right"></script></div><div
style="float:left; width:85px;padding-right:10px; margin:4px 4px 4px 4px;height:30px;"><script src="http://www.stumbleupon.com/hostedbadge.php?s=1&amp;r=http://davybrion.com/blog/2012/04/microsoft-and-open-source-hoping-for-better-collaboration/"></script></div></div><div
style="clear:both"></div><div
style="padding-bottom:4px;"></div>]]></content:encoded> <wfw:commentRss>http://davybrion.com/blog/2012/04/microsoft-and-open-source-hoping-for-better-collaboration/feed/</wfw:commentRss> <slash:comments>4</slash:comments> </item> <item><title>Thoughts On Learning New Things</title><link>http://davybrion.com/blog/2012/03/thoughts-on-learning-new-things/</link> <comments>http://davybrion.com/blog/2012/03/thoughts-on-learning-new-things/#comments</comments> <pubDate>Sun, 11 Mar 2012 20:22:23 +0000</pubDate> <dc:creator>Davy Brion</dc:creator> <category><![CDATA[Opinions]]></category> <category><![CDATA[work/career]]></category><guid
isPermaLink="false">http://davybrion.com/blog/?p=3933</guid> <description><![CDATA[Jef Claes published an interesting post about his preferred way of learning new things. There's one part in the post that I don't entirely agree with: I like to believe learning should be a hands-on activity as well. Basically, stop consuming, start producing. Don't get me wrong, I do think there is value in reading [...]]]></description> <content:encoded><![CDATA[<p>Jef Claes published an <a
href="http://jclaes.blogspot.com/2012/03/learning-hacker-way.html">interesting post</a> about his preferred way of learning new things. There's one part in the post that I don't entirely agree with:</p><blockquote><p>I like to believe learning should be a hands-on activity as well. Basically, stop consuming, start producing. Don't get me wrong, I do think there is value in reading blog posts (I might be slightly biased on this one), reading books and watching videos, but I find that this value is marginal compared to what you gain by actually doing it.</p></blockquote><p>Hands-on activity (producing) is certainly a very important part of any learning process, but I wouldn't go as far saying that the value of reading books/blogs (consuming) is marginal compared to that of producing. In fact, I believe their value to be pretty equal. I've seen too many people who start producing simple things, and then think they've got a pretty good grasp of the technology they're using and then move on to producing more complex or bigger things without actually knowing enough of the technology they're using to support the more complex or bigger scenarios. The results certainly aren't always pretty and I'm sure each and every one of you has seen this scenario unfold with at least one developer you know. Probably more than that even.</p><p>I think in a lot of cases, people start the producing phase perhaps a bit too early and then in their enthusiasm of seeing things working sort of skip the more boring consuming that could've benefitted them a lot. Once you've started producing, you <em>need</em> to keep consuming regularly. A tremendously valuable part of any learning experience is getting feedback and insight from minds that have more experience with a given subject than yours. If you're lucky, you can get this from your coworkers. If you're not that lucky, you'll need to find other sources and books, blogs, videos, user group meetings, etc can be a great way to fill that void. And even if you do get to learn a lot from your coworkers, it <em>never</em> hurts to learn more from the experiences of others outside of your immediate circle, if only because their situations and constraints will differ from yours as well.</p><p>The other very important part about consuming is really getting to know the technology you're trying to learn. I've always found it very important to at least get an idea of how things work internally within a technology that I'm using. You certainly don't need to know all of the implementation details but just having an idea of it can really help you avoid a lot of problems once you need to use a technology in a more advanced way than in your initial experiments. Most importantly, it should give you better insights as to whether you're using the technology <em>properly</em>, which unfortunately isn't always the same as getting something working. And as a bonus, you'll probably learn about features you won't immediately need but knowing that they're there can save quite a bit of time and effort later on. Just imagine the improvement of the signal-to-noise ratios that you'd see on mailinglists, forums, and StackOverflow if everyone took the time to get a better grasp of the technologies they're using.</p><p>When I start with learning new libraries or frameworks, I usually start off by reading most (and often, all) of the official documentation of the technology before I even get into building something myself. If I want to learn a new programming language I'll look for the most recommended books for that language and buy one (or more, if I wasn't satisfied with the first one). I won't even start using the language until I've gone through the book. Once I feel like I've got a pretty good theoretical grasp of the technology, I start building something with it. I also start looking for good blogs on the technology and subscribe to them. I'll also start following influential people of the technology on Twitter. And I just continuously try to soak up as much knowledge as I can from people who're doing more impressive things with the technology than I am. At first, you might not understand everything they're talking about but after a while, things just start clicking and you're getting a really good grasp of things. None of this is a substitute for learning from producing, but it certainly is an incredible addition to it. And one that makes a world of difference, IMO.</p><div
class="bottomcontainerBox" style=""><div
style="float:left; width:85px;padding-right:10px; margin:4px 4px 4px 4px;height:30px;"> <iframe
src="http://www.facebook.com/plugins/like.php?href=http%3A%2F%2Fdavybrion.com%2Fblog%2F2012%2F03%2Fthoughts-on-learning-new-things%2F&amp;layout=button_count&amp;show_faces=false&amp;width=85&amp;action=like&amp;font=verdana&amp;colorscheme=light&amp;height=21" scrolling="no" frameborder="0" allowTransparency="true" style="border:none; overflow:hidden; width:85px; height:21px;"></iframe></div><div
style="float:left; width:80px;padding-right:10px; margin:4px 4px 4px 4px;height:30px;"> <g:plusone size="medium" href="http://davybrion.com/blog/2012/03/thoughts-on-learning-new-things/"></g:plusone></div><div
style="float:left; width:95px;padding-right:10px; margin:4px 4px 4px 4px;height:30px;"> <a
href="http://twitter.com/share" class="twitter-share-button" data-url="http://davybrion.com/blog/2012/03/thoughts-on-learning-new-things/"  data-text="Thoughts On Learning New Things" data-count="horizontal" data-via="davybrion"></a></div><div
style="float:left; width:105px;padding-right:10px; margin:4px 4px 4px 4px;height:30px;"><script type="in/share" data-url="http://davybrion.com/blog/2012/03/thoughts-on-learning-new-things/" data-counter="right"></script></div><div
style="float:left; width:85px;padding-right:10px; margin:4px 4px 4px 4px;height:30px;"><script src="http://www.stumbleupon.com/hostedbadge.php?s=1&amp;r=http://davybrion.com/blog/2012/03/thoughts-on-learning-new-things/"></script></div></div><div
style="clear:both"></div><div
style="padding-bottom:4px;"></div>]]></content:encoded> <wfw:commentRss>http://davybrion.com/blog/2012/03/thoughts-on-learning-new-things/feed/</wfw:commentRss> <slash:comments>8</slash:comments> </item> <item><title>How Do You Pick Open Source Libraries?</title><link>http://davybrion.com/blog/2012/01/how-do-you-pick-open-source-libraries/</link> <comments>http://davybrion.com/blog/2012/01/how-do-you-pick-open-source-libraries/#comments</comments> <pubDate>Mon, 16 Jan 2012 21:15:40 +0000</pubDate> <dc:creator>Davy Brion</dc:creator> <category><![CDATA[Opinions]]></category> <category><![CDATA[Software Development]]></category><guid
isPermaLink="false">http://davybrion.com/blog/?p=3875</guid> <description><![CDATA[I'm currently looking into which library I'm going to use to handle authentication in a breakable toy project. Now, despite it being just a breakable toy, I want to do it with as few constraints on technical quality as possible because I want to maximize the learning experience I'm going to get from it. That [...]]]></description> <content:encoded><![CDATA[<p>I'm currently looking into which library I'm going to use to handle authentication in a breakable toy project. Now, despite it being just a breakable toy, I want to do it with as few constraints on technical quality as possible because I want to maximize the learning experience I'm going to get from it. That means I don't just want to quickly put something together that just works. I want something that works, but that would also hold up in real world scenarios, even though the project will at best only be used by myself. Which means that I'm going to be picky about any libraries that I take a dependency on, just as I would if this were a project that I'd be getting paid to work on.</p><p>So as I was browsing through a few possible alternatives for my authentication needs, I started thinking about my thought process when evaluating libraries/frameworks to use. I generally base my decision on the following items, listed in order of importance (to me):</p><ul><li><strong>How well does it work for my scenario?</strong> If a library satisfies all other items on this list, that certainly doesn't mean it's an automatic lock. How it works and the impact it has on my code is definitely the most important factor.</li><li><strong>Popularity</strong>. I've noticed that I let the number of watchers/forks on sites like Github influence my opinion. If a project has many watchers and many forks, odds are high that there's a relatively large group of happy users as well as people involved with the project. It also increases the odds that the project will be around for a while. Of course, inactive Open Source projects often remain available as well but if nobody's working on it, I'm not exactly tempted to take a dependency on it. Log4net is a notable exception to this, obviously. But when a project has a lot of people interested in it, or better yet, contributing to it, it's a good sign that you'll easily get help if needed, it's only going to get better in the long run and that it might get forked should the original developers stop working on it. As the author of an Open Source project that doesn't have a lot of watchers/forks (<a
href="https://github.com/davybrion/Agatha">Agatha</a>), I'm aware that my point of view on this is rather hypocritical but hey, it is what it is.</li><li><strong>Code quality</strong>. I don't have the time to do an in-depth review of the code as I'm sure most of us don't do either. But I do like to glance over the code to get a general feel of the quality of the code. I focus mostly on the clarity of the code and also keep an eye open for sloppiness or downright WTF's. I guess the questions I'm mostly trying to answer when doing this are: "is this code I'd like to try to improve or fix if I need to?" and "how easy would it be to debug this when I need to troubleshoot some non-obvious issues?".</li><li><strong>Location of code and issue tracker</strong>. A lot of people will probably take issue with this, but I consider it to be a major plus if the project is on Github. Not just because of my personal preference of Github, but because they truly encourage people to collaborate and contribute to projects and they make it very easy to do so. Also, the site is fast! I cringe when I have to look over issues of projects on Codeplex because it's just terribly slow. And the UI doesn't come close to that of Github either. I've heard that Bitbucket is pretty similar to Github, but I've never even looked for projects there. In any case: I want to be able to download the <em>latest</em> version of the code at any time, or of a particular branch if I need to, as easily as possible. I also prefer an issue tracker which is fast, responsive and easy to search. It doesn't have to be Github, but those 2 requirements are important to me.</li><li><strong>License</strong>. If it's GPL, I don't use it. Also, I check whether or not a commercial license needs to be purchased when you want to use the library/framework in production. Pay attention to dual-licensed projects because that Open Source license might not apply to commercial/production use!</li></ul><p>I'd love to hear your thoughts on this. Did I miss any important factors? I just quickly put this post together so it's likely that I missed some good ones <img
src='http://d18sni7re4ly7f.cloudfront.net/blog/wp-includes/images/smilies/icon_smile.gif' alt=':)' class='wp-smiley' /></p><div
class="bottomcontainerBox" style=""><div
style="float:left; width:85px;padding-right:10px; margin:4px 4px 4px 4px;height:30px;"> <iframe
src="http://www.facebook.com/plugins/like.php?href=http%3A%2F%2Fdavybrion.com%2Fblog%2F2012%2F01%2Fhow-do-you-pick-open-source-libraries%2F&amp;layout=button_count&amp;show_faces=false&amp;width=85&amp;action=like&amp;font=verdana&amp;colorscheme=light&amp;height=21" scrolling="no" frameborder="0" allowTransparency="true" style="border:none; overflow:hidden; width:85px; height:21px;"></iframe></div><div
style="float:left; width:80px;padding-right:10px; margin:4px 4px 4px 4px;height:30px;"> <g:plusone size="medium" href="http://davybrion.com/blog/2012/01/how-do-you-pick-open-source-libraries/"></g:plusone></div><div
style="float:left; width:95px;padding-right:10px; margin:4px 4px 4px 4px;height:30px;"> <a
href="http://twitter.com/share" class="twitter-share-button" data-url="http://davybrion.com/blog/2012/01/how-do-you-pick-open-source-libraries/"  data-text="How Do You Pick Open Source Libraries?" data-count="horizontal" data-via="davybrion"></a></div><div
style="float:left; width:105px;padding-right:10px; margin:4px 4px 4px 4px;height:30px;"><script type="in/share" data-url="http://davybrion.com/blog/2012/01/how-do-you-pick-open-source-libraries/" data-counter="right"></script></div><div
style="float:left; width:85px;padding-right:10px; margin:4px 4px 4px 4px;height:30px;"><script src="http://www.stumbleupon.com/hostedbadge.php?s=1&amp;r=http://davybrion.com/blog/2012/01/how-do-you-pick-open-source-libraries/"></script></div></div><div
style="clear:both"></div><div
style="padding-bottom:4px;"></div>]]></content:encoded> <wfw:commentRss>http://davybrion.com/blog/2012/01/how-do-you-pick-open-source-libraries/feed/</wfw:commentRss> <slash:comments>22</slash:comments> </item> <item><title>Blue Pill vs Red Pill</title><link>http://davybrion.com/blog/2011/12/blue-pill-vs-red-pill/</link> <comments>http://davybrion.com/blog/2011/12/blue-pill-vs-red-pill/#comments</comments> <pubDate>Thu, 15 Dec 2011 20:44:40 +0000</pubDate> <dc:creator>Davy Brion</dc:creator> <category><![CDATA[Opinions]]></category><guid
isPermaLink="false">http://davybrion.com/blog/?p=3816</guid> <description><![CDATA[I've been somewhat critical of certain 'hot' MS technologies on Twitter this week. Particularly: Azure, Nuget and Entity Framework, and I didn't even bother to complain about the troubles I've had with the differences between 32-bit and 64-bit Powershell today. And I've noticed that whenever I voice a negative opinion on a Microsoft technology that [...]]]></description> <content:encoded><![CDATA[<p>I've been somewhat critical of certain 'hot' MS technologies on Twitter this week. Particularly: Azure, Nuget and Entity Framework, and I didn't even bother to complain about the troubles I've had with the differences between 32-bit and 64-bit Powershell today. And I've noticed that whenever I voice a negative opinion on a Microsoft technology that is considered cool or great, I lose a few Twitter followers. My reaction to that is: good riddance. I prefer losing a few followers because of it, than having to deal with the responses from certain fanboys who either haven't stepped outside of the MSDN world, or are just trying to impress others with a devotion that they're hoping will increase their status within their organization or within the Microsoft developer community in general.</p><p>A lot of people think that I'm anti-Microsoft. And I'm really not. I'm not anti-anything. I <em>am</em> pro-quality. I have high standards because I've seen and experienced high quality solutions elsewhere and when I have to deal with lower quality alternatives to those solutions, I tend to compare them, which is only natural. If Microsoft releases good stuff, I'm more than happy to use it. I even considered creating an Entity Framework training course, similar to my NHibernate training course, because I was hearing many good things about it. But after trying to deal with a certain Entity Framework problem that came up this week in the one project at work that uses Entity Framework, I couldn't help but think "I don't want this mess in my life, no matter how much money I could make with it". I sincerely <em>want</em> to use good Microsoft technology, but too often it just disappoints me. And that in itself, isn't much of a problem since there are plenty of good Open Source alternatives around. What I do consider to be a problem is the reaction that many people have when you're critical of Microsoft technology.</p><p>I've often compared it to living in The Matrix. A lot of us are living in a world where they are being pushed into believing something that just isn't true. And some of us at some point get to choose between taking the blue pill or the red pill. The blue pill symbolizes blissful ignorance of illusion, while the red pill symbolizes the sometimes painful truth of reality. A lot of developers in the Microsoft world choose to keep their eyes closed and blindly believe whatever Microsoft tells them to believe. They'll run into a variety of problems with the technologies they've been told to use but a lot of people just accept it for what it is because they don't know any better, or because they're scared of the seemingly harsh world that awaits them should they choose to ignore Microsoft's guidance and venture out into a world that is more chaotic, yet offers more possibilities and flexibility. If you take the red pill, you learn a lot about what's really possible yet you face the added burden of having to deal with the people who've picked the blue pill and even worse, the technology that comes with it. Because that truly is the only bad part about taking the red pill. You'll start taking some things for granted, and when faced with technologies that don't quite match up to what you've recently become used to, you will get frustrated because of it. After all, you know things can be done much better with less friction, yet here you are, dealing with problems that have been solved by other libraries/frameworks already. That is the only sour taste you'll experience after having swallowed the red pill.</p><p>The choice between the blue pill or the red pill is one that everyone has to make for themselves. And honestly, I can't be bothered anymore to try to convince people to take the red pill instead of the blue pill. I've learned to adopt a "whatever floats your boat without sinking mine is fine with me" attitude, but sometimes, I can't help but wish for a world were people would try to think just a little bit more for themselves instead of blindly following what a dominant entity is telling them to do or use. Look around, see what other people and communities are doing and honestly ask yourself "are they doing things better than I am?". And if they are, put in the effort to figure out why and how they're doing what they're doing. The worst thing that could possibly happen is a temporarily sour taste, and there are many ways to wash that away.</p><div
class="bottomcontainerBox" style=""><div
style="float:left; width:85px;padding-right:10px; margin:4px 4px 4px 4px;height:30px;"> <iframe
src="http://www.facebook.com/plugins/like.php?href=http%3A%2F%2Fdavybrion.com%2Fblog%2F2011%2F12%2Fblue-pill-vs-red-pill%2F&amp;layout=button_count&amp;show_faces=false&amp;width=85&amp;action=like&amp;font=verdana&amp;colorscheme=light&amp;height=21" scrolling="no" frameborder="0" allowTransparency="true" style="border:none; overflow:hidden; width:85px; height:21px;"></iframe></div><div
style="float:left; width:80px;padding-right:10px; margin:4px 4px 4px 4px;height:30px;"> <g:plusone size="medium" href="http://davybrion.com/blog/2011/12/blue-pill-vs-red-pill/"></g:plusone></div><div
style="float:left; width:95px;padding-right:10px; margin:4px 4px 4px 4px;height:30px;"> <a
href="http://twitter.com/share" class="twitter-share-button" data-url="http://davybrion.com/blog/2011/12/blue-pill-vs-red-pill/"  data-text="Blue Pill vs Red Pill" data-count="horizontal" data-via="davybrion"></a></div><div
style="float:left; width:105px;padding-right:10px; margin:4px 4px 4px 4px;height:30px;"><script type="in/share" data-url="http://davybrion.com/blog/2011/12/blue-pill-vs-red-pill/" data-counter="right"></script></div><div
style="float:left; width:85px;padding-right:10px; margin:4px 4px 4px 4px;height:30px;"><script src="http://www.stumbleupon.com/hostedbadge.php?s=1&amp;r=http://davybrion.com/blog/2011/12/blue-pill-vs-red-pill/"></script></div></div><div
style="clear:both"></div><div
style="padding-bottom:4px;"></div>]]></content:encoded> <wfw:commentRss>http://davybrion.com/blog/2011/12/blue-pill-vs-red-pill/feed/</wfw:commentRss> <slash:comments>36</slash:comments> </item> <item><title>Does Certification Have Any Value?</title><link>http://davybrion.com/blog/2011/11/does-certification-have-any-value/</link> <comments>http://davybrion.com/blog/2011/11/does-certification-have-any-value/#comments</comments> <pubDate>Tue, 29 Nov 2011 21:30:21 +0000</pubDate> <dc:creator>Davy Brion</dc:creator> <category><![CDATA[Opinions]]></category><guid
isPermaLink="false">http://davybrion.com/blog/?p=3811</guid> <description><![CDATA[Someone asked which certificate would be the better choice on Twitter today: Microsoft Certified Professional or Certified Scrum Master. My answer was very simple: neither because they're both utterly worthless. I've been very skeptical about any kind of software development certification for a couple of years now. More precisely, ever since I passed the ASP.NET [...]]]></description> <content:encoded><![CDATA[<p>Someone asked which certificate would be the better choice on Twitter today: Microsoft Certified Professional or Certified Scrum Master. My answer was very simple: neither because they're both utterly worthless. I've been very skeptical about any kind of software development certification for a couple of years now. More precisely, ever since I passed the ASP.NET WebForms exam with a 90% score even though I hadn't actually done <em>anything</em> with ASP.NET WebForms yet. I hadn't even bothered to do any exercises while preparing for the exam because I knew it just wasn't necessary. All you have to do is read the API documentation, memorize the details that you'd normally Google for and weed out the way-too-obvious bad choices in the multiple choice questioning of the test and that's it: you're certified, congratulations! Of course, you'll forget most of the details that you've memorized and you will not have learned anything really substantial that will serve you well for a long time. You'll certainly not learn anything important about how to develop high quality software or writing high quality code. And that should be rather important to you, no?</p><p>Of course, that doesn't mean that you have to approach it like that as well. You can indeed learn a lot about a certain technology while preparing for a certification exam, but the whole thing is completely devalued by the incredibly large group of people who <em>do</em> game the system and are only in it to add the certificates to their CV, or to demand a higher salary or rates because they are after all <em>certified professionals</em>. Never mind the fact that many of them never even bother to focus on learning fundamental principles that would benefit their careers as well as increasing the value they bring to clients/employers far more than intimate (temporary) knowledge of a specific technology that's probably going to be replaced by something new in about 4 years anyway. To those of you who've taken exams on WPF: how's that working out for you? Still debugging memory leaks I'm sure <img
src='http://d18sni7re4ly7f.cloudfront.net/blog/wp-includes/images/smilies/icon_wink.gif' alt=';)' class='wp-smiley' /></p><p>Even though a lot of people know this all too well, they'll still come up with arguments like "but it really helps when clients ask for certificates" or "certificates give me a leg up when clients need to go over tons of CVs". Sorry, but I'm not buying it. Well, I do know that some companies indeed consider certificates a benefit when evaluating candidates but I prefer to look at it from a slightly different angle: those kind of companies often employ people who got their certificates by gaming the system at a much higher rate than companies who don't care about certificates and prefer to focus on real experience and solid knowledge of important fundamentals instead. Simply put: if you choose to work for companies that value certificates, odds are very high that you'll be working with certified idiots.</p><p>If you're wondering whether you should invest time in getting certified, I'd advise a different approach. Don't bother with certifications and spend your time and energy on attaining knowledge that will last you far longer, and will even improve your abilities of quickly picking up new technologies. And the way to do that is pretty simple. Work on hobby projects. Experiment with multiple technologies. Study code from established projects and developers. And read books. Lot's of them even! If you don't know which ones, I've got a good list available <a
href="http://davybrion.com/blog/recommended-books/">here</a> and you might notice that the majority of those books are technology-independent. They focus on fundamental principles and common knowledge that you'll be able to reuse no matter what technology you're using now or will end up using later on.</p><p>Of course, all of this does take more effort than simply showing up for a 2-day course where <em>everybody</em> gets a meaningless piece of paper or spending a weekend cramming API details that you don't actually need to remember to be productive at your job. But hey, if your goal is to improve your value, and not just your perceived status, it's worth it, right?</p><div
class="bottomcontainerBox" style=""><div
style="float:left; width:85px;padding-right:10px; margin:4px 4px 4px 4px;height:30px;"> <iframe
src="http://www.facebook.com/plugins/like.php?href=http%3A%2F%2Fdavybrion.com%2Fblog%2F2011%2F11%2Fdoes-certification-have-any-value%2F&amp;layout=button_count&amp;show_faces=false&amp;width=85&amp;action=like&amp;font=verdana&amp;colorscheme=light&amp;height=21" scrolling="no" frameborder="0" allowTransparency="true" style="border:none; overflow:hidden; width:85px; height:21px;"></iframe></div><div
style="float:left; width:80px;padding-right:10px; margin:4px 4px 4px 4px;height:30px;"> <g:plusone size="medium" href="http://davybrion.com/blog/2011/11/does-certification-have-any-value/"></g:plusone></div><div
style="float:left; width:95px;padding-right:10px; margin:4px 4px 4px 4px;height:30px;"> <a
href="http://twitter.com/share" class="twitter-share-button" data-url="http://davybrion.com/blog/2011/11/does-certification-have-any-value/"  data-text="Does Certification Have Any Value?" data-count="horizontal" data-via="davybrion"></a></div><div
style="float:left; width:105px;padding-right:10px; margin:4px 4px 4px 4px;height:30px;"><script type="in/share" data-url="http://davybrion.com/blog/2011/11/does-certification-have-any-value/" data-counter="right"></script></div><div
style="float:left; width:85px;padding-right:10px; margin:4px 4px 4px 4px;height:30px;"><script src="http://www.stumbleupon.com/hostedbadge.php?s=1&amp;r=http://davybrion.com/blog/2011/11/does-certification-have-any-value/"></script></div></div><div
style="clear:both"></div><div
style="padding-bottom:4px;"></div>]]></content:encoded> <wfw:commentRss>http://davybrion.com/blog/2011/11/does-certification-have-any-value/feed/</wfw:commentRss> <slash:comments>11</slash:comments> </item> <item><title>Silverlight&#8217;s Broken Promise</title><link>http://davybrion.com/blog/2011/11/silverlights-broken-promise/</link> <comments>http://davybrion.com/blog/2011/11/silverlights-broken-promise/#comments</comments> <pubDate>Sun, 20 Nov 2011 17:31:42 +0000</pubDate> <dc:creator>Davy Brion</dc:creator> <category><![CDATA[Opinions]]></category> <category><![CDATA[Silverlight]]></category><guid
isPermaLink="false">http://davybrion.com/blog/?p=3808</guid> <description><![CDATA[By now, I'm sure you've all read about the rumors that the upcoming Silverlight 5 might be the last release of Silverlight. Of course, people who've been paying attention to the Silverlight news coming out of Microsoft and the blogosphere in the past year shouldn't be surprised at this. But for those of you who [...]]]></description> <content:encoded><![CDATA[<p>By now, I'm sure you've all read about the rumors that the upcoming Silverlight 5 might be the last release of Silverlight. Of course, people who've been paying attention to the Silverlight news coming out of Microsoft and the blogosphere in the past year shouldn't be surprised at this. But for those of you who are still in the "oh please, it's just a rumor" camp, you might want to keep in mind that every negative rumor about Silverlight of the past year has turned out to be true. As a result, I fully expect the upcoming Silverlight 5 release to indeed be the last stop along a troubled line.</p><p>Plenty of Silverlight developers were concerned that their investment in the technology would end up being worthless. I never really understood that since I've always believed that good developers focus on skills that are transferable to multiple technologies instead of betting it all on a single technology. Nevertheless, many Silverlight developers were up in arms, but their worries and fears seem to have been calmed by the news that Windows 8 will make extensive use of XAML. Silverlight developers will be able to transfer their XAML skills to building Metro apps and of course, WP7 apps. And there's no reason to assume that Microsoft intends to change its smartphone platform in a way that would diminish the importance of XAML. So, Silverlight developers who were worried that their skills will be worthless don't really have anything to worry about and I'm sure many of them are quite relieved by that. After all, many Silverlight projects will be able to run as native apps on Windows 8 with relatively minor modifications.</p><p>Of course, that doesn't quite offer a solution to the thorny little issue about all the Silverlight projects that have been developed because of some of the benefits that Silverlight promised: cross platform and browser-independent availability of the plugin. The promise was that you could develop projects that would be available to users no matter what platform or browser that they were using (believers of this promise would even mention Moonlight, which has never really offered a truly compatible version), and with no deployment-related issues. After all, users only needed to have the Silverlight plugin installed to run your software. And that promise has been broken. Yes, you can migrate your Silverlight projects to Windows 8. Yes, people will be able to keep running existing Silverlight projects as long as they have the upcoming Silverlight 5 runtime installed. But we also already know that the Metro version of IE10 will <em>not</em> run the Silverlight plugin and that running the plugin in the 'desktop' version of IE10 will require users to install it themselves. For enterprise software, that's not much of an issue but you do have to ask yourself: how long are you willing to hang on to a plugin that Microsoft itself is no longer interested in improving in the long run?</p><p>The reality of the matter is that your Silverlight products only have a future if you convert them to WinRT so they can run on Metro natively. Which means you've lost the ability to reach users on multiple platforms and devices. The very same technology you picked because of its cross-browser and cross-platform benefits has forced you on a path where in the future, you can only target users on the Windows platform meaning either Windows 8 or WP7. Sure, you can hang on to the fact that the plugin will be available for a few more years, but that also is a limiting choice since an ever increasing number of users will be running iOS and Android, and there's no reason whatsoever to expect the plugin to actually run on those platforms. Hell, WP7 doesn't even have the Silverlight plugin for its browser. My previous employer pretty much bet it all on Silverlight, mostly because they didn't want to deal with HTML/JavaScript, but also because they thought it would eventually be available on all devices. Which essentially means they're stuck with a couple of products that only really have a long-term future on Windows 8 or WP7, and its subsequent versions. Unless of course, current promises about said platforms are broken again. Yet another reason to start taking open standards and technologies that have multiple stakeholders seriously, I suppose.</p><div
class="bottomcontainerBox" style=""><div
style="float:left; width:85px;padding-right:10px; margin:4px 4px 4px 4px;height:30px;"> <iframe
src="http://www.facebook.com/plugins/like.php?href=http%3A%2F%2Fdavybrion.com%2Fblog%2F2011%2F11%2Fsilverlights-broken-promise%2F&amp;layout=button_count&amp;show_faces=false&amp;width=85&amp;action=like&amp;font=verdana&amp;colorscheme=light&amp;height=21" scrolling="no" frameborder="0" allowTransparency="true" style="border:none; overflow:hidden; width:85px; height:21px;"></iframe></div><div
style="float:left; width:80px;padding-right:10px; margin:4px 4px 4px 4px;height:30px;"> <g:plusone size="medium" href="http://davybrion.com/blog/2011/11/silverlights-broken-promise/"></g:plusone></div><div
style="float:left; width:95px;padding-right:10px; margin:4px 4px 4px 4px;height:30px;"> <a
href="http://twitter.com/share" class="twitter-share-button" data-url="http://davybrion.com/blog/2011/11/silverlights-broken-promise/"  data-text="Silverlight&#8217;s Broken Promise" data-count="horizontal" data-via="davybrion"></a></div><div
style="float:left; width:105px;padding-right:10px; margin:4px 4px 4px 4px;height:30px;"><script type="in/share" data-url="http://davybrion.com/blog/2011/11/silverlights-broken-promise/" data-counter="right"></script></div><div
style="float:left; width:85px;padding-right:10px; margin:4px 4px 4px 4px;height:30px;"><script src="http://www.stumbleupon.com/hostedbadge.php?s=1&amp;r=http://davybrion.com/blog/2011/11/silverlights-broken-promise/"></script></div></div><div
style="clear:both"></div><div
style="padding-bottom:4px;"></div>]]></content:encoded> <wfw:commentRss>http://davybrion.com/blog/2011/11/silverlights-broken-promise/feed/</wfw:commentRss> <slash:comments>14</slash:comments> </item> <item><title>Thoughts On Steve Jobs, The Book And The Man</title><link>http://davybrion.com/blog/2011/11/thoughts-on-steve-jobs-the-book-and-the-man/</link> <comments>http://davybrion.com/blog/2011/11/thoughts-on-steve-jobs-the-book-and-the-man/#comments</comments> <pubDate>Tue, 01 Nov 2011 17:54:02 +0000</pubDate> <dc:creator>Davy Brion</dc:creator> <category><![CDATA[Opinions]]></category><guid
isPermaLink="false">http://davybrion.com/blog/?p=3795</guid> <description><![CDATA[In the tech world, most people have an opinion on Steve Jobs. And in the past couple of years, quite a few people outside of the tech world have learned about Steve Jobs as well due to the success Apple has enjoyed in the consumer space. A lot of those people have formed opinions on [...]]]></description> <content:encoded><![CDATA[<p>In the tech world, most people have an opinion on Steve Jobs. And in the past couple of years, quite a few people outside of the tech world have learned about Steve Jobs as well due to the success Apple has enjoyed in the consumer space. A lot of those people have formed opinions on him as well. And I don't think I'm exaggerating when I say that most people either love him or hate him. He's just been <em>that</em> polarizing over the years. Some people hate him because of his <a
href="http://en.wikipedia.org/wiki/Reality_distortion_field">Reality Distortion Field</a>, his arrogance, his attitude or because of his belief in a closed system where he has full control. Some people love him for the products he's delivered, his vision, his showmanship and well, his Reality Distortion Field.</p><p>Whether you love or hate Steve Jobs, Walter Isaacson's <a
href="http://www.amazon.com/Steve-Jobs-Walter-Isaacson/dp/1451648537/ref=sr_1_1?ie=UTF8&amp;qid=1320165027&amp;sr=8-1">biography on the man</a> is well worth reading. I found it to be a fascinating read, and quite funny at times as well. I was expecting it to have a somewhat balanced view on Job's personality, but the author went way beyond that. He doesn't waste many opportunities to point out a negative reaction by Jobs, which is good. There's no glorification of Jobs, just a balanced and honest view. Another important thing that I highly appreciate is that you often get both sides of the story. You get Jobs' recollections and opinions, as well as those of the people who were involved in the many situations that are covered. And again, differences between those recollections are not ignored.</p><p>Most things are covered in chronological order, from Steve being put up for adoption, to his time in college, to dropping out of college and going to India, to starting Apple, to getting ousted at Apple and starting Next and buying Pixar, to returning to Apple and returning it to prominence, to him getting cancer and eventually resigning from Apple because of it. There are also parts about his personal life and his family, though the majority of the book covers his successes and failures in his professional life.</p><p>For a long time, I thought Steve Jobs was the perfect salesman for what the various teams at Apple were cooking up. I knew he was involved with the product design, but I had no idea he was as involved as he really turned out to be. He was very hands-on in the way he worked with the various product teams, and in many cases he led them based on his vision for what a product should be. But it would be false to say that he originally thought of every successful product Apple has put out, though he apparently had no problems claiming other people's ideas as his own. Stories about his temper and the awful way he treated his employees have been around for a long time, and there are plenty of examples in the book.</p><p>What I did find surprising though, is that a lot of people he worked with claim that Jobs pushed them into achieving things they never considered possible and that they loved making such an impact with their work, despite their complaints of his outbursts and the way he treated people. I also found Jobs' take on it interesting. It was his way of making sure that Apple would have as many A players as possible, and to get rid of as many B players (or bozos, as he called them) as possible. He felt that A players only want to work with A players, and that mixing them with B players would reduce their value. You have to admit it's hard to disagree with the results of his approach.</p><p>As for his approach to being a CEO in the latter years of his career, the most interesting part to me was that he refused to split his company into divisions where each division had its own Profit &amp; Loss balance. Instead, you just had many teams and the only Profit &amp; Loss balance that they looked at was the company-wide one. Jobs forced them to work together instead of competing with each other (which is the complete opposite of what the young Jobs did in his first stint with Apple) and when people didn't work together, he'd get rid of them. He made sure everyone was on the same page and that there was no confusion about the priorities of the company. He made sure Apple only focused on a few products so they could do them as well as possible, instead of trying to do as much as possible.
It's pretty much the exact opposite of how Microsoft is being managed by Ballmer, and that contrast seems to reflect in both companies' success over the last couple of years.</p><p>The way he dealt with people, both in his personal as well as his professional life, wasn't as impressive though. It must have been hard to know him personally, and there are 2 stories of his behavior in the book that are downright shameful. In many of the stories of the book, he comes across as a total dick and a cry baby. You can take that literally even: there are countless moments in the book where it's mentioned that Jobs began crying when he didn't get his way. Saying that he had a complex personality is quite the understatement. But he was very good at knowing what people wanted and what they didn't want, even if they didn't know it yet, as he often said. Of course, it's exactly that arrogance that many of the people who don't like Apple products hate. Different strokes for different folks I guess, though I wouldn't be surprised if Jobs turns out to be right in most cases when it comes to <em>most people</em>, or non-techies in particular.</p><p>Despite his financial success, I do believe he was driven by building great products, and not just money. Had money been his primary motivation, I think he would've ended up with a lot more of it. The money issues that sometimes come up in the book seem to be more about respect than pure monetary gain, with the exception of one case, when he screwed one of his longtime friends during Apple's initial IPO. In that particular case, the author should've have dug deeper to find out Jobs' motivation. But again, from reading the book it's hard not to believe in Jobs' drive to create things that were truly great. I enjoy many of Apple's products, so in my opinion he's clearly succeeded at that. Though many of the Jobs-haters would probably disagree. Despite what you may think of the man or the products he's introduced, he's had a profound impact on many of the ways in which you and a lot of people you know interact with technology and media. And for that, I am glad he was the man that he was, regardless of his faults.</p><div
class="bottomcontainerBox" style=""><div
style="float:left; width:85px;padding-right:10px; margin:4px 4px 4px 4px;height:30px;"> <iframe
src="http://www.facebook.com/plugins/like.php?href=http%3A%2F%2Fdavybrion.com%2Fblog%2F2011%2F11%2Fthoughts-on-steve-jobs-the-book-and-the-man%2F&amp;layout=button_count&amp;show_faces=false&amp;width=85&amp;action=like&amp;font=verdana&amp;colorscheme=light&amp;height=21" scrolling="no" frameborder="0" allowTransparency="true" style="border:none; overflow:hidden; width:85px; height:21px;"></iframe></div><div
style="float:left; width:80px;padding-right:10px; margin:4px 4px 4px 4px;height:30px;"> <g:plusone size="medium" href="http://davybrion.com/blog/2011/11/thoughts-on-steve-jobs-the-book-and-the-man/"></g:plusone></div><div
style="float:left; width:95px;padding-right:10px; margin:4px 4px 4px 4px;height:30px;"> <a
href="http://twitter.com/share" class="twitter-share-button" data-url="http://davybrion.com/blog/2011/11/thoughts-on-steve-jobs-the-book-and-the-man/"  data-text="Thoughts On Steve Jobs, The Book And The Man" data-count="horizontal" data-via="davybrion"></a></div><div
style="float:left; width:105px;padding-right:10px; margin:4px 4px 4px 4px;height:30px;"><script type="in/share" data-url="http://davybrion.com/blog/2011/11/thoughts-on-steve-jobs-the-book-and-the-man/" data-counter="right"></script></div><div
style="float:left; width:85px;padding-right:10px; margin:4px 4px 4px 4px;height:30px;"><script src="http://www.stumbleupon.com/hostedbadge.php?s=1&amp;r=http://davybrion.com/blog/2011/11/thoughts-on-steve-jobs-the-book-and-the-man/"></script></div></div><div
style="clear:both"></div><div
style="padding-bottom:4px;"></div>]]></content:encoded> <wfw:commentRss>http://davybrion.com/blog/2011/11/thoughts-on-steve-jobs-the-book-and-the-man/feed/</wfw:commentRss> <slash:comments>3</slash:comments> </item> <item><title>The Non-Typical .NET Job</title><link>http://davybrion.com/blog/2011/10/the-non-typical-net-job/</link> <comments>http://davybrion.com/blog/2011/10/the-non-typical-net-job/#comments</comments> <pubDate>Sun, 23 Oct 2011 22:00:33 +0000</pubDate> <dc:creator>Davy Brion</dc:creator> <category><![CDATA[ALT.NET]]></category> <category><![CDATA[Code Quality]]></category> <category><![CDATA[Opinions]]></category> <category><![CDATA[Patterns]]></category> <category><![CDATA[Software Development]]></category> <category><![CDATA[work/career]]></category><guid
isPermaLink="false">http://davybrion.com/blog/2011/10/the-non-typical-net-job/</guid> <description><![CDATA[I recently referred to an interesting .NET job as a 'non-typical .NET job'. I hadn't used that term yet up until that point, so I thought that was rather interesting. But what exactly do I mean with 'non-typical .NET job'? It's pretty simple really: a job where you're using .NET technology without blindly following the [...]]]></description> <content:encoded><![CDATA[<p>I recently referred to an interesting .NET job as a 'non-typical .NET job'. I hadn't used that term yet up until that point, so I thought that was rather interesting. But what exactly do I mean with 'non-typical .NET job'? It's pretty simple really: a job where you're using .NET technology without blindly following the guidelines, recommendations and software from Microsoft on how to develop software on the .NET platform. It basically means that you'll use <em>whatever</em> you think is most appropriate for what you're trying to do.</p><p>The biggest problem in the .NET world is that most companies that do .NET development just stick to what Microsoft tells them to use and how to use it. Many .NET developers largely focus on that, because they know all too well that it increases their odds of getting hired. And let's face it: Microsoft has a solution for practically everything. The only problem is that those solutions are rarely the best in what they're trying to solve. But hey, no manager gets fired for going with Microsoft, right?</p><p>The result is that there are too many companies and too many developers that focus only on what Microsoft offers. But there's a lot more to software development than what Microsoft offers, or even knows about. There are countless examples of Microsoft being late to whatever technical party is interesting at the time. And when they show up, they certainly don't always make a good impression.</p><p>If you're the kind of developer that likes to learn from what other software development communities are doing, odds are high that you're screwed. There is an interesting OSS community within the .NET world, and they frequently produce great solutions, quite often based on succes stories coming from other development communities. The problem is not that .NET developers don't have great solutions available to them. The problem is that the majority of them simply don't know about them only because there hasn't been any Microsoft hype about it, or that the devs who do know about it aren't allowed to use it because their managers are sceptical about it, most likely also because there's no Microsoft backing for the technology or architectural style that is being proposed.</p><p>I'm not advocating the avoidance of Microsoft products or solutions. By all means, use Microsoft products if they are indeed the best solution to your problem. But do be aware of the things that are getting attention outside of the Microsoft sphere and use them when it makes more sense to use them. That's the essence of the 'non-typical .NET job' and that's exactly what makes it interesting: using the right tool for the right job.</p><div
class="bottomcontainerBox" style=""><div
style="float:left; width:85px;padding-right:10px; margin:4px 4px 4px 4px;height:30px;"> <iframe
src="http://www.facebook.com/plugins/like.php?href=http%3A%2F%2Fdavybrion.com%2Fblog%2F2011%2F10%2Fthe-non-typical-net-job%2F&amp;layout=button_count&amp;show_faces=false&amp;width=85&amp;action=like&amp;font=verdana&amp;colorscheme=light&amp;height=21" scrolling="no" frameborder="0" allowTransparency="true" style="border:none; overflow:hidden; width:85px; height:21px;"></iframe></div><div
style="float:left; width:80px;padding-right:10px; margin:4px 4px 4px 4px;height:30px;"> <g:plusone size="medium" href="http://davybrion.com/blog/2011/10/the-non-typical-net-job/"></g:plusone></div><div
style="float:left; width:95px;padding-right:10px; margin:4px 4px 4px 4px;height:30px;"> <a
href="http://twitter.com/share" class="twitter-share-button" data-url="http://davybrion.com/blog/2011/10/the-non-typical-net-job/"  data-text="The Non-Typical .NET Job" data-count="horizontal" data-via="davybrion"></a></div><div
style="float:left; width:105px;padding-right:10px; margin:4px 4px 4px 4px;height:30px;"><script type="in/share" data-url="http://davybrion.com/blog/2011/10/the-non-typical-net-job/" data-counter="right"></script></div><div
style="float:left; width:85px;padding-right:10px; margin:4px 4px 4px 4px;height:30px;"><script src="http://www.stumbleupon.com/hostedbadge.php?s=1&amp;r=http://davybrion.com/blog/2011/10/the-non-typical-net-job/"></script></div></div><div
style="clear:both"></div><div
style="padding-bottom:4px;"></div>]]></content:encoded> <wfw:commentRss>http://davybrion.com/blog/2011/10/the-non-typical-net-job/feed/</wfw:commentRss> <slash:comments>19</slash:comments> </item> <item><title>Developers Need To Keep Challenging Themselves</title><link>http://davybrion.com/blog/2011/10/developers-need-to-keep-challenging-themselves/</link> <comments>http://davybrion.com/blog/2011/10/developers-need-to-keep-challenging-themselves/#comments</comments> <pubDate>Sun, 23 Oct 2011 19:09:22 +0000</pubDate> <dc:creator>Davy Brion</dc:creator> <category><![CDATA[Opinions]]></category> <category><![CDATA[work/career]]></category><guid
isPermaLink="false">http://davybrion.com/blog/?p=3789</guid> <description><![CDATA[I read a very interesting article about a study on why some people learn faster than others. It's a very interesting read which I highly recommend, but in case you're short on time I'll summarize the most important parts because they're relevant to the subject I want to cover with this post. The study claims [...]]]></description> <content:encoded><![CDATA[<p>I read a very interesting <a
href="http://www.wired.com/wiredscience/2011/10/why-do-some-people-learn-faster-2/">article</a> about a study on why some people learn faster than others. It's a very interesting read which I highly recommend, but in case you're short on time I'll summarize the most important parts because they're relevant to the subject I want to cover with this post. The study claims that there are 2 types of mindset when it comes to learning:</p><ul><li>The <em>fixed mindset</em>: People who have this, think that we have a certain amount of intelligence and can't do much to change it. To them, a mistake is a failure, a sign that their capabilities aren't up to the task.</li><li>The <em>growth mindset</em>: People who have this believe that they can get better at almost everything, as long as they can invest the necessary time and energy. They see mistakes as an essential precursor to knowledge, the engine of education.</li></ul><p>Needless to say, people with a growth mindset turned out to be significantly better at learning from their mistakes. The article also covers a very interesting experiment involving school children. The children were given a test, and half of them were told "You must be smart at this". The other half was told "You must have worked really hard". After that, they could choose between 2 new tests. The first one was more difficult, but came with a mention that the students would learn a lot from them. The other test was similar to the test they had just taken.</p><p>And here's where it gets really interesting: of the kids that were praised for their effort instead of their intelligence (I'm going to refer to this group as the effort-kids from now on), <strong>90%</strong> of them chose the harder test. Of the kids that were praised for their intelligence (I'm going to refer to this group as the intelligence-kids from now on), the majority chose the test that was similar to the one they had just taken. Presumably, to avoid risking a low score after having already been praised for their intelligence. After the second test, all of the kids took the same third test, which was the hardest one so far. The effort-kids worked hard at figuring out the puzzles, while the intelligence-kids were easily discouraged by their mistakes. After the third test, the kids were given the choice to look at the exams of kids that did better than them, or the exams of kids that did worse. The effort-kids generally wanted to look at the exams of the people who did better. The intelligence-kids mostly picked the exams of those who did worse. The final test had the same difficulty level as the initial test. The effort-kids raised their average score by 30%, whereas the intelligence-kids saw their average score drop by 20%.</p><p>I find that kinda stuff fascinating. It also kinda confirms what I've seen from fellow developers ever since I graduated and started working. Every good developer I've met isn't afraid to make mistakes and sees mistakes as learning opportunities. These people routinely challenge themselves by learning something new. They also keep an eye on what other people are doing to get better and they actively try to learn from people they consider to be better than them.</p><p>One guy I used to work with was considered to be a great developer a few years ago. Now this was the kind of guy who was not only used to being praised for his 'intelligence', but his self-confidence was largely based on it. He once told me his favorite class in high-school was math because the other people in his class thought it was hard, while it was easy for him. He actually said it like that. When other people started getting more attention for their technical skills and knowledge, he began to move away from coding and started focusing more on writing functional analysis documents. He wasn't bad at it, but it wasn't great either. Now he does a little bit of everything from what I've heard. I'm pretty sure that if his self-confidence wasn't based on the praise he gets, he could've been much better at whatever he wanted to do.</p><p>That's just one story but I've seen similar things with other people who seemed to be more interested in what other people thought of what they could do as opposed to actually trying to improve on what they can do on a continuous basis. If they start thinking rather highly of themselves because of the praise they get, they often start thinking it's just not necessary anymore to keep working on improving their skills.</p><p>Keep challenging yourself. If you think you're pretty good at what you do (and there's nothing wrong with that), make sure you keep searching for new and better ways to do what you do. And when people praise you for being good at what you do, don't let it get to your head because before you know it, you won't be getting much praise at all anymore.</p><div
class="bottomcontainerBox" style=""><div
style="float:left; width:85px;padding-right:10px; margin:4px 4px 4px 4px;height:30px;"> <iframe
src="http://www.facebook.com/plugins/like.php?href=http%3A%2F%2Fdavybrion.com%2Fblog%2F2011%2F10%2Fdevelopers-need-to-keep-challenging-themselves%2F&amp;layout=button_count&amp;show_faces=false&amp;width=85&amp;action=like&amp;font=verdana&amp;colorscheme=light&amp;height=21" scrolling="no" frameborder="0" allowTransparency="true" style="border:none; overflow:hidden; width:85px; height:21px;"></iframe></div><div
style="float:left; width:80px;padding-right:10px; margin:4px 4px 4px 4px;height:30px;"> <g:plusone size="medium" href="http://davybrion.com/blog/2011/10/developers-need-to-keep-challenging-themselves/"></g:plusone></div><div
style="float:left; width:95px;padding-right:10px; margin:4px 4px 4px 4px;height:30px;"> <a
href="http://twitter.com/share" class="twitter-share-button" data-url="http://davybrion.com/blog/2011/10/developers-need-to-keep-challenging-themselves/"  data-text="Developers Need To Keep Challenging Themselves" data-count="horizontal" data-via="davybrion"></a></div><div
style="float:left; width:105px;padding-right:10px; margin:4px 4px 4px 4px;height:30px;"><script type="in/share" data-url="http://davybrion.com/blog/2011/10/developers-need-to-keep-challenging-themselves/" data-counter="right"></script></div><div
style="float:left; width:85px;padding-right:10px; margin:4px 4px 4px 4px;height:30px;"><script src="http://www.stumbleupon.com/hostedbadge.php?s=1&amp;r=http://davybrion.com/blog/2011/10/developers-need-to-keep-challenging-themselves/"></script></div></div><div
style="clear:both"></div><div
style="padding-bottom:4px;"></div>]]></content:encoded> <wfw:commentRss>http://davybrion.com/blog/2011/10/developers-need-to-keep-challenging-themselves/feed/</wfw:commentRss> <slash:comments>7</slash:comments> </item> <item><title>Why I Prefer JavaScript Over CoffeeScript</title><link>http://davybrion.com/blog/2011/09/why-i-prefer-javascript-over-coffeescript/</link> <comments>http://davybrion.com/blog/2011/09/why-i-prefer-javascript-over-coffeescript/#comments</comments> <pubDate>Sun, 11 Sep 2011 18:05:19 +0000</pubDate> <dc:creator>Davy Brion</dc:creator> <category><![CDATA[JavaScript]]></category> <category><![CDATA[Opinions]]></category><guid
isPermaLink="false">http://davybrion.com/blog/?p=3768</guid> <description><![CDATA[CoffeeScript has gotten pretty popular in the past 6 months or so. If you're not familiar with it, be sure to check out the language's website. It's basically a language that compiles to JavaScript. So you can write your client-side code in CoffeeScript, but still have the browser execute the resulting JavaScript. Or if you're [...]]]></description> <content:encoded><![CDATA[<p>CoffeeScript has gotten pretty popular in the past 6 months or so. If you're not familiar with it, be sure to check out the language's <a
href="http://jashkenas.github.com/coffee-script/">website</a>. It's basically a language that compiles to JavaScript. So you can write your client-side code in CoffeeScript, but still have the browser execute the resulting JavaScript. Or if you're using Node.js, you can just use CoffeeScript instead of JavaScript if you prefer. It doesn't matter, it's all JavaScript in the end.</p><p>To the many people who dislike JavaScript, either because of its syntax or its many pitfalls (or both), CoffeeScript is obviously great. They can get in on all the fun and progress that's happening in the JavaScript world, without having to write JavaScript themselves. Purely from a syntactical point of view, it's hard to argue the merits and benefits of the language. I'm fond of Ruby's syntax, so instinctively CoffeeScript looks much more appealing to me than JavaScript. Despite the nice syntax and protection from JavaScript's pitfalls, I still prefer to code in JavaScript.</p><p>For starters, if you're doing JavaScript development (whether client-side or server-side), you're likely to use a variety of scripts or libraries written by people other than you. While some libraries are documented very nicely, others aren't. In many cases, I still find the ability to read the source code of a library I'm using to find what I want to know to be a very valuable benefit. I've noticed that I often do this when trying to find out how to do something that I can't find in the documentation, or when I'm troubleshooting something. If you're not familiar with commonly used JavaScript patterns, this becomes harder than it needs to be. Some subtleties might pass you by, or in some cases you might have outright difficulties comprehending the code. Of course, reading JavaScript code from seasoned JavaScript developers can also be a great learning experience about how to <em>properly</em> use the language. Yes, there's a lot of bad JavaScript available, but there's a lot of beautiful JavaScript around as well. I'd say the benefits you can get from reading the code of the libraries you use are directly dependent on your familiarity with JavaScript as a language, as well as its most common used patterns and idioms. If you try to avoid JavaScript by sticking with CoffeeScript, you sort of limit the potential benefits to be had from a tremendously valuable resource.</p><p>Another reason is that JavaScript is gradually becoming ubiquitous and that's all the more reason to maintain your familiarity with the language. You're unlikely to build a website without a nice dose of JavaScript, either used directly or through CoffeeScript. Server-side JavaScript usage is on the rise, and the growing popularity of Node.js is only going to increase the usage. True, you can use CoffeeScript with Node.js as well, but keep in mind that you're going to be reading a lot of other people's JavaScript code when you work with Node.js. That's not a slight at Node.js as a platform or development community btw, I very much enjoy working with it and am loving the learning experience. JavaScript is also being used in a few NoSQL databases, and in those cases it's harder to avoid it. Who knows where JavaScript is going to be used in the future? Will you always have the ability to 'compile' your CoffeeScript code to JavaScript in order to take advantage of whatever new environment where it can be used? Maybe you will, maybe you won't. Who knows? What you do know is that the vast majority of documentation and information you're going to find on the internet will be using JavaScript. Again, all the more reasons to become proficient in JavaScript IMO.</p><p>Then there's the aspect of debugging and troubleshooting. While you can indeed 'compile' your CoffeeScript code to JavaScript, none of the debuggers available at the moment transform your code back to CoffeeScript at runtime if you're trying to debug something. Ok sure, we all prefer to avoid debugging by writing proper tests but the fact of the matter is this: if something goes wrong, I certainly want to understand the code that I <em>can</em> debug. And even more so, I want that code to be readable and not look like it was generated by a tool (and I'm not talking about a lousy developer). Or if I receive a stacktrace from a tester or (gasp) a user, I would like to be able to look at the code that is listed in the stacktrace without thinking "oh crap, what the hell is going on here? I'm not used to all this JavaScript!!".</p><p>Again, I have no issues with CoffeeScript as a language. I like its syntax and the ideas behind it. But for me, that just doesn't outweigh the downsides that I've listed here so I'll be sticking with JavaScript for quite a while longer, me thinks.</p><div
class="bottomcontainerBox" style=""><div
style="float:left; width:85px;padding-right:10px; margin:4px 4px 4px 4px;height:30px;"> <iframe
src="http://www.facebook.com/plugins/like.php?href=http%3A%2F%2Fdavybrion.com%2Fblog%2F2011%2F09%2Fwhy-i-prefer-javascript-over-coffeescript%2F&amp;layout=button_count&amp;show_faces=false&amp;width=85&amp;action=like&amp;font=verdana&amp;colorscheme=light&amp;height=21" scrolling="no" frameborder="0" allowTransparency="true" style="border:none; overflow:hidden; width:85px; height:21px;"></iframe></div><div
style="float:left; width:80px;padding-right:10px; margin:4px 4px 4px 4px;height:30px;"> <g:plusone size="medium" href="http://davybrion.com/blog/2011/09/why-i-prefer-javascript-over-coffeescript/"></g:plusone></div><div
style="float:left; width:95px;padding-right:10px; margin:4px 4px 4px 4px;height:30px;"> <a
href="http://twitter.com/share" class="twitter-share-button" data-url="http://davybrion.com/blog/2011/09/why-i-prefer-javascript-over-coffeescript/"  data-text="Why I Prefer JavaScript Over CoffeeScript" data-count="horizontal" data-via="davybrion"></a></div><div
style="float:left; width:105px;padding-right:10px; margin:4px 4px 4px 4px;height:30px;"><script type="in/share" data-url="http://davybrion.com/blog/2011/09/why-i-prefer-javascript-over-coffeescript/" data-counter="right"></script></div><div
style="float:left; width:85px;padding-right:10px; margin:4px 4px 4px 4px;height:30px;"><script src="http://www.stumbleupon.com/hostedbadge.php?s=1&amp;r=http://davybrion.com/blog/2011/09/why-i-prefer-javascript-over-coffeescript/"></script></div></div><div
style="clear:both"></div><div
style="padding-bottom:4px;"></div>]]></content:encoded> <wfw:commentRss>http://davybrion.com/blog/2011/09/why-i-prefer-javascript-over-coffeescript/feed/</wfw:commentRss> <slash:comments>37</slash:comments> </item> <item><title>Maintaining Bad Code Can Be A Great Experience</title><link>http://davybrion.com/blog/2011/09/maintaining-bad-code-can-be-a-great-experience/</link> <comments>http://davybrion.com/blog/2011/09/maintaining-bad-code-can-be-a-great-experience/#comments</comments> <pubDate>Sun, 04 Sep 2011 19:51:16 +0000</pubDate> <dc:creator>Davy Brion</dc:creator> <category><![CDATA[Opinions]]></category> <category><![CDATA[work/career]]></category><guid
isPermaLink="false">http://davybrion.com/blog/?p=3699</guid> <description><![CDATA[Nobody likes to maintain a bad codebase. And still, it's an experience that i'd recommend to every developer, particularly early on in your career. People who are relatively new to coding usually don't have a good view yet on what kind of code will cause pain in the long run, and what kind of code [...]]]></description> <content:encoded><![CDATA[<p>Nobody likes to maintain a bad codebase. And still, it's an experience that i'd recommend to every developer, particularly early on in your career. People who are relatively new to coding usually don't have a good view yet on what kind of code will cause pain in the long run, and what kind of code won't. And if you keep getting assigned to new projects, you're less likely to develop that view properly compared to someone who has to maintain an existing, problematic codebase.</p><p>We've all heard the most common ways of improving as a developer: read the right books, learn from more experienced people, and above all: practice, practice, practice! And all of that is indeed very important. But i've always felt that being exposed to bad code and having to deal with it can be a tremendously important and valuable learning experience as well. As valuable as repeated practice, reading and following advice from experienced and skilled developers is, none of it will stick with you as long as the <em>pain you feel</em> day in, day out from working with a bad codebase.</p><p>When you're working with a bad codebase, it's important to figure out where the pain comes from. Whenever you experience pain while trying to make a change, or while trying to implement a new feature, take a bit of extra time to look for the cause of the pain. Then try to think of a way that would avoid the pain entirely, or at least lessen it. And if you can, implement your solution in the codebase. If you can't, try the approach you thought of in a personal project. If you do this routinely, you're going to learn a lot about what works well and what doesn't. I'd dare say that you'll get a better view on this than people who never have to work with legacy code, since they rarely get exposed to the long term problems caused by the code they write.</p><div
class="bottomcontainerBox" style=""><div
style="float:left; width:85px;padding-right:10px; margin:4px 4px 4px 4px;height:30px;"> <iframe
src="http://www.facebook.com/plugins/like.php?href=http%3A%2F%2Fdavybrion.com%2Fblog%2F2011%2F09%2Fmaintaining-bad-code-can-be-a-great-experience%2F&amp;layout=button_count&amp;show_faces=false&amp;width=85&amp;action=like&amp;font=verdana&amp;colorscheme=light&amp;height=21" scrolling="no" frameborder="0" allowTransparency="true" style="border:none; overflow:hidden; width:85px; height:21px;"></iframe></div><div
style="float:left; width:80px;padding-right:10px; margin:4px 4px 4px 4px;height:30px;"> <g:plusone size="medium" href="http://davybrion.com/blog/2011/09/maintaining-bad-code-can-be-a-great-experience/"></g:plusone></div><div
style="float:left; width:95px;padding-right:10px; margin:4px 4px 4px 4px;height:30px;"> <a
href="http://twitter.com/share" class="twitter-share-button" data-url="http://davybrion.com/blog/2011/09/maintaining-bad-code-can-be-a-great-experience/"  data-text="Maintaining Bad Code Can Be A Great Experience" data-count="horizontal" data-via="davybrion"></a></div><div
style="float:left; width:105px;padding-right:10px; margin:4px 4px 4px 4px;height:30px;"><script type="in/share" data-url="http://davybrion.com/blog/2011/09/maintaining-bad-code-can-be-a-great-experience/" data-counter="right"></script></div><div
style="float:left; width:85px;padding-right:10px; margin:4px 4px 4px 4px;height:30px;"><script src="http://www.stumbleupon.com/hostedbadge.php?s=1&amp;r=http://davybrion.com/blog/2011/09/maintaining-bad-code-can-be-a-great-experience/"></script></div></div><div
style="clear:both"></div><div
style="padding-bottom:4px;"></div>]]></content:encoded> <wfw:commentRss>http://davybrion.com/blog/2011/09/maintaining-bad-code-can-be-a-great-experience/feed/</wfw:commentRss> <slash:comments>12</slash:comments> </item> <item><title>The Benefits Of RTFM(s)</title><link>http://davybrion.com/blog/2011/08/the-benefits-of-rtfms/</link> <comments>http://davybrion.com/blog/2011/08/the-benefits-of-rtfms/#comments</comments> <pubDate>Sun, 28 Aug 2011 20:36:45 +0000</pubDate> <dc:creator>Davy Brion</dc:creator> <category><![CDATA[Opinions]]></category><guid
isPermaLink="false">http://davybrion.com/blog/?p=3551</guid> <description><![CDATA[I've been unhappy with my hosting company for the past 2 years or so, but there was one thing that prevented me from moving somewhere else: I had no idea what i would have to do to get my site working on another host. I was using Dreamhost and they've always done everything for me. [...]]]></description> <content:encoded><![CDATA[<p>I've been unhappy with my hosting company for the past 2 years or so, but there was one thing that prevented me from moving somewhere else: I had no idea what i would have to do to get my site working on another host. I was using Dreamhost and they've always done everything for me. From the initial WordPress install on one of their shared servers, to the move to my first VPS, to the second, third, and fourth. They always took care of everything. And while i wanted to move, i always thought it would be a real pain in the ass to get everything working on a new host. That 'everything' is actually only Google Apps For Your Domain and Apache/PHP/MySQL/Wordpress.</p><p>This weekend i finally took the plunge. I signed up for a machine at <a
href="http://www.linode.com/index.cfm">Linode</a> and first got started with my static <a
href="http://thatextramile.be/">company website</a>, which is really just a placeholder at the moment until the nice-looking one is done. I knew that getting that up and running with Apache would be easy since it's just static content, but i also wanted to get URL redirection right. I have 2 domains for it: thatextramile.be and thatextramile.net. I wanted thatextramile.be to be the domain that hosts the website, and i wanted to make sure that all requests to www.thatextramile.be, www.thatextramile.net and thatextramile.net received a 301 redirect to thatextramile.be. The best way to do this is to use the mod_rewrite module of Apache, so i started reading its documentation and got that working pretty quickly. To do this, i also finally had to learn how to properly configure DNS records but that too turned out to be pretty easy.</p><p>After that i wanted to get a copy of my blog working on my new server, while still keeping DNS records pointed at the old one. So i started installing/configuring PHP and MySQL, imported a dump of my blog's MySQL Database and copied the WordPress installation from the old server to the new one. I modified my laptop's /etc/hosts file so it would resolve all requests to davybrion.com to the IP of my new server so i could properly test it. I wasted a bit of time here because of some file permissions, but once i noticed that everything just worked. And pretty fast too. I also made sure that all requests to www.davybrion.com were properly redirected to davybrion.com because Google tends to punish you in their rankings when they think you have 'duplicate content' and i don't want to reduce the traffic that Google sends my way.</p><p>At this point i was still waiting for Dreamhost to transfer the registration of my domain to <a
href="http://dnsimple.com">DNSimple</a>, which for whatever reason was taking a lot longer than the transfer of my thatextramile.net domain which was taken care of in just a few hours. While i was waiting i decided to compare the load times of requests to the blog on the new server with the time it took on the old server. I used YSlow and Google's Page Speed Chrome plugin for this. I was kinda hoping to get raw figures from those tools, but instead they both gave me a shitload of tips on how to improve the performance of the site. It certainly already felt faster than the previous server, but a big factor in that was probably the fact that the old server was located in California while the new one is located in the UK. But those tips got me to look into minification and combining of JavaScript and CSS files and putting it on a CDN with good future date expiration headers. That got me looking into the <a
href="http://wordpress.org/extend/plugins/w3-total-cache/">W3 Total Cache</a> plugin for WordPress, in combination with using <a
href="http://aws.amazon.com/cloudfront/">Amazon's CloudFront</a> for static content. I haven't succeeded yet in getting every bit of JavaScript combined in one file because some plugins don't really play nice with the W3 Total Cache plugin, but in general most page-loads should cause far fewer HTTP requests and they should be dealt with more quickly than previously because of CloudFront.</p><p>So once all of that was working, i just wanted to 'turn the switch' and start using the new server for all requests, but the domain transfer still wasn't done. It then hit me that i could just change the DNS settings on the current registrar to point to the new server so i modified the A records for davybrion.com and www.davybrion.com to point to the IP of my new server. And that was all there was to it. Well, i also spent a bit of time in hardening the server but that didn't take long since i only have 2 publicly available services. Is it going to be totally secure? Of course not, but the number of ways to get in are limited enough.</p><p>So to recap: i did a lot of reading to understand what i needed to do, and i'm pretty happy with the results. I learned a lot of new things, finally moved everything to a new server that i have full control over, no longer have to deal with the shitty support from my previous host, and am paying the exact same monthly amount as i used to. Not to mention the not so unimportant part about the blog feeling a lot faster (though i'm not sure how fast it'll feel for non-european visitors). Sure, it could go down at any moment and it'll be up to me to fix it. At that point i'll read up on whatever i need to read up on and then just try to improve the situation.</p><p>The whole thing took me about 8 hours. Pretty sure it would've taken me longer if i hadn't taken my time on the reading parts because i would've spent more time troubleshooting the inevitable mistakes that i would've made.</p><p>Note: DNS changes are still propagating, so if you're reading this from a feed reader, the site may not work correctly yet for you. If you do happen to notice a problem, i'd appreciate it if you <a
href="mailto:ralinx@davybrion.com">mailed</a> me the details, preferably including the IP address that 'davybrion.com' resolves to on your machine and if possible, your local time + timezone info so i can look for matching elements in my logs <img
src='http://d18sni7re4ly7f.cloudfront.net/blog/wp-includes/images/smilies/icon_smile.gif' alt=':)' class='wp-smiley' /></p><div
class="bottomcontainerBox" style=""><div
style="float:left; width:85px;padding-right:10px; margin:4px 4px 4px 4px;height:30px;"> <iframe
src="http://www.facebook.com/plugins/like.php?href=http%3A%2F%2Fdavybrion.com%2Fblog%2F2011%2F08%2Fthe-benefits-of-rtfms%2F&amp;layout=button_count&amp;show_faces=false&amp;width=85&amp;action=like&amp;font=verdana&amp;colorscheme=light&amp;height=21" scrolling="no" frameborder="0" allowTransparency="true" style="border:none; overflow:hidden; width:85px; height:21px;"></iframe></div><div
style="float:left; width:80px;padding-right:10px; margin:4px 4px 4px 4px;height:30px;"> <g:plusone size="medium" href="http://davybrion.com/blog/2011/08/the-benefits-of-rtfms/"></g:plusone></div><div
style="float:left; width:95px;padding-right:10px; margin:4px 4px 4px 4px;height:30px;"> <a
href="http://twitter.com/share" class="twitter-share-button" data-url="http://davybrion.com/blog/2011/08/the-benefits-of-rtfms/"  data-text="The Benefits Of RTFM(s)" data-count="horizontal" data-via="davybrion"></a></div><div
style="float:left; width:105px;padding-right:10px; margin:4px 4px 4px 4px;height:30px;"><script type="in/share" data-url="http://davybrion.com/blog/2011/08/the-benefits-of-rtfms/" data-counter="right"></script></div><div
style="float:left; width:85px;padding-right:10px; margin:4px 4px 4px 4px;height:30px;"><script src="http://www.stumbleupon.com/hostedbadge.php?s=1&amp;r=http://davybrion.com/blog/2011/08/the-benefits-of-rtfms/"></script></div></div><div
style="clear:both"></div><div
style="padding-bottom:4px;"></div>]]></content:encoded> <wfw:commentRss>http://davybrion.com/blog/2011/08/the-benefits-of-rtfms/feed/</wfw:commentRss> <slash:comments>6</slash:comments> </item> <item><title>Using Frameworks Doesn&#8217;t Mean You Don&#8217;t Have To Know What You&#8217;re Doing</title><link>http://davybrion.com/blog/2011/08/using-frameworks-doesnt-mean-you-dont-have-to-know-what-youre-doing/</link> <comments>http://davybrion.com/blog/2011/08/using-frameworks-doesnt-mean-you-dont-have-to-know-what-youre-doing/#comments</comments> <pubDate>Tue, 23 Aug 2011 20:23:46 +0000</pubDate> <dc:creator>Davy Brion</dc:creator> <category><![CDATA[Opinions]]></category><guid
isPermaLink="false">http://davybrion.com/blog/?p=3525</guid> <description><![CDATA[I came across a good post yesterday titled "Are frameworks making developers dumb?". I wouldn't say frameworks make developers dumb, but i have noticed on way too many occasions that many developers don't really have a clue about what the frameworks they're using are actually doing. And it's not just within one specific developer community. [...]]]></description> <content:encoded><![CDATA[<p>I came across a good post yesterday titled "<a
href="http://www.javacodegeeks.com/2011/08/are-frameworks-making-developers-dumb.html" target="_blank">Are frameworks making developers dumb?</a>". I wouldn't say frameworks make developers dumb, but i have noticed on way too many occasions that many developers don't really have a clue about what the frameworks they're using are <em>actually doing</em>. And it's not just within one specific developer community. I've seen it in the .NET, Java and Ruby camps and i'd expect it to be common in every single platform that becomes big enough to no longer be considered a niche.</p><p>People develop frameworks so other people don't have to deal with certain details all the time. People use frameworks so they can focus on what matters to what they're trying to do, without having to focus on lower-level stuff that's not really relevant to them. I mean, that sounds great, right? Just use the right framework to do what you want to do and you instantly become more productive! Even if you picked a good framework to use (and we all know there are plenty of bad/horrible ones to go around), you still need to know what the framework is doing. Abstraction purely for the sake of not having to know what's going on is hardly ever a good thing when it comes to software development. Does that mean you have to know every single detail? Of course not, but you should be aware of the things that might end up hurting you.</p><p><a
href="http://davybrion.com/blog/wp-content/uploads/2011/08/doingitwrong.jpg" rel="prettyPhoto[3525]"><img
src="http://davybrion.com/blog/wp-content/uploads/2011/08/doingitwrong.jpg" alt="" title="doingitwrong" width="487" height="418" class="aligncenter size-full wp-image-3526" /></a></p><p>In software development, nothing is free and when something suddenly becomes easy due to a framework, you ought to figure out why it becomes easier and how that is achieved. If you get the answer to those 2 questions, you're much more likely to use the framework more responsibly instead of following blind faith or not caring about things that you simply can not just ignore. Like it or not, memory management matters. The cost of complex database operations (leaving in the middle whether you're using an RDBMS or a NoSQL solution) or the frequency of them matters. Bandwidth matters. Remote calls matter.</p><p>And there's a lot more to it than possible performance issues. Unwise usage of frameworks can also have a detrimental effect on the maintainability of your code. What might look like an improvement at first could very well lead to serious inflexibility and/or fragility in the long run.</p><p>Simply put: a lot of the things that frameworks try to hide under the carpet matter. Every benefit you get from them has a potential cost. If you want to keep enjoying those benefits, you better learn how to avoid the costs.</p><div
class="bottomcontainerBox" style=""><div
style="float:left; width:85px;padding-right:10px; margin:4px 4px 4px 4px;height:30px;"> <iframe
src="http://www.facebook.com/plugins/like.php?href=http%3A%2F%2Fdavybrion.com%2Fblog%2F2011%2F08%2Fusing-frameworks-doesnt-mean-you-dont-have-to-know-what-youre-doing%2F&amp;layout=button_count&amp;show_faces=false&amp;width=85&amp;action=like&amp;font=verdana&amp;colorscheme=light&amp;height=21" scrolling="no" frameborder="0" allowTransparency="true" style="border:none; overflow:hidden; width:85px; height:21px;"></iframe></div><div
style="float:left; width:80px;padding-right:10px; margin:4px 4px 4px 4px;height:30px;"> <g:plusone size="medium" href="http://davybrion.com/blog/2011/08/using-frameworks-doesnt-mean-you-dont-have-to-know-what-youre-doing/"></g:plusone></div><div
style="float:left; width:95px;padding-right:10px; margin:4px 4px 4px 4px;height:30px;"> <a
href="http://twitter.com/share" class="twitter-share-button" data-url="http://davybrion.com/blog/2011/08/using-frameworks-doesnt-mean-you-dont-have-to-know-what-youre-doing/"  data-text="Using Frameworks Doesn&#8217;t Mean You Don&#8217;t Have To Know What You&#8217;re Doing" data-count="horizontal" data-via="davybrion"></a></div><div
style="float:left; width:105px;padding-right:10px; margin:4px 4px 4px 4px;height:30px;"><script type="in/share" data-url="http://davybrion.com/blog/2011/08/using-frameworks-doesnt-mean-you-dont-have-to-know-what-youre-doing/" data-counter="right"></script></div><div
style="float:left; width:85px;padding-right:10px; margin:4px 4px 4px 4px;height:30px;"><script src="http://www.stumbleupon.com/hostedbadge.php?s=1&amp;r=http://davybrion.com/blog/2011/08/using-frameworks-doesnt-mean-you-dont-have-to-know-what-youre-doing/"></script></div></div><div
style="clear:both"></div><div
style="padding-bottom:4px;"></div>]]></content:encoded> <wfw:commentRss>http://davybrion.com/blog/2011/08/using-frameworks-doesnt-mean-you-dont-have-to-know-what-youre-doing/feed/</wfw:commentRss> <slash:comments>11</slash:comments> </item> <item><title>Advantages Of Being A Polyglot Programmer</title><link>http://davybrion.com/blog/2011/08/advantages-of-being-a-polyglot-programmer/</link> <comments>http://davybrion.com/blog/2011/08/advantages-of-being-a-polyglot-programmer/#comments</comments> <pubDate>Mon, 15 Aug 2011 20:00:41 +0000</pubDate> <dc:creator>Davy Brion</dc:creator> <category><![CDATA[Opinions]]></category><guid
isPermaLink="false">http://davybrion.com/blog/?p=3514</guid> <description><![CDATA[For the majority of my career, i considered myself a C# developer because that was pretty much the only language i used. I learned other languages when i was in school, but i wasn't using them anymore. If i wanted to code something, i'd do it in C# because that was the language i was [...]]]></description> <content:encoded><![CDATA[<p>For the majority of my career, i considered myself a C# developer because that was pretty much the only language i used. I learned other languages when i was in school, but i wasn't using them anymore. If i wanted to code something, i'd do it in C# because that was the language i was most comfortable in. Then last year, i started learning Ruby. This year, it's JavaScript (both client-side and server-side). Next year, i'd like to learn a real functional language, most likely Haskell. I still do C# at work, but i no longer consider myself a C# developer. These days, i consider myself to be a polyglot programmer. I feel quite comfortable writing code in 3 languages, and am looking forward to add more languages to the mix over the next couple of years.</p><p>I used to think it was more interesting to focus on one platform/language and really strive to know it thoroughly, but i couldn't disagree more with that nowadays. I've noticed that there are quite a few advantages to learning new languages and exposing yourself to new communities, approaches and ideas. And i believe they far outweigh the benefits of sticking to just one platform/language. There are 5 advantages in particular that i'd like to discuss in more detail.</p><h3>It expands your horizons</h3><p>There's more to becoming productive with a new language than merely learning the syntax of the language. You're going to learn about new tricks, new libraries and new ways of solving problems that are common in the community of whatever it is that you're learning. You're basically trying to soak up knowledge that is common to others, but new to you. Depending on what you already know, there might be a lot of new stuff to learn or it might just be small tidbits here and there. If you already know a dynamic class-based language, learning another one might not expose you to a lot of new stuff. But if you're used to static class-based languages, learning a dynamic class-based language is going to be quite an interesting experience. Try to mix paradigms to get the most out of this. It'll start to influence the way you think about problems and how you can solve them.</p><h3>It makes it easier to learn new things</h3><p>Practice makes perfect, right? If you're routinely trying to learn new things, the very act of learning new things actually becomes easier. A lot of people have problems learning things that conflict or contradict with what they already know. The first time you learn a new language based on a paradigm that you don't quite understand yet, it might take a while to grasp it because you're likely having difficulties thinking about things outside of the structure and rules that you're used to. It'll be easier the second time, because you're already more comfortable with letting go of what you already know and not restricting the way you think about things or try to comprehend them. And it'll keep on getting easier and easier. This obviously applies to more than just programming languages.</p><h3>It continuously refreshes your love of programming</h3><p>This one probably depends from person to person, but when i was still just a C# developer i routinely got into stretches of time where i didn't really have fun writing code. During those stretches, writing code was just a job, and no longer something that i once considered a joy and a hobby. Those stretches could last a couple of weeks, sometimes even a month or two. Since i started learning more languages, i haven't really hit a stretch like that anymore. It remains fun, interesting and challenging because you just keep on learning new things and you keep on improving continuously.</p><h3>It decreases your reliance on certain tools and introduces you to new ones</h3><p>2 years ago, i couldn't imagine writing code without a strong IDE to back me up. I was so dependent on Visual Studio's (and Resharper's) Intellisense, code completion, code navigation and strong debugging features that i just couldn't believe i could be as productive without those things. Nowadays, i really just prefer to code in a strong text-editor (TextMate was my favorite, but i recently switched to Sublime Text 2) with a terminal window to run my tests. I avoid debuggers by working in small steps, with small, focused tests which also make it (relatively) easy to isolate bugs and fix them. I actually don't mind 'poor man's debugging' (putting log statements in certain parts of your code to find out where things go wrong) anymore because i'm starting to think it can often be quicker than relying on your IDE's debugger. I recently even joked that they call it poor man's debugging because it's used by people who can't afford to waste time waiting for an IDE and its debugger <img
src='http://d18sni7re4ly7f.cloudfront.net/blog/wp-includes/images/smilies/icon_wink.gif' alt=';)' class='wp-smiley' /> . Another benefit is that you'll have to get comfortable with the command line and perhaps even different operating systems. If you want to get into Ruby or Node, you're better off installing a Linux distro (or run on OS X if you happen to have a Mac) and experiment with the language/platform on that instead of trying to get things working on Windows. Getting comfortable with a *NIX shell and its tools is something that you're probably going to be able to use for a long time to come so there's no reason to shy away from it.</p><h3>It makes you less emotionally attached to a language/platform</h3><p>People who only work with one language/platform often have an emotional attachment to it. If you're emotionally attached, it's not always easy to remain rational during discussions or when the future of your language/platform is being threatened. If you know more than one language/platform, you know that your skills are transferable. You know that you can be a good developer no matter what you have to work with. You know that you really don't have anything to fear about how things will evolve. You just know that you can deal with it. Easily even.</p><div
class="bottomcontainerBox" style=""><div
style="float:left; width:85px;padding-right:10px; margin:4px 4px 4px 4px;height:30px;"> <iframe
src="http://www.facebook.com/plugins/like.php?href=http%3A%2F%2Fdavybrion.com%2Fblog%2F2011%2F08%2Fadvantages-of-being-a-polyglot-programmer%2F&amp;layout=button_count&amp;show_faces=false&amp;width=85&amp;action=like&amp;font=verdana&amp;colorscheme=light&amp;height=21" scrolling="no" frameborder="0" allowTransparency="true" style="border:none; overflow:hidden; width:85px; height:21px;"></iframe></div><div
style="float:left; width:80px;padding-right:10px; margin:4px 4px 4px 4px;height:30px;"> <g:plusone size="medium" href="http://davybrion.com/blog/2011/08/advantages-of-being-a-polyglot-programmer/"></g:plusone></div><div
style="float:left; width:95px;padding-right:10px; margin:4px 4px 4px 4px;height:30px;"> <a
href="http://twitter.com/share" class="twitter-share-button" data-url="http://davybrion.com/blog/2011/08/advantages-of-being-a-polyglot-programmer/"  data-text="Advantages Of Being A Polyglot Programmer" data-count="horizontal" data-via="davybrion"></a></div><div
style="float:left; width:105px;padding-right:10px; margin:4px 4px 4px 4px;height:30px;"><script type="in/share" data-url="http://davybrion.com/blog/2011/08/advantages-of-being-a-polyglot-programmer/" data-counter="right"></script></div><div
style="float:left; width:85px;padding-right:10px; margin:4px 4px 4px 4px;height:30px;"><script src="http://www.stumbleupon.com/hostedbadge.php?s=1&amp;r=http://davybrion.com/blog/2011/08/advantages-of-being-a-polyglot-programmer/"></script></div></div><div
style="clear:both"></div><div
style="padding-bottom:4px;"></div>]]></content:encoded> <wfw:commentRss>http://davybrion.com/blog/2011/08/advantages-of-being-a-polyglot-programmer/feed/</wfw:commentRss> <slash:comments>37</slash:comments> </item> <item><title>Clean Code Versus Great Code</title><link>http://davybrion.com/blog/2011/07/clean-code-versus-great-code/</link> <comments>http://davybrion.com/blog/2011/07/clean-code-versus-great-code/#comments</comments> <pubDate>Thu, 21 Jul 2011 16:00:11 +0000</pubDate> <dc:creator>Davy Brion</dc:creator> <category><![CDATA[Code Quality]]></category> <category><![CDATA[Opinions]]></category><guid
isPermaLink="false">http://davybrion.com/blog/?p=3399</guid> <description><![CDATA[I've had some interesting discussions with other developers about writing code recently. I often have the impression that some developers put too much emphasis on clean code. Don't get me wrong, i strive for clean code as well, and have written about its importance quite a lot in the past couple of years. But when [...]]]></description> <content:encoded><![CDATA[<p>I've had some interesting discussions with other developers about writing code recently. I often have the impression that some developers put too much emphasis on clean code. Don't get me wrong, i strive for clean code as well, and have written about its importance quite a lot in the past couple of years. But when i'm coding, clean code is my secondary goal and it could never take the place of my primary goal: making it work. And preferably, i want to make it work <em>great</em>.</p><p>A lot of people love to talk the talk when it comes to writing clean code. They'll stress their dedication to it, in some cases even wearing Uncle Bob's <a
href="http://butunclebob.com/ArticleS.UncleBob.GreenWristBand" target="_blank">green band</a> while coding so they'll never lose sight of what's incredibly important to them: writing clean code. Unfortunately, i've noticed on numerous occasions that many of these people don't always put as much emphasis on <em>what the code is doing</em> compared to <em>how it looks</em>. Sometimes they don't really bother to learn what their ORM is doing behind the scenes. Or they'll prefer to use something like Automapper to map entities to DTO's even though it is woefully inefficient compared to simply retrieving projected data. They don't always think about the cost of multiple remote calls or sending way too much data over the wire. And when they're not perfecting the art of writing bowling games over and over again, they just might <a
href="http://davybrion.com/blog/2008/11/why-on-earth-would-a-developer-do-this/" target="_blank">hit the database in loop</a>.</p><p>Clean code is not necessarily great code, nor is great code necessarily clean code. To me, great code is code that works great, performs great, is easy to understand and easy to change. In that order. I know all too well how important it is to easily understand code when you first read it, and to be able to easily and safely make changes to it. But no matter how easy it is to read or change, if it's not doing what it should be doing (including covering all the corner cases) or if it's taking more than its fair share of time to do it, it's not good code. Sure, it might be clean, but it's not great, is it?</p><p>That doesn't mean that you should indulge in premature optimization. Unless you have Neo-like skills in this coding Matrix, you're unlikely to be right in even a quarter of all scenarios that you want to optimize prematurely. There are however a <a
href="http://davybrion.com/blog/2009/02/performance-rules-of-thumb/" target="_blank">few guidelines</a> which will help you avoid most common performance problems. Most other situations are better left ignored until proven by a profiler to be a bottleneck. But you should at least think about what the code is actually doing and whether or not any downsides to that are worth the cleanliness. Don't hesitate to go with the slightly less clean looking code if that code makes more sense from a correctness and performance point of view.</p><p>By all means, strive to write clean code. But think twice before you sacrifice its ability to be great.</p><div
class="bottomcontainerBox" style=""><div
style="float:left; width:85px;padding-right:10px; margin:4px 4px 4px 4px;height:30px;"> <iframe
src="http://www.facebook.com/plugins/like.php?href=http%3A%2F%2Fdavybrion.com%2Fblog%2F2011%2F07%2Fclean-code-versus-great-code%2F&amp;layout=button_count&amp;show_faces=false&amp;width=85&amp;action=like&amp;font=verdana&amp;colorscheme=light&amp;height=21" scrolling="no" frameborder="0" allowTransparency="true" style="border:none; overflow:hidden; width:85px; height:21px;"></iframe></div><div
style="float:left; width:80px;padding-right:10px; margin:4px 4px 4px 4px;height:30px;"> <g:plusone size="medium" href="http://davybrion.com/blog/2011/07/clean-code-versus-great-code/"></g:plusone></div><div
style="float:left; width:95px;padding-right:10px; margin:4px 4px 4px 4px;height:30px;"> <a
href="http://twitter.com/share" class="twitter-share-button" data-url="http://davybrion.com/blog/2011/07/clean-code-versus-great-code/"  data-text="Clean Code Versus Great Code" data-count="horizontal" data-via="davybrion"></a></div><div
style="float:left; width:105px;padding-right:10px; margin:4px 4px 4px 4px;height:30px;"><script type="in/share" data-url="http://davybrion.com/blog/2011/07/clean-code-versus-great-code/" data-counter="right"></script></div><div
style="float:left; width:85px;padding-right:10px; margin:4px 4px 4px 4px;height:30px;"><script src="http://www.stumbleupon.com/hostedbadge.php?s=1&amp;r=http://davybrion.com/blog/2011/07/clean-code-versus-great-code/"></script></div></div><div
style="clear:both"></div><div
style="padding-bottom:4px;"></div>]]></content:encoded> <wfw:commentRss>http://davybrion.com/blog/2011/07/clean-code-versus-great-code/feed/</wfw:commentRss> <slash:comments>24</slash:comments> </item> <item><title>Arguing About Developer Communities Doesn&#8217;t Make Sense</title><link>http://davybrion.com/blog/2011/07/arguing-about-developer-communities-doesnt-make-sense/</link> <comments>http://davybrion.com/blog/2011/07/arguing-about-developer-communities-doesnt-make-sense/#comments</comments> <pubDate>Sun, 17 Jul 2011 14:20:22 +0000</pubDate> <dc:creator>Davy Brion</dc:creator> <category><![CDATA[Opinions]]></category><guid
isPermaLink="false">http://davybrion.com/blog/?p=3374</guid> <description><![CDATA[There's been a lot of arguing about the differences between the .NET developer community and the Ruby community lately. It started because of a developer who moved to Ruby and then wrote about how great that community is compared to the .NET community. I'm not going to link to the original post or any of [...]]]></description> <content:encoded><![CDATA[<p>There's been a lot of arguing about the differences between the .NET developer community and the Ruby community lately. It started because of a developer who moved to Ruby and then wrote about how great that community is compared to the .NET community. I'm not going to link to the original post or any of the reactions to it. I'm also not going to name names because some ego's don't need to be inflated more than they already are, and the people involved will probably feel stupid enough already a year from now about some of the things that were said. And to be clear: that goes for people on both sides.</p><p>The original post was a rather silly rant where the author vented his frustration with the community he had previously been a part of. And yes, some of you are currently thinking "umm Davy, didn't you do the exact same thing last year?". I sure did, and i know now how stupid it was (personal growth for the win, amirite?). I too was very frustrated with the state of the .NET community, found something that i thought was better and took a few shots at the .NET community, like some other people who've moved to a different community.</p><p>The thing is though: why even bother? Sure, sometimes the urge to tell someone (or a group of people) off is hard to resist. But doing so rarely benefits you, and when it does, it's most likely when it's targeted to one person who might need to be confronted with something. If you tell off a group of people, what good can you possibly expect to come out of it? You can't expect them to suddenly agree with your point of view, even if some of them might do so. The majority of them will just think you're a dick and will be even less inclined to listen to what you have to say in the future. So what exactly did you accomplish? Apart from getting a bunch of people to think less of you, there is absolutely nothing to get out of it. Also, if you plan on becoming a vocal member of your new community, you might want to keep in mind that some of the people in that new community will take notice of your childish rant and some of them will expect you to do the same thing to them once you're ready to move to yet another community a few years down the line. You won't just look like a dick, you're also setting yourself up for negative future expectations that some people will have of you. Really, why even bother writing such posts? If you need to vent, at least try to do it in a constructive manner and in a respectful tone instead of acting like a spurned lover or a kid that didn't get his way.</p><p>As for the people who reacted defensively to it, again i ask: why even bother? Why get all worked up about something that was written by someone who doesn't even want to be a part of your community anymore? Why even get angry or frustrated about someone making a blanket statement that wasn't even directed at you personally? Why would you extend the attention that it's going to get by going on and on about it on Twitter? That too, is off-putting and a waste of time and energy. Not just yours, but everyone else's who has to filter through the noise. And what exactly are you arguing about? You're arguing about something that is inherently subjective. Do you get into heated arguments about music or movies as well?  You're getting all worked up about other people's preferences, which doesn't really improve your life or situation in any way at all. On the contrary, your whining about it might just result in people not wanting to listen to you anymore either. I unfollowed a couple of people on Twitter because i didn't see the point in reading the same bitching in my timeline for a couple of days in a row. If you really need to get it off your chest, write a coherent post about it, publish it and make your statement <em>once</em> and then move on to something more interesting, like, having fun building working software.</p><p>Different strokes for different folks, people. Focus on the things you find interesting and have fun with it. Enjoy building things and try to improve by learning whatever you think will make you a better developer. Consider sharing what you learn with others if you have time for it. But please, let's quit bitching about other development communities because there really is nothing good that can come out of it.</p><div
class="bottomcontainerBox" style=""><div
style="float:left; width:85px;padding-right:10px; margin:4px 4px 4px 4px;height:30px;"> <iframe
src="http://www.facebook.com/plugins/like.php?href=http%3A%2F%2Fdavybrion.com%2Fblog%2F2011%2F07%2Farguing-about-developer-communities-doesnt-make-sense%2F&amp;layout=button_count&amp;show_faces=false&amp;width=85&amp;action=like&amp;font=verdana&amp;colorscheme=light&amp;height=21" scrolling="no" frameborder="0" allowTransparency="true" style="border:none; overflow:hidden; width:85px; height:21px;"></iframe></div><div
style="float:left; width:80px;padding-right:10px; margin:4px 4px 4px 4px;height:30px;"> <g:plusone size="medium" href="http://davybrion.com/blog/2011/07/arguing-about-developer-communities-doesnt-make-sense/"></g:plusone></div><div
style="float:left; width:95px;padding-right:10px; margin:4px 4px 4px 4px;height:30px;"> <a
href="http://twitter.com/share" class="twitter-share-button" data-url="http://davybrion.com/blog/2011/07/arguing-about-developer-communities-doesnt-make-sense/"  data-text="Arguing About Developer Communities Doesn&#8217;t Make Sense" data-count="horizontal" data-via="davybrion"></a></div><div
style="float:left; width:105px;padding-right:10px; margin:4px 4px 4px 4px;height:30px;"><script type="in/share" data-url="http://davybrion.com/blog/2011/07/arguing-about-developer-communities-doesnt-make-sense/" data-counter="right"></script></div><div
style="float:left; width:85px;padding-right:10px; margin:4px 4px 4px 4px;height:30px;"><script src="http://www.stumbleupon.com/hostedbadge.php?s=1&amp;r=http://davybrion.com/blog/2011/07/arguing-about-developer-communities-doesnt-make-sense/"></script></div></div><div
style="clear:both"></div><div
style="padding-bottom:4px;"></div>]]></content:encoded> <wfw:commentRss>http://davybrion.com/blog/2011/07/arguing-about-developer-communities-doesnt-make-sense/feed/</wfw:commentRss> <slash:comments>9</slash:comments> </item> <item><title>Keeping Things Interesting (Or: Avoiding .NET At Home)</title><link>http://davybrion.com/blog/2011/06/keeping-things-interesting-or-avoiding-net-at-home/</link> <comments>http://davybrion.com/blog/2011/06/keeping-things-interesting-or-avoiding-net-at-home/#comments</comments> <pubDate>Sun, 26 Jun 2011 18:51:46 +0000</pubDate> <dc:creator>Davy Brion</dc:creator> <category><![CDATA[Opinions]]></category><guid
isPermaLink="false">http://davybrion.com/blog/?p=3323</guid> <description><![CDATA[When other developers ask me what kind of stuff i'm working on or playing with outside of work hours, they're often quite surprised to hear that i actually try to avoid doing .NET stuff at home. I generally only use it at home if i have to: if i have to prepare for my NHibernate [...]]]></description> <content:encoded><![CDATA[<p>When other developers ask me what kind of stuff i'm working on or playing with outside of work hours, they're often quite surprised to hear that i actually try to avoid doing .NET stuff at home. I generally only use it at home if i have to: if i have to prepare for my NHibernate course, or if i'm merging patches that i've received for Agatha. Other than that, i'd rather not spend time on it. It's not that i don't like .NET, but i just don't find it a very interesting space to be in anymore. There's very little innovation going on and the new things that the community and Microsoft are working on most often seem like either new libraries or frameworks to keep doing the same things we've been doing for years, or building things that other development communities already have for a while now. It also doesn't help that a lot of the people who used to be in the ALT.NET community seem to be spending a lot of their spare time learning new languages and platforms instead of pushing for improvement in the .NET community like they used to do.  That's not a criticism of them because i can't blame them at all.  Hell, i'm doing the same thing.</p><p>I still do .NET professionally, and i expect to keep working with it for a few more years because there's just not that much work around here (Belgium) with alternative technologies.  And the work that is there most often pays a lot less than your typical .NET job.  It shouldn't only be about money, but it does start to matter increasingly once you're no longer in your middle-twenties.  So what do you do if you're passionate about development, but aren't quite as passionate anymore about the technical environment you use most often?  I started learning Ruby last year and it was an eye-opening experience for me on multiple levels.  I love it as a language, and i like a lot of the stuff that is happening in and coming out of the Ruby community.  Is it all perfect on that side of the fence? Of course not, nothing is.  But it's worth learning, if only because it will expand your mind and your views on software development.</p><p>For the past 6 months, i've become increasingly fond of JavaScript and while i don't like it nearly as much as Ruby (still my favorite language), i am very intrigued by the fact that is becoming increasingly relevant on both the client <em>and</em> the server.  I want to dive deeply in the world of Node.JS, but i also want to learn more about Backbone.JS and Knockout.JS.  I want to explore the world of automated testing for both client-side and server-side JavaScript.  I probably should look into CoffeeScript as well, but i'd like to become proficient in JavaScript first before i switch to something that compiles <em>to</em> JavaScript, if only because you're likely going to be reading a lot of JavaScript code anyway for the next couple of years.</p><p>Will i still like JavaScript as much 6 months or a year from now, or will i be trying to learn something else by then? Who knows, and really, who cares? What matters to me is that i keep learning new things this way, which keeps things interesting for me. Some of the stuff i'll learn won't be usable to me at all in my daytime .NET coding, but some stuff will.  You can never quite tell in advance, just like you can't really know in advance whether it's a good investment to jump into the latest and greatest thing in the .NET world.  The only thing that really matters is that you keep enjoying the journey, no matter which technology or language or platforms you get that enjoyment from.</p><div
class="bottomcontainerBox" style=""><div
style="float:left; width:85px;padding-right:10px; margin:4px 4px 4px 4px;height:30px;"> <iframe
src="http://www.facebook.com/plugins/like.php?href=http%3A%2F%2Fdavybrion.com%2Fblog%2F2011%2F06%2Fkeeping-things-interesting-or-avoiding-net-at-home%2F&amp;layout=button_count&amp;show_faces=false&amp;width=85&amp;action=like&amp;font=verdana&amp;colorscheme=light&amp;height=21" scrolling="no" frameborder="0" allowTransparency="true" style="border:none; overflow:hidden; width:85px; height:21px;"></iframe></div><div
style="float:left; width:80px;padding-right:10px; margin:4px 4px 4px 4px;height:30px;"> <g:plusone size="medium" href="http://davybrion.com/blog/2011/06/keeping-things-interesting-or-avoiding-net-at-home/"></g:plusone></div><div
style="float:left; width:95px;padding-right:10px; margin:4px 4px 4px 4px;height:30px;"> <a
href="http://twitter.com/share" class="twitter-share-button" data-url="http://davybrion.com/blog/2011/06/keeping-things-interesting-or-avoiding-net-at-home/"  data-text="Keeping Things Interesting (Or: Avoiding .NET At Home)" data-count="horizontal" data-via="davybrion"></a></div><div
style="float:left; width:105px;padding-right:10px; margin:4px 4px 4px 4px;height:30px;"><script type="in/share" data-url="http://davybrion.com/blog/2011/06/keeping-things-interesting-or-avoiding-net-at-home/" data-counter="right"></script></div><div
style="float:left; width:85px;padding-right:10px; margin:4px 4px 4px 4px;height:30px;"><script src="http://www.stumbleupon.com/hostedbadge.php?s=1&amp;r=http://davybrion.com/blog/2011/06/keeping-things-interesting-or-avoiding-net-at-home/"></script></div></div><div
style="clear:both"></div><div
style="padding-bottom:4px;"></div>]]></content:encoded> <wfw:commentRss>http://davybrion.com/blog/2011/06/keeping-things-interesting-or-avoiding-net-at-home/feed/</wfw:commentRss> <slash:comments>22</slash:comments> </item> <item><title>Yet Another Nail In Silverlight&#8217;s Coffin?</title><link>http://davybrion.com/blog/2011/06/yet-another-nail-in-silverlights-coffin/</link> <comments>http://davybrion.com/blog/2011/06/yet-another-nail-in-silverlights-coffin/#comments</comments> <pubDate>Sat, 04 Jun 2011 13:07:26 +0000</pubDate> <dc:creator>Davy Brion</dc:creator> <category><![CDATA[Opinions]]></category> <category><![CDATA[Silverlight]]></category><guid
isPermaLink="false">http://davybrion.com/blog/?p=3303</guid> <description><![CDATA[As i'm sure you know by now, Microsoft caused a bit of a stir in the .NET development community with their recent 10 minute demo of Windows 8. More specifically, the fact that they explicitly mentioned HTML5 and JavaScript as one of the ways to build these new-look Windows 8 applications while neglecting to mention [...]]]></description> <content:encoded><![CDATA[<p>As i'm sure you know by now, Microsoft caused a bit of a stir in the .NET development community with their recent 10 minute demo of Windows 8.  More specifically, the fact that they explicitly mentioned HTML5 and JavaScript as one of the ways to build these new-look Windows 8 applications while neglecting to mention Silverlight or WPF left a lot of developers wondering what the future holds for both Silverlight and WPF.  An interesting <a
href="http://forums.silverlight.net/forums/p/230502/562113.aspx">thread</a> showed up on the Silverlight forums where Silverlight developers expressed their fear for the future of their platform.  I've been following that thread with a lot of interest, not only because the statements and behavior displayed in that thread are both hilarious and astounding, but because i wanted to see how Microsoft would react to it.</p><p>Surely, if the core audience of one of their most-touted technologies of the past years started to doubt the future of their platform so openly, a response to calm down the fears would have to be forthcoming, no?  The only Microsoft employee to respond was Pete Brown, and i thought it was quite telling:</p><blockquote> You all saw a very small technology demo of Windows 8, and a brief press release. We're all being quiet right now because we can't comment on this. It's not because we don't care, aren't listening, have given up, or are agreeing or disagreeing with you on something. All I can say for now is to please wait until September. If we say more before then, that will be great, but there are no promises (and I'm not aware of any plans) to say more right now. I'm very sorry that there's nothing else to share at the moment. I know that answer is terrible, but it's all that we can say right now. Seriously.</blockquote><p>Followed by:</p><blockquote> Guys, I've been pretty clear that my hands are tied here, so don't read anything more into my lack of comments than that. We simply aren't allowed to say anything about this. It's not that we have nothing to say. It's not that we don't care. It's not that I personally don't care, because I do, a lot.</blockquote><p>And finally:</p><blockquote> This whole thing has blown way out of proportion. Base your information on our primary sources (like our press release), not on third party speculation. That's not to minimize how everyone feels, but keep in mind that Windows 8 itself is still a ways off from retail, and even much further away from internal IT adoption. The 8 weeks until //build/ is a pretty small amount of time to wait in comparison. Take some vacation time this summer, and look forward to the //build/ conference. Stop speculating based on just a small demo of some very cool new technology. Tell your management to do the same: if they're basing your project work for the next X years on the results of a quick demo for an unreleased operating system, then they are doing you and your company a real disservice.</blockquote><p>If i were still a Silverlight developer, i'd find the final sentence quite insulting.  If anything, Microsoft is doing a sizable portion of their customers a disservice by being so unclear about the future of one of their technologies.  This certainly isn't the first storm to come up about Silverlight's future, and every time people have openly questioned the future of the platform Microsoft has responded <a
href="http://davybrion.com/blog/2010/11/never-underestimate-the-power-of-a-message/">rather softly</a>.  There's never been a convincing and strong "we are fully committed to making Silverlight a smart choice for the future" kind of response.  And this time, no response at all. Just silence. Deafening silence even, because of Pete's remark that they are not even <em>allowed</em> to talk about it.  Once again, the Silverlight community is screaming for a real response and they're being ignored. They're being told to wait until September.</p><p>Obviously, i don't know what Microsoft is planning for Silverlight, but i really have difficulties understanding how any company could still trust it as a viable technological choice.  First the mixed messages, then the clear favoritism Microsoft is showing towards HTML5 and JavaScript (which, IMO, is justified but that's another topic), and now the unwillingness to stand up for one of their products that is being doubted so openly, for the first time by its very users who only want assurance of Microsoft that their investments in the technology haven't been a total waste.  I took a lot of flack from the Silverlight community when i scored Silverlight so low in the 'strategic' department in my <a
href="http://davybrion.com/blog/2011/03/why-were-going-with-html5-instead-of-silverlight/">post where i detailed how we came to the conclusion to go with HTML(5) instead of Silverlight</a> but this recent PR fiasco kind of validates that score IMO.</p><p>However, Microsoft certainly isn't the only one to blame here.  If you read the thread i linked to, you'll see some reactions from people who've pretty much put all of their eggs in the Silverlight basket and are now reacting angrily towards Microsoft.  If any of those people are reading this, allow me to quote myself from 2 posts that i wrote over 6 months ago:</p><blockquote> If however, your product is supposed to become the basis of your long-term success, then the choice of Silverlight over HTML/CSS/JavaScript is short-sighted and ultimately flawed for a number of reasons. The first of which is that Silverlight is a proprietary technology in the worst possible way. Its future will be determined by a single company who naturally hold their own best interest at heart, and not yours. As long as it makes sense for them to keep improving Silverlight, they will and you can benefit from that. As soon as it no longer makes sense for them, the technology will become increasingly irrelevant. Obviously, that is a risk that you face with any kind of technology. Sticking with open standards and open source software might very well result in the same outcome but there is one tremendously important difference here: with Silverlight, you have no migration path.</blockquote><p>That quote was from '<a
href="http://davybrion.com/blog/2010/09/keep-your-eyes-on-the-road/">Keep Your Eyes On The Road</a>', written in September 2010.  And the next quote is from '<a
href="http://davybrion.com/blog/2010/10/developers-shouldnt-specialize/">Developers Shouldn't Specialize</a>', written in October 2010:</p><blockquote> There's also another factor to keep in mind, which is more important than you might realize. If you specialize in technology from commercial vendors, you need to keep the market forces in mind that could influence the vendor. Those market forces might be (or seem) irrelevant to you, but the vendor will not let that influence its decisions and strategies if the vendor itself is competing with other companies on a much larger level than your company or your clients are. And when a vendor changes tactics due to market forces, the technology you've chosen to specialize in might be on the way out, or it might no longer be the hot new thing that you can capitalize on. And that is where one of the biggest dangers in specialization lies. If you're specialized in a specific technology, you're personally invested in it. Your current standard of life, your livelihood, depends largely on that specific technology. Sure, you can move on to something else but you will have to get used to less than you're used to, probably both in money and stature for a while. Realistically speaking, odds are high that you are emotionally attached to this technology because of this. When you are confronted with bad news regarding the technology's future, you're likely to exhibit classic denial symptoms. The recent news about the Silverlight strategy shift and specifically the reactions to it, is a beautiful example of this.</blockquote><p>Anyone who's upset at Microsoft about this has only himself to blame. You've put yourself in this position, because the writing has been on the wall for a while now.</p><div
class="bottomcontainerBox" style=""><div
style="float:left; width:85px;padding-right:10px; margin:4px 4px 4px 4px;height:30px;"> <iframe
src="http://www.facebook.com/plugins/like.php?href=http%3A%2F%2Fdavybrion.com%2Fblog%2F2011%2F06%2Fyet-another-nail-in-silverlights-coffin%2F&amp;layout=button_count&amp;show_faces=false&amp;width=85&amp;action=like&amp;font=verdana&amp;colorscheme=light&amp;height=21" scrolling="no" frameborder="0" allowTransparency="true" style="border:none; overflow:hidden; width:85px; height:21px;"></iframe></div><div
style="float:left; width:80px;padding-right:10px; margin:4px 4px 4px 4px;height:30px;"> <g:plusone size="medium" href="http://davybrion.com/blog/2011/06/yet-another-nail-in-silverlights-coffin/"></g:plusone></div><div
style="float:left; width:95px;padding-right:10px; margin:4px 4px 4px 4px;height:30px;"> <a
href="http://twitter.com/share" class="twitter-share-button" data-url="http://davybrion.com/blog/2011/06/yet-another-nail-in-silverlights-coffin/"  data-text="Yet Another Nail In Silverlight&#8217;s Coffin?" data-count="horizontal" data-via="davybrion"></a></div><div
style="float:left; width:105px;padding-right:10px; margin:4px 4px 4px 4px;height:30px;"><script type="in/share" data-url="http://davybrion.com/blog/2011/06/yet-another-nail-in-silverlights-coffin/" data-counter="right"></script></div><div
style="float:left; width:85px;padding-right:10px; margin:4px 4px 4px 4px;height:30px;"><script src="http://www.stumbleupon.com/hostedbadge.php?s=1&amp;r=http://davybrion.com/blog/2011/06/yet-another-nail-in-silverlights-coffin/"></script></div></div><div
style="clear:both"></div><div
style="padding-bottom:4px;"></div>]]></content:encoded> <wfw:commentRss>http://davybrion.com/blog/2011/06/yet-another-nail-in-silverlights-coffin/feed/</wfw:commentRss> <slash:comments>18</slash:comments> </item> </channel> </rss>
<!-- Performance optimized by W3 Total Cache. Learn more: http://www.w3-edge.com/wordpress-plugins/

Minified using disk: basic
Page Caching using disk: enhanced
Database Caching 2/90 queries in 0.057 seconds using disk: basic
Object Caching 1503/1692 objects using disk: basic
Content Delivery Network via Amazon Web Services: CloudFront: d18sni7re4ly7f.cloudfront.net

Served from: davybrion.com @ 2012-05-23 14:10:35 -->
