<?xml version="1.0" encoding="utf-8"?>
<feed xmlns:xsd="http://www.w3.org/2001/XMLSchema" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" version="0.3" xml:lang="en-us" xmlns="http://purl.org/atom/ns#">
  <title>Agile Developer Venkat's Blog</title>
  <link rel="alternate" type="text/html" href="http://www.agiledeveloper.com/blog/" />
  <modified>2008-07-08T03:20:20.5457168-07:00</modified>
  <tagline>Agile Developer: Venkat Subramaniam</tagline>
  <generator>newtelligence dasBlog 1.7.5016.2</generator>
  <author>
    <name>Agile Developer, Inc.</name>
  </author>
  <entry>
    <title>Speaking at BJUG</title>
    <link rel="alternate" type="text/html" href="http://www.agiledeveloper.com/blog/PermaLink.aspx?guid=fcc4d6ae-e2be-48da-893a-03bb8257ddbd" />
    <id>http://www.agiledeveloper.com/blog/PermaLink.aspx?guid=fcc4d6ae-e2be-48da-893a-03bb8257ddbd</id>
    <issued>2008-07-08T03:20:20.5457168-07:00</issued>
    <modified>2008-07-08T03:20:20.5457168-07:00</modified>
    <created>2008-07-08T03:20:20.5457168-07:00</created>
    <content type="text/html" mode="xml">
      <body xmlns="http://www.w3.org/1999/xhtml">I will be speaking at Boulder JUG this
   evening (July 8, 2008). <a href="http://boulderjug.org/viewEvent.jsp?eventId=187" target="_blank">The
   details of my presentation are here</a>. In the "Know Your Java?" session I will show
   some tricky parts of Java. The "Testing with Groovy" will be totally ZePo (Zero Powerpoint)
   presentation where I will show how to use Groovy for testing Java and Groovy code.
   It is good to be home after a long time and I look forward to meeting some of the
   bright software developers of CO this evening.<br /><img width="0" height="0" src="http://www.agiledeveloper.com/blog/aggbug.ashx?id=fcc4d6ae-e2be-48da-893a-03bb8257ddbd" /></body>
    </content>
  </entry>
  <entry>
    <title>PAD among top books</title>
    <link rel="alternate" type="text/html" href="http://www.agiledeveloper.com/blog/PermaLink.aspx?guid=72832fe5-173e-42b2-923a-a0fbdba4b136" />
    <id>http://www.agiledeveloper.com/blog/PermaLink.aspx?guid=72832fe5-173e-42b2-923a-a0fbdba4b136</id>
    <issued>2008-06-24T05:51:37.0125648-07:00</issued>
    <modified>2008-06-24T05:54:47.4864528-07:00</modified>
    <created>2008-06-24T05:51:37.0125648-07:00</created>
    <content type="text/html" mode="xml">
      <body xmlns="http://www.w3.org/1999/xhtml">This morning I got an email<br /><sub><br />
   "I thought you might get a kick to see that your (and Andy’s) book was named one of
   the Top 100 Software Engineering books of all time (#49).  They determined it
   based on variables, such as Amazon rank and number of Jolt awards, etc.<br />
    <br />
   The article is up on dotnetkicks or the direct link is <a href="http://www.noop.nl/2008/06/top-100-best-software-engineering-books-ever.html" target="_blank">http://www.noop.nl/2008/06/top-100-best-software-engineering-books-ever.html</a>.<br />
    <br />
   Congratulations,<br />
   Zach"</sub><br /><br />
   Thanks Zach. It is not only nice to see PAD appear in the list (among other excellent <a href="http://pragprog.com/titles" target="_blank">Pragmatic
   Bookshelf books</a>), but nice to see a list of good books in one place for those
   interested in learning and keeping up.<br />
   Speaking of which, I can't wait to be at <a href="http://www.agileitx.com/conference/reston/2008/06/index.html" target="_blank">AgileIT
   X</a>. There will be some <a href="http://www.agileitx.com/conference/reston/2008/06/speakers.html" target="_blank">great
   speakers there</a> and several <a href="http://www.agileitx.com/conference/reston/2008/06/schedule.html" target="_blank">exciting
   topics</a>. I am looking forward to give five talks and workshop, but also listening
   and discussing with others who will be there. Can't wait for Thursday.<img width="0" height="0" src="http://www.agiledeveloper.com/blog/aggbug.ashx?id=72832fe5-173e-42b2-923a-a0fbdba4b136" /></body>
    </content>
  </entry>
  <entry>
    <title>Generics in Java</title>
    <link rel="alternate" type="text/html" href="http://www.agiledeveloper.com/blog/PermaLink.aspx?guid=2de54e7b-dda4-4a0d-b923-671533a389fd" />
    <id>http://www.agiledeveloper.com/blog/PermaLink.aspx?guid=2de54e7b-dda4-4a0d-b923-671533a389fd</id>
    <issued>2008-06-20T03:52:49.3250592-07:00</issued>
    <modified>2008-06-20T03:52:49.3250592-07:00</modified>
    <created>2008-06-20T03:52:49.3250592-07:00</created>
    <content type="text/html" mode="xml">
      <body xmlns="http://www.w3.org/1999/xhtml">I have <a href="http://agiledeveloper.com/presentations/GoodBadAndUglyOfJavaGenerics.zip" target="_blank">talked</a> and <a href="http://agiledeveloper.com/articles/GenericsInJavaPartI.pdf" target="_blank">written</a> about
   my opinions on Java Generics before (I love Generics in .NET, but that love does not
   extend to the implementation in Java). 
   <p>
      Type information is useful at times, and I like for a way to infer that information.
      Generics provide that, but is too heavyweight of an approach and also leads to an
      illusion of type safety when it provides none. If all we care about is type information,
      there's gotta be a better way to realize that. 
   </p><p>
      Brian gives a good example where having the type information can be useful—<a href="http://brian.pontarelli.com/2008/06/19/how-generics-can-pay-dividends/" target="_blank">How
      Generics can pay dividends</a>. But, is that a dividend or is it a tax allowance?
      Are Generics the best way to get type information/type inference or should there be
      a lightweight, better way?<img width="0" height="0" src="http://www.agiledeveloper.com/blog/aggbug.ashx?id=2de54e7b-dda4-4a0d-b923-671533a389fd" /></p></body>
    </content>
  </entry>
  <entry>
    <title>DSL Article-Part I</title>
    <link rel="alternate" type="text/html" href="http://www.agiledeveloper.com/blog/PermaLink.aspx?guid=82fe6d63-1be1-44f7-a886-aba3611d09fe" />
    <id>http://www.agiledeveloper.com/blog/PermaLink.aspx?guid=82fe6d63-1be1-44f7-a886-aba3611d09fe</id>
    <issued>2008-06-08T06:02:36.9532080-07:00</issued>
    <modified>2008-06-08T06:02:36.9532080-07:00</modified>
    <created>2008-06-08T06:02:36.9532080-07:00</created>
    <content type="text/html" mode="xml">
      <body xmlns="http://www.w3.org/1999/xhtml">I am writing a DSL article for the Java
   World.<br />
   The part I of the article <a href="http://www.javaworld.com/javaworld/jw-06-2008/jw-06-dsls-in-java-1.html" target="_blank">"Creating
   DSLs in Java, Part 1: What is a domain-specific language?" is posted here</a>.<br /><img width="0" height="0" src="http://www.agiledeveloper.com/blog/aggbug.ashx?id=82fe6d63-1be1-44f7-a886-aba3611d09fe" /></body>
    </content>
  </entry>
  <entry>
    <title>On Manual Testing</title>
    <link rel="alternate" type="text/html" href="http://www.agiledeveloper.com/blog/PermaLink.aspx?guid=79f30955-6359-4e10-ba0e-b6a08b659a44" />
    <id>http://www.agiledeveloper.com/blog/PermaLink.aspx?guid=79f30955-6359-4e10-ba0e-b6a08b659a44</id>
    <issued>2008-05-29T18:54:42.9979840-07:00</issued>
    <modified>2008-05-29T18:56:45.9748160-07:00</modified>
    <created>2008-05-29T18:54:42.9979840-07:00</created>
    <content type="text/html" mode="xml">
      <body xmlns="http://www.w3.org/1999/xhtml">I have been talking testing to several
   programmers and testers recently. One common observation is, at least among those
   I've spoken to, most software testing is manual. When I ask why, I hear "because somethings
   are hard to automate." OK, somethings are hard to automate, so we have close to zero
   automation is not right. They agree that manual testing is painful and not effective,
   yet continue to manally repeat it every day.<br /><br /><b>“Error rate in manual testing is comparable to the bug rate in the code being tested.”—Boriz
   Beizer.<br /></b><br />
   Why not consider using tools like Selenim and Watir (or Watin)? Why not look at using
   tooks like FIT, FITNesse, easyb, ...?<br /><br />
   The latter tools will force the UI to be as thin as paper, meaning, will push the
   business logic to layer below and enable automated tests.<br />
   You can realize this using patterns like MVP or Model View Presenter pattern.<br /><br />
   What seems to be lacking is either the realization or the motivation to automate.
   I am calling on these testers to get angry if they are testing the software manually.<br /><i><b><br />
   Testers should focus on authoring tests and not running them—they should leave the
   running for computers to do, automatically.<br /></b></i><br />
   What's blocking you?<i><b><br /></b></i><img width="0" height="0" src="http://www.agiledeveloper.com/blog/aggbug.ashx?id=79f30955-6359-4e10-ba0e-b6a08b659a44" /></body>
    </content>
  </entry>
  <entry>
    <title>Please think of us, the users</title>
    <link rel="alternate" type="text/html" href="http://www.agiledeveloper.com/blog/PermaLink.aspx?guid=f2cf0eb9-01fc-4c88-b6b6-d33903dda233" />
    <id>http://www.agiledeveloper.com/blog/PermaLink.aspx?guid=f2cf0eb9-01fc-4c88-b6b6-d33903dda233</id>
    <issued>2008-05-28T16:57:49.4759360-07:00</issued>
    <modified>2008-05-28T16:57:49.4759360-07:00</modified>
    <created>2008-05-28T16:57:49.4759360-07:00</created>
    <content type="text/html" mode="xml">
      <body xmlns="http://www.w3.org/1999/xhtml">I am a coder at heart. I like to twiddle
   bits, do cool stuff at the language, API, and lower levels. I am terrible when it
   comes to creating good user experience, but I know that.<br />
   So, when I create apps, I ask others to use it. I ask them what they like, what they
   don't like, and what they'd like to see improve. And, I do this from the first day
   I start writing the app. I know that user involvement is one of the key to success.<br /><br />
   What is a good application? I'd say it is the one that lets you get your job done.
   You don't even feel like you're using the application or tool. You get in there and
   it enables you to focus and get what you want to get done, and stays out of your way.<br /><br />
   Sometimes the usability of an application, or the lack there of, is so obvious, you
   wonder if any real person ever used it before it went into production. I experienced,
   or I should say endured, one such application recently at the Bangalore airport.<br /><br />
   I was going to write more about it, but Naresh took the lead and wrote it already! <a href="http://blogs.agilefaqs.com/2008/05/28/victim-of-chaos/" target="_blank">So,
   thanks Naresh, I will simply link to his story here</a>.<br /><br />
   So, the next time you are ready to write some code, I have a kind favor to ask. Please,
   please, involve your users or at least think about them and their experience.<br /><img width="0" height="0" src="http://www.agiledeveloper.com/blog/aggbug.ashx?id=f2cf0eb9-01fc-4c88-b6b6-d33903dda233" /></body>
    </content>
  </entry>
  <entry>
    <title>Passenger on the first day of a new airport</title>
    <link rel="alternate" type="text/html" href="http://www.agiledeveloper.com/blog/PermaLink.aspx?guid=299fbc1b-9263-441f-947d-d68e51e5d660" />
    <id>http://www.agiledeveloper.com/blog/PermaLink.aspx?guid=299fbc1b-9263-441f-947d-d68e51e5d660</id>
    <issued>2008-05-27T08:59:37.0411424-07:00</issued>
    <modified>2008-05-27T09:07:30.5420032-07:00</modified>
    <created>2008-05-27T08:59:37.0411424-07:00</created>
    <content type="text/html" mode="xml">
      <body xmlns="http://www.w3.org/1999/xhtml">Saturday was a historic day in Bangalore,
   India—the opening of BIA, the new Bangalore International Airport. Among hopes, and
   protests, the new airport started its operation past mid night on May 24th. 
   <br /><br />
   That's the day when I took a one day trip to Mumbai with <a href="http://blogs.agilefaqs.com/" target="_blank">Naresh
   Jain</a> (who organized the meeting) to speak at the Agile Software Community, Mumbai
   Chapter. 
   <br /><br />
   I have to say, for the first day of operation, I was very impressed (though I am sure
   there was quite a bit of pain for several travelers). Yes, my flight both ways was
   delayed by a couple of hours, but, hey, when was my flight not delayed? 
   <br /><br />
   When Naresh, his colleagues, and I got to the airport, we had an interesting experience
   at the automated check-in system (I will blog about this separately next). So we stood
   in lines to get our boarding pass. 
   <br /><br /><br /><img src="http://www.agiledeveloper.com/blog/content/binary/InLine.jpg" border="0" /><br />
   After a delay we found that the porters had not showed up to move the bags. Naresh
   quickly realized we had no bags to checkin. So, he moved up to the front of the line
   and asked them to complete our checkin first. So, the two of us were the first to
   get the boarding pass: 
   <br /><br /><img src="http://www.agiledeveloper.com/blog/content/binary/boardingpass.jpg" border="0" /><br />
    <br />
   Then we entered through the security into the large, modern terminal. The airport
   is huge and they have done a great job with the facilities.<br /><br /><img src="http://www.agiledeveloper.com/blog/content/binary/inside.jpg" border="0" /><br />
   We had a nice breakfast in the "Time Out" food court. The flight delay gave us a good
   opportunity to rant about software development and testing. 
   <br /><br />
   Overall, I am impressed at the new airport and was thrilled to be part of the first
   day of operations.<br />
   I will have an opportunity to see how the airport is at the end of the first week
   of operations, as I fly out of Bangalore on Friday.<img width="0" height="0" src="http://www.agiledeveloper.com/blog/aggbug.ashx?id=299fbc1b-9263-441f-947d-d68e51e5d660" /></body>
    </content>
  </entry>
  <entry>
    <title>Discussions on Evolutionary Design</title>
    <link rel="alternate" type="text/html" href="http://www.agiledeveloper.com/blog/PermaLink.aspx?guid=a1a953b1-6a23-40b1-acba-03f6484ddc25" />
    <id>http://www.agiledeveloper.com/blog/PermaLink.aspx?guid=a1a953b1-6a23-40b1-acba-03f6484ddc25</id>
    <issued>2008-05-24T23:07:29.4908368-07:00</issued>
    <modified>2008-05-24T23:09:49.2818464-07:00</modified>
    <created>2008-05-24T23:07:29.4908368-07:00</created>
    <content type="text/html" mode="xml">
      <body xmlns="http://www.w3.org/1999/xhtml">I had a great time meeting some of the
   fine software developers in Bangalore and Mumbai last week.<br />
   On Wednesday evening (May 21st), I spoke to the <a href="http://agileindia.org/" target="_blank">Agile
   Software Community of India</a>, Bangalore chapter (thanks to the good folks at <a href="http://www.binaryessentials.com/" target="_blank">Binary
   Essentials</a> for sponsoring that event) and on yesterday (May 24th), I spoke at
   their Mumbai chapter (thanks to the kind folks at <a href="http://directi.com/" target="_blank">Directi</a> for
   sponsoring that event). 
   <br /><br />
   The topic of discussion was on Evolutionary Design. There were several good questions
   in Bangalore, and quite a few intense discussions in Mumbai. Overall, I was very impressed
   at the desire of the attendees to learn and share their knowledge (we did not clear
   the room until 11:30PM on Wednesday and I was literally dragged out yesterday to avoid
   missing my flight). 
   <br /><br />
   Good design is critical to agile development. I briefly talk about that <a href="http://www.agileitx.com/media.jsp?mediaId=63" target="_blank">here</a>.
   You can view the slides from my site <a href="http://www.agiledeveloper.com/download.aspx" target="_blank">download
   page</a>. I will be fine turning that talk further for my presentation at the <a href="http://www.agileitx.com/conference/reston/2008/06/index.html" target="_blank">Agile
   IT in Reston</a>, coming up in a few weeks.<img width="0" height="0" src="http://www.agiledeveloper.com/blog/aggbug.ashx?id=a1a953b1-6a23-40b1-acba-03f6484ddc25" /></body>
    </content>
  </entry>
  <entry>
    <title>At Developer Summit next week</title>
    <link rel="alternate" type="text/html" href="http://www.agiledeveloper.com/blog/PermaLink.aspx?guid=7556aa0b-6978-4e3d-b5ce-bde5b8e803ad" />
    <id>http://www.agiledeveloper.com/blog/PermaLink.aspx?guid=7556aa0b-6978-4e3d-b5ce-bde5b8e803ad</id>
    <issued>2008-05-15T03:43:49.3905760-07:00</issued>
    <modified>2008-05-15T03:43:49.3905760-07:00</modified>
    <created>2008-05-15T03:43:49.3905760-07:00</created>
    <content type="text/html" mode="xml">
      <body xmlns="http://www.w3.org/1999/xhtml">I am looking forward to speaking at the <a href="http://www.developersummit.com/" target="_blank">Developer
   Summit next week in Bangalore</a>. 
   <p>
      I will be giving <a href="http://developersummit.com/summitSchedule.html" target="_blank">five
      focused 1 hour presentations and two 3-hours workshops on topics</a> ranging from
      .NET Gotchase, Harnessing DSLs, Patterns in Java and Groovy, Tools for Agile Development,
      Code Quality, Functional Programming, and Dynamic Languages on the JVM. 
   </p><p>
      While there, I will be speaking at the <a href="http://agileindia.org/venkatsubramaniam" target="_blank">Agile
      Software Community in Bangalore (21st) and Mumbai (24th)</a>.
   </p><p>
      This is going to be a three week trip—following the conference I am teaching an Agile
      course in Bangalore for a client and then a short course in Hyderabad. 
   </p><p>
      I look forward to meeting some good speakers and software developers from around the
      world next week in Bangalore.
   </p><img width="0" height="0" src="http://www.agiledeveloper.com/blog/aggbug.ashx?id=7556aa0b-6978-4e3d-b5ce-bde5b8e803ad" /></body>
    </content>
  </entry>
  <entry>
    <title>Refactoring Ugly Groovy Code</title>
    <link rel="alternate" type="text/html" href="http://www.agiledeveloper.com/blog/PermaLink.aspx?guid=7f0c11f4-7872-485b-b44b-e1282da45b7d" />
    <id>http://www.agiledeveloper.com/blog/PermaLink.aspx?guid=7f0c11f4-7872-485b-b44b-e1282da45b7d</id>
    <issued>2008-05-12T17:30:15.6695744-07:00</issued>
    <modified>2008-05-12T17:30:15.6695744-07:00</modified>
    <created>2008-05-12T17:30:15.6695744-07:00</created>
    <content type="text/html" mode="xml">
      <body xmlns="http://www.w3.org/1999/xhtml">A few weeks ago I was writing a method
   in Groovy that needed to return three different results, two strings and one array.
   As I was writing it, I said to myself, "this code is ugly, I wish I could return multiple
   values from methods in Groovy."<br /><br />
   Here is an example similar to the method I had written:<br /><br />
   def details(full_name, address, contact_numbers)<br />
   {<br />
     // ignoring stuff to process data<br />
     full_name.append('Venkat Subramaniam')<br />
     address.append("Venkat's address")<br />
     contact_numbers &lt;&lt; 'phone_number_1'<br />
     contact_numbers &lt;&lt; 'phone_number_2'<br />
     contact_numbers &lt;&lt; 'phone_number_3'<br />
   }<br /><br />
   To use the above method I had to write something like:<br /><br />
   def full_name = new StringBuilder()<br />
   def address = new StringBuilder()<br />
   def contact_numbers = []<br /><br />
   details(full_name, address, contact_numbers)<br /><br />
   Today, I got around to refactoring my code, thanks to the Groovy 1.6 (beta 1) facility
   to return multiple results from a method. The above example, 
   <br />
   refactored looks like below:<br /><br />
   def details()<br />
   {<br />
     // ignoring stuff to process data<br />
     ['Venkat Subramaniam', "Venkat's address", ['phone_number_1', 'phone_number_2',
   'phone_number_3']]<br />
   }<br /><br />
   And I can call it as follows:<br /><br />
   def full_name, address, contact_numbers<br /><br />
   [full_name, address, contact_numbers] = details()<br /><br />
   Simple, less noisy, elegant, and my refactored code does not look (that) ugly anymore.<br /><br />
   In Groovy 1.6 (beta1), if a method returns an ArrayList, you can assign it to an ArrayList
   made up of variables you'd like to assign the values to.<br /><br />
   If there are fewer elements on the lhs, the extra values in the result are ignored.
   If there are more elements, the extra elements in the lhs are assigned null.<br /><br />
   I think this is nice step in the right direction. I hope there is a way to capture
   the extra elements on the rhs into an array.<img width="0" height="0" src="http://www.agiledeveloper.com/blog/aggbug.ashx?id=7f0c11f4-7872-485b-b44b-e1282da45b7d" /></body>
    </content>
  </entry>
</feed>