<?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>7deeds &#187; programming</title>
	<atom:link href="http://blog.7deeds.com/tag/programming/feed/" rel="self" type="application/rss+xml" />
	<link>http://blog.7deeds.com</link>
	<description>Petros Amiridis - A humble programmer's seven noteworthy actions for the community</description>
	<lastBuildDate>Mon, 31 May 2010 12:09:10 +0000</lastBuildDate>
	<generator>http://wordpress.org/?v=2.9.1</generator>
	<language>en</language>
	<sy:updatePeriod>hourly</sy:updatePeriod>
	<sy:updateFrequency>1</sy:updateFrequency>
			<item>
		<title>Use List(T) ForEach method instead of foreach</title>
		<link>http://blog.7deeds.com/2009/04/29/use-ilistforeach-instead-of-foreach/</link>
		<comments>http://blog.7deeds.com/2009/04/29/use-ilistforeach-instead-of-foreach/#comments</comments>
		<pubDate>Wed, 29 Apr 2009 20:06:29 +0000</pubDate>
		<dc:creator>Petros</dc:creator>
				<category><![CDATA[tips]]></category>
		<category><![CDATA[C#]]></category>
		<category><![CDATA[programming]]></category>

		<guid isPermaLink="false">http://blog.7deeds.com/?p=190</guid>
		<description><![CDATA[If you have the right .NET version you can use:

]]></description>
			<content:encoded><![CDATA[<p>If you have the right .NET version you can use:</p>
<p><script src="http://gist.github.com/128643.js"></script></p>
]]></content:encoded>
			<wfw:commentRss>http://blog.7deeds.com/2009/04/29/use-ilistforeach-instead-of-foreach/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>Hello world in Ruby</title>
		<link>http://blog.7deeds.com/2009/04/27/hello-world-in-ruby/</link>
		<comments>http://blog.7deeds.com/2009/04/27/hello-world-in-ruby/#comments</comments>
		<pubDate>Sun, 26 Apr 2009 21:25:50 +0000</pubDate>
		<dc:creator>Petros</dc:creator>
				<category><![CDATA[hello-world]]></category>
		<category><![CDATA[programming]]></category>
		<category><![CDATA[ruby]]></category>

		<guid isPermaLink="false">http://blog.7deeds.com/?p=180</guid>
		<description><![CDATA[This is Hello World in Ruby:

]]></description>
			<content:encoded><![CDATA[<p>This is Hello World in Ruby:</p>
<p><script src="http://gist.github.com/130221.js"></script></p>
]]></content:encoded>
			<wfw:commentRss>http://blog.7deeds.com/2009/04/27/hello-world-in-ruby/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>Learn many programming languages or few?</title>
		<link>http://blog.7deeds.com/2009/01/18/learn-many-programming-languages-or-few/</link>
		<comments>http://blog.7deeds.com/2009/01/18/learn-many-programming-languages-or-few/#comments</comments>
		<pubDate>Sun, 18 Jan 2009 00:24:17 +0000</pubDate>
		<dc:creator>Petros</dc:creator>
				<category><![CDATA[1-deed]]></category>
		<category><![CDATA[continuous-learning]]></category>
		<category><![CDATA[programming]]></category>

		<guid isPermaLink="false">http://blog.7deeds.com/?p=107</guid>
		<description><![CDATA[The post written by my fellow programmer Kostas, reminded me of how many times I am troubled by the following thought: Is it better to stick to one or two programming languages or try to learn as many different languages and frameworks as possible?

I don&#8217;t believe in either/or mentality. I believe we should always find [...]]]></description>
			<content:encoded><![CDATA[<p><img class="alignright" title="Approaching Corfu" src="http://www.7deeds.com/images/2778520073_ab99cb657d150x150.jpg" alt="" width="150" height="113" /><a href="http://entertheit.blogspot.com/2009/01/rails-and-other-contemporary.html">The post</a> written by my fellow programmer <a href="http://www.blogger.com/profile/11702968703769447667">Kostas</a>, reminded me of how many times I am troubled by the following thought: Is it better to stick to one or two programming languages or try to learn as many different languages and frameworks as possible?</p>
<p><span id="more-107"></span></p>
<p>I don&#8217;t believe in either/or mentality. I believe we should always find what works for us by trying different things and experimenting. I did that a lot of times in my career. Having said that, here are some thoughts about this question.</p>
<p>Spending years only on one technology can harm you in some ways. Everything looks like a nail to you if your only tool is a hammer. You try to solve every problem with the tool you know how to use better. This is great if the problems you are trying to solve are the kind of problems your tool solves better. However, what about other problems, where your tool is not so great at solving?</p>
<p>Some times, knowing more than a couple of programming languages, comes handy when there is a crisis in the job market. There was one friend of mine who didn&#8217;t want to learn anything else except the language he used for over a decade. One day, he lost his job. Unfortunately, only then did he realize that the language he knew inside out was no longer in demand. He struggled a lot and had to change from being a programmer to being a member of IT in some company that used that language and needed maintenance work. This teaches me, that some times, when you have your job and feel &#8220;secure&#8221;, you are also unaware of what is going on in the technology world. Especially if you are not willing to learn different things. This has the danger of learning about it when it is too late.</p>
<p>Even if you never lose your job, or never change the language you are using, it is still better to learn other languages because you can expand your thinking and deepen your understanding of programming.</p>
<p>Let me give you an example from my experience: Many years ago I was using Pascal. At that time Pascal wasn&#8217;t object oriented. I was always on the look for new paradigms, and suddenly the world started talking about OOP. Every magazine was talking about it (we didn&#8217;t have Internet back then).</p>
<p><img class="alignright" title="Corfu Pool 2008" src="http://www.7deeds.com/images/CorfuPool.jpg" alt="" width="150" height="113" />I wanted to start using a language that supported OOP, but I couldn&#8217;t because none could ran on my computer. I couldn&#8217;t wait to buy a new computer, so I started using the paradigm even though my language of choice didn&#8217;t supported it. Pascal supported records, pointers and procedures/functions. If you try to see what a class really is, you will realize how I simulated classes in a non OO language.</p>
<p>Having mentioned &#8220;paradigm&#8221;, I would like to say that it is better to learn different languages of different paradigms, than languages of the same paradigm. Languages of the same paradigm just change in syntax, but only if you learn about different paradigms you can really expand your mind. Examples of different paradigms are: procedural programming, object oriented programming and functional programming.</p>
<p>Some complain of not having enough time. When I was very little, I once complained about that to my father. He told me to sit down and explained to me his theory for time management and planning. I try never to complain again about not having enough time, but lets pretend you don&#8217;t have enough time:</p>
<p>You can focus on your &#8220;day language&#8221; (the one you use every day at work), but at least study one new language as a side project. When I say study, I suggest that even if you don&#8217;t build something useful, at least read the theory and try to do a couple of tutorials. Even at this rate it is still better than only sticking to your &#8220;day language&#8221;.</p>
<p>I don&#8217;t want to forget mentioning that of course the fundamentals are very important, but how can you really learn the fundamentals if that knowledge doesn&#8217;t come from applying the languages? I assume you have already read more than 10 theoretical books on programming fundamentals, but that is just the theory. You should also apply that through the use of many languages. Not only one language.</p>
<p>To answer the original question: I always like to have a main language and a side language. Nowadays my main language is C# and my side language is Ruby. Respectively, my main framework is .NET and my side framework is Rails. If I see that I am mastering Ruby, I will find time for another paradigm. Maybe Ruby can become my main language, in order to make time for the new one <img src='http://blog.7deeds.com/wp-includes/images/smilies/icon_wink.gif' alt=';-)' class='wp-smiley' /> </p>
<p><img class="alignleft" title="Zografou 2008" src="http://www.7deeds.com/images/2779783583_a407b06fee.jpg" alt="" width="150" height="113" />Finally, I want to answer the concerns my friend expressed about what is better to write in his resume. If I had to decide hiring one programmer among two equally good programmers and  the only difference was their language focus, I would choose the one who knows more languages because I believe he would have a deeper understanding of programming.</p>
]]></content:encoded>
			<wfw:commentRss>http://blog.7deeds.com/2009/01/18/learn-many-programming-languages-or-few/feed/</wfw:commentRss>
		<slash:comments>1</slash:comments>
		</item>
		<item>
		<title>Reporting bugs</title>
		<link>http://blog.7deeds.com/2008/08/29/reporting-bugs/</link>
		<comments>http://blog.7deeds.com/2008/08/29/reporting-bugs/#comments</comments>
		<pubDate>Fri, 29 Aug 2008 09:08:40 +0000</pubDate>
		<dc:creator>Petros</dc:creator>
				<category><![CDATA[tips]]></category>
		<category><![CDATA[bug]]></category>
		<category><![CDATA[programming]]></category>
		<category><![CDATA[testing]]></category>

		<guid isPermaLink="false">http://blog.7deeds.com/?p=45</guid>
		<description><![CDATA[I am sure most programmers and me know by now the 101 rule: Maintain a bug database if you develop software. This post is not about this. I assume you know and practice it already. I want to talk about what a bug report should include and I encourage you to train the people who [...]]]></description>
			<content:encoded><![CDATA[<p>I am sure most programmers and me know by now the 101 rule: Maintain a bug database if you develop software. This post is not about this. I assume you know and practice it already. I want to talk about what a bug report should include and I encourage you to train the people who will report bugs to follow this advice.</p>
<p><span id="more-45"></span></p>
<p>Every bug report should include the following information:</p>
<ul>
<li>Steps</li>
<li>Result</li>
<li>Expected</li>
<li>Bypass</li>
<li>Information</li>
</ul>
<p><strong>Steps</strong></p>
<p>Here we write the steps up to the point the bug occurs. We want clear steps that reproduce the bug each time we follow them. This is important because without these steps it is difficult to reproduce the bug, and it makes the programmer want to avoid dealing with the bug.</p>
<p><strong>Result</strong></p>
<p>What happened? What was the behavior with think is a bug?</p>
<p><strong>Expected</strong></p>
<p>What behavior did we expect? Here, we explain what the correct behavior is in our opinion. This helps the programmer compare his model with the user model. These two should be the same in successful applications.</p>
<p><strong>Bypass</strong></p>
<p>Are there any actions that can bypass the problem? This helps the programmer understand the nature of the problem and also the severity of the problem. For example, he might choose to work on a bug that is severe and doesn&#8217;t get bypassed, instead of working on a bug that can be bypassed.</p>
<p><strong>Information</strong></p>
<p>Any information that can help and doesn&#8217;t fit to one of the sections above. For example, one might mention the version of the application, what he thinks might be the cause of the bug etc.</p>
<p>Let me give you a very simple boring example:</p>
<p>Lets say we develop an application that adds two numbers:</p>
<p>1 + 1 = 2</p>
<p>This is the result everyone expects, but you make some change in the code in order to make it faster and of course you introduce a new bug. This bug is discovered by a tester in your testing department and his report goes like that:</p>
<p><em>Steps</em></p>
<ol>
<li>Run application</li>
<li>Enter 1 for the first number</li>
<li>Enter 1 for the second number</li>
<li>Press button &#8220;Add them&#8221;</li>
</ol>
<p><em>Result</em></p>
<p>0</p>
<p><em>Expected</em></p>
<p>2</p>
<p><em>Bypass</em></p>
<p>None</p>
<p><em>Information</em></p>
<p>I think the last work on that area was done during the night by programmer Mr. &#8220;Haven&#8217;t slept for two days&#8221;, and maybe it is total crap.</p>
<p>Nowadays it is quite cool for your application to be able to gather most of the information automatically and also include a lot more technical low level data that can help debugging it, and then automatically send the data using the Internet to your bug tracking application. This is fine if your scenario permits it, but for the rest of the applications that don&#8217;t always get the chance to be near the Internet, you can consider the old fashioned way of reporting a bug.</p>
]]></content:encoded>
			<wfw:commentRss>http://blog.7deeds.com/2008/08/29/reporting-bugs/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>Developing for yourself first</title>
		<link>http://blog.7deeds.com/2008/05/04/developing-for-yourself-first/</link>
		<comments>http://blog.7deeds.com/2008/05/04/developing-for-yourself-first/#comments</comments>
		<pubDate>Sat, 03 May 2008 23:09:47 +0000</pubDate>
		<dc:creator>Petros</dc:creator>
				<category><![CDATA[startups]]></category>
		<category><![CDATA[productivity]]></category>
		<category><![CDATA[programming]]></category>

		<guid isPermaLink="false">http://blog.7deeds.com/?p=36</guid>
		<description><![CDATA[As a professional programmer for over a decade, the applications I am proud for having developed can be counted on one hand. I always wondered why. As I was thinking about it, a pattern was revealed. All these applications were developed by me in order to solve a problem that I had.
What this really means, [...]]]></description>
			<content:encoded><![CDATA[<p>As a professional programmer for over a decade, the applications I am proud for having developed can be counted on one hand. I always wondered why. As I was thinking about it, a pattern was revealed. All these applications were developed by me in order to solve a problem that I had.</p>
<p>What this really means, is that I was the first user for these applications. I knew exactly what the problem was, and I also knew what the best solution should be.</p>
<p>Developing other applications where I am not really a user, means I only have my accumulated knowledge over the years about the business domain, the knowledge of other people, my assumptions and my ability to continue writing code even if I am bored to death. I can tell you this is really difficult to handle. Developing in order to solve something you really don&#8217;t care about. Developing an application based on assumptions you make is a time bomb ready to explode.</p>
<p>Most successful and usually small companies, started out solving their own problem first and then offered their solution to the public. There are always people out there that want a solution to the same problem as yours.</p>
<p>I think this is a recipe for success even if you don&#8217;t have a lot of money to begin with.</p>
]]></content:encoded>
			<wfw:commentRss>http://blog.7deeds.com/2008/05/04/developing-for-yourself-first/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>Regular expression online tool</title>
		<link>http://blog.7deeds.com/2008/04/10/regular-expression-online-tool/</link>
		<comments>http://blog.7deeds.com/2008/04/10/regular-expression-online-tool/#comments</comments>
		<pubDate>Thu, 10 Apr 2008 09:22:44 +0000</pubDate>
		<dc:creator>Petros</dc:creator>
				<category><![CDATA[utilities]]></category>
		<category><![CDATA[programming]]></category>

		<guid isPermaLink="false">http://blog.7deeds.com/?p=32</guid>
		<description><![CDATA[I think regular expressions is something every programmer should be familiar with. I am not saying, every programmer should write three lines of regexp strings, in three seconds without a cheat sheet. I am just saying that we should all know at least that they exist and what they are useful for.
The truth is, if [...]]]></description>
			<content:encoded><![CDATA[<p>I think regular expressions is something every programmer should be familiar with. I am not saying, every programmer should write three lines of regexp strings, in three seconds without a cheat sheet. I am just saying that we should all know at least that they exist and what they are useful for.</p>
<p>The truth is, if it is the first you encounter regular expressions, you might have some difficulty remembering all those hieroglyphic expressions. There are cheat sheets and they can be handy, but I found something today that in my opinion is quite better: <a title="RegExpr online testing tool" href="http://gskinner.com/RegExr/" target="_blank">Online Regular Expression Testing Tool</a></p>
<p>Do you know any similar offline/online tool?</p>
]]></content:encoded>
			<wfw:commentRss>http://blog.7deeds.com/2008/04/10/regular-expression-online-tool/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>Hello world in Flaming Thunder</title>
		<link>http://blog.7deeds.com/2008/03/22/flaming-thunder/</link>
		<comments>http://blog.7deeds.com/2008/03/22/flaming-thunder/#comments</comments>
		<pubDate>Sat, 22 Mar 2008 12:04:54 +0000</pubDate>
		<dc:creator>Petros</dc:creator>
				<category><![CDATA[hello-world]]></category>
		<category><![CDATA[languages]]></category>
		<category><![CDATA[programming]]></category>

		<guid isPermaLink="false">http://blog.7deeds.com/?p=29</guid>
		<description><![CDATA[I never loose a chance to search for new or different programming languages. I stumbled upon Flaming Thunder.
From their site:
Welcome! Flaming Thunder is a powerful new computer programming language for scientists, mathematicians and engineers, that is easy enough even for elementary school students.

]]></description>
			<content:encoded><![CDATA[<p>I never loose a chance to search for new or different programming languages. I stumbled upon <a href="http://www.flamingthunder.com/" target="_blank">Flaming Thunder</a>.</p>
<p>From their site:</p>
<blockquote><p>Welcome! Flaming Thunder is a powerful new computer programming language for scientists, mathematicians and engineers, that is easy enough even for elementary school students.</p></blockquote>
<p><script src="http://gist.github.com/130224.js"></script></p>
]]></content:encoded>
			<wfw:commentRss>http://blog.7deeds.com/2008/03/22/flaming-thunder/feed/</wfw:commentRss>
		<slash:comments>1</slash:comments>
		</item>
	</channel>
</rss>
