<?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>C#, VB.Net, XML and mass consumption of coffee.</title>
	<atom:link href="http://www.paul-zubkov.com/feed/" rel="self" type="application/rss+xml" />
	<link>http://www.paul-zubkov.com</link>
	<description></description>
	<lastBuildDate>Wed, 03 Feb 2010 18:25:40 +0000</lastBuildDate>
	<generator>http://wordpress.org/</generator>
	<language>en</language>
	<sy:updatePeriod>hourly</sy:updatePeriod>
	<sy:updateFrequency>1</sy:updateFrequency>
			<item>
		<title>Freelance work what it should be vs what it is.</title>
		<link>http://www.paul-zubkov.com/2009/12/04/freelance-work-what-it-should-be-vs-what-it-is/</link>
		<comments>http://www.paul-zubkov.com/2009/12/04/freelance-work-what-it-should-be-vs-what-it-is/#comments</comments>
		<pubDate>Fri, 04 Dec 2009 17:23:20 +0000</pubDate>
		<dc:creator>Paul</dc:creator>
				<category><![CDATA[Business]]></category>
		<category><![CDATA[Management]]></category>
		<category><![CDATA[Projects]]></category>

		<guid isPermaLink="false">http://www.paul-zubkov.com/?p=284</guid>
		<description><![CDATA[<div style="float: right; width: 42px; padding-right: 115px; margin: 0 0 0 10px;"><script type="text/javascript">
<!--
var dzone_url = 'http://www.paul-zubkov.com/2009/12/04/freelance-work-what-it-should-be-vs-what-it-is/';
var dzone_title = 'Freelance work what it should be vs what it is.';
var dzone_blurb = '';
var dzone_style = '2';
//-->
</script>
<script language="javascript" src="http://widgets.dzone.com/widgets/zoneit.js"></script> 
</div>

I am a busy guy, full time job, wife who recently decided to learn how to code, kids &#8211; hockey practices at 7 am on Saturdays and bed time stories and many other things normally occupy my day.  On top of this, I have to stay up to speed on what is going on [...]]]></description>
			<content:encoded><![CDATA[<div style="float: right; width: 42px; padding-right: 115px; margin: 0 0 0 10px;"><script type="text/javascript">
<!--
var dzone_url = 'http://www.paul-zubkov.com/2009/12/04/freelance-work-what-it-should-be-vs-what-it-is/';
var dzone_title = 'Freelance work what it should be vs what it is.';
var dzone_blurb = '';
var dzone_style = '2';
//-->
</script>
<script language="javascript" src="http://widgets.dzone.com/widgets/zoneit.js"></script> 
</div>
<p><img class="alignnone size-full wp-image-285" title="1243018_31569956" src="http://www.paul-zubkov.com/wp-content/uploads/2009/12/1243018_31569956.jpg" alt="1243018_31569956" width="300" height="185" /></p>
<p>I am a busy guy, full time job, wife who recently decided to learn how to code, kids &#8211; hockey practices at 7 am on Saturdays and bed time stories and many other things normally occupy my day.  On top of this, I have to stay up to speed on what is going on with technology, work on my side projects (<a href="http://partypm.com">partypm.com</a> is cool, sorry for the shameless plug) and occasionally I do freelance.&nbsp; However lately I am not that enthusiastic about freelance projects and <a href="http://theoatmeal.com/comics/design_hell" target="_blank">this comic from the Oatmeal</a> perfectly describes the reason why.</p>
<p><span id="more-284"></span></p>
<p>While I have been blessed with complete lack of any talent for working UI, which minimizes the damage described in the comic, the designers I work with are suffering tragically.&nbsp; There were so many instances where the original site was simply horrible, the design we came up with was great and the client loved it, but additions and changes initiated by the client completely ruined the project to the point where you don&#8217;t even want to visit that site later on, forget using this in your portfolio.&nbsp;</p>
<p>I know, I am not saying anything new, most of the developers dealt with this, its a part of our job, but my question should it be the part of our daily life.&nbsp; What happened to Expert Power mystique which surrounded us for quite some time?&nbsp; Do you question your doctor?&nbsp; How about giving suggestions to your dentist or lawyer?&nbsp; You might, no one is saying that you are not allowed to, but mostly you would trust their judgment to do what is right.</p>
<p>The problem begins where you realise that the client is paying for your services, so he has complete right to control how the final product will look and act.&nbsp; You can&#8217;t completely ignore his wishes, and at times it is next to impossible to convince the client that your idea and your design is right, but I think we should try.&nbsp; Surely it will be more time consuming, frastrating and so on, but at the end everyone would benefit.&nbsp; Let me tell you about my boss Dave.&nbsp; Dave is a great guy, he is very smart and reasonable boss, but at the begining of our dealings, I had to spend number of hours trying to convince him that what he wanted was either impossible (when it was really impossible.&nbsp; ie &#8211; can we just create a button that will do all the work) or unreasonable (create a feature for one particular client while the application is distributed to many clients).&nbsp; I did not really fight his ideas and suggestions, but rather modify them to make sure the features are reasonable and fucntioning.&nbsp; After a while, we both learned that we could trust each other to do the best we can with what we have &#8211; suggestions from our existing clients and demands from potential clients.&nbsp;</p>
<p>I am happy with this setup.&nbsp; He calls me as says company X wants feature Y implemented.&nbsp; I take feature Y and make sure that we can do something that could be useful for everyone, not just X.&nbsp; Then I give him back my estimates and my plan regarding the feature Y.&nbsp; If he is satisfied, the work goes into a queue and everyone is happy eventually.</p>
<p>This became possible because I work with Dave on a daily basis for about five years now.&nbsp; Achieving compromizes with your freelance employers might not be possible due to the time constrains, but here are the principals I am sticking to when thinking about freelance:</p>
<ul>
<li>I don&#8217;t work for family / friends&nbsp; /friends of family and so on.&nbsp; In my experience, this really ruins relationships with people &#8211; you ask them for money for your work, they generally think that you should do it for free and the way that want it and so on.</li>
<li>Before I begin coding, the client has to approve the design and feature list.&nbsp; I will not start work until this is done.&nbsp; I do take deposits, generally 50% of final price.</li>
<li>Once approved by the client (signed on a piece of paper) all request like &#8220;can we just quickly add this&#8221; costs an arm and a leg.&nbsp; It is extra work, I had not planned for it.&nbsp; Clients know about this rule and if they are not happy with this rule, we won&#8217;t be working together.&nbsp; Years ago I was installing pool tables to pay my way through college.&nbsp; For those who don&#8217;t know, it takes between 4 to 6 hours to put that table together and once assembled the table is too heavy to be moved, not mentioning that once you moved it, the level is messed up and installer had to re-do half of his work.&nbsp; Before I start, I would demand the client to tell me where exactly that thing is going in.&nbsp; It was not possible to change it.&nbsp; When clients asked to change something after the table is done, my fee was automatically multiplied by 3.&nbsp; Pretty much same thing is applied to my freelance projects.</li>
<li>I do offer support on complete projects including training and so on, but after a free chunk of that, the support is becoming expensive.</li>
<li>I don&#8217;t work for free.&nbsp; Which include a company that creates a &#8220;contest&#8221; for best design of their new site, offer to pay me in products they are selling, promises to promote me, promises to bring me new clients, offers to get me in as a partner in their business and so on.</li>
<li>I don&#8217;t do clones of existing products.&nbsp; People who visit freelance oriented resources know what I&#8217;m talking about.</li>
</ul>
<p>I know this might sound condescending and maybe outright crazy, but I feel that this set of rules helps me and my designers stay sane and happy with projects we take on.&nbsp; Clients that decide to work with us are happy too, those who choose not to, are happy because we informed them of the conditions upfront giving them a chance to make informed decision.&nbsp; They will find a freelancer who will do what they want, I am sure of it.</p>
<p>I would love to hear about you and your approach to dealing with clients.</p>
]]></content:encoded>
			<wfw:commentRss>http://www.paul-zubkov.com/2009/12/04/freelance-work-what-it-should-be-vs-what-it-is/feed/</wfw:commentRss>
		<slash:comments>3</slash:comments>
		</item>
		<item>
		<title>Excel VBA macro &#8211; removing blank rows from table</title>
		<link>http://www.paul-zubkov.com/2009/08/05/excel-vba-macro-removing-blank-rows-from-table/</link>
		<comments>http://www.paul-zubkov.com/2009/08/05/excel-vba-macro-removing-blank-rows-from-table/#comments</comments>
		<pubDate>Wed, 05 Aug 2009 18:29:06 +0000</pubDate>
		<dc:creator>Paul</dc:creator>
				<category><![CDATA[Code Samples]]></category>
		<category><![CDATA[Coding]]></category>
		<category><![CDATA[VBA]]></category>

		<guid isPermaLink="false">http://www.paul-zubkov.com/?p=268</guid>
		<description><![CDATA[<div style="float: right; width: 42px; padding-right: 115px; margin: 0 0 0 10px;"><script type="text/javascript">
<!--
var dzone_url = 'http://www.paul-zubkov.com/2009/08/05/excel-vba-macro-removing-blank-rows-from-table/';
var dzone_title = 'Excel VBA macro &#8211; removing blank rows from table';
var dzone_blurb = '';
var dzone_style = '2';
//-->
</script>
<script language="javascript" src="http://widgets.dzone.com/widgets/zoneit.js"></script> 
</div>

I know not too many people are coding VBA macros, however if you think about it automating office tasks can be a good way to help business people.&#160; I can tell you that most coders will not touch it thinking that users should be able to do this themselves, most users will not be able [...]]]></description>
			<content:encoded><![CDATA[<div style="float: right; width: 42px; padding-right: 115px; margin: 0 0 0 10px;"><script type="text/javascript">
<!--
var dzone_url = 'http://www.paul-zubkov.com/2009/08/05/excel-vba-macro-removing-blank-rows-from-table/';
var dzone_title = 'Excel VBA macro &#8211; removing blank rows from table';
var dzone_blurb = '';
var dzone_style = '2';
//-->
</script>
<script language="javascript" src="http://widgets.dzone.com/widgets/zoneit.js"></script> 
</div>
<p><img class="alignnone size-full wp-image-277" title="news" src="http://www.paul-zubkov.com/wp-content/uploads/2009/08/news.JPG" alt="news" width="300" height="199" /></p>
<p>I know not too many people are coding VBA macros, however if you think about it automating office tasks can be a good way to help business people.&nbsp; I can tell you that most coders will not touch it thinking that users should be able to do this themselves, most users will not be able to do this, simply because you need to actually write the code.&nbsp; I can tell you that knowing VBA earned me a pretty coin, and trust me, this is not too hard to learn.&nbsp;</p>
<p>Here is an example of how to remove all blank rows from a table in excel:</p>
<p><span id="more-268"></span></p>
<p><code lang="vb[lines]">Public Sub main()</p>
<p>    Dim rBody As Range<br />
    Dim iRow As Integer<br />
    Dim iCell As Integer<br />
    Dim iStoreToKill() As Integer<br />
    Dim iIndexer As Integer<br />
    Dim iEmptyCounter As Integer</p>
<p>    iEmptyCounter = 0<br />
    iIndexer = 0</p>
<p>    Set rBody = Range("BODY").Cells</p>
<p>    For iRow = 1 To rBody.Rows.Count</p>
<p>        If rBody.Cells(iRow, 1).Value = vbNullString Then<br />
            iEmptyCounter = 1<br />
            For iCell = 2 To rBody.Columns.Count<br />
                If rBody.Cells(iRow, iCell).Value = vbNullString Then<br />
                    iEmptyCounter = iEmptyCounter + 1<br />
                End If<br />
            Next</p>
<p>            If iEmptyCounter = rBody.Columns.Count Then<br />
                iIndexer = iIndexer + 1<br />
                ReDim Preserve iStoreToKill(1 To iIndexer)<br />
                iStoreToKill(iIndexer) = iRow<br />
            End If<br />
        End If<br />
    Next</p>
<p>    If iIndexer > 0 Then<br />
        For i = iIndexer To 1 Step -1<br />
            rBody.Rows(iStoreToKill(i)).EntireRow.Delete<br />
        Next<br />
    End If</p>
<p>End Sub</code></p>
<p>Let&#8217;s take a closer look at this:<br/><br/></p>
<p>Lines 3 through 8 &#8211; we need couple of variables to get this done.&nbsp; On line 3 we are declaring an object of type Range which is a collection of cells, line 6 introduces an array where we are going to store indexes of rows which are blank and needs to be deleted.</p>
<p><br/><br/></p>
<p>On line 8 we are actually assign our range.&nbsp; In this case, the range was pre-defined, but you can easily declare your own ranges by specifying cell coordinates.&nbsp; Now let&#8217;s get this thing going &#8211; line 15 we are going through all the rows within our range to see if we have any blank rows.&nbsp; Line 17 checks if the first cell in the row is empty.&nbsp; If it is, we are looking at all the cells within the row and increment our emptyCounter every time we find a blank cell (lines 19 through 23).&nbsp;</p>
<p><br/><br/></p>
<p>Lines 25 through 29 &#8211; we want to see if our counter of empty cells in this particular row matches with the number of columns in the range.&nbsp; If we have a match, this means that basically all the cells in the row are blank.&nbsp; Line 27 &#8211; we need to resize the array, while preserving all the values that are already there.&nbsp; VBA does not have ArrayLists or any dynamically sized collections, so the only way to add an element to an array when you have no idea what the total capacity of the array would be before you start is to do redim preserve.&nbsp;&nbsp;&nbsp; This way my iStoreToKill will contain the indexes of all blank rows in the range.</p>
<p><br/><br/></p>
<p>Lines 33 through 37 &#8211; well, if our iStoreToKill is not empty, we want to remove some of the rows.&nbsp; Line 34 &#8211; we are going through our array backwards.&nbsp; Why backwards &#8211; well, so your indexes will not change on you when you delete the rows going down.&nbsp; Lets imagine we have this thing going:</p>
<p><br/><br/></p>
<p>1 First row<br />
<br/><br/><br />
2<br />
<br/><br/><br />
3 Third row<br />
<br/><br/><br />
4<br />
<br/><br/><br />
5 Fifth row<br />
<br/><br/><br />
We need to remove 2nd and 4th rows, right?&nbsp; So if we go through array forward, we kill row number 2 first and then you get this type of contruct -<br />
<br/><br/><br />
1 First row<br />
<br/><br/><br />
2 Third row<br />
<br/><br/><br />
3<br />
<br/><br/><br />
4 Fifth row<br />
<br/><br/><br />
On your second iteration, we will kill row number 4 which would be the one tagged &#8220;Fifth row&#8221; and this is not what we are after here.&nbsp; After we are all done, we should get the table without any blank rows.<br />
<br/><br/><br />
Keep in mind &#8211; you need to goof around with security settings of Excel.&nbsp; If you are doing macros &#8211; get yourself code signing certificate &#8211; it will help you distribute your macros.<br />
<br/><br/><br />
I would love to hear a feedback on this post &#8211; I am not sure if I should come up with more VBA examples.<br/><br/></p>
]]></content:encoded>
			<wfw:commentRss>http://www.paul-zubkov.com/2009/08/05/excel-vba-macro-removing-blank-rows-from-table/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>What recent computer science graduate should know.</title>
		<link>http://www.paul-zubkov.com/2009/08/04/what-recent-computer-science-graduate-should-know/</link>
		<comments>http://www.paul-zubkov.com/2009/08/04/what-recent-computer-science-graduate-should-know/#comments</comments>
		<pubDate>Tue, 04 Aug 2009 18:50:31 +0000</pubDate>
		<dc:creator>Paul</dc:creator>
				<category><![CDATA[9-5]]></category>
		<category><![CDATA[Business]]></category>
		<category><![CDATA[Management]]></category>
		<category><![CDATA[career]]></category>
		<category><![CDATA[development]]></category>

		<guid isPermaLink="false">http://www.paul-zubkov.com/?p=257</guid>
		<description><![CDATA[<div style="float: right; width: 42px; padding-right: 115px; margin: 0 0 0 10px;"><script type="text/javascript">
<!--
var dzone_url = 'http://www.paul-zubkov.com/2009/08/04/what-recent-computer-science-graduate-should-know/';
var dzone_title = 'What recent computer science graduate should know.';
var dzone_blurb = '';
var dzone_style = '2';
//-->
</script>
<script language="javascript" src="http://widgets.dzone.com/widgets/zoneit.js"></script> 
</div>

Many many years ago when I landed my first coding job, I was amazed at how different working in a software development shop was different from what I had pictured in my mind.&#160; At that time, I did not even graduated yet, I was in need of money and it seemed like a great opportunity [...]]]></description>
			<content:encoded><![CDATA[<div style="float: right; width: 42px; padding-right: 115px; margin: 0 0 0 10px;"><script type="text/javascript">
<!--
var dzone_url = 'http://www.paul-zubkov.com/2009/08/04/what-recent-computer-science-graduate-should-know/';
var dzone_title = 'What recent computer science graduate should know.';
var dzone_blurb = '';
var dzone_style = '2';
//-->
</script>
<script language="javascript" src="http://widgets.dzone.com/widgets/zoneit.js"></script> 
</div>
<p><img class="alignnone size-full wp-image-259" title="wheels" src="http://www.paul-zubkov.com/wp-content/uploads/2009/08/wheels.jpg" alt="wheels" width="300" height="200" /></p>
<p>Many many years ago when I landed my first coding job, I was amazed at how different working in a software development shop was different from what I had pictured in my mind.&nbsp; At that time, I did not even graduated yet, I was in need of money and it seemed like a great opportunity so I took the job.&nbsp; While driving to my new place of employment for the first time, I was running some scenarios in my head, trying to remember some tested and true algorithms, thinking of whole bunch of technical things that might help me impress my then new boss; what came as a complete surprise to me was the fact that I had no idea what the work was about.</p>
<p>After couple of weeks, I began to realize that many things that were part of my job were not covered in school at all.&nbsp; I can&#8217;t really blame school for that, after all they were trying to give me as much information as they could about technical aspects &#8211; languages, algorithms and all that jazz, I myself had failed to learn the truth about real time work of a coder, and I did have opportunities to do so.&nbsp; Later on when I became a manager and was interviewing people for coding positions, I realized that I was not unique in this lack of knowledge.&nbsp; Most of the recent graduates were in the same boat that I was in years ago.<span id="more-257"></span></p>
<p>That time had passed, I learned a great deal from working on different development teams, I could probably be called a veteran of the game called software development, and today I wanted to post about things that I think any recent graduate should educate himself on:</p>
<ul>
<li>Time Management.</li>
<li>Ability to produce accurate estimates</li>
<li>Ability to write technical documentation.</li>
<li>Dealing with customers &#8211; when times are good and bad.</li>
<li>Dealing with co-workers in conflict situations.</li>
<li>Learning is an ongoing process when coding</li>
</ul>
<p>Lets look at those a bit closer:</p>
<p><strong>Time Management</strong></p>
<p>Time management&nbsp; in my opinion is the most important skill a developer can have.&nbsp; I would also add self discipline to this since the two are related.&nbsp; It is just too easy to get distracted by things that are not really work &#8211; after all internet is right there.&nbsp; Another point is getting way too involved in your project, spending way too much time on tasks that are not really that important.&nbsp; It is business first, and we are all on a dead line.&nbsp; Other people&#8217;s deadline is depended on you most of the time as well.&nbsp; One of the biggest time wasters in&nbsp; my life is email.&nbsp; I get tons of messages a day, most of those need to be answered.&nbsp; Most of my clients / co-workers expected me to get to that right away, well guess what?&nbsp; That does not happen.&nbsp; I am answering my emails at 10 am and at 4 pm.&nbsp; If its urgent, people can call me, if they don&#8217;t know my phone number, then most likely it is not urgent.&nbsp; It took a while to convince by boss and my client that this is the best approach to my time.&nbsp; This works for me, I can&#8217;t guarantee that it will work for everyone.</p>
<p><strong>Estimates</strong></p>
<p>What happens most of the time is my boss tells me to code something &#8211; a feature, application, you name it.&nbsp; He wants to know how soon can this be done.&nbsp;&nbsp; In turn I go to coders and ask them &#8211; how long would it take you to do this?&nbsp; Most of the coders are not able to give me an accurate estimate &#8211; and I can understand it &#8211; things happen, but could you be at least close?&nbsp; I can understand if you are off by couple of weeks &#8211; my estimate will allow for that, but when you are off by month, that makes me look stupid, and guess who will look stupid next?</p>
<p><strong>Technical Documentation</strong></p>
<p>One of the things developers hate is to write tech documents &#8211; manuals, reports you name it.&nbsp; But despite all that, you still are going to do it.&nbsp; Hopefully it will not develop into full time job for you, unless you want it to.&nbsp; I am not a big fan of doing it, but trust me, on top of what developers do, I actually write proposals, analysis papers, reports of various types and so on.&nbsp; It is a bit of a challenge for me, since English is not my first or even second language.&nbsp; So many times I had seen a talented coders who can&#8217;t write &#8211; and believe me, it creates a negative impression which should not be your goal here.</p>
<p><strong>Dealing with customers</strong></p>
<p>Let&#8217;s hope that in your career you will never have to speak to a pissed off customer.&nbsp; We can hope all we want, but it will happen sooner or later.&nbsp; If I had a penny for every time customer yelled at me, I would have a truck load of pennies by now.&nbsp; I am not even going to mention a situation where a client demanded that I had&nbsp; to buy lunch for his entire team simply because my plane was delayed.&nbsp; I had customers tell me stuff like : &#8220;So it can&#8217;t do X, then your software is shit&#8221;.&nbsp; Which was especially frustrated, because no sane person wold do X.&nbsp; In all fairness, this is a way users respond to what we code, and we can&#8217;t possibly please everyone.&nbsp; What I find even more frustrating is when customers do have issues, but won&#8217;t tell you anything and then the time to renew the contract is approaching and all of a sudden they don&#8217;t want to continue.&nbsp; Feedback is good for you, even when it comes in a form of a pissed off customer.&nbsp; Feedback is good because it will not only tell you what customers really want, but what your software is doing right.&nbsp; I am not saying that you have to fold every time customer has something uncomfortable up his butt, you have to learn how to hold your ground and compromise if compromise is possible.</p>
<p><strong>Dealing with co-workers</strong></p>
<p>Most likely you won&#8217;t be working by yourself.&nbsp; You will be in a team which would consist of several coders.&nbsp; Most of us have our own personalities, favorite approaches, opinions and so on.&nbsp; There are going to be conflicts and you will have to deal with it.&nbsp; Conflicts are not necessary bad &#8211; at times it is the best way of solving difficult problems with features or code.&nbsp; Listen, argue if you believe that you are right, but don&#8217;t start getting personal &#8211; keep in mind if the conflict is geared towards solving a coding issue, this is what you want to do.&nbsp; If the conflict is about issues that are on a personal level &#8211; stay out of it.</p>
<p><strong>Learning</strong></p>
<p>The industry is constantly changing, there are new things coming out every day, you should be on top of the things that affect your work.&nbsp; Read blogs, join a social network geared towards developers (dZone comes to mind) get yourself a mentor if you can, trust me, it will pay off.&nbsp; Here is an example from my previous job &#8211; one guy just did not care, he did what he supposed to do, no learning, no progress.&nbsp; The rest of the team would get raises every year, this guy &#8211; well, he did not.&nbsp; Despite the fact that he was there longer then almost everyone else, his pay was the lowest on a team.&nbsp; I was managing the team and tried to convince him that learning is good, he did not respond.&nbsp; At the end of the day, if you will not progress, your financial compensation will not progress either.</p>
<p>I must admit, that this is not a full list.&nbsp; You could probably come up with lots more, however to me this is what&#8217;s important.&nbsp; I would love to hear from you on what you consider vital.</p>
]]></content:encoded>
			<wfw:commentRss>http://www.paul-zubkov.com/2009/08/04/what-recent-computer-science-graduate-should-know/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>Twitter API with C# example(part 2)</title>
		<link>http://www.paul-zubkov.com/2009/08/02/twitter-api-with-c-examplepart-2/</link>
		<comments>http://www.paul-zubkov.com/2009/08/02/twitter-api-with-c-examplepart-2/#comments</comments>
		<pubDate>Mon, 03 Aug 2009 07:11:23 +0000</pubDate>
		<dc:creator>Paul</dc:creator>
				<category><![CDATA[Code Samples]]></category>
		<category><![CDATA[Coding]]></category>
		<category><![CDATA[C#]]></category>
		<category><![CDATA[twitter]]></category>
		<category><![CDATA[Twitter API C#]]></category>
		<category><![CDATA[xml]]></category>

		<guid isPermaLink="false">http://www.paul-zubkov.com/?p=249</guid>
		<description><![CDATA[<div style="float: right; width: 42px; padding-right: 115px; margin: 0 0 0 10px;"><script type="text/javascript">
<!--
var dzone_url = 'http://www.paul-zubkov.com/2009/08/02/twitter-api-with-c-examplepart-2/';
var dzone_title = 'Twitter API with C# example(part 2)';
var dzone_blurb = '';
var dzone_style = '2';
//-->
</script>
<script language="javascript" src="http://widgets.dzone.com/widgets/zoneit.js"></script> 
</div>

First of all, I have to admit that I decided to take a vacation.  Vacation from everything &#8211; work, freelance, projects, blog, etc.  It&#8217;s summer and despite the crappy weather here in Toronto, I am spending time with my family which actually rocks.  Now vacation is over, let&#8217;s get back to coding [...]]]></description>
			<content:encoded><![CDATA[<div style="float: right; width: 42px; padding-right: 115px; margin: 0 0 0 10px;"><script type="text/javascript">
<!--
var dzone_url = 'http://www.paul-zubkov.com/2009/08/02/twitter-api-with-c-examplepart-2/';
var dzone_title = 'Twitter API with C# example(part 2)';
var dzone_blurb = '';
var dzone_style = '2';
//-->
</script>
<script language="javascript" src="http://widgets.dzone.com/widgets/zoneit.js"></script> 
</div>
<p><img class="alignnone size-full wp-image-254" title="sundial" src="http://www.paul-zubkov.com/wp-content/uploads/2009/08/sundial.jpg" alt="sundial" width="300" height="225" /></p>
<p>First of all, I have to admit that I decided to take a vacation.  Vacation from everything &#8211; work, freelance, projects, blog, etc.  It&#8217;s summer and despite the crappy weather here in Toronto, I am spending time with my family which actually rocks.  Now vacation is over, let&#8217;s get back to coding &#8211; today I wanted to continue with Twitter examples.  Twitter seems to be very hot, and I was curious as to how to get the most out of it from the coding perspective.    Here is a tiny function that gets the followers of a user, providing we know the username and password:</p>
<p><code lang="csharp[lines]">public string FetchFollowers(string userName, string password)<br />
{<br />
    using (var client = new WebClient())<br />
    {<br />
        client.Credentials = new NetworkCredential(userName, password);<br />
        try<br />
        {<br />
            using (var stream = client.OpenRead("http://twitter.com/statuses/followers.xml"))<br />
            {<br />
                using (var reader = new StreamReader(stream))<br />
                {<br />
                    return reader.ReadToEnd();<br />
                }<br />
            }<br />
        }<br />
        catch (WebException ex)<br />
        {<br />
            //insert code to deal with exception HERE<br />
        }<br />
    }<br />
    return string.Empty;<br />
}</code></p>
<p>There are two types of &#8220;connection&#8221; between the people on twitter &#8211; followers and friends &#8211; I am too lazy to look up the difference between the two, but if you want list of friends then line 8 in the function above should look like this:</p>
<p><code lang="csharp[lines]">using (var stream = client.OpenRead("http://twitter.com/statuses/friends.xml"));</code></p>
<p>I usually stuff the output of that in XML and then do what I need to do with it.</p>
<p>Let me take a break for now, next time we will cover posting to Twitter (status update).</p>
<p>BTW, first part of this could be found <a href="http://www.paul-zubkov.com/2009/07/01/twitter-api-with-c-examplepart-1/">here</a></p>
]]></content:encoded>
			<wfw:commentRss>http://www.paul-zubkov.com/2009/08/02/twitter-api-with-c-examplepart-2/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>Distraction free development department.</title>
		<link>http://www.paul-zubkov.com/2009/07/06/distraction-free-development-department/</link>
		<comments>http://www.paul-zubkov.com/2009/07/06/distraction-free-development-department/#comments</comments>
		<pubDate>Mon, 06 Jul 2009 15:25:59 +0000</pubDate>
		<dc:creator>Paul</dc:creator>
				<category><![CDATA[Business]]></category>
		<category><![CDATA[Management]]></category>
		<category><![CDATA[managing]]></category>

		<guid isPermaLink="false">http://www.paul-zubkov.com/?p=129</guid>
		<description><![CDATA[<div style="float: right; width: 42px; padding-right: 115px; margin: 0 0 0 10px;"><script type="text/javascript">
<!--
var dzone_url = 'http://www.paul-zubkov.com/2009/07/06/distraction-free-development-department/';
var dzone_title = 'Distraction free development department.';
var dzone_blurb = '';
var dzone_style = '2';
//-->
</script>
<script language="javascript" src="http://widgets.dzone.com/widgets/zoneit.js"></script> 
</div>

One of the things that drove me absolutely nuts when our department was in the same building as the rest of the company was the fact that nobody could quite understand what we were doing.  Quite often we would get a data entry person storm into our office and demand that we fix their [...]]]></description>
			<content:encoded><![CDATA[<div style="float: right; width: 42px; padding-right: 115px; margin: 0 0 0 10px;"><script type="text/javascript">
<!--
var dzone_url = 'http://www.paul-zubkov.com/2009/07/06/distraction-free-development-department/';
var dzone_title = 'Distraction free development department.';
var dzone_blurb = '';
var dzone_style = '2';
//-->
</script>
<script language="javascript" src="http://widgets.dzone.com/widgets/zoneit.js"></script> 
</div>
<p><img class="alignnone size-full wp-image-233" title="keybord" src="http://www.paul-zubkov.com/wp-content/uploads/2009/07/keybord.jpg" alt="keybord" width="266" height="200" /></p>
<p>One of the things that drove me absolutely nuts when our department was in the same building as the rest of the company was the fact that nobody could quite understand what we were doing.  Quite often we would get a data entry person storm into our office and demand that we fix their Outlook or install Unix on their machine (it turned out that he needed Putty, not a true Unix install).  Usually these conversation started with &#8220;You guys are not doing anything, right?&#8221;.  So many times I was trying to explain to everyone that it just does not work like this.  We are not just sitting here pressing keys at random most of the time.  Best and by far most common argument to support their need for our involvement that I heard was something like this: &#8220;It is not going to take long, could you just do this for me right now&#8221;.  One of our duties was writing a variety of Excel macros for people(I should probably post some tutorials on this subject).  After all when dealing with massive amounts of data, it is faster to write a macro then do something by hand.  We did not mind doing macros at all, what we did not like is when the person was sitting on the project for weeks and then decided to approach us at the last minute.  Client expects the project to be completed at 5 PM, so the analyst strolls into our office at 4:45.  Never mind that it takes him about 3 hours to explain to us what on earth does he want macro to do.  Never mind that it takes me couple of hours to code the macro in some cases(trust me, there were some huge macros).  It had to be done and that is it.</p>
<p>Number of times we attempted to find a solution to this annoyances.  For instance we created a little internal web site that would, in theory, help users solve many issues like setting their &#8220;Away&#8221; message on Outlook and server connection through Putty and such.  I did this web site in about 3 days when my computer was send away for repair and I was working on an antiquated piece of hardware we found berried in a storage.  Was this web site ever used?  No, it was not.  Office people would still storm into our office saying that they did not read the instructions as they would not understand it anyway.</p>
<p>The worst part of these interruptions was that it would completely break my line of thought.  So you are working away on a complex algorithm with close to no documentation on the objects that have to interact together available.  You are concentrated on the task 100 percent, not even noticing that that cup of coffee is now cold, and then all of a sudden you have someone storms in and demanding that you fix their radio right away, or else.</p>
<p>The idea that you just had about this nice piece optimized piece you are about to write is gone now.  I must admit that couple of times I flipped.  It ended up with me yelling at a poor data entry person, calling them names, questioning their intelligence and so on.  After I usually worked from home for a day, but at home there was a urgent need for a game of soccer or emergency epic hide-and-seek battle with my kids.  I do enjoy those, but working from home was not a big option from the point of getting any work done.</p>
<p>Few years have passed and then our lease was up.  I knew that was the moment when inaction would cost me dearly; I begged and pleaded with my boss to get us a separate office.  Likely he agreed with me, and for the last two years we are in a different building, about 40 minute drive away from the main office.  At first, main office was really concerned with who would be helping them out with daily tasks, but after about a month they learned to do it themselves.  That little web site was finally used on the regular basis.  We were not bothered with those requests and could finally spent close to a hundred percent of our time on coding and related things.  Our productivity sky rocketed, we were producing better code more quickly and everyone was much happier.</p>
<p>The point is &#8211; developers can&#8217;t be disturbed.  It is a process where ideas and thoughts need to be followed and processed carefully to produce what could be considered good code.  You must create a barrier between your coders and outside distraction to produce quality software, and after all it is the purpose of any development team.</p>
]]></content:encoded>
			<wfw:commentRss>http://www.paul-zubkov.com/2009/07/06/distraction-free-development-department/feed/</wfw:commentRss>
		<slash:comments>2</slash:comments>
		</item>
		<item>
		<title>Twitter API with C# example(part 1)</title>
		<link>http://www.paul-zubkov.com/2009/07/01/twitter-api-with-c-examplepart-1/</link>
		<comments>http://www.paul-zubkov.com/2009/07/01/twitter-api-with-c-examplepart-1/#comments</comments>
		<pubDate>Thu, 02 Jul 2009 02:21:48 +0000</pubDate>
		<dc:creator>Paul</dc:creator>
				<category><![CDATA[Code Samples]]></category>
		<category><![CDATA[Coding]]></category>
		<category><![CDATA[C#]]></category>
		<category><![CDATA[twitter]]></category>
		<category><![CDATA[Twitter API C#]]></category>
		<category><![CDATA[xml]]></category>

		<guid isPermaLink="false">http://www.paul-zubkov.com/?p=220</guid>
		<description><![CDATA[<div style="float: right; width: 42px; padding-right: 115px; margin: 0 0 0 10px;"><script type="text/javascript">
<!--
var dzone_url = 'http://www.paul-zubkov.com/2009/07/01/twitter-api-with-c-examplepart-1/';
var dzone_title = 'Twitter API with C# example(part 1)';
var dzone_blurb = '';
var dzone_style = '2';
//-->
</script>
<script language="javascript" src="http://widgets.dzone.com/widgets/zoneit.js"></script> 
</div>

Currently I am involved in a project where number of things have to be done using Twitter API.  What really amazes me today is the quality of API&#8217;s available to developers.  Twitter is a perfect example of such API.  I will try to publish some code that I used to accomplish several [...]]]></description>
			<content:encoded><![CDATA[<div style="float: right; width: 42px; padding-right: 115px; margin: 0 0 0 10px;"><script type="text/javascript">
<!--
var dzone_url = 'http://www.paul-zubkov.com/2009/07/01/twitter-api-with-c-examplepart-1/';
var dzone_title = 'Twitter API with C# example(part 1)';
var dzone_blurb = '';
var dzone_style = '2';
//-->
</script>
<script language="javascript" src="http://widgets.dzone.com/widgets/zoneit.js"></script> 
</div>
<p><img src="http://www.paul-zubkov.com/wp-content/uploads/2009/07/sunflower.jpg" alt="sunflower" title="sunflower" width="299" height="200" class="alignnone size-full wp-image-229" /></p>
<p>Currently I am involved in a project where number of things have to be done using Twitter API.  What really amazes me today is the quality of API&#8217;s available to developers.  Twitter is a perfect example of such API.  I will try to publish some code that I used to accomplish several tasks starting with getting the details of a Twitter user providing you are aware of the user password and username.</p>
<p>Following code will retrieve a variety of information about a Twitter account:<br />
<code lang="csharp"><br />
public string FetchUserDetailsAsXml(string userName, string password, string IDorScreenName)<br />
{</p>
<p>        if(string.IsNullOrEmpty(userName) || string.IsNullOrEmpty(password))<br />
        {<br />
            throw new ArgumentException("userName or Password are not supplied, that is not good.");<br />
        }</p>
<p>    string url = string.Format(TwitterBaseUrlFormat, "users", "show" + "/" + IDorScreenName, "xml");</p>
<p>    using (var client = new WebClient())<br />
    {<br />
        client.Credentials = new NetworkCredential(userName, password);</p>
<p>        try<br />
        {<br />
            using (var stream = client.OpenRead(url))<br />
            {<br />
                using (var reader = new StreamReader(stream))<br />
                {<br />
                    return reader.ReadToEnd();<br />
                }<br />
            }<br />
        }<br />
        catch (WebException weex)<br />
        {<br />
            if (weex.Response is HttpWebResponse)<br />
            {<br />
                if ((weex.Response as HttpWebResponse).StatusCode == HttpStatusCode.NotFound)<br />
                {<br />
                    return null;<br />
                }<br />
            }<br />
            throw;<br />
        }<br />
    }</p>
<p> }<br />
</code></p>
<p>That&#8217;s pretty much it.  Need System.Net and System.Web for this, obviously.  What you get out of that looks like this:</p>
<p><code lang="xml"></p>
<p>- <user><br />
  <id>14381487</id><br />
  <name>pzubkov</name><br />
  <screen_name>pzubkov</screen_name><br />
  <location>Ontario, Canada</location><br />
  <description>Coder, mostly .net</description></p>
<profile_image_url>http://s3.amazonaws.com/twitter_production/profile_images/56116140/Me_normal.jpg</profile_image_url>
  <url>http://www.paul-zubkov.com</url></p>
<protected>false</protected>
  <followers_count>39</followers_count></p>
<profile_background_color>709397</profile_background_color>
<profile_text_color>333333</profile_text_color>
<profile_link_color>FF3300</profile_link_color>
<profile_sidebar_fill_color>A0C5C7</profile_sidebar_fill_color>
<profile_sidebar_border_color>86A4A6</profile_sidebar_border_color>
  <friends_count>61</friends_count><br />
  <created_at>Mon Apr 14 05:08:22 +0000 2008</created_at><br />
  <favourites_count>0</favourites_count><br />
  <utc_offset>-18000</utc_offset><br />
  <time_zone>Eastern Time (US  Canada)</time_zone></p>
<profile_background_image_url>http://static.twitter.com/images/themes/theme6/bg.gif</profile_background_image_url>
<profile_background_tile>false</profile_background_tile>
  <statuses_count>49</statuses_count><br />
  <notifications>false</notifications><br />
  <verified>false</verified><br />
  <following>false</following><br />
- <status><br />
  <created_at>Wed Jul 01 19:15:11 +0000 2009</created_at><br />
  <id>2424620582</id><br />
  <text>twitter api rocks, this is sweet</text><br />
  <source></source>web</p>
<truncated>false</truncated>
  <in_reply_to_status_id><br />
  <in_reply_to_user_id><br />
  <favorited>false</favorited><br />
  <in_reply_to_screen_name><br />
  </in_reply_to_screen_name><br />
  </in_reply_to_user_id><br />
</in_reply_to_status_id></status></user></code></p>
<p>As we can see from above, I am not an avid Twitter user myself, but I find that the API produced by Twitter is extremely well done.  In Part 2 and 3 I will cover sending new update and getting followers.</p>
]]></content:encoded>
			<wfw:commentRss>http://www.paul-zubkov.com/2009/07/01/twitter-api-with-c-examplepart-1/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>New (at least for me) IO functions.</title>
		<link>http://www.paul-zubkov.com/2009/06/30/new-at-least-for-me-io-functions/</link>
		<comments>http://www.paul-zubkov.com/2009/06/30/new-at-least-for-me-io-functions/#comments</comments>
		<pubDate>Wed, 01 Jul 2009 04:39:24 +0000</pubDate>
		<dc:creator>Paul</dc:creator>
				<category><![CDATA[Coding]]></category>
		<category><![CDATA[C#]]></category>
		<category><![CDATA[programming]]></category>
		<category><![CDATA[Visual Studio]]></category>

		<guid isPermaLink="false">http://www.paul-zubkov.com/?p=212</guid>
		<description><![CDATA[<div style="float: right; width: 42px; padding-right: 115px; margin: 0 0 0 10px;"><script type="text/javascript">
<!--
var dzone_url = 'http://www.paul-zubkov.com/2009/06/30/new-at-least-for-me-io-functions/';
var dzone_title = 'New (at least for me) IO functions.';
var dzone_blurb = '';
var dzone_style = '2';
//-->
</script>
<script language="javascript" src="http://widgets.dzone.com/widgets/zoneit.js"></script> 
</div>

Well, live and learn.  This was an interesting day.  I am working on a little project right now, can&#8217;t really discuss details, and quite frankly it is nothing that I am going to be too proud of once it is done.  But this is not the point.  I had to do [...]]]></description>
			<content:encoded><![CDATA[<div style="float: right; width: 42px; padding-right: 115px; margin: 0 0 0 10px;"><script type="text/javascript">
<!--
var dzone_url = 'http://www.paul-zubkov.com/2009/06/30/new-at-least-for-me-io-functions/';
var dzone_title = 'New (at least for me) IO functions.';
var dzone_blurb = '';
var dzone_style = '2';
//-->
</script>
<script language="javascript" src="http://widgets.dzone.com/widgets/zoneit.js"></script> 
</div>
<p><img class="alignnone size-full wp-image-217" title="embarrassing" src="http://www.paul-zubkov.com/wp-content/uploads/2009/06/bear.png" alt="embarrassing" width="296" height="200" /></p>
<p>Well, live and learn.  This was an interesting day.  I am working on a little project right now, can&#8217;t really discuss details, and quite frankly it is nothing that I am going to be too proud of once it is done.  But this is not the point.  I had to do some minor IO work with this and this is when I found that instead of doing stuff like:<code lang="csharp"></p>
<p>_fsCFileStream = new FileStream(sFileName, FileMode.Open, System.IO.FileAccess.Read);<br />
_srStreamReader = new StreamReader(_fsCfMCCSV, Encoding.GetEncoding(1252));</p>
<p>try<br />
{<br />
    if ((sLineIn = _srCfMCCSV.ReadLine()) == null)<br />
        //do stuff here<br />
}catch(){}<br />
</code><br />
I can simply do<br />
<code lang="csharp"><br />
File.ReadAllLines();<br />
</code></p>
<p>I guess I was stuck on .Net 1.3 for so long, I completely skipped 2.x and now 3.5 is full of surprises.  I know I am behind times, need to catch up soon.  Gone to do some reading.</p>
]]></content:encoded>
			<wfw:commentRss>http://www.paul-zubkov.com/2009/06/30/new-at-least-for-me-io-functions/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>Codeigniter &#8211; I like PHP again!</title>
		<link>http://www.paul-zubkov.com/2009/06/11/codeigniter-i-like-php-again/</link>
		<comments>http://www.paul-zubkov.com/2009/06/11/codeigniter-i-like-php-again/#comments</comments>
		<pubDate>Thu, 11 Jun 2009 23:46:09 +0000</pubDate>
		<dc:creator>Paul</dc:creator>
				<category><![CDATA[Coding]]></category>
		<category><![CDATA[PHP]]></category>

		<guid isPermaLink="false">http://www.paul-zubkov.com/?p=208</guid>
		<description><![CDATA[<div style="float: right; width: 42px; padding-right: 115px; margin: 0 0 0 10px;"><script type="text/javascript">
<!--
var dzone_url = 'http://www.paul-zubkov.com/2009/06/11/codeigniter-i-like-php-again/';
var dzone_title = 'Codeigniter &#8211; I like PHP again!';
var dzone_blurb = '';
var dzone_style = '2';
//-->
</script>
<script language="javascript" src="http://widgets.dzone.com/widgets/zoneit.js"></script> 
</div>

In the last few years my focus was on .Net, I love C# with all my heart(my wife does not read this blog, so I am free to say that).  It is the language that is structured enough and at the same time powerful and flexible.  There have been many advances in .Net, [...]]]></description>
			<content:encoded><![CDATA[<div style="float: right; width: 42px; padding-right: 115px; margin: 0 0 0 10px;"><script type="text/javascript">
<!--
var dzone_url = 'http://www.paul-zubkov.com/2009/06/11/codeigniter-i-like-php-again/';
var dzone_title = 'Codeigniter &#8211; I like PHP again!';
var dzone_blurb = '';
var dzone_style = '2';
//-->
</script>
<script language="javascript" src="http://widgets.dzone.com/widgets/zoneit.js"></script> 
</div>
<p><img class="alignnone size-full wp-image-209" title="jumping" src="http://www.paul-zubkov.com/wp-content/uploads/2009/06/jumping.jpg" alt="jumping" width="306" height="200" /></p>
<p>In the last few years my focus was on .Net, I love C# with all my heart(my wife does not read this blog, so I am free to say that).  It is the language that is structured enough and at the same time powerful and flexible.  There have been many advances in .Net, WPF and MVC are exactly what was needed by the development community.  Although there are still issues with .Net that have to be resolved, I feel that the framework itself is on the right track.  With all my love for .Net I have forgotten about one of the languages that I had started my coding with &#8211; PHP.  </p>
<p>One of the greatest advantages of .Net as to compare to scripting languages like PHP is ability to really trace the code diving into smallest details.  I have hard time imagining debugging something without ability to &#8220;watch&#8221; the variables that I am working on.  Visual Studio is a very well written IDE, I can&#8217;t even think of an IDE that comes close to VS, so I got spoiled by all this luxury, until a week ago my boss came up with a project that required use of PHP.  </p>
<p>I decided to take on the project myself, wanted to refresh the stuff I knew about PHP and all that.  By saying that I would be taking on this myself, I mean the back end, after all my designing skills are very limited and I had given up on creating nice UI long time ago.  Will, the UI dude would be making this thing look nice.  So after accepting the project, I had started reading on what is going on with PHP, and guess what, there have been some incredible things that were released since I last worked on PHP.  Which should not be a surprise, progress can&#8217;t be stopped, just me with my deep submersion into .Net stayed completely oblivious to this part of coding.  This is how I found <a href="http://codeigniter.com/" target="_blank">Codeigniter</a>.</p>
<p>Now, nobody is paying me for this (I wish someone did), so this is an honest plug of the framework that was done so well, I had coded that silly file sharing thingy that my boss wanted in about 3 days.  Keep in mind, this was just the back end, now Will is goofing around with design, and I am sure he will do great, as usual.  I found that Codeigniter made my work so much easier.  Great documentation is written for the framework, there is a forum and even an IRC channel.  To me, this represented a great change from the wild days of my PHP coding.  I would recommend Codeigniter to everyone who is interested in doing work with PHP quickly.  </p>
<p>Other great things I used on this project &#8211; <a href="http://www.aptana.com/" target="_blank">Aptana Studio</a> (excellent IDE, still have not figured out how to use that build in Subversion plugin) and <a href="http://www.wampserver.com/en/" target="_blank">WAMP</a>.</p>
]]></content:encoded>
			<wfw:commentRss>http://www.paul-zubkov.com/2009/06/11/codeigniter-i-like-php-again/feed/</wfw:commentRss>
		<slash:comments>19</slash:comments>
		</item>
		<item>
		<title>Firefox as development platform?</title>
		<link>http://www.paul-zubkov.com/2009/05/28/firefox-as-development-platform/</link>
		<comments>http://www.paul-zubkov.com/2009/05/28/firefox-as-development-platform/#comments</comments>
		<pubDate>Fri, 29 May 2009 02:00:25 +0000</pubDate>
		<dc:creator>Paul</dc:creator>
				<category><![CDATA[Coding]]></category>
		<category><![CDATA[Technology]]></category>
		<category><![CDATA[addons]]></category>
		<category><![CDATA[Firebug]]></category>
		<category><![CDATA[FireFox]]></category>
		<category><![CDATA[FireFTP]]></category>
		<category><![CDATA[Web Developer]]></category>
		<category><![CDATA[YSlow]]></category>

		<guid isPermaLink="false">http://www.paul-zubkov.com/?p=188</guid>
		<description><![CDATA[<div style="float: right; width: 42px; padding-right: 115px; margin: 0 0 0 10px;"><script type="text/javascript">
<!--
var dzone_url = 'http://www.paul-zubkov.com/2009/05/28/firefox-as-development-platform/';
var dzone_title = 'Firefox as development platform?';
var dzone_blurb = '';
var dzone_style = '2';
//-->
</script>
<script language="javascript" src="http://widgets.dzone.com/widgets/zoneit.js"></script> 
</div>

FireFox has been my browser of choice for quite some time.  I am the kind of guy who likes customization.  There is a certain ways my computer has to be set up, its just the kind of person I am.  Perhaps for me the most important feature of FireFox would be plug-ins. [...]]]></description>
			<content:encoded><![CDATA[<div style="float: right; width: 42px; padding-right: 115px; margin: 0 0 0 10px;"><script type="text/javascript">
<!--
var dzone_url = 'http://www.paul-zubkov.com/2009/05/28/firefox-as-development-platform/';
var dzone_title = 'Firefox as development platform?';
var dzone_blurb = '';
var dzone_style = '2';
//-->
</script>
<script language="javascript" src="http://widgets.dzone.com/widgets/zoneit.js"></script> 
</div>
<p><img class="alignnone size-full wp-image-205" title="gears" src="http://www.paul-zubkov.com/wp-content/uploads/2009/05/gears.jpg" alt="gears" width="268" height="200" /></p>
<p>FireFox has been my browser of choice for quite some time.  I am the kind of guy who likes customization.  There is a certain ways my computer has to be set up, its just the kind of person I am.  Perhaps for me the most important feature of FireFox would be plug-ins.  This is the best tool for customization of your browser.  Now, I have been impressed with newest Internet Explorer, add-ons are step in the right direction, but at this point there are no add-ons to help with coding, but when it comes to FireFox, well, let me just list some:</p>
<p>Most obvious -<a href="https://addons.mozilla.org/en-US/firefox/addon/60"> Web Developer</a> &#8211; lets just say that this is a must have if you are coding for web.  List of features is just too long and I am just to lazy to list everything, lets just say without it any kind of coding for web would just take too long.</p>
<p><a href="https://addons.mozilla.org/en-US/firefox/addon/1843" target="_blank">Firebug </a>- simply put one of the best tools for debugging your web site.  Add <a href="http://developer.yahoo.com/yslow/" target="_blank">YSlow </a>and get in depth analysis of what is going on with your project.</p>
<p><a href="https://addons.mozilla.org/en-US/firefox/addon/8487" target="_blank">Pencil</a> &#8211; free and quite powerful tool for UI prototyping and diagrams, try it out.  It won&#8217;t replace industry standard software, I for one prefer Visio or coffee shop napkins and black pen, depends on where the idea strikes me, but if you need to do something quick, Pencil would do just fine.</p>
<p><a href="https://addons.mozilla.org/en-US/firefox/addon/684" target="_blank">FireFTP </a>I can&#8217;t really count number of times I needed to ftp something quickly.  FireFTP serves just that purpose.  I can&#8217;t really recommend it for transferring bunch of files, keeps on timing out, but then again, I have not really played with all settings to affect that.</p>
<p><a href="https://addons.mozilla.org/en-US/firefox/addon/1002" target="_blank">Codetch </a>- an IDE like plugin which lets you work with your files in a manner similar to Dreamweaver.  Once again, for a full blown project I would use a stand alone IDE, most likely Visual Studio or Komodo Edit, but for a quick change Codetch does the job.</p>
<p>There are more, much more.  These are the things that I use quite often.  Now, with all that great functionality, would I consider FireFox as a development platform?  The answer is no.  There are tools that are designed specifically for development purposes, while FireFox is a browser.  It might be handy to keep a jump drive with overloaded FireFox installed handy for some quick coding while your machine is unavailable, but for full blow development project, there are tools that can do the job much better.</p>
]]></content:encoded>
			<wfw:commentRss>http://www.paul-zubkov.com/2009/05/28/firefox-as-development-platform/feed/</wfw:commentRss>
		<slash:comments>4</slash:comments>
		</item>
		<item>
		<title>Optimizing Developer</title>
		<link>http://www.paul-zubkov.com/2009/05/15/optimizing-developer/</link>
		<comments>http://www.paul-zubkov.com/2009/05/15/optimizing-developer/#comments</comments>
		<pubDate>Fri, 15 May 2009 16:09:15 +0000</pubDate>
		<dc:creator>Paul</dc:creator>
				<category><![CDATA[Coding]]></category>
		<category><![CDATA[managing]]></category>
		<category><![CDATA[motivation]]></category>
		<category><![CDATA[Personal]]></category>
		<category><![CDATA[procrastination]]></category>
		<category><![CDATA[programming]]></category>

		<guid isPermaLink="false">http://www.paul-zubkov.com/?p=201</guid>
		<description><![CDATA[<div style="float: right; width: 42px; padding-right: 115px; margin: 0 0 0 10px;"><script type="text/javascript">
<!--
var dzone_url = 'http://www.paul-zubkov.com/2009/05/15/optimizing-developer/';
var dzone_title = 'Optimizing Developer';
var dzone_blurb = '';
var dzone_style = '2';
//-->
</script>
<script language="javascript" src="http://widgets.dzone.com/widgets/zoneit.js"></script> 
</div>

Have you ever looked at a code that you wrote several years ago?  I have to do this all the time, after all I am working on the same application.  Not only do I do it to fix bugs, but I do it to optimize the production code.  And at times I [...]]]></description>
			<content:encoded><![CDATA[<div style="float: right; width: 42px; padding-right: 115px; margin: 0 0 0 10px;"><script type="text/javascript">
<!--
var dzone_url = 'http://www.paul-zubkov.com/2009/05/15/optimizing-developer/';
var dzone_title = 'Optimizing Developer';
var dzone_blurb = '';
var dzone_style = '2';
//-->
</script>
<script language="javascript" src="http://widgets.dzone.com/widgets/zoneit.js"></script> 
</div>
<p><img class="alignnone size-full wp-image-190" title="man_rain" src="http://www.paul-zubkov.com/wp-content/uploads/2009/05/man_rain.jpg" alt="man_rain" width="300" height="201" /></p>
<p>Have you ever looked at a code that you wrote several years ago?  I have to do this all the time, after all I am working on the same application.  Not only do I do it to fix bugs, but I do it to optimize the production code.  And at times I see my old code and think what was I thinking when I wrote this.   You see, with every release our main product grows, new features, core changes, you name it.  One can say that we are optimizing the software by adding things our clients ask for and this leads to optimization of code.  Optimizing your code is extremely important, normally there are few ways in which a particular problem could be solved, but if you are serious about your work, you do want to pick the most efficient way of doing things.  Many books have been written on the subject, simple Google search will produce lots of articles concerning code optimization.  Today I am not going to talk about that, instead I will talk about optimizing a developer.</p>
<p>If you are like me &#8211; doing coding full time and at times after hours, you want to achieve something which falls beyond simple financial compensation for you work.  I want to grow as a developer.  I have read somewhere that it takes roughly 10000 hours to master a task &#8211; be it musical instrument, a sport or any other activity.  I think similar thing is applied to programming.    I have been thinking of a way to apply optimization to myself, after all if my code can be optimized, why can&#8217;t the writer of the code.  Here are some principles that I have came up with.  This works for me, might not work for everyone.  Once again, just my own opinion.<span id="more-201"></span></p>
<p>So here it is &#8211; list of  things I (or you) need to know:</p>
<p><strong>Data Structures.</strong></p>
<p>Have you ever thought as to why virtually every course on a programming language begins with overview of your Data Structures.  Pick up a book on any programming languages, I guarantee you you would find explanation of some basic types as well as more complex types within first 20 pages of the book.  Why do all authors bother putting virtually same information in?  Data structures are basic building blocks.  If you don&#8217;t get the data structures, their limitation, advantages and benefits, you might as well stop coding altogether.</p>
<p><strong>Language.</strong></p>
<p>Let&#8217;s be honest, it is not that difficult to pick up a new programming language once you mastered couple.  At first all you notice is changes in syntax, for instance Ruby is much more &#8220;English&#8221; like language in my book then let&#8217;s say C.  But it goes beyond syntax and different names for your data structures.  Every language has it&#8217;s own ways of doing things, which might not seem all that obvious to a novice.  Spend time, learn tricks of the language, you will get better appreciation for the hard work authors of the language put into it.  You would also gain deeper understanding of how to solve that problem in the best possible way.</p>
<p><strong>Compiler / Interpreter.</strong></p>
<p>Compilers are mysterious pieces of code that actually make sense of what a coder is trying to accomplish.  Every compiler is different, with its own routines for optimization, process handling and so on.  I don&#8217;t think it would be fair to say that one has to become an expert on his compiler of choice, but more understanding of how your code is compiled or interpreted will give you advantage in writing this code in the most efficient manner.</p>
<p><strong>Community / Ways to solve the issues.</strong></p>
<p>One of the greatest things about internet is that it gives you access to incredible amount of resources.  Most of the time a search engine is my friend.  When I am stuck on something, I can always search for a solution and even if I can&#8217;t find the solution directly, there are always some situation that are different in many ways and could be applied to solve the issue.  Here is an example &#8211; few years ago I was stuck with a problem.  The project took about 3 month to complete, and at the end we found that one issue, which had nothing to do with data, more of a user experience absolutely prevented us from releasing the feature.  It was one of those situations where 3 month of your work is wiped out by something that you assume was so easy and obvious, but in reality was completely impossible.  Searching for the solution took about 3 weeks, I was not about to give up on 3 month of crazy coding.  I had tortured Google, developer communities, message boards, IRC channels, forums (I think I was even banned couple of times for my persistence), finally with a help of paid support we had an answer which was &#8211; &#8220;this can not be done&#8221;.  This was a total disaster, but through the communication with paid Development Support at Microsoft, the engineer that was working on the case with me, accidentally helped me solve another huge issue which was a limitation that was scaring away many potential customers.  So what happened to the project?  We found a hack to have it work, warned users not to do a certain things at certain instances.  While the original problem was not fully solved, the other huge issue was, and at the end I learned lots of new things and got to talk to many coders.</p>
]]></content:encoded>
			<wfw:commentRss>http://www.paul-zubkov.com/2009/05/15/optimizing-developer/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
	</channel>
</rss>
