<?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-1564625389425750912</id><updated>2011-07-28T08:28:34.866-06:00</updated><category term='tables'/><category term='layout'/><category term='tdd'/><category term='testing'/><category term='css'/><category term='wtf'/><category term='javascript'/><category term='js'/><category term='java'/><category term='developer testing'/><category term='programming'/><title type='text'>Tech Ramblings  and more...</title><subtitle type='html'></subtitle><link rel='http://schemas.google.com/g/2005#feed' type='application/atom+xml' href='http://my-tech-ramblings.blogspot.com/feeds/posts/default'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/1564625389425750912/posts/default?max-results=100'/><link rel='alternate' type='text/html' href='http://my-tech-ramblings.blogspot.com/'/><link rel='hub' href='http://pubsubhubbub.appspot.com/'/><author><name>carlosz</name><uri>http://www.blogger.com/profile/04141051990280630161</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='32' height='24' src='http://4.bp.blogspot.com/_nzxGT4GgEsg/SRHNYFUIwYI/AAAAAAAAAYs/o5fNaIF9e-w/S220/Guanacaste+-+123-low.JPG'/></author><generator version='7.00' uri='http://www.blogger.com'>Blogger</generator><openSearch:totalResults>4</openSearch:totalResults><openSearch:startIndex>1</openSearch:startIndex><openSearch:itemsPerPage>100</openSearch:itemsPerPage><entry><id>tag:blogger.com,1999:blog-1564625389425750912.post-3477015423788020058</id><published>2009-06-15T15:11:00.000-06:00</published><updated>2009-06-15T18:12:08.791-06:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='java'/><category scheme='http://www.blogger.com/atom/ns#' term='developer testing'/><category scheme='http://www.blogger.com/atom/ns#' term='tdd'/><category scheme='http://www.blogger.com/atom/ns#' term='testing'/><title type='text'>I test therefore I code: Intro</title><content type='html'>This is the first post of a series of articles, where I'm going to talk about developer testing, why I think it's important and its practical application in Java programming.&lt;br /&gt;&lt;br /&gt;For this first article I was prepared to start quoting books about what developer testing is and start laying a foundation for next deliveries, but then I reconsidered and decided to take another approach. I'm going to tell you why I like developer testing and why I think it deeply impacts the quality of the software we write.&lt;br /&gt;&lt;br /&gt;A few years back I didn't practice any automated or methodical developer testing. When I would develop new features or fix bugs I would go through the system manually exercising the features that I thought would be affected by the changes I had made to the code base. Unsurprisingly I would always miss something, maybe I would fail to see the relation between what I was doing and some feature in the system or maybe I would test something new, think it was completely functional then make (what I thought would be) a harmless change and then all Hell would break loose. I hated when that happened, because not only it meant more work for me, but it also meant that something I would deliver as working would then be tested by the QA team only to find more bugs related to my changes. Now you could argue that I'm a terrible developer who doesn't know how to properly do his job, and you might be right, but in any case I knew there had to be a better way of doing things.&lt;br /&gt;&lt;br /&gt;A couple of years ago I was lucky enough to work in a project with a company that encourages automated developer testing and even worked with a group that embraced TDD as their development methodology. It was then when I realized the benefits of having a good, fast, automated suite of tests that would exercise your code as isolated units and as a whole system. To me the main benefits I got were:&lt;br /&gt;&lt;br /&gt;&lt;ul&gt;&lt;li&gt;When I created a test for a certain feature, I would use that time once, then I could move forward knowing that I just had to run that test to make sure the feature still worked.&lt;/li&gt;&lt;li&gt;I had a safety net when refactoring the code. The test suite would become a baseline for functionality, so I wasn't afraid to change code.&lt;/li&gt;&lt;li&gt;Immediate feedback. When I created a certain piece of code, I could test it, even if the UI or the backend were not finished.&lt;/li&gt;&lt;li&gt;Finishing criteria. When I wrote the test first, I knew exactly when the code I was working on was finished, &lt;span style="font-style: italic;"&gt;when the test passes &lt;/span&gt;&lt;span&gt;then you are done.&lt;br /&gt;&lt;/span&gt;&lt;/li&gt;&lt;li&gt;Better architecture. Testability would influence the architecture. When you are writing your tests you want to be able to set them up quickly without having to wire too many dependencies together, which makes your components &lt;span style="font-weight: bold;"&gt;loosely coupled&lt;/span&gt;, then you want to test very specific behavior making your components &lt;span style="font-weight: bold;"&gt;highly cohesive&lt;/span&gt;. That alone will make your code better and more flexible.&lt;/li&gt;&lt;/ul&gt; I think the previous points make developer testing absolutely worth it and when done right it can lead a software development team to attain much better quality standards and the business will save money in the long run, but most importantly it gives you peace of mind and that, to me, is something invaluable.&lt;br /&gt;&lt;br /&gt;I'm my next post, we'll dive a bit more into the definitions of developer testing and then we'll get hands on to its application to Java development.&lt;span style="font-style: italic;"&gt;&lt;br /&gt;&lt;/span&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/1564625389425750912-3477015423788020058?l=my-tech-ramblings.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://my-tech-ramblings.blogspot.com/feeds/3477015423788020058/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://my-tech-ramblings.blogspot.com/2009/06/i-test-therefore-i-code-intro.html#comment-form' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/1564625389425750912/posts/default/3477015423788020058'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/1564625389425750912/posts/default/3477015423788020058'/><link rel='alternate' type='text/html' href='http://my-tech-ramblings.blogspot.com/2009/06/i-test-therefore-i-code-intro.html' title='I test therefore I code: Intro'/><author><name>carlosz</name><uri>http://www.blogger.com/profile/04141051990280630161</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='32' height='24' src='http://4.bp.blogspot.com/_nzxGT4GgEsg/SRHNYFUIwYI/AAAAAAAAAYs/o5fNaIF9e-w/S220/Guanacaste+-+123-low.JPG'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-1564625389425750912.post-4162199548880749521</id><published>2008-11-07T18:16:00.010-06:00</published><updated>2009-06-15T11:37:33.940-06:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='js'/><category scheme='http://www.blogger.com/atom/ns#' term='javascript'/><category scheme='http://www.blogger.com/atom/ns#' term='java'/><category scheme='http://www.blogger.com/atom/ns#' term='programming'/><title type='text'>Part 1: Java syntactic sugar for Javascript</title><content type='html'>&lt;div xmlns='http://www.w3.org/1999/xhtml'&gt;In my spare time I have been playing around with javascript a lot. I'm trying to sharpen my javascript skills by writing a web application that looks like a desktop application using pure javascript and keep away from HTML as much as possible. I have done this using ExtJS.ExtJS is a javascript framework and GUI toolkit that encapsulates common widgets and functionality into classes and uses javascript object orientation capabilities extensively. A typical ExtJS class looks like this:&lt;br /&gt;&lt;div style="border: 1px dotted rgb(160, 160, 160); margin: 0pt; padding: 0pt; white-space: nowrap; font-family: 'Courier New',Courier,monospace; font-size: 90%; background-color: rgb(240, 240, 240); line-height: 90%; color: rgb(0, 0, 187);" class="javascript"&gt;&lt;ol&gt;&lt;li class="li1"&gt;&lt;div class="de1"&gt;Ext.&lt;span class="me1"&gt;data&lt;/span&gt;.&lt;span class="me1"&gt;MemoryProxy&lt;/span&gt; &lt;span class="sy0"&gt;=&lt;/span&gt; &lt;span class="kw2"&gt;function&lt;/span&gt;&lt;span class="br0"&gt;(&lt;/span&gt;data&lt;span class="br0"&gt;)&lt;/span&gt;&lt;span class="br0"&gt;{&lt;/span&gt;&lt;/div&gt;&lt;/li&gt;&lt;br /&gt;&lt;li class="li1"&gt;&lt;div class="de1"&gt;  Ext.&lt;span class="me1"&gt;data&lt;/span&gt;.&lt;span class="me1"&gt;MemoryProxy&lt;/span&gt;.&lt;span class="me1"&gt;superclass&lt;/span&gt;.&lt;span class="me1"&gt;constructor&lt;/span&gt;.&lt;span class="me1"&gt;call&lt;/span&gt;&lt;span class="br0"&gt;(&lt;/span&gt;&lt;span class="kw1"&gt;this&lt;/span&gt;&lt;span class="br0"&gt;)&lt;/span&gt;&lt;span class="sy0"&gt;;&lt;/span&gt;&lt;/div&gt;&lt;/li&gt;&lt;br /&gt;&lt;li class="li1"&gt;&lt;div class="de1"&gt;  &lt;span class="kw1"&gt;this&lt;/span&gt;.&lt;span class="me1"&gt;data&lt;/span&gt; &lt;span class="sy0"&gt;=&lt;/span&gt; data&lt;span class="sy0"&gt;;&lt;/span&gt;&lt;/div&gt;&lt;/li&gt;&lt;br /&gt;&lt;li class="li1"&gt;&lt;div class="de1"&gt;&lt;span class="br0"&gt;}&lt;/span&gt;&lt;span class="sy0"&gt;;&lt;/span&gt;&lt;/div&gt;&lt;/li&gt;&lt;br /&gt;&lt;li class="li2"&gt;&lt;div class="de2"&gt; &lt;/div&gt;&lt;/li&gt;&lt;br /&gt;&lt;li class="li1"&gt;&lt;div class="de1"&gt;Ext.&lt;span class="me1"&gt;extend&lt;/span&gt;&lt;span class="br0"&gt;(&lt;/span&gt;Ext.&lt;span class="me1"&gt;data&lt;/span&gt;.&lt;span class="me1"&gt;MemoryProxy&lt;/span&gt;&lt;span class="sy0"&gt;,&lt;/span&gt; Ext.&lt;span class="me1"&gt;data&lt;/span&gt;.&lt;span class="me1"&gt;DataProxy&lt;/span&gt;&lt;span class="sy0"&gt;,&lt;/span&gt; &lt;span class="br0"&gt;{&lt;/span&gt;            &lt;/div&gt;&lt;/li&gt;&lt;br /&gt;&lt;li class="li1"&gt;&lt;div class="de1"&gt;  load &lt;span class="sy0"&gt;:&lt;/span&gt; &lt;span class="kw2"&gt;function&lt;/span&gt;&lt;span class="br0"&gt;(&lt;/span&gt;params&lt;span class="sy0"&gt;,&lt;/span&gt; reader&lt;span class="sy0"&gt;,&lt;/span&gt; callback&lt;span class="sy0"&gt;,&lt;/span&gt; scope&lt;span class="sy0"&gt;,&lt;/span&gt; arg&lt;span class="br0"&gt;)&lt;/span&gt;&lt;span class="br0"&gt;{&lt;/span&gt;&lt;/div&gt;&lt;/li&gt;&lt;br /&gt;&lt;li class="li1"&gt;&lt;div class="de1"&gt;    params &lt;span class="sy0"&gt;=&lt;/span&gt; params &lt;span class="sy0"&gt;||&lt;/span&gt; &lt;span class="br0"&gt;{&lt;/span&gt;&lt;span class="br0"&gt;}&lt;/span&gt;&lt;span class="sy0"&gt;;&lt;/span&gt;&lt;/div&gt;&lt;/li&gt;&lt;br /&gt;&lt;li class="li1"&gt;&lt;div class="de1"&gt;    &lt;span class="kw2"&gt;var&lt;/span&gt; result&lt;span class="sy0"&gt;;&lt;/span&gt;&lt;/div&gt;&lt;/li&gt;&lt;br /&gt;&lt;li class="li2"&gt;&lt;div class="de2"&gt;    &lt;span class="kw1"&gt;try&lt;/span&gt; &lt;span class="br0"&gt;{&lt;/span&gt;&lt;/div&gt;&lt;/li&gt;&lt;br /&gt;&lt;li class="li1"&gt;&lt;div class="de1"&gt;      result &lt;span class="sy0"&gt;=&lt;/span&gt; reader.&lt;span class="me1"&gt;readRecords&lt;/span&gt;&lt;span class="br0"&gt;(&lt;/span&gt;&lt;span class="kw1"&gt;this&lt;/span&gt;.&lt;span class="me1"&gt;data&lt;/span&gt;&lt;span class="br0"&gt;)&lt;/span&gt;&lt;span class="sy0"&gt;;&lt;/span&gt;&lt;/div&gt;&lt;/li&gt;&lt;br /&gt;&lt;li class="li1"&gt;&lt;div class="de1"&gt;    &lt;span class="br0"&gt;}&lt;/span&gt; &lt;span class="kw1"&gt;catch&lt;/span&gt;&lt;span class="br0"&gt;(&lt;/span&gt;e&lt;span class="br0"&gt;)&lt;/span&gt; &lt;span class="br0"&gt;{&lt;/span&gt;&lt;/div&gt;&lt;/li&gt;&lt;br /&gt;&lt;li class="li1"&gt;&lt;div class="de1"&gt;      &lt;span class="kw1"&gt;this&lt;/span&gt;.&lt;span class="me1"&gt;fireEvent&lt;/span&gt;&lt;span class="br0"&gt;(&lt;/span&gt;&lt;span class="st0"&gt;"loadexception"&lt;/span&gt;&lt;span class="sy0"&gt;,&lt;/span&gt; &lt;span class="kw1"&gt;this&lt;/span&gt;&lt;span class="sy0"&gt;,&lt;/span&gt; arg&lt;span class="sy0"&gt;,&lt;/span&gt; &lt;span class="kw2"&gt;null&lt;/span&gt;&lt;span class="sy0"&gt;,&lt;/span&gt; e&lt;span class="br0"&gt;)&lt;/span&gt;&lt;span class="sy0"&gt;;&lt;/span&gt;&lt;/div&gt;&lt;/li&gt;&lt;br /&gt;&lt;li class="li1"&gt;&lt;div class="de1"&gt;      callback.&lt;span class="me1"&gt;call&lt;/span&gt;&lt;span class="br0"&gt;(&lt;/span&gt;scope&lt;span class="sy0"&gt;,&lt;/span&gt; &lt;span class="kw2"&gt;null&lt;/span&gt;&lt;span class="sy0"&gt;,&lt;/span&gt; arg&lt;span class="sy0"&gt;,&lt;/span&gt; &lt;span class="kw2"&gt;false&lt;/span&gt;&lt;span class="br0"&gt;)&lt;/span&gt;&lt;span class="sy0"&gt;;&lt;/span&gt;&lt;/div&gt;&lt;/li&gt;&lt;br /&gt;&lt;li class="li2"&gt;&lt;div class="de2"&gt;      &lt;span class="kw1"&gt;return&lt;/span&gt;&lt;span class="sy0"&gt;;&lt;/span&gt;&lt;/div&gt;&lt;/li&gt;&lt;br /&gt;&lt;li class="li1"&gt;&lt;div class="de1"&gt;    &lt;span class="br0"&gt;}&lt;/span&gt;&lt;/div&gt;&lt;/li&gt;&lt;br /&gt;&lt;li class="li1"&gt;&lt;div class="de1"&gt;    callback.&lt;span class="me1"&gt;call&lt;/span&gt;&lt;span class="br0"&gt;(&lt;/span&gt;scope&lt;span class="sy0"&gt;,&lt;/span&gt; result&lt;span class="sy0"&gt;,&lt;/span&gt; arg&lt;span class="sy0"&gt;,&lt;/span&gt; &lt;span class="kw2"&gt;true&lt;/span&gt;&lt;span class="br0"&gt;)&lt;/span&gt;&lt;span class="sy0"&gt;;&lt;/span&gt;&lt;/div&gt;&lt;/li&gt;&lt;br /&gt;&lt;li class="li1"&gt;&lt;div class="de1"&gt;  &lt;span class="br0"&gt;}&lt;/span&gt;&lt;span class="sy0"&gt;,&lt;/span&gt;        &lt;/div&gt;&lt;/li&gt;&lt;br /&gt;&lt;li class="li1"&gt;&lt;div class="de1"&gt;  update &lt;span class="sy0"&gt;:&lt;/span&gt; &lt;span class="kw2"&gt;function&lt;/span&gt;&lt;span class="br0"&gt;(&lt;/span&gt;params&lt;span class="sy0"&gt;,&lt;/span&gt; records&lt;span class="br0"&gt;)&lt;/span&gt;&lt;span class="br0"&gt;{&lt;/span&gt;&lt;/div&gt;&lt;/li&gt;&lt;br /&gt;&lt;li class="li2"&gt;&lt;div class="de2"&gt;        &lt;/div&gt;&lt;/li&gt;&lt;br /&gt;&lt;li class="li1"&gt;&lt;div class="de1"&gt;  &lt;span class="br0"&gt;}&lt;/span&gt;&lt;/div&gt;&lt;/li&gt;&lt;br /&gt;&lt;li class="li1"&gt;&lt;div class="de1"&gt;&lt;span class="br0"&gt;}&lt;/span&gt;&lt;span class="br0"&gt;)&lt;/span&gt;&lt;span class="sy0"&gt;;&lt;/span&gt;&lt;/div&gt;&lt;/li&gt;&lt;br /&gt;&lt;/ol&gt;&lt;/div&gt;&lt;br /&gt;This code snippet is creating a new MemoryProxy constructor, as a member of the Ext.data object, i.e., it's package. Then it uses Ext's Ext.extend to make some magic and create a protype inheritance from Ext.data.DataProxy. The thrid parameter to Ext.extend is an object literal expression that will become part of Ext.data.MemoryProxy's prototype, the functions present in this object will override the functions that were already present in Ext.data.DataProxy.So what's the problem with this code you may ask.... Absolutely nothing. This is pretty much standard OO Javascript. Many frameworks are already using this pattern and it has been working great.Now I &lt;b&gt;do&lt;/b&gt; have a problem with code... it's not very intuitive to a Java developer. I know, I know... who cares about them, Java developers should be developing JAVA right? Well that's a valid point. But still, I consider myself a Java developer so I &lt;b&gt;do&lt;/b&gt; care about us :D. So my idea is to create a small library that would add some syntactic sugar to javascript to make it a bit more like Java. Still with me? Like the idea?To be continued (on my next post...)&lt;/div&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/1564625389425750912-4162199548880749521?l=my-tech-ramblings.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://my-tech-ramblings.blogspot.com/feeds/4162199548880749521/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://my-tech-ramblings.blogspot.com/2008/11/part-1-java-syntactic-sugar-for.html#comment-form' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/1564625389425750912/posts/default/4162199548880749521'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/1564625389425750912/posts/default/4162199548880749521'/><link rel='alternate' type='text/html' href='http://my-tech-ramblings.blogspot.com/2008/11/part-1-java-syntactic-sugar-for.html' title='Part 1: Java syntactic sugar for Javascript'/><author><name>carlosz</name><uri>http://www.blogger.com/profile/04141051990280630161</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='32' height='24' src='http://4.bp.blogspot.com/_nzxGT4GgEsg/SRHNYFUIwYI/AAAAAAAAAYs/o5fNaIF9e-w/S220/Guanacaste+-+123-low.JPG'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-1564625389425750912.post-3533418115804646078</id><published>2008-11-06T16:51:00.004-06:00</published><updated>2009-06-15T11:36:42.945-06:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='layout'/><category scheme='http://www.blogger.com/atom/ns#' term='wtf'/><category scheme='http://www.blogger.com/atom/ns#' term='tables'/><category scheme='http://www.blogger.com/atom/ns#' term='css'/><title type='text'>CSS display woes...</title><content type='html'>&lt;div xmlns="http://www.w3.org/1999/xhtml"&gt;So for a proof of concept I'm programming, I tried modifying an existing javascript tree widget implementation (from ExtJS). The effect I wanted to achieve was this:&lt;br /&gt;&lt;br /&gt;&lt;pre&gt;&lt;br /&gt; + Root Node&lt;br /&gt;    Content for the Root Node &lt;br /&gt;  + Child Node&lt;br /&gt;    Content for the Child node&lt;br /&gt;  + Another Child Node&lt;br /&gt;    Content for the Other Child node&lt;br /&gt;&lt;/pre&gt;&lt;br /&gt;&lt;br /&gt;Now, when doing this, the actual html that is rendered looks something like this:&lt;br /&gt;&lt;br /&gt;&lt;pre&gt;&lt;br /&gt;  ___________________________&lt;br /&gt; |+| Root Node               | &lt;br /&gt; | |Content for the Root Node|&lt;br /&gt; |_|_________________________|___&lt;br /&gt; | |+| Child Node                | &lt;br /&gt; | | | Content for the Child node|&lt;br /&gt; |_|_|___________________________|_____ &lt;br /&gt; | |+| Another Child Node              | &lt;br /&gt; | | | Content for the Other Child node|&lt;br /&gt; |_|_|_________________________________|&lt;br /&gt;&lt;/pre&gt;&lt;br /&gt;&lt;br /&gt;The big problem I was having is that the node contents we not expanding to the fit the with of the page, i.e., fill what's left of the with. This was happening because the contents were rendered using a span tag and it because it's a inline element it just expands to the width of its contents. Using a div or changing the display of the span to block would not work either because block elements have a new line infront and after them. Using the "align:left" property would cause the div to align all the way to the left of the page.&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;b&gt;The Solution? &lt;/b&gt;You may ask... Well, just hack it and use tables. I know it sucks, I hate it, I feel dirty by doing so, but to the extent of my knowledge there is not much else I can do. I wonder if it was so difficult creating an element in HTML that would allow you to display them inline and fill all the with to is to the left of them? Was it really that difficult????&lt;/div&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/1564625389425750912-3533418115804646078?l=my-tech-ramblings.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://my-tech-ramblings.blogspot.com/feeds/3533418115804646078/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://my-tech-ramblings.blogspot.com/2008/11/css-display-woes.html#comment-form' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/1564625389425750912/posts/default/3533418115804646078'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/1564625389425750912/posts/default/3533418115804646078'/><link rel='alternate' type='text/html' href='http://my-tech-ramblings.blogspot.com/2008/11/css-display-woes.html' title='CSS display woes...'/><author><name>carlosz</name><uri>http://www.blogger.com/profile/04141051990280630161</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='32' height='24' src='http://4.bp.blogspot.com/_nzxGT4GgEsg/SRHNYFUIwYI/AAAAAAAAAYs/o5fNaIF9e-w/S220/Guanacaste+-+123-low.JPG'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-1564625389425750912.post-4432339892395552716</id><published>2008-11-06T12:28:00.001-06:00</published><updated>2008-11-06T12:28:13.553-06:00</updated><title type='text'>First Post</title><content type='html'>&lt;div xmlns='http://www.w3.org/1999/xhtml'&gt;So, this is the first blog post of many (I hope) and I though I would give some information about myself and my background.&lt;br/&gt;&lt;br/&gt;My name is Carlos Zúñiga, I currently live in San Jose, Costa Rica. I work for an e-tailer company from the USA that has a development center in Costa Rica.&lt;br/&gt;At the time of this writing I'm 3 weeks away from getting married to my lovely girlfriend of 3 years, Maricel, as you might expect, we are swamped with stuff to do.&lt;br/&gt;&lt;br/&gt;As for the geek in me, I'm a Java developer. I have about 6 years experience developing Java applications mostly for the web. &lt;br/&gt;I'm very interested in Java and other JVM languages, and the whole ecosystem around the platform. I also enjoy programming in Javascript and I consider myself pretty savvy in this area. &lt;br/&gt;&lt;br/&gt;I have had the opportunity of working in companies where Agile methodologies have been used and I gotta say that I really like them, specially Scrum and eXtreme Programming. I firmly believe that Pair Programming and TDD have a deep impact in the quality of software.&lt;br/&gt;&lt;br/&gt;So I guess this is it for now, but hopefully I will write some more in the near future.&lt;br/&gt;&lt;/div&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/1564625389425750912-4432339892395552716?l=my-tech-ramblings.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://my-tech-ramblings.blogspot.com/feeds/4432339892395552716/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://my-tech-ramblings.blogspot.com/2008/11/first-post.html#comment-form' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/1564625389425750912/posts/default/4432339892395552716'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/1564625389425750912/posts/default/4432339892395552716'/><link rel='alternate' type='text/html' href='http://my-tech-ramblings.blogspot.com/2008/11/first-post.html' title='First Post'/><author><name>carlosz</name><uri>http://www.blogger.com/profile/04141051990280630161</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='32' height='24' src='http://4.bp.blogspot.com/_nzxGT4GgEsg/SRHNYFUIwYI/AAAAAAAAAYs/o5fNaIF9e-w/S220/Guanacaste+-+123-low.JPG'/></author><thr:total>0</thr:total></entry></feed>
