<?xml version='1.0' encoding='UTF-8'?><?xml-stylesheet href="http://www.blogger.com/styles/atom.css" type="text/css"?><feed xmlns='http://www.w3.org/2005/Atom' xmlns:openSearch='http://a9.com/-/spec/opensearchrss/1.0/' xmlns:georss='http://www.georss.org/georss' xmlns:gd='http://schemas.google.com/g/2005' xmlns:thr='http://purl.org/syndication/thread/1.0'><id>tag:blogger.com,1999:blog-6570649005994704731</id><updated>2012-01-30T15:40:43.015-08:00</updated><category term='json data test tdd'/><category term='programming forum useful stackoverflow'/><category term='paradigm-shift programming problem-solving'/><category term='mod_perl axkit template::toolkit perl scriptaculous jquery'/><category term='wheel code-reuse CPAN perl'/><category term='simplicity sabre-tooth-tiger design'/><category term='bazaar-and-cathedral programming essay must-read'/><category term='stackexchange stackoverflow forum developer'/><category term='perl framework future perl-is-dead'/><category term='sdk niche framework career software-development'/><category term='quick-fix learning lesson'/><category term='bug-tracing condition-testing perl web-app'/><title type='text'>Code N00bian</title><subtitle type='html'>Programming, Rants.</subtitle><link rel='http://schemas.google.com/g/2005#feed' type='application/atom+xml' href='http://coden00bian.blogspot.com/feeds/posts/default'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/6570649005994704731/posts/default?max-results=100'/><link rel='alternate' type='text/html' href='http://coden00bian.blogspot.com/'/><link rel='hub' href='http://pubsubhubbub.appspot.com/'/><author><name>Steve7</name><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='32' height='32' src='http://1.bp.blogspot.com/_v4HP1tmQC-w/SUysKCA-38I/AAAAAAAAADE/P67OyMnJskQ/S220/Dogbert.gif'/></author><generator version='7.00' uri='http://www.blogger.com'>Blogger</generator><openSearch:totalResults>12</openSearch:totalResults><openSearch:startIndex>1</openSearch:startIndex><openSearch:itemsPerPage>100</openSearch:itemsPerPage><entry><id>tag:blogger.com,1999:blog-6570649005994704731.post-8789413472920690561</id><published>2011-03-05T20:21:00.000-08:00</published><updated>2011-03-05T20:29:24.487-08:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='json data test tdd'/><title type='text'>How do you do a Json Data Testing?</title><content type='html'>Recently i'm trying to pick up SOA, TDD and MVC. And i was given a task to design some apis which are accessible to our application which will act like lightweight front end to process the data and display it to the user.&lt;br /&gt;&lt;br /&gt;&lt;div class="separator" style="clear: both; text-align: center;"&gt;&lt;a href="http://1.bp.blogspot.com/-AunXfrYFGuQ/TXMNXlQ5ZXI/AAAAAAAAAKc/j1u6vw47NG8/s1600/MPS38B.jpg" imageanchor="1" style="clear:left; float:left;margin-right:1em; margin-bottom:1em"&gt;&lt;img border="0" height="170" width="200" src="http://1.bp.blogspot.com/-AunXfrYFGuQ/TXMNXlQ5ZXI/AAAAAAAAAKc/j1u6vw47NG8/s200/MPS38B.jpg" /&gt;&lt;/a&gt;&lt;/div&gt;&lt;br /&gt;I understand that in order to do TDD, you must first write a failing test - red, write the logic and make it pass - green and then refactor if necessary. But the part what i was working on was quite simple. Which was just basically reading off data from sproc and then format the data using data model class and returning them via json.&lt;br /&gt;&lt;br /&gt;&lt;b&gt;How to do it?&lt;/b&gt;&lt;br /&gt;So for such a simple type design, it would seem that tests aren't really needed. But i googled around and i did find people who wrote tests for their sproc and i wanted to write at least some basic tests to ensure that these apis are working. One of the method that i saw was to validate the data returned using an xml file to compare line by line.&lt;br /&gt;&lt;br /&gt;I didn't like this method that much as i would need to create additional files, the xmls and not only that, it seems that the test are too fragile in case that the data in my database changed, i would have to go update and maintain the XML/test again. Not a very motivating thought.&lt;br /&gt;&lt;br /&gt;&lt;div class="separator" style="clear: both; text-align: center;"&gt;&lt;a href="http://2.bp.blogspot.com/-tmVz0LrazQE/TXMNgPXIkMI/AAAAAAAAAKk/DV0dsyNfexA/s1600/Do-it-later.jpg" imageanchor="1" style="clear:left; float:left;margin-right:1em; margin-bottom:1em"&gt;&lt;img border="0" height="168" width="200" src="http://2.bp.blogspot.com/-tmVz0LrazQE/TXMNgPXIkMI/AAAAAAAAAKk/DV0dsyNfexA/s200/Do-it-later.jpg" /&gt;&lt;/a&gt;&lt;/div&gt;So i choose a simpler method, using string contains. Basically what i did was to convert the json back into string and just search the string for certain attributes and value that should likely remain unchanged for quite some time and use those as my basic assertion. &lt;br /&gt;&lt;br /&gt;Yea, i think the test are pretty much too basic and doesn't really do much. But at least they are useful to tell me when i have accidentally changed the structure too much until i am better able to figure out how to write a better test for this. :)&lt;br /&gt;&lt;style&gt;.post code {width: 80%;font-family: Courier;margin:.75em 0;border:1px solid #596;border-width:1px 1px;padding:5px 15px;display: block;background-color: #202020;color:white;}&lt;/style&gt;&lt;br /&gt;&lt;code&gt;&lt;br /&gt;[Test]&lt;br /&gt;[Category("GetProductJson")]&lt;br /&gt;public void GetProductJson_CallBuggyBaby__ReturnFreeItemChunk()&lt;br /&gt;{&lt;br /&gt;//arrange&lt;br /&gt;request.Setup(x =&gt; x.QueryString).Returns(&lt;br /&gt;new System.Collections.Specialized.NameValueCollection&lt;br /&gt;{&lt;br /&gt;{"productid","12341"},&lt;br /&gt;{"storeid","189}&lt;br /&gt;}&lt;br /&gt;);&lt;br /&gt;&lt;br /&gt;//act&lt;br /&gt;EStoreController controller = new EStoreController();&lt;br /&gt;controller.ControllerContext = new ControllerContext(context.Object, new RouteData(), controller);&lt;br /&gt;var results = controller.GetProductJson();&lt;br /&gt;string json = JSONHelper.ToJSON(results.Data);&lt;br /&gt;&lt;br /&gt;//assert&lt;br /&gt;bool bHasFreeItem = json.Contains("\"nFreeItemID\":8888");&lt;br /&gt;Assert.True(bHasFreeItem, "Json should contain free item.");&lt;br /&gt;}&lt;br /&gt;&lt;/code&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/6570649005994704731-8789413472920690561?l=coden00bian.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://coden00bian.blogspot.com/feeds/8789413472920690561/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=6570649005994704731&amp;postID=8789413472920690561' title='2 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/6570649005994704731/posts/default/8789413472920690561'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/6570649005994704731/posts/default/8789413472920690561'/><link rel='alternate' type='text/html' href='http://coden00bian.blogspot.com/2011/03/how-do-you-do-json-data-testing.html' title='How do you do a Json Data Testing?'/><author><name>Steve7</name><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='32' height='32' src='http://1.bp.blogspot.com/_v4HP1tmQC-w/SUysKCA-38I/AAAAAAAAADE/P67OyMnJskQ/S220/Dogbert.gif'/></author><media:thumbnail xmlns:media='http://search.yahoo.com/mrss/' url='http://1.bp.blogspot.com/-AunXfrYFGuQ/TXMNXlQ5ZXI/AAAAAAAAAKc/j1u6vw47NG8/s72-c/MPS38B.jpg' height='72' width='72'/><thr:total>2</thr:total></entry><entry><id>tag:blogger.com,1999:blog-6570649005994704731.post-2667127610237411387</id><published>2011-02-25T22:35:00.000-08:00</published><updated>2011-02-25T22:35:52.134-08:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='stackexchange stackoverflow forum developer'/><title type='text'>Developers Gold Rush days</title><content type='html'>Twitter was recently valued over $10billion and FaceBook is valued over $200 billion?&lt;br /&gt;It seems that to be rich these days all you need is a good enough idea and put it on the web. And with the floods of mobile devices and tablets pc, the internet is everywhere and anytime.&lt;br /&gt;&lt;br /&gt;&lt;div class="separator" style="clear: both; text-align: center;"&gt;&lt;a href="http://4.bp.blogspot.com/-IIDYs5MjvRc/TWidjTc8s5I/AAAAAAAAAJ0/DBggcOli-h4/s1600/Gold%2BRush.jpg" imageanchor="1" style="clear:left; float:left;margin-right:1em; margin-bottom:1em"&gt;&lt;img border="0" height="200" width="200" src="http://4.bp.blogspot.com/-IIDYs5MjvRc/TWidjTc8s5I/AAAAAAAAAJ0/DBggcOli-h4/s200/Gold%2BRush.jpg" /&gt;&lt;/a&gt;&lt;/div&gt;&lt;br /&gt;At the same time, it's easier for developers to find resources and help as well. Driven by enough motivation and passion and a good internet connection, you can probably write your own OS. Well maybe not from the ground up but with enough help from the open source community.&lt;br /&gt;&lt;br /&gt;&lt;div class="separator" style="clear: both; text-align: center;"&gt;&lt;a href="http://2.bp.blogspot.com/-HK-1g2mRNMk/TWifNumRREI/AAAAAAAAAJ8/o8kCce5e_P4/s1600/RealFlight_Expansion_Pack_6.jpg" imageanchor="1" style="clear:left; float:left;margin-right:1em; margin-bottom:1em"&gt;&lt;img border="0" height="200" width="150" src="http://2.bp.blogspot.com/-HK-1g2mRNMk/TWifNumRREI/AAAAAAAAAJ8/o8kCce5e_P4/s200/RealFlight_Expansion_Pack_6.jpg" /&gt;&lt;/a&gt;&lt;/div&gt;&lt;br /&gt;&lt;b&gt;Crack Overflow - Expansion pack&lt;/b&gt;&lt;br /&gt;It seems that we have more resources these days, ranging from the original &lt;a href="http://stackoverflow.com/"&gt;Stackoverflow&lt;/a&gt; to it's childrens, the &lt;a href="http://stackexchange.com/"&gt;stackexchanges&lt;/a&gt;. I find &lt;a href="http://programmers.stackexchange.com/"&gt;programmers stackexchange&lt;/a&gt; to be invaluable for those of us with career conundrums hoping to get some advice. And it seems that other stackexchange forums are slowly picking up speed as well.&lt;br /&gt;&lt;br /&gt;Also glad to see paid forums like expert exchange isn't appearing that high up on google searches anymore. There is a newcomer to challenge the throne of stackoverflow though, the geeky named Quora.&lt;br /&gt;&lt;br /&gt;I haven't really used that much of that forum yet but i'm glad there's more resources for developers. However too many forums could also divide up the available brain power and the crowds. Hope that stackexchange don't over do it.&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/6570649005994704731-2667127610237411387?l=coden00bian.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://coden00bian.blogspot.com/feeds/2667127610237411387/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=6570649005994704731&amp;postID=2667127610237411387' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/6570649005994704731/posts/default/2667127610237411387'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/6570649005994704731/posts/default/2667127610237411387'/><link rel='alternate' type='text/html' href='http://coden00bian.blogspot.com/2011/02/developers-gold-rush-days.html' title='Developers Gold Rush days'/><author><name>Steve7</name><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='32' height='32' src='http://1.bp.blogspot.com/_v4HP1tmQC-w/SUysKCA-38I/AAAAAAAAADE/P67OyMnJskQ/S220/Dogbert.gif'/></author><media:thumbnail xmlns:media='http://search.yahoo.com/mrss/' url='http://4.bp.blogspot.com/-IIDYs5MjvRc/TWidjTc8s5I/AAAAAAAAAJ0/DBggcOli-h4/s72-c/Gold%2BRush.jpg' height='72' width='72'/><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-6570649005994704731.post-2925151826069729876</id><published>2009-04-02T06:54:00.000-07:00</published><updated>2009-04-02T06:59:11.190-07:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='sdk niche framework career software-development'/><title type='text'>It pays to play with the big dog</title><content type='html'>&lt;a style="font-family: verdana;" onblur="try {parent.deselectBloggerImageGracefully();} catch(e) {}" href="http://2.bp.blogspot.com/_v4HP1tmQC-w/SdTEKas6f1I/AAAAAAAAAGM/WgjXE8Z5YLY/s1600-h/images.jpg"&gt;&lt;img style="margin: 0pt 10px 10px 0pt; float: left; cursor: pointer; width: 115px; height: 125px;" src="http://2.bp.blogspot.com/_v4HP1tmQC-w/SdTEKas6f1I/AAAAAAAAAGM/WgjXE8Z5YLY/s200/images.jpg" alt="" id="BLOGGER_PHOTO_ID_5320092743076839250" border="0" /&gt;&lt;/a&gt;i work in a small company with most our frameworks, software highly linked to open source software. so i was more than skeptical when i was asked to attend a workshop by none other than the biggest of all big dog, microsoft. one thing was obvious to me after working in the software world for a while. it pays, very handsomely to play with the big boys toys. yes, you might be a wizard with a language, you might even be able to reverse engineer a language using nothing more than vim.&lt;br /&gt;&lt;br /&gt;&lt;/span&gt; &lt;div style="font-family: verdana;"&gt; &lt;/div&gt; &lt;div style="font-family: verdana;"&gt;but unless you're asked to write the compiler or be in the cockpit of that language development team, it's bad for you if you're  a developer and the one with more than a few gray hairs in your head and all you knows is 1/2years of 20 programming language. somehow this doesn't look good with the hr people, and probably won't get you landed on any nice high paying job soon. maybe i'm still young and naive and dumb, but from my point of view now, it would do good to pick a framework and stick with it.&lt;br /&gt;&lt;br /&gt;&lt;/div&gt; &lt;div style="font-family: verdana;"&gt; &lt;/div&gt; &lt;div style="font-family: verdana;"&gt;is there any risk by doing so? yes, if you pick a highly unstable framework you might lose your job or worst can't even find a job by listing that framework down in your resume. but if you play your cards well, and somehow manage to pick a niche in a field where experts are lesser than donald's trump hair, you're going to do pretty well.&lt;/div&gt; &lt;div style="font-family: verdana;"&gt; &lt;/div&gt; &lt;div style="font-family: verdana;"&gt;&lt;br /&gt;and if you're using some a newly developed sdk by a big dog company who's willing to play ball to get it off the ground, you might just be able to carve a nice niche with the prayers that the ship doesn't sink and you can contribute to build something useful which can be used by everybody else. as of now, i don't really have much experience in using newly developed SDK, but i find the challenge interesting and this might be just a good enough test to see how good of a programmer i might be or might not be :)&lt;/div&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/6570649005994704731-2925151826069729876?l=coden00bian.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://coden00bian.blogspot.com/feeds/2925151826069729876/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=6570649005994704731&amp;postID=2925151826069729876' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/6570649005994704731/posts/default/2925151826069729876'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/6570649005994704731/posts/default/2925151826069729876'/><link rel='alternate' type='text/html' href='http://coden00bian.blogspot.com/2009/04/it-pays-to-play-with-big-dog.html' title='It pays to play with the big dog'/><author><name>Steve7</name><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='32' height='32' src='http://1.bp.blogspot.com/_v4HP1tmQC-w/SUysKCA-38I/AAAAAAAAADE/P67OyMnJskQ/S220/Dogbert.gif'/></author><media:thumbnail xmlns:media='http://search.yahoo.com/mrss/' url='http://2.bp.blogspot.com/_v4HP1tmQC-w/SdTEKas6f1I/AAAAAAAAAGM/WgjXE8Z5YLY/s72-c/images.jpg' height='72' width='72'/><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-6570649005994704731.post-8133246119432985615</id><published>2009-02-12T05:30:00.001-08:00</published><updated>2009-02-12T05:31:32.767-08:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='paradigm-shift programming problem-solving'/><title type='text'>All roads lead to Rome</title><content type='html'>&lt;img src="file:///C:/Users/MelaOS/AppData/Local/Temp/moz-screenshot.jpg" alt="" /&gt;Today i was stuck at a simple problem for a few good hours. The problem was that a header with menus appears on a page which isn't supposed to have them. Due to the complicated plumbing works that my company use, javascript calling modcgi page calling pm modules creating xml data and returning them to xsl which later transform into html.&lt;br /&gt;&lt;br /&gt;So i've learned my previous lesson well to not jump to conclusion and painstaking write down stuff that i find and ask better question on each step. I manage to trace down meticulously the last few steps of the process looking at the xsl, the javascript in the xsl and the pm module which produces the xml but i couldn't find anything.&lt;br /&gt;&lt;br /&gt;&lt;a onblur="try {parent.deselectBloggerImageGracefully();} catch(e) {}" href="http://3.bp.blogspot.com/_v4HP1tmQC-w/SZQkmm2GzmI/AAAAAAAAAF8/acez8Tk5d3g/s1600-h/250px-Colosseum_in_Rome,_Italy_-_April_2007.jpg"&gt;&lt;img style="margin: 0pt 10px 10px 0pt; float: left; cursor: pointer; width: 200px; height: 118px;" src="http://3.bp.blogspot.com/_v4HP1tmQC-w/SZQkmm2GzmI/AAAAAAAAAF8/acez8Tk5d3g/s200/250px-Colosseum_in_Rome,_Italy_-_April_2007.jpg" alt="" id="BLOGGER_PHOTO_ID_5301902907003031138" border="0" /&gt;&lt;/a&gt;And when i get frustrated i start doing really dumb shit, like try to create more empty xsl, empty whatever so i can simplify the problem and just basically not think but hack at it until shit that i can recognize as the output that i want comes out of it. Of course that was a dumb step because after a while i noticed that it's getting me no where near where i need to be.&lt;br /&gt;&lt;br /&gt;This is the pretty part where i stop to think, and good ol crazy hair einstein once said that you can't solve a problem using the same thinking which leads you there in the first place. So i try to do some paradigm shift and look at other potential page which is already capable of doing what i am trying to do and trace from there what was different.&lt;br /&gt;&lt;br /&gt;I can't see anything in the xsl of the pm files so i trace some more until i finally hit the jackpot. The problem was in fact due to the modcgi, some genius has decided to create some method of using a session variable to keep this header and menus like a switch. So once i spotted this part, the rest of the puzzle just comes together like a good sushi piece would taste like.&lt;br /&gt;&lt;br /&gt;I guess not giving up and believing that all problems does indeed has a solution and the only real problem that i had was i need to change my paradigm in order to see the solution.&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/6570649005994704731-8133246119432985615?l=coden00bian.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://coden00bian.blogspot.com/feeds/8133246119432985615/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=6570649005994704731&amp;postID=8133246119432985615' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/6570649005994704731/posts/default/8133246119432985615'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/6570649005994704731/posts/default/8133246119432985615'/><link rel='alternate' type='text/html' href='http://coden00bian.blogspot.com/2009/02/all-roads-lead-to-rome.html' title='All roads lead to Rome'/><author><name>Steve7</name><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='32' height='32' src='http://1.bp.blogspot.com/_v4HP1tmQC-w/SUysKCA-38I/AAAAAAAAADE/P67OyMnJskQ/S220/Dogbert.gif'/></author><media:thumbnail xmlns:media='http://search.yahoo.com/mrss/' url='http://3.bp.blogspot.com/_v4HP1tmQC-w/SZQkmm2GzmI/AAAAAAAAAF8/acez8Tk5d3g/s72-c/250px-Colosseum_in_Rome,_Italy_-_April_2007.jpg' height='72' width='72'/><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-6570649005994704731.post-7580836992386043760</id><published>2009-01-22T06:27:00.000-08:00</published><updated>2009-01-22T06:37:13.423-08:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='bug-tracing condition-testing perl web-app'/><title type='text'>The Mysterious Cases of Young Bugs</title><content type='html'>&lt;span style="font-family: arial;font-family:georgia;font-size:100%;"  &gt;In my previous years as a developer, i have never really understood the complexity of bugs as i guess i never had to deal with bugs which are overly complicated due to too many hanging dependencies. In fact i deal mostly with Perl scripts that i myself have written or sometimes some old dusty scripts which have been there since the rise of the machines.&lt;br /&gt;&lt;br /&gt;So usually i have to look at one part of the logic, work out the flow and see what else is missing or jamming up the pipe to have caused a renegade flow.&lt;br /&gt;&lt;a onblur="try {parent.deselectBloggerImageGracefully();} catch(e) {}" href="http://2.bp.blogspot.com/_v4HP1tmQC-w/SXiC0dK6dPI/AAAAAAAAAF0/KnmkvpXwj3c/s1600-h/humor,movies,pop,culture,movie,movie,heroes,brilliant-173c6a914a51da85ed2ffa6f81ff66a3_h.jpg"&gt;&lt;br /&gt;&lt;img style="margin: 0pt 10px 10px 0pt; float: left; cursor: pointer; width: 200px; height: 112px;" src="http://2.bp.blogspot.com/_v4HP1tmQC-w/SXiC0dK6dPI/AAAAAAAAAF0/KnmkvpXwj3c/s200/humor,movies,pop,culture,movie,movie,heroes,brilliant-173c6a914a51da85ed2ffa6f81ff66a3_h.jpg" alt="" id="BLOGGER_PHOTO_ID_5294125199669228786" border="0" /&gt;&lt;/a&gt;But in my later years of having the luxury of maintaining huge web app written in their own proprietary style with no useful document, comments [gasp!] or even some old timer who can actually remember the flow or the behavior of each component. I ended up guessing how things should work.&lt;br /&gt;&lt;br /&gt;I look up for the best way to deal with this problem as Larry Wall, Perl God once quoted laziness is a programmer's virtue, and i didn't want to spend too much time and effort looking into old code, getting tangled in a maze of crappy lines of code and losing my mind and perhaps my beautiful set of hair too [creepy picture of Steve Ballmer comes to mind here - don't ask me why]&lt;br /&gt;&lt;br /&gt;But i never really bother to implement these new learnings into my work as previously the crack and hack method was good enough to get the job done. Until more recently i have been caught again and again in a web of messy bug fixes courtesy of my own work. I found the biggest problems that i face when i deal with implementing a new feature or a bug fix is that i never can be too certain if i'm accidentally breaking something else.&lt;br /&gt;&lt;br /&gt;So i begin to write unit test for my own code, for a few reasons. First of all it forces me to think of the conditions of the logic more properly and i can write better code, two i leave some bread crumbs for future developers to understand the behavior of the dare i say code that i've written and the tests can be combined in a full regression test in the future.&lt;br /&gt;&lt;br /&gt;That would be good enough if the feature is something totally new which I and only I have the power to shape and mould. But it's not true is it for features/bug fixes which involves other codes?&lt;/span&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/6570649005994704731-7580836992386043760?l=coden00bian.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://coden00bian.blogspot.com/feeds/7580836992386043760/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=6570649005994704731&amp;postID=7580836992386043760' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/6570649005994704731/posts/default/7580836992386043760'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/6570649005994704731/posts/default/7580836992386043760'/><link rel='alternate' type='text/html' href='http://coden00bian.blogspot.com/2009/01/mysterious-cases-of-young-bugs.html' title='The Mysterious Cases of Young Bugs'/><author><name>Steve7</name><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='32' height='32' src='http://1.bp.blogspot.com/_v4HP1tmQC-w/SUysKCA-38I/AAAAAAAAADE/P67OyMnJskQ/S220/Dogbert.gif'/></author><media:thumbnail xmlns:media='http://search.yahoo.com/mrss/' url='http://2.bp.blogspot.com/_v4HP1tmQC-w/SXiC0dK6dPI/AAAAAAAAAF0/KnmkvpXwj3c/s72-c/humor,movies,pop,culture,movie,movie,heroes,brilliant-173c6a914a51da85ed2ffa6f81ff66a3_h.jpg' height='72' width='72'/><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-6570649005994704731.post-1917593693505558270</id><published>2009-01-06T04:58:00.000-08:00</published><updated>2009-01-06T05:00:58.696-08:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='simplicity sabre-tooth-tiger design'/><title type='text'>Simplification &amp; Sabre tooth tiger</title><content type='html'>&lt;a onblur="try {parent.deselectBloggerImageGracefully();} catch(e) {}" href="http://4.bp.blogspot.com/_v4HP1tmQC-w/SWNV4IImGUI/AAAAAAAAAFk/XlWCTdYdqwM/s1600-h/images.jpg"&gt;&lt;img style="margin: 0pt 10px 10px 0pt; float: left; cursor: pointer; width: 135px; height: 135px;" src="http://4.bp.blogspot.com/_v4HP1tmQC-w/SWNV4IImGUI/AAAAAAAAAFk/XlWCTdYdqwM/s200/images.jpg" alt="" id="BLOGGER_PHOTO_ID_5288164810207664450" border="0" /&gt;&lt;/a&gt;&lt;br /&gt;The great artist quoted that a work of art is done not when the artist has competed his vision but when there's no more to take away. And that's how i believe a view towards programming in general should be like.&lt;br /&gt;&lt;br /&gt;Too often we are tempted to make things more complicated than necessary because we want to practice code reuse, because we believe that that few functions that you've slaved a few hours to do will come in handy to some programmers in the future eventhough they probably have no idea why that function is there by then.&lt;br /&gt;&lt;br /&gt;Yet time and time again the world has shown us that simple is what sells, simple is what matters. When customer buys ipod, they don't care if it support wma, ogg or what the heck is the latest trend format nor do they want a player with a thousand buttons in front so that they can control everything at a touch of button.&lt;br /&gt;&lt;br /&gt;&lt;a onblur="try {parent.deselectBloggerImageGracefully();} catch(e) {}" href="http://3.bp.blogspot.com/_v4HP1tmQC-w/SWNV4als76I/AAAAAAAAAFs/1qy2IHWSjio/s1600-h/images2.jpg"&gt;&lt;img style="margin: 0pt 10px 10px 0pt; float: left; cursor: pointer; width: 124px; height: 94px;" src="http://3.bp.blogspot.com/_v4HP1tmQC-w/SWNV4als76I/AAAAAAAAAFs/1qy2IHWSjio/s200/images2.jpg" alt="" id="BLOGGER_PHOTO_ID_5288164815161585570" border="0" /&gt;&lt;/a&gt;No, no, no!! Simplicity always win at the end. Evolution has proven that any species with redundant features quickly get wiped out. Sabretooth tiger, yet they looked darn cool. But every dinner time it's going to be a chore to properly eat something...&lt;br /&gt;&lt;br /&gt;And that is if they're lucky enough not to accidentally jam those hung fangs into something. Think in between rocks, at the rib cage of some animals while a sand storm is coming... Bad design = Extinction!&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/6570649005994704731-1917593693505558270?l=coden00bian.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://coden00bian.blogspot.com/feeds/1917593693505558270/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=6570649005994704731&amp;postID=1917593693505558270' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/6570649005994704731/posts/default/1917593693505558270'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/6570649005994704731/posts/default/1917593693505558270'/><link rel='alternate' type='text/html' href='http://coden00bian.blogspot.com/2009/01/simplification-sabre-tooth-tiger.html' title='Simplification &amp; Sabre tooth tiger'/><author><name>Steve7</name><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='32' height='32' src='http://1.bp.blogspot.com/_v4HP1tmQC-w/SUysKCA-38I/AAAAAAAAADE/P67OyMnJskQ/S220/Dogbert.gif'/></author><media:thumbnail xmlns:media='http://search.yahoo.com/mrss/' url='http://4.bp.blogspot.com/_v4HP1tmQC-w/SWNV4IImGUI/AAAAAAAAAFk/XlWCTdYdqwM/s72-c/images.jpg' height='72' width='72'/><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-6570649005994704731.post-5966658181866495544</id><published>2008-12-30T05:13:00.000-08:00</published><updated>2008-12-30T05:25:59.091-08:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='quick-fix learning lesson'/><title type='text'>How do you plug a hole in the drain without causing a leak else where?</title><content type='html'>Well after learning it the hard way that any quick fix is just that, a quick fix. What's wonderful about quick fix is it's really effective in dealing with short term stress and headache.&lt;br /&gt;&lt;br /&gt;&lt;a onblur="try {parent.deselectBloggerImageGracefully();} catch(e) {}" href="http://2.bp.blogspot.com/_v4HP1tmQC-w/SVohN3gGnQI/AAAAAAAAAFc/aLFNPFDlsYU/s1600-h/Galvanized+Water+Pipe.jpg"&gt;&lt;img style="margin: 0pt 10px 10px 0pt; float: left; cursor: pointer; width: 200px; height: 150px;" src="http://2.bp.blogspot.com/_v4HP1tmQC-w/SVohN3gGnQI/AAAAAAAAAFc/aLFNPFDlsYU/s200/Galvanized+Water+Pipe.jpg" alt="" id="BLOGGER_PHOTO_ID_5285573634793315586" border="0" /&gt;&lt;/a&gt;But what will probably kill you later and in a slow and painful not to mention gruesome death is how all these problems that you've so smartly manage to resolve with your quick fix will accumulate with interests that when it finally rear it's ugly head again you would have wish and pray that you have taken the proper time and attention in dealing with it when it's was small and harmless.&lt;br /&gt;&lt;br /&gt;Kind of like a rodent problem, one mice, it can't be that bad right? After a while, one rat becomes a pack of rat, then before you know it, you're living in your own personal disneyland minus the castle nor the fun. So what am i basically ranting about is that it's definitely worth the time and by golly it should be make a mandatory rule for all programmers to understand their bugs thoroughly before they even begin to think of how to solve it.&lt;br /&gt;&lt;br /&gt;Of course if you're lucky enough to have your own unit testing framework with all the test nicely tied with ribbons and colorful wrapping paper at your disposal then at least you can be that much assured that whatever your idiotic lazy mind can whack up some hacked codes together to resolve the bug, you know you're not breaking some holes somewhere with your quick hack.&lt;br /&gt;&lt;br /&gt;But even then it won't kill you to properly understand your craft as you might have to deal with this product again in the near future. Quick fix is bad, like sanjaya bad, beneath all that crazy hair and good looks, all you have is a squeky door making all sort of weird noises.&lt;br /&gt;&lt;br /&gt;&lt;a onblur="try {parent.deselectBloggerImageGracefully();} catch(e) {}" href="http://2.bp.blogspot.com/_v4HP1tmQC-w/SVohNyV2jsI/AAAAAAAAAFU/Ed1AXJjOtHs/s1600-h/1597b7390.jpg"&gt;&lt;img style="margin: 0pt 10px 10px 0pt; float: left; cursor: pointer; width: 200px; height: 164px;" src="http://2.bp.blogspot.com/_v4HP1tmQC-w/SVohNyV2jsI/AAAAAAAAAFU/Ed1AXJjOtHs/s200/1597b7390.jpg" alt="" id="BLOGGER_PHOTO_ID_5285573633408143042" border="0" /&gt;&lt;/a&gt;In short an old and mean looking application is sort of like a complex ecosystem, with everything it needs to sustain itself. You remove a mosquito or two thinking hey who doesn't want to live in a life without all the unnecessary bug bites and aedes and what not. Then suddenly you have a gradual increase in a particular type of predator, slowly wiping out other species. But as it's gradual, you're like the frog in the boiling pot, not quick enough to realize that the slowly rising temperature isn't just from that six pack of beer that you just had, but it's going to kill you slowly and without you knowing it.&lt;br /&gt;&lt;br /&gt;So next time that you have a bug in your hand, put own your thinking cap and bite a pen to pretend that it's a smoking pike and be your own sherlock holmes. Take your time, look at all the details, strategize and finally catch the culprit red handed. It will definitely be more worthwhile than be like a copper and catch whatever shmuck that is just dumb enough to be nearby the crime scene to get arrested.&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/6570649005994704731-5966658181866495544?l=coden00bian.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://coden00bian.blogspot.com/feeds/5966658181866495544/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=6570649005994704731&amp;postID=5966658181866495544' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/6570649005994704731/posts/default/5966658181866495544'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/6570649005994704731/posts/default/5966658181866495544'/><link rel='alternate' type='text/html' href='http://coden00bian.blogspot.com/2008/12/how-do-you-plug-hole-in-drain-without.html' title='How do you plug a hole in the drain without causing a leak else where?'/><author><name>Steve7</name><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='32' height='32' src='http://1.bp.blogspot.com/_v4HP1tmQC-w/SUysKCA-38I/AAAAAAAAADE/P67OyMnJskQ/S220/Dogbert.gif'/></author><media:thumbnail xmlns:media='http://search.yahoo.com/mrss/' url='http://2.bp.blogspot.com/_v4HP1tmQC-w/SVohN3gGnQI/AAAAAAAAAFc/aLFNPFDlsYU/s72-c/Galvanized+Water+Pipe.jpg' height='72' width='72'/><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-6570649005994704731.post-5000390735951938857</id><published>2008-12-29T05:55:00.000-08:00</published><updated>2008-12-29T06:00:55.546-08:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='wheel code-reuse CPAN perl'/><title type='text'>Reinventing the wheel with square blocks</title><content type='html'>&lt;a onblur="try {parent.deselectBloggerImageGracefully();} catch(e) {}" href="http://1.bp.blogspot.com/_v4HP1tmQC-w/SVjXYZONNqI/AAAAAAAAAFE/xhFsQzUgFcA/s1600-h/images.jpg"&gt;&lt;img style="margin: 0pt 10px 10px 0pt; float: left; cursor: pointer; width: 121px; height: 121px;" src="http://1.bp.blogspot.com/_v4HP1tmQC-w/SVjXYZONNqI/AAAAAAAAAFE/xhFsQzUgFcA/s200/images.jpg" alt="" id="BLOGGER_PHOTO_ID_5285210976806581922" border="0" /&gt;&lt;/a&gt;&lt;br /&gt;I feel like a fool, after learning the regex i thought that it would be a good idea to write your own regex and validate your own stuff. But little did i know that there's always a best practice out there, and unless your better than the rest or it's something that you need 100% intimate knowledge of, i.e. your core business.&lt;br /&gt;&lt;br /&gt;Often times it's wise not to reinvent the wheel using square blocks. Instead type whatever heck that you want to do using mighty Google and wait for it's results. Usually you can find whatever you want in the first page. And it's a perl script, you can be sure they have some module somewhere in the holy maze of CPAN which can do what you want to do and better.&lt;br /&gt;&lt;br /&gt;&lt;a onblur="try {parent.deselectBloggerImageGracefully();} catch(e) {}" href="http://3.bp.blogspot.com/_v4HP1tmQC-w/SVjXYVcDq-I/AAAAAAAAAFM/tk0R6NYp4EE/s1600-h/images2.jpg"&gt;&lt;img style="margin: 0pt 10px 10px 0pt; float: left; cursor: pointer; width: 124px; height: 124px;" src="http://3.bp.blogspot.com/_v4HP1tmQC-w/SVjXYVcDq-I/AAAAAAAAAFM/tk0R6NYp4EE/s200/images2.jpg" alt="" id="BLOGGER_PHOTO_ID_5285210975790935010" border="0" /&gt;&lt;/a&gt;Why better? Because it have been tested and released with a version tag and whatever version it is, it's still better than your version 0 of the same code you're writing. And it will often handle the usual crap that you will soon encounter if you decide that you like your own code better because of the formatting makes it look pretty and shit.&lt;br /&gt;&lt;br /&gt;And the you will have to feel like a total fool for the second time when you finally have to crawl back to the superior code and install it over and redoing the testing again because you have an ego problem to begin with.&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/6570649005994704731-5000390735951938857?l=coden00bian.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://coden00bian.blogspot.com/feeds/5000390735951938857/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=6570649005994704731&amp;postID=5000390735951938857' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/6570649005994704731/posts/default/5000390735951938857'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/6570649005994704731/posts/default/5000390735951938857'/><link rel='alternate' type='text/html' href='http://coden00bian.blogspot.com/2008/12/reinventing-wheel-with-square-blocks.html' title='Reinventing the wheel with square blocks'/><author><name>Steve7</name><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='32' height='32' src='http://1.bp.blogspot.com/_v4HP1tmQC-w/SUysKCA-38I/AAAAAAAAADE/P67OyMnJskQ/S220/Dogbert.gif'/></author><media:thumbnail xmlns:media='http://search.yahoo.com/mrss/' url='http://1.bp.blogspot.com/_v4HP1tmQC-w/SVjXYZONNqI/AAAAAAAAAFE/xhFsQzUgFcA/s72-c/images.jpg' height='72' width='72'/><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-6570649005994704731.post-2447780966128410731</id><published>2008-12-20T00:26:00.000-08:00</published><updated>2008-12-20T00:39:20.372-08:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='mod_perl axkit template::toolkit perl scriptaculous jquery'/><title type='text'>In search of web 2.0 via mod_perl</title><content type='html'>&lt;a onblur="try {parent.deselectBloggerImageGracefully();} catch(e) {}" href="http://3.bp.blogspot.com/_v4HP1tmQC-w/SUytWBNAnLI/AAAAAAAAADc/2MDVjOD-sfQ/s1600-h/180px-Optimusprime-energyaxe.jpg"&gt;&lt;img style="margin: 0pt 10px 10px 0pt; float: left; cursor: pointer; width: 180px; height: 135px;" src="http://3.bp.blogspot.com/_v4HP1tmQC-w/SUytWBNAnLI/AAAAAAAAADc/2MDVjOD-sfQ/s200/180px-Optimusprime-energyaxe.jpg" alt="" id="BLOGGER_PHOTO_ID_5281787056790478002" border="0" /&gt;&lt;/a&gt;so recently i've been getting my hands wet with web development by working with these technologies: os:unix, db:mysql, server:apache, programming language:axkit,mod_perl,javascript. and although i am able to create some decent looking webpage if i look at them from far enough, i find that most of the webpages that i create lack that certain "cool" feel.&lt;br /&gt;&lt;br /&gt;thus i begin my long journey of looking into the current architecture that i'm using and seeing ways on how i can improve on them to make it feel more appealing to the eye balls. and the current buzzword for the day is web 2.0 and of course the first thing that comes to mind is ajax. as i really don't know what the heck i was working with, i've decided to begin at the beginning....&lt;br /&gt;&lt;br /&gt;i've looked through mod_perl and after some intensive reading, basically i summarized that it's useful as it digs deep down into apache and you can pretty much do anything you want with apache via mod_perl, but does it helps with making my website prettier? nope. move on.&lt;br /&gt;&lt;br /&gt;the next thing that i look into was axkit, which basically according to their website was a xml transformation application server. in short, it takes data chunk in xml files and the pretty dresses hidden in the xsl and combined them into a browser friendly html files, and the only useful thing that i got out of this was that i learn axkit basically will cache some of your transformed files. so that's good, but it doesn't aid in my plastic surgery specifications...&lt;br /&gt;&lt;br /&gt;&lt;a onblur="try {parent.deselectBloggerImageGracefully();} catch(e) {}" href="http://4.bp.blogspot.com/_v4HP1tmQC-w/SUyvCD8pQwI/AAAAAAAAADk/sRrQ_YOZVis/s1600-h/trans.jpg"&gt;&lt;img style="margin: 0pt 10px 10px 0pt; float: left; cursor: pointer; width: 200px; height: 158px;" src="http://4.bp.blogspot.com/_v4HP1tmQC-w/SUyvCD8pQwI/AAAAAAAAADk/sRrQ_YOZVis/s200/trans.jpg" alt="" id="BLOGGER_PHOTO_ID_5281788912953017090" border="0" /&gt;&lt;/a&gt;and while looking at axkit, i stumbled upon template::toolkit which seems to be a very hot commodity item right now. think jim carrey in 2008. i was expecting to find something like asp.net 2.0 web templates thingy, but after doing some more reading, i found that the template toolkit basically does the same thing about axkit...&lt;br /&gt;&lt;br /&gt;except perhaps with cooler and more flexible syntax, rather reminds me of classic asp.&lt;br /&gt;so i'm thinking after three wrong turns, i pretty much can guess that i'm barking up the wrong tree. but i did found something worthwhile to play with next, and that is the awesome jquery. actually i'm split between jquery and script.aculo.us but since the former seems to be easier to learn and use.&lt;br /&gt;&lt;br /&gt;what the heck, let's start with that first.&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/6570649005994704731-2447780966128410731?l=coden00bian.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://coden00bian.blogspot.com/feeds/2447780966128410731/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=6570649005994704731&amp;postID=2447780966128410731' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/6570649005994704731/posts/default/2447780966128410731'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/6570649005994704731/posts/default/2447780966128410731'/><link rel='alternate' type='text/html' href='http://coden00bian.blogspot.com/2008/12/in-search-of-web-20-via-modperl.html' title='In search of web 2.0 via mod_perl'/><author><name>Steve7</name><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='32' height='32' src='http://1.bp.blogspot.com/_v4HP1tmQC-w/SUysKCA-38I/AAAAAAAAADE/P67OyMnJskQ/S220/Dogbert.gif'/></author><media:thumbnail xmlns:media='http://search.yahoo.com/mrss/' url='http://3.bp.blogspot.com/_v4HP1tmQC-w/SUytWBNAnLI/AAAAAAAAADc/2MDVjOD-sfQ/s72-c/180px-Optimusprime-energyaxe.jpg' height='72' width='72'/><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-6570649005994704731.post-2192678371862322507</id><published>2008-12-16T07:27:00.000-08:00</published><updated>2008-12-16T07:44:19.383-08:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='perl framework future perl-is-dead'/><title type='text'>Next step in to becoming a better Perl Programmer</title><content type='html'>Perl is dead....or say the &lt;a href="http://use.perl.org/%7EOvid/journal/38018?from=rss"&gt;Journal of ovid&lt;/a&gt;..&lt;br /&gt;&lt;br /&gt;at first i didn't quite understand what the essay meant, as my first job was in a manufacturing environment, and i learn the scripting language as it was very useful to do stuff like reading and writing file and processing a crap load of data very fast and with dummies like syntax.&lt;br /&gt;&lt;br /&gt;&lt;a onblur="try {parent.deselectBloggerImageGracefully();} catch(e) {}" href="http://3.bp.blogspot.com/_v4HP1tmQC-w/SUfLtq4rmzI/AAAAAAAAACY/05qJ-M9GUzI/s1600-h/llama.jpg"&gt;&lt;img style="margin: 0pt 10px 10px 0pt; float: left; cursor: pointer; width: 320px; height: 243px;" src="http://3.bp.blogspot.com/_v4HP1tmQC-w/SUfLtq4rmzI/AAAAAAAAACY/05qJ-M9GUzI/s320/llama.jpg" alt="" id="BLOGGER_PHOTO_ID_5280413073581775666" border="0" /&gt;&lt;/a&gt;the awesome thing that i like about perl is that you don't really need to know much about what you're doing, just have some basic copy and paste algorithms that you found off google and hack it into a script and you're done, well mostly anyway, it was easy to write, easy to run and pretty much fool proof.&lt;br /&gt;&lt;br /&gt;i felt like a stud when i was able to write a fully working script for one of the engineers to extract data within an hour. so i thought i knew the language enough to actually call myself a perl programmer. so when i read this essay, i was thinking holy crap, is he talking about me?&lt;br /&gt;&lt;br /&gt;then i start to explore of the capability of augmenting basic perl scripting with powerful MVC web frameworks and also with extreme programming or agile development. i learned about the capability of CGI::Application, Test::Class, Test::More, Test::Exception and i was excited to learn about all this powerful stuff that i can actually do with perl.&lt;br /&gt;&lt;br /&gt;in my mind, i was thought that Asp.net was the really powerful web development tool for the future. but that's because my stupidity has blinded me of other potential tools that could be useful or more useful in fact than .net framework.&lt;br /&gt;&lt;br /&gt;so at the very least i now know of where to improve myself upon, and i'm glad that i can actually integrate extreme programming with perl. and finally i can become a real perl programmer instead of just another dude who writes a few perl script and who is unashamedly puts perl on their resume.&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/6570649005994704731-2192678371862322507?l=coden00bian.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://coden00bian.blogspot.com/feeds/2192678371862322507/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=6570649005994704731&amp;postID=2192678371862322507' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/6570649005994704731/posts/default/2192678371862322507'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/6570649005994704731/posts/default/2192678371862322507'/><link rel='alternate' type='text/html' href='http://coden00bian.blogspot.com/2008/12/next-step-in-to-becoming-better-perl.html' title='Next step in to becoming a better Perl Programmer'/><author><name>Steve7</name><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='32' height='32' src='http://1.bp.blogspot.com/_v4HP1tmQC-w/SUysKCA-38I/AAAAAAAAADE/P67OyMnJskQ/S220/Dogbert.gif'/></author><media:thumbnail xmlns:media='http://search.yahoo.com/mrss/' url='http://3.bp.blogspot.com/_v4HP1tmQC-w/SUfLtq4rmzI/AAAAAAAAACY/05qJ-M9GUzI/s72-c/llama.jpg' height='72' width='72'/><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-6570649005994704731.post-7469328356067378320</id><published>2008-12-09T05:57:00.000-08:00</published><updated>2008-12-09T06:05:46.222-08:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='bazaar-and-cathedral programming essay must-read'/><title type='text'>bazaar and cathedral</title><content type='html'>&lt;a onblur="try {parent.deselectBloggerImageGracefully();} catch(e) {}" href="http://4.bp.blogspot.com/_v4HP1tmQC-w/ST55o7vAdxI/AAAAAAAAACA/_TVuCA2M87c/s1600-h/160px-Istanbul_grand_bazar_1.jpg"&gt;&lt;img style="margin: 0pt 10px 10px 0pt; float: left; cursor: pointer; width: 160px; height: 120px;" src="http://4.bp.blogspot.com/_v4HP1tmQC-w/ST55o7vAdxI/AAAAAAAAACA/_TVuCA2M87c/s320/160px-Istanbul_grand_bazar_1.jpg" alt="" id="BLOGGER_PHOTO_ID_5277789557461382930" border="0" /&gt;&lt;/a&gt;while i was looking up on how to start up on open source project, i stumble on this collection of essays by raymond s. i admit i was intrigued by the title of essays, in my mind what could bazaar and cathedral be related to programming?&lt;br /&gt;&lt;br /&gt;but once i read more, i was drawn in by the writer's easy to read style and yet straight to the point. a bazaar was referring to how open source projects are created. there's lot of noise here and there, people come and go but yet the transaction got done.&lt;br /&gt;&lt;br /&gt;while cathedral building was referring to how proprietary software were being built. skillful and dedicated artist slaving in days and night to get the job done. not to mention, this also teaches me the proper way to spell cat-he-dral ;)&lt;br /&gt;&lt;br /&gt;&lt;a onblur="try {parent.deselectBloggerImageGracefully();} catch(e) {}" href="http://1.bp.blogspot.com/_v4HP1tmQC-w/ST57END8SmI/AAAAAAAAACI/hUOq8_6eqNY/s1600-h/180px-Catedral_Metropolitana_de_Sao_Paulo_1_Brasil-edit-01.jpg"&gt;&lt;img style="margin: 0pt 10px 10px 0pt; float: left; cursor: pointer; width: 180px; height: 282px;" src="http://1.bp.blogspot.com/_v4HP1tmQC-w/ST57END8SmI/AAAAAAAAACI/hUOq8_6eqNY/s320/180px-Catedral_Metropolitana_de_Sao_Paulo_1_Brasil-edit-01.jpg" alt="" id="BLOGGER_PHOTO_ID_5277791125480688226" border="0" /&gt;&lt;/a&gt;and that's just the tip of iceberg, in the collection, raymond goes on to elaborate how his personal experience with the initial trying to cure a developer's itch turn to an open source project of his owns. and with each delightful essay, he stores a few gems for the reader to discover on their own.&lt;br /&gt;&lt;br /&gt;i almost couldn't stop reading once i started. so i invite you get lost in this colorful world of programming literature. it's a must read even if you've never consider doing open source software before.&lt;br /&gt;&lt;br /&gt;http://www.catb.org/~esr/writings/cathedral-bazaar/cathedral-bazaar/&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/6570649005994704731-7469328356067378320?l=coden00bian.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://coden00bian.blogspot.com/feeds/7469328356067378320/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=6570649005994704731&amp;postID=7469328356067378320' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/6570649005994704731/posts/default/7469328356067378320'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/6570649005994704731/posts/default/7469328356067378320'/><link rel='alternate' type='text/html' href='http://coden00bian.blogspot.com/2008/12/bazaar-and-cathedral.html' title='bazaar and cathedral'/><author><name>Steve7</name><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='32' height='32' src='http://1.bp.blogspot.com/_v4HP1tmQC-w/SUysKCA-38I/AAAAAAAAADE/P67OyMnJskQ/S220/Dogbert.gif'/></author><media:thumbnail xmlns:media='http://search.yahoo.com/mrss/' url='http://4.bp.blogspot.com/_v4HP1tmQC-w/ST55o7vAdxI/AAAAAAAAACA/_TVuCA2M87c/s72-c/160px-Istanbul_grand_bazar_1.jpg' height='72' width='72'/><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-6570649005994704731.post-1110788280784449557</id><published>2008-12-05T18:23:00.000-08:00</published><updated>2008-12-09T06:25:45.946-08:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='programming forum useful stackoverflow'/><title type='text'>Crack Overflow</title><content type='html'>&lt;a onblur="try {parent.deselectBloggerImageGracefully();} catch(e) {}" href="http://3.bp.blogspot.com/_v4HP1tmQC-w/STnioIv3-vI/AAAAAAAAABI/XBQMqBRLJLk/s1600-h/stackoverflow-logo-250.png"&gt;&lt;img style="margin: 0pt 10px 10px 0pt; float: left; cursor: pointer; width: 250px; height: 70px;" src="http://3.bp.blogspot.com/_v4HP1tmQC-w/STnioIv3-vI/AAAAAAAAABI/XBQMqBRLJLk/s320/stackoverflow-logo-250.png" alt="" id="BLOGGER_PHOTO_ID_5276497617612176114" border="0" /&gt;&lt;/a&gt;&lt;br /&gt;if you have been coding in a cave for a while now, then you probably haven't got a chance to use the new stackoverflow yet.&lt;br /&gt;&lt;br /&gt;if you have use wikipedia before, and you should!!!&lt;br /&gt;you would know that all the materials in that site is provided and maintained by users, and if you don't usually bother with the details of checking the facts, and even if you did.. you would still find that wikipedia is usually dead on!&lt;br /&gt;&lt;br /&gt;so finally joel from joel on software and jeff from codinghorror has combined their brilliant heads and marketing power to bring you a reddit like, wikipedia concept type, programming forum discussion!&lt;br /&gt;&lt;br /&gt;&lt;a onblur="try {parent.deselectBloggerImageGracefully();} catch(e) {}" href="http://4.bp.blogspot.com/_v4HP1tmQC-w/ST5_0RcabbI/AAAAAAAAACQ/BVY_pH39WDw/s1600-h/images.jpg"&gt;&lt;img style="margin: 0pt 10px 10px 0pt; float: left; cursor: pointer; width: 134px; height: 130px;" src="http://4.bp.blogspot.com/_v4HP1tmQC-w/ST5_0RcabbI/AAAAAAAAACQ/BVY_pH39WDw/s320/images.jpg" alt="" id="BLOGGER_PHOTO_ID_5277796349337300402" border="0" /&gt;&lt;/a&gt;and what's worst is there's a badge and reputation in this site once you have decided to register. and i can say that it's pretty addictive to try to give out good answer and to rack your head to think of good question, just so that you try to get some more rep points.&lt;br /&gt;&lt;br /&gt;but that aside, i find the interface totally easy to use, think google and the answers are coming in pretty quickly, and hey, even a noob like me can help to answer other people's question, although i think i got downvoted a lot, but hey, everyone's got to start somewhere right?&lt;br /&gt;&lt;br /&gt;i urge you to pay the site a visit, NOW!!&lt;br /&gt;http://stackoverflow.com/&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/6570649005994704731-1110788280784449557?l=coden00bian.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://coden00bian.blogspot.com/feeds/1110788280784449557/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=6570649005994704731&amp;postID=1110788280784449557' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/6570649005994704731/posts/default/1110788280784449557'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/6570649005994704731/posts/default/1110788280784449557'/><link rel='alternate' type='text/html' href='http://coden00bian.blogspot.com/2008/12/crack-overflow.html' title='Crack Overflow'/><author><name>Steve7</name><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='32' height='32' src='http://1.bp.blogspot.com/_v4HP1tmQC-w/SUysKCA-38I/AAAAAAAAADE/P67OyMnJskQ/S220/Dogbert.gif'/></author><media:thumbnail xmlns:media='http://search.yahoo.com/mrss/' url='http://3.bp.blogspot.com/_v4HP1tmQC-w/STnioIv3-vI/AAAAAAAAABI/XBQMqBRLJLk/s72-c/stackoverflow-logo-250.png' height='72' width='72'/><thr:total>0</thr:total></entry></feed>
