<?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-21284276</id><updated>2012-01-04T16:13:24.657+08:00</updated><category term='linux'/><category term='computer science'/><category term='education'/><category term='outsourcing horror stories'/><category term='Software Engineering'/><category term='Cloud Computing'/><category term='technopreneurship'/><category term='creative conflict'/><category term='Design'/><category term='entrepreneurship'/><category term='communication'/><category term='gloria'/><category term='ubuntu jaunty'/><category term='open source'/><category term='offshoring'/><category term='OO'/><category term='venture capital'/><category term='mission'/><category term='outsourcing'/><category term='sony vaio'/><category term='grails'/><category term='Philippine technology'/><category term='android'/><category term='software product development'/><category term='Iterative Development'/><category term='Agile'/><category term='Orange and Bronze'/><category term='outsourced product development'/><category term='filipino software developers'/><category term='offshore'/><category term='grails product development'/><category term='openerp'/><category term='jaunty'/><category term='Process'/><category term='offshore product development'/><category term='linux mint gloria'/><category term='Philippine start-ups'/><category term='start-up incubation'/><category term='OOAD'/><category term='start-ups'/><category term='philippine software industry'/><category term='company culture'/><category term='News'/><category term='google apps'/><title type='text'>Third World Software... Development</title><subtitle type='html'>Third World Software... Third World Development. :-)  I and my business partner Butch Landingin started &lt;a href="http://www.orangeandbronze.com"&gt;Orange &amp;amp; Bronze Software Labs&lt;/a&gt; in order to contribute to the economic development of our nation, the Philippines, by doing our part in making our country a center of excellence in software engineering.</subtitle><link rel='http://schemas.google.com/g/2005#feed' type='application/atom+xml' href='http://calenlegaspi.blogspot.com/feeds/posts/default'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/21284276/posts/default?max-results=100'/><link rel='alternate' type='text/html' href='http://calenlegaspi.blogspot.com/'/><link rel='hub' href='http://pubsubhubbub.appspot.com/'/><link rel='next' type='application/atom+xml' href='http://www.blogger.com/feeds/21284276/posts/default?start-index=101&amp;max-results=100'/><author><name>Calen Martin D. Legaspi</name><uri>http://www.blogger.com/profile/06661282916270749630</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='21' height='32' src='http://photos1.blogger.com/blogger/5907/2151/1600/calen_pic.jpg'/></author><generator version='7.00' uri='http://www.blogger.com'>Blogger</generator><openSearch:totalResults>103</openSearch:totalResults><openSearch:startIndex>1</openSearch:startIndex><openSearch:itemsPerPage>100</openSearch:itemsPerPage><entry><id>tag:blogger.com,1999:blog-21284276.post-919371362423452114</id><published>2011-10-14T09:59:00.001+08:00</published><updated>2011-10-14T11:48:28.138+08:00</updated><title type='text'>A (Google) Developer Actually Advocates SOA</title><content type='html'>Ok, this the first time I've ever heard a &lt;i&gt;developer&lt;/i&gt; defend SOA: &amp;nbsp;&lt;a href="https://plus.google.com/112678702228711889851/posts/eVeouesvaVX"&gt;https://plus.google.com/112678702228711889851/posts/eVeouesvaVX&lt;/a&gt;&amp;nbsp; . &amp;nbsp;It's written by a Google developer who intended to send it out just to other Googlers, but it unintentionally went public. &amp;nbsp;It's critical of Google's architecture choice, yet Google allowed it to remain up. &amp;nbsp;Applause to Google for their&amp;nbsp;openness.&lt;br /&gt;&lt;br /&gt;The Googler, Steve Yegge, was formerly from Amazon, and says one thing that Amazon did better than Google is to enforce that all systems communicate with each other solely through service interfaces, and that these interfaces should be ready to be exposed to the public. &amp;nbsp;This has allowed Amazon to successfully offer its Amazon Web Services products.&lt;br /&gt;&lt;br /&gt;Most developers I know, though, hate SOA, and most companies I know that have adopted SOA have ended up with a slow, buggy, unmaintainable, inextensible, opaque architecture, and they curse the day they decided to adopt it. &amp;nbsp;Even Amazon, with some of the best developers in the world, spent years transitioning to SOA, and it was a slow and painful process, and very difficult to get right, according to Steve Yegge. &lt;br /&gt;&lt;br /&gt;To me, if you don't see the need for your software to be exposed to outside parties as a platform, forget about SOA. &amp;nbsp;YAGNI, DTSTTCPW. &amp;nbsp;Go down the SOA route and you may never get done, as what's happened to so many thousands of companies. &lt;br /&gt;&lt;br /&gt;But if you see that your product needs to be a platform to be competitive, and it's at the scale where it has multiple subsystems, do as Yegge says and start dog-fooding. &amp;nbsp;It's going to be 10X the effort though, and you might not have the talent pool that Amazon has. &amp;nbsp;You should probably start with the system that's most likely to be externalized and put your best people there, or hire talent externally, then make sure to properly document and codify your learnings so that they can be applied when it's time to SOA-ize other systems.&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/21284276-919371362423452114?l=calenlegaspi.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://calenlegaspi.blogspot.com/feeds/919371362423452114/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=21284276&amp;postID=919371362423452114' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/21284276/posts/default/919371362423452114'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/21284276/posts/default/919371362423452114'/><link rel='alternate' type='text/html' href='http://calenlegaspi.blogspot.com/2011/10/google-developer-actually-advocates-soa.html' title='A (Google) Developer Actually Advocates SOA'/><author><name>Calen Martin D. Legaspi</name><uri>http://www.blogger.com/profile/06661282916270749630</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='21' height='32' src='http://photos1.blogger.com/blogger/5907/2151/1600/calen_pic.jpg'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-21284276.post-1029647831241591344</id><published>2011-08-10T08:36:00.096+08:00</published><updated>2011-08-17T05:09:14.429+08:00</updated><title type='text'>Java Developer Reading List</title><content type='html'>&lt;div&gt;I'd like to share our reading list for Orange &amp;amp; Bronze Software Labs' newly hired developers.  We use this reading list as part of our onboarding program for newly hired developers, along side lectures, discussions, and machine problems.&lt;/div&gt;&lt;div&gt;I'm sharing this with everyone in case any of you find it useful either for your personal technical growth or for your organization's learning programs, but my main target audience is for university faculty in Computer Science and Information Technology.  I'm hoping that some teachers would consider incorporating these books into their teaching, so that students graduating from CS and IT are better prepared to create robust, maintainable software from the very beginning of their careers.&lt;/div&gt;&lt;div&gt;&lt;b&gt;Prerequisites:&lt;/b&gt;  Prerequisites to this reading list are competence in the Java language and at least a conceptual understanding of Object-Oriented Programming.  Before diving into these books, one should have at least been able to create an entire working system in Java - with GUI, data storage and business rules - as well as an understanding of the OOP concepts of abstraction, encapsulation, inheritance and polymorphism.&lt;/div&gt;&lt;table&gt;&lt;tbody&gt;&lt;tr&gt;&lt;td&gt;&lt;u&gt;&lt;b&gt;Effective Java&lt;/b&gt;, 2nd ed. - Joshua Bloch &amp;amp; &lt;b&gt;Clean Code&lt;/b&gt;&lt;/u&gt;&lt;u&gt; - Robert Martin&lt;/u&gt;&lt;br /&gt;&lt;img alt="" border="0" id="BLOGGER_PHOTO_ID_5639486321671346146" src="http://1.bp.blogspot.com/-dnHYVTPJNmc/TkN67iblF-I/AAAAAAAAAO4/h9ahny8dUrE/s200/EffectiveJava.jpg" style="cursor: hand; cursor: pointer; float: left; height: 200px; margin: 0 10px 10px 0; width: 159px;" /&gt;&lt;img alt="" border="0" id="BLOGGER_PHOTO_ID_5639035474895844050" src="http://1.bp.blogspot.com/-BCyiQHdqfAs/TkHg4zT-MtI/AAAAAAAAAOQ/Etap0CQqq10/s200/cleancode_0E4ECF6C.jpg" style="cursor: hand; float: left; height: 200px; margin: 0 10px 10px 0; width: 151px;" /&gt;&lt;br /&gt;&lt;div&gt;Frankly, the code that most fresh graduates write is crap.  First of all, they write unmaintainable code.  Second, they don't understand how the use of certain classes and methods affect performance.  Third, sometimes the code they write doesn't even behave properly (ex: using float/double instead of BigDecimal, or code in a concurrent environment).  Experienced developers usually have better coding practices but there are usually holes in their practices as well.  &lt;/div&gt;&lt;div&gt;I usually start new developers off with these two books.  Both are collections of coding practices, dealing with such topics as formatting, to "gotchas" in the Java language and API, to performance and concurrency.  Robert Martin's book also starts to introduce the reader to Agile Software Development.&lt;/div&gt;&lt;div&gt;One caveat:  Effective Java recommends the use static factory methods, singletons and the "final" keyword.   However, these practices can come into conflict with some of the most popular frameworks for IoC, persistence and mocking such as Spring, Hibernate and Mockito.  It's best to avoid those practices when working with these frameworks.&lt;/div&gt;&lt;/td&gt;&lt;/tr&gt;&lt;tr&gt;&lt;td&gt;&lt;br /&gt;&lt;u&gt;&lt;b&gt;Refactoring to Patterns&lt;/b&gt; - Joshua Kerievsky&lt;/u&gt;&lt;br /&gt;&lt;img src="http://lh4.ggpht.com/-p0zfIpJKXLw/TkIvRA-ROhI/AAAAAAAAAOc/6irphfflEtY/%25255BUNSET%25255D.jpg" style="cursor: hand; float: left; height: 200px; margin: 0 10px 10px 0; width: 151px;" /&gt;&lt;br /&gt;&lt;div&gt;It's too early to introduce Design Patterns in the first weeks of the training course, but I use Chapter 4 of this book for its discussion on &lt;a href="http://www.codinghorror.com/blog/2006/05/code-smells.html"&gt;"Code Smells"&lt;/a&gt;.  Code smells are signs that there might be something wrong with the code, and part of O&amp;amp;B's developer training is to learn to identify bad code.  &lt;/div&gt;&lt;div&gt;Design Patterns are taken up much later.  For fresh grads, we usually have them work on some real projects before training them in Design Patterns.  For that training, we have them read "Head First Design Patterns" followed by the other chapters of this book.&lt;/div&gt;&lt;/td&gt;&lt;/tr&gt;&lt;tr&gt;&lt;td&gt;&lt;u&gt;&lt;b&gt;Test Driven&lt;/b&gt; - Lasse Koskela&lt;/u&gt; &lt;br /&gt;&lt;img alt="" border="0" id="BLOGGER_PHOTO_ID_5639825725208241010" src="http://1.bp.blogspot.com/-pQV21yuzLRo/TkSvnbIlo3I/AAAAAAAAAPU/lYOxe4tShMA/s200/TestDriven.jpg" style="cursor: hand; cursor: pointer; float: left; height: 200px; margin: 0 10px 10px 0; width: 159px;" /&gt;&lt;br /&gt;The practice of &lt;a href="http://www.agiledata.org/essays/tdd.html"&gt;"Test-Driven Development"&lt;/a&gt; (TDD) is &lt;i&gt;not about testing&lt;/i&gt;.  It is about &lt;i&gt;defining the expected behavior of code&lt;/i&gt; through executable tests.  Think of it as specification documents that are executable.  Unlike traditional specifications, TDD can verify if the code is complying with the specifications.  TDD is therefore an essential component of a disciplined software development process.&lt;br /&gt;&lt;div&gt;Our training covers the first four chapters of the book, which introduces TDD and Refactoring using a ton of code examples.&lt;/div&gt;&lt;div&gt;The rest of the book is excellent as well, covering such topics as TDD with web components, TDD with data access, TDD for time-based and multithreaded code, and Acceptance TDD.  I recommend though that these chapters be read by developers after practicing TDD in real projects and getting the hang of it.&lt;/div&gt;&lt;/td&gt;&lt;/tr&gt;&lt;tr&gt;&lt;td&gt;&lt;u&gt;&lt;b&gt;UML for Java Programmers&lt;/b&gt;&lt;/u&gt;&lt;u&gt; - Robert Martin&lt;/u&gt;&lt;br /&gt;&lt;img alt="" border="0" id="BLOGGER_PHOTO_ID_5639848056668334370" src="http://4.bp.blogspot.com/-J2FrEFFXDhw/TkTD7STkqSI/AAAAAAAAAPc/0OoOuc2txic/s200/uml-for-java-programmers-robert-c-martin-paperback-cover-art.jpg" style="cursor: hand; cursor: pointer; float: left; height: 200px; margin: 0 10px 10px 0; width: 151px;" /&gt;This is much more than a book on UML.  This is another Robert Martin treatise on Object-Oriented Design and Agile Software Development.&lt;br /&gt;&lt;div&gt;It starts with answering the question, "Why Model?", where he begins to discuss the Agile perspective on visual modeling.  In Agile, the goal of modeling is not to create comprehensive blueprints of a system, but rather simply to communicate design ideas between members of a project team.  UML is therefore used more for sketching rather than formal engineering drawings.  Bob Martin then goes on to discuss the rudiments of the three most useful types of UML diagrams - Class Diagrams, Sequence Diagrams and Use Case Diagrams.&lt;/div&gt;&lt;div&gt;Uncle Bob then discusses his "SOLID" principles of Single-Responsibility, Open-Close, Liskov Substitution, Interface Segregation and Dependency Injection.  He ends the book with a couple of project examples including a real project he worked on.&lt;/div&gt;&lt;/td&gt;&lt;/tr&gt;&lt;tr&gt;&lt;td&gt;&lt;u&gt;&lt;b&gt;Domain-Driven Design Quickly&lt;/b&gt;&lt;/u&gt;&lt;u&gt; - Eric Evans&lt;/u&gt;&lt;br /&gt;&lt;img alt="" border="0" id="BLOGGER_PHOTO_ID_5640930853176695858" src="http://3.bp.blogspot.com/-2gxYOpV6f7Y/TkicuVojXDI/AAAAAAAAAP8/5bf1DH2votk/s200/dddquickly.jpg" style="cursor: hand; cursor: pointer; float: left; height: 200px; margin: 0 10px 10px 0; width: 132px;" /&gt;&lt;img alt="" border="0" id="BLOGGER_PHOTO_ID_5640966208739212610" src="http://1.bp.blogspot.com/-7Dq4QaSqrRA/Tki84TXh_UI/AAAAAAAAAQE/Dw7hl0PkLFo/s200/domain-driven-design-book-cover.jpg" style="cursor: hand; cursor: pointer; float: left; height: 200px; margin: 0 10px 10px 0; width: 156px;" /&gt;&lt;br /&gt;&lt;div&gt;Domain-Driven Design is the design philosophy where at the primary focus of a project is the embodiment of the business domain as the core module of the system.  This practice not only promotes maintainability of the components that handle business logic, but also drives developers to strive to understand the domain very well.  This in turn fosters collaboration between developers and domain experts.&lt;/div&gt;For the training, developers are only required to read "Domain Driven Design Quickly", which is the abridged version of Eric Evans' respected tome, but the full version is also available in our library in case anyone wants to do a deeper dive.&lt;br /&gt;One thing lacking in these books are code examples.  Thankfully, someone created a &lt;a href="http://domaindrivendesign.org/examples"&gt;sample app&lt;/a&gt;.&lt;/td&gt;&lt;/tr&gt;&lt;tr&gt;&lt;td&gt;&lt;u&gt;&lt;b&gt;The Agile Samurai&lt;/b&gt;&lt;/u&gt;&lt;u&gt; - Jonathan Rasmusson&lt;/u&gt;&lt;br /&gt;&lt;img alt="" border="0" id="BLOGGER_PHOTO_ID_5640993506315760898" src="http://3.bp.blogspot.com/-JbsPHvqN77M/TkjVtOw8dQI/AAAAAAAAAQM/atrX22EzqR4/s200/the-agile-samurai-cover.jpg.scaled500.jpg" style="cursor: hand; cursor: pointer; float: left; height: 200px; margin: 0 10px 10px 0; width: 155px;" /&gt;&lt;br /&gt;A fun introduction to Agile Software Development.  It takes a light and often humorous tone, with lots of illustrations to help people remember the concepts.  It covers the breadth of Agile - its rationale and values, planning, requirements, iterative delivery, communication, physical workspace and the engineering aspects of Agile.&lt;/td&gt;&lt;/tr&gt;&lt;tr&gt;&lt;td&gt;&lt;u&gt;&lt;b&gt;Pragmatic Guide to Git&lt;/b&gt; - Travis Swicegood &amp;amp; &lt;b&gt;Maven the Definitive Guide&lt;/b&gt; - Jason Van Zyl&lt;/u&gt;&lt;br /&gt;&lt;img alt="" border="0" id="BLOGGER_PHOTO_ID_5641000506668070722" src="http://4.bp.blogspot.com/-mZho6EKrpNw/TkjcEtG_t0I/AAAAAAAAAQU/0lm5ytuSlAs/s200/pragmatic-guide-git-travis-swicegood-paperback-cover-art.jpg" style="cursor: hand; cursor: pointer; float: left; height: 200px; margin: 0 10px 10px 0; width: 133px;" /&gt;&lt;img alt="" border="0" id="BLOGGER_PHOTO_ID_5641000742266197970" src="http://1.bp.blogspot.com/-EAt_oM_prSw/TkjcSax919I/AAAAAAAAAQc/7_4r5l-j3qA/s200/MavenDefinitiveGuide.gif" style="cursor: hand; cursor: pointer; float: left; height: 200px; margin: 0 10px 10px 0; width: 153px;" /&gt;&lt;br /&gt;Git and Maven are two of the tools we use in or projects.  Git is a distributed version control system created by Linus Torvalds.  Maven is a build and project lifecycle tool.  &lt;/td&gt;&lt;/tr&gt;&lt;tr&gt;&lt;td&gt;&lt;br /&gt;&lt;u&gt;&lt;b&gt;Head First Servlets &amp;amp; JSP&lt;/b&gt;, 2nd ed. - Bryan Basham, Kathy Sierra, Bert Bates&lt;/u&gt;&lt;br /&gt;&lt;img alt="" border="0" id="BLOGGER_PHOTO_ID_5641003239781861362" src="http://4.bp.blogspot.com/-ubGQmT2EFLU/TkjejywGh_I/AAAAAAAAAQk/p2EO45pMkuo/s200/HeadFirstServlets.jpeg" style="cursor: hand; cursor: pointer; float: left; height: 200px; margin: 0 10px 10px 0; width: 200px;" /&gt;&lt;br /&gt;Good coverage not only of the Servlets and JSP but also of JSTL and the MVC Pattern. &lt;br /&gt;&lt;br /&gt;Even if our developers work with web frameworks in their projects, it's good for them to know what's going on under the hood.&lt;/td&gt;&lt;/tr&gt;&lt;tr&gt;&lt;td&gt;&lt;u&gt;&lt;b&gt;Spring in Action&lt;/b&gt;, 3rd ed. - Craig Walls, &lt;/u&gt;&lt;u&gt;&lt;b&gt;Java Persistence with Hibernate&lt;/b&gt; - Christian Bauer and Gavin King, &lt;b&gt;Grails in Action&lt;/b&gt; - Glen Smith&lt;/u&gt;&lt;br /&gt;&lt;img alt="" border="0" id="BLOGGER_PHOTO_ID_5641005349029301602" src="http://1.bp.blogspot.com/-Ahgnh9c1RPo/TkjgekT4TWI/AAAAAAAAAQs/m6cuf1mP60k/s200/Spring%2Bin%2BAction.jpg" style="cursor: hand; cursor: pointer; float: left; height: 200px; margin: 0 10px 10px 0; width: 159px;" /&gt;&lt;img alt="" border="0" id="BLOGGER_PHOTO_ID_5641005354004009970" src="http://2.bp.blogspot.com/-r_sUAw11iQY/Tkjge218U_I/AAAAAAAAAQ0/0_5oauVucmA/s200/Java%2BPersistence%2Bwith%2BHibernate.jpg" style="cursor: hand; cursor: pointer; float: left; height: 200px; margin: 0 10px 10px 0; width: 160px;" /&gt;&lt;img alt="" border="0" id="BLOGGER_PHOTO_ID_5641010374573707010" src="http://1.bp.blogspot.com/-eJg51llpvP4/TkjlDF7CTwI/AAAAAAAAARE/HAnenCUiPAE/s200/grailsinactioncover.jpg" style="cursor: hand; cursor: pointer; float: left; height: 200px; margin: 0 10px 10px 0; width: 159px;" /&gt;&lt;br /&gt;Being a SpringSource partner, almost all our projects are built on either Spring or Grails. For our Spring projects, of course as most Spring developers we choose Hibernate for our ORM. Grails uses Hibernate under the hood (and Spring as well). &lt;br /&gt;&lt;br /&gt;Spring is the most popular inversion-of-control framework used in over 70% of organizations that do Java development.  Hibernate is the most popular object-relational mapping framework.  We've been using both since our very first projects and we're early adopters of these technologies. &lt;br /&gt;&lt;br /&gt;Grails is a rapid-development framework similar to Rails, Django, Turbo Gears and CakePHP.  O&amp;amp;B has been using Grails since 2007, even before its 1.0 release in 2008.  We've found our teams to be extremely productive, yet able to build robust, scalable and maintainable applications.  We've introduced Grails even to skeptical billion-dollar companies and they've embraced Grails for even their core systems. &lt;br /&gt;&lt;br /&gt;Besides these three books, other Spring/Hibernate/JPA/EJB3 titles we have in our bookshelves are "Spring Integration in Action", "Pro Spring Integration", "Spring Persistence with Hibernate", "Java Persistence with JPA", "Spring Recipes", and "EJB 3 in Action". &lt;br /&gt;&lt;br /&gt;&lt;/td&gt;&lt;/tr&gt;&lt;tr&gt;&lt;td&gt;&lt;u&gt;&lt;b&gt;Head First Design Patterns&lt;/b&gt; - Eric T Freeman, Elisabeth Robson, Bert Bates, Kathy Sierra &amp;amp; &lt;b&gt;Patterns of Enterprise Application Architecture&lt;/b&gt; - Martin Fowler&lt;/u&gt;&lt;br /&gt;&lt;img alt="" border="0" id="BLOGGER_PHOTO_ID_5641015490224283650" src="http://1.bp.blogspot.com/-ZjsPK_pZ_Dc/Tkjps3NLYAI/AAAAAAAAARM/HpXpGChbEwc/s200/lrg.jpg" style="cursor: hand; cursor: pointer; float: left; height: 200px; margin: 0 10px 10px 0; width: 173px;" /&gt;&lt;img alt="" border="0" id="BLOGGER_PHOTO_ID_5641015490914046354" src="http://2.bp.blogspot.com/-Cv2YbGUv8U8/Tkjps5xoUZI/AAAAAAAAARU/BRafin0Etqw/s200/poeaa1.jpg" style="cursor: hand; cursor: pointer; float: left; height: 200px; margin: 0 10px 10px 0; width: 160px;" /&gt;&lt;br /&gt;Design Patterns are solutions to common problems.  Head First Design Patterns covers basic patterns such as Template Method, Strategy, and State.  I usually have developers read the rest of "Refactoring to Patterns" in conjunction with Head First Design Patterns.  Head First provides good introductions to the patterns, while Refactoring to Patterns provides a lot of code example of how to move from problematic code to the design patterns. &lt;br /&gt;&lt;br /&gt;Patterns of Enterprise Application Architecture catalogs higher-level architectural patterns found in enterprise applications.  Examples include Domain Model, Service Layer and Model View Controller. &lt;br /&gt;&lt;br /&gt;&lt;/td&gt;&lt;/tr&gt;&lt;tr&gt;&lt;td&gt;&lt;u&gt;&lt;b&gt;JavaScript: The Good Parts&lt;/b&gt; - Douglas Crockford&lt;/u&gt;&lt;br /&gt;&lt;img alt="" border="0" id="BLOGGER_PHOTO_ID_5641305997483448290" src="http://2.bp.blogspot.com/-jaHjO7IVnL8/Tknx6nFIF-I/AAAAAAAAAR4/0v_tISraQnE/s200/Javascript%2BThe%2BGood%2BParts.jpg" style="cursor: hand; cursor: pointer; float: left; height: 200px; margin: 0 10px 10px 0; width: 152px;" /&gt;&lt;br /&gt;Ah, JavaScript... countless times throughout my entire career have I heard Java developers curse this language.  Yet, there's no getting away from it - it's now overwhelmingly the de facto standard scripting language for the client-side. &lt;br /&gt;&lt;br /&gt;JavaScript is an ugly language because it was rushed to release before it was ready.  However, there parts of JavaScript that are actually quite powerful and expressive.  This book is about those parts.  Writing robust, maintainable JavaScript is actually possible. &lt;br /&gt;&lt;br /&gt;We're also heavy users of jQuery and we have "jQuery in Action" and "The jQuery Cookbook" in our bookshelves.  There's also some interest in CoffeeScript.  &lt;/td&gt;&lt;/tr&gt;&lt;/tbody&gt;&lt;/table&gt;&lt;br /&gt;&lt;div&gt;That's it for now.  This is a list that's been changing over the years as we are able to review more books.  I'll try to keep this list update as it evolves.  I hope it's helpful.&lt;/div&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/21284276-1029647831241591344?l=calenlegaspi.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://calenlegaspi.blogspot.com/feeds/1029647831241591344/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=21284276&amp;postID=1029647831241591344' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/21284276/posts/default/1029647831241591344'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/21284276/posts/default/1029647831241591344'/><link rel='alternate' type='text/html' href='http://calenlegaspi.blogspot.com/2011/08/java-developer-reading-list.html' title='Java Developer Reading List'/><author><name>Calen Martin D. Legaspi</name><uri>http://www.blogger.com/profile/06661282916270749630</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='21' height='32' src='http://photos1.blogger.com/blogger/5907/2151/1600/calen_pic.jpg'/></author><media:thumbnail xmlns:media='http://search.yahoo.com/mrss/' url='http://1.bp.blogspot.com/-dnHYVTPJNmc/TkN67iblF-I/AAAAAAAAAO4/h9ahny8dUrE/s72-c/EffectiveJava.jpg' height='72' width='72'/><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-21284276.post-1019329361700835817</id><published>2011-03-01T10:04:00.005+08:00</published><updated>2011-03-01T10:22:23.142+08:00</updated><title type='text'>Farewell, Tarcs</title><content type='html'>&lt;a onblur="try {parent.deselectBloggerImageGracefully();} catch(e) {}" href="http://1.bp.blogspot.com/_iW9QjSjH7po/TLHG3FydIvI/AAAAAAAAAP4/7eBVc1zm_ac/s320/jan30frmhelen2a.jpg"&gt;&lt;img style="float: left; margin: 0pt 10px 10px 0pt; cursor: pointer; width: 140px; height: 220px;" src="http://1.bp.blogspot.com/_iW9QjSjH7po/TLHG3FydIvI/AAAAAAAAAP4/7eBVc1zm_ac/s320/jan30frmhelen2a.jpg" alt="" border="0" /&gt;&lt;/a&gt;The Philippine software industry lost a great leader this week.  Fermin "Tarcs" Taruc was a three-time president of the Philippine Software Industry Association, Managing Director of Gurango Software Philippines, and a volunteer of Volunteer Services Overseas (VSO).  As a VSO volunteer, he spent six months in Zambia, Africa, developing livelihood and social programs.&lt;br /&gt;&lt;br /&gt;Tarcs, we will miss your leadership, generosity, warmth and humor.  May we have more leaders in the industry like you.&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/21284276-1019329361700835817?l=calenlegaspi.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://calenlegaspi.blogspot.com/feeds/1019329361700835817/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=21284276&amp;postID=1019329361700835817' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/21284276/posts/default/1019329361700835817'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/21284276/posts/default/1019329361700835817'/><link rel='alternate' type='text/html' href='http://calenlegaspi.blogspot.com/2011/03/farewell-tarcs.html' title='Farewell, Tarcs'/><author><name>Calen Martin D. Legaspi</name><uri>http://www.blogger.com/profile/06661282916270749630</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='21' height='32' src='http://photos1.blogger.com/blogger/5907/2151/1600/calen_pic.jpg'/></author><media:thumbnail xmlns:media='http://search.yahoo.com/mrss/' url='http://1.bp.blogspot.com/_iW9QjSjH7po/TLHG3FydIvI/AAAAAAAAAP4/7eBVc1zm_ac/s72-c/jan30frmhelen2a.jpg' height='72' width='72'/><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-21284276.post-6182694733806090771</id><published>2011-02-01T16:44:00.010+08:00</published><updated>2011-02-01T16:59:35.339+08:00</updated><title type='text'>The Next Tech Boom: The Internet of Things</title><content type='html'>&lt;a onblur="try {parent.deselectBloggerImageGracefully();} catch(e) {}" href="http://1.bp.blogspot.com/_-OLKNV0V3mE/TUfJFwFwXRI/AAAAAAAAAHo/w9fBq_3FtW0/s1600/US%2BSoftware%2BMarket.gif"&gt;&lt;img style="float: left; margin: 0pt 10px 10px 0pt; cursor: pointer; width: 337px; height: 318px;" src="http://1.bp.blogspot.com/_-OLKNV0V3mE/TUfJFwFwXRI/AAAAAAAAAHo/w9fBq_3FtW0/s400/US%2BSoftware%2BMarket.gif" alt="" id="BLOGGER_PHOTO_ID_5568640564912479506" border="0" /&gt;&lt;/a&gt;The chart shows the growth of the US software market from 1970, in the age of the mainframe, the 80’s which is the age of the personal computer, to the 90’s which is the age of the internet, to today’s age of social networks and mobile phones, which is approximately half-a-trillion dollars! Outside the US the market is even larger and growing at a faster rate!&lt;br /&gt;&lt;br /&gt;The software industry is only beginning its upswing. It's only now where we're seeing its true potential. But what's next? What is the next technology gold rush that will create the next billionaires? The next boom in the industry is The Internet of Things.&lt;br /&gt;&lt;br /&gt;Computers are getting smaller and cheaper at a blinding rate, and they're all connected to the internet. This means it's become practical to embed computers into almost every object imaginable.&lt;br /&gt;&lt;br /&gt;&lt;a onblur="try {parent.deselectBloggerImageGracefully();} catch(e) {}" href="http://2.bp.blogspot.com/_-OLKNV0V3mE/TUfJxksyn6I/AAAAAAAAAH4/Y2E1LwWz5QM/s1600/The%2BNext%2BTech%2BBoom_html_m31833bc.png"&gt;&lt;img style="float: left; margin: 0pt 10px 10px 0pt; cursor: pointer; width: 200px; height: 164px;" src="http://2.bp.blogspot.com/_-OLKNV0V3mE/TUfJxksyn6I/AAAAAAAAAH4/Y2E1LwWz5QM/s200/The%2BNext%2BTech%2BBoom_html_m31833bc.png" alt="" id="BLOGGER_PHOTO_ID_5568641317769224098" border="0" /&gt;&lt;/a&gt;Already, we have buses and trucks with embedded GPS-enabled devices that send back location information to their home base so they can be tracked in real-time. Livestock in free-range farms are being embedded with chips so their movements can be tracked and their health monitored. Farms are being embedded with sensors to determine moisture and nutrient content of soil. Underground water systems have pressure meters that send SMS messages back to control centers so that maintenance teams know exactly where to find and fix a broken pipe. Smart offices and smart homes contain sensors that detect if humans are in the room and will turn on or shut off lights and air-conditioning appropriately. You can now swallow a camera shaped like a pill that can take pictures of your digestive tract.&lt;br /&gt;&lt;br /&gt;&lt;a onblur="try {parent.deselectBloggerImageGracefully();} catch(e) {}" href="http://2.bp.blogspot.com/_-OLKNV0V3mE/TUfKHQR_TOI/AAAAAAAAAIA/uS7DgmfGgpU/s1600/The%2BNext%2BTech%2BBoom_html_m47460911.png"&gt;&lt;img style="float: left; margin: 0pt 10px 10px 0pt; cursor: pointer; width: 200px; height: 137px;" src="http://2.bp.blogspot.com/_-OLKNV0V3mE/TUfKHQR_TOI/AAAAAAAAAIA/uS7DgmfGgpU/s200/The%2BNext%2BTech%2BBoom_html_m47460911.png" alt="" id="BLOGGER_PHOTO_ID_5568641690245221602" border="0" /&gt;&lt;/a&gt;Yet every year computers half in cost and size, and available bandwidth doubles, leaving the floodgates wide open for even more applications for every smaller, cheaper computers connected to the internet. We will soon have computers on our clothes that will monitor our sweat, pulse rate and other vital signs and update our medical information or even call paramedics in an emergency. We might soon even have embedded computers monitoring our internal organs, and nanobots actively seeking out and destroying cancer cells. Your refrigerator will one day sense all the items inside it (which also have embedded chips) and make an automated order to the grocery store if your inventory of eggs is low, or will warn you if your milk has expired. Your car will inform your home when you're twenty minutes away so that your home can start warming the food you left in the microwave, turn on the air-conditioning and fill your bath tub.&lt;br /&gt;&lt;br /&gt;Quite frankly, we haven't even begun to imagine what kind of applications we can create on the internet of things. Entirely new industries that we haven't even envisioned now will be created around these new technologies. One thing I'm certain of is that the next Bill Gateses, Larry Ellisons and Mark Zuckerbergs will make their fortunes on the Internet of Things.&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/21284276-6182694733806090771?l=calenlegaspi.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://calenlegaspi.blogspot.com/feeds/6182694733806090771/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=21284276&amp;postID=6182694733806090771' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/21284276/posts/default/6182694733806090771'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/21284276/posts/default/6182694733806090771'/><link rel='alternate' type='text/html' href='http://calenlegaspi.blogspot.com/2011/02/next-tech-boom-internet-of-things.html' title='The Next Tech Boom: The Internet of Things'/><author><name>Calen Martin D. Legaspi</name><uri>http://www.blogger.com/profile/06661282916270749630</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='21' height='32' src='http://photos1.blogger.com/blogger/5907/2151/1600/calen_pic.jpg'/></author><media:thumbnail xmlns:media='http://search.yahoo.com/mrss/' url='http://1.bp.blogspot.com/_-OLKNV0V3mE/TUfJFwFwXRI/AAAAAAAAAHo/w9fBq_3FtW0/s72-c/US%2BSoftware%2BMarket.gif' height='72' width='72'/><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-21284276.post-957850416274918921</id><published>2010-11-03T15:31:00.016+08:00</published><updated>2010-11-04T21:54:31.705+08:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='start-ups'/><category scheme='http://www.blogger.com/atom/ns#' term='technopreneurship'/><category scheme='http://www.blogger.com/atom/ns#' term='Philippine start-ups'/><category scheme='http://www.blogger.com/atom/ns#' term='start-up incubation'/><title type='text'>O&amp;B Incubates Haybol.ph</title><content type='html'>&lt;a onblur="try {parent.deselectBloggerImageGracefully();} catch(e) {}" href="http://3.bp.blogspot.com/_-OLKNV0V3mE/TNIsBr8AB8I/AAAAAAAAAG4/Zmpl2REEWXk/s1600/staticmap.png"&gt;&lt;img style="float: left; margin: 0pt 10px 10px 0pt; cursor: pointer; width: 256px; height: 256px;" src="http://3.bp.blogspot.com/_-OLKNV0V3mE/TNIsBr8AB8I/AAAAAAAAAG4/Zmpl2REEWXk/s320/staticmap.png" alt="" id="BLOGGER_PHOTO_ID_5535535299477637058" border="0" /&gt;&lt;/a&gt;It's been our dream to be able to support innovative technology start-ups by driven and skilled &lt;span class="blsp-spelling-error" id="SPELLING_ERROR_0"&gt;technopreneurs&lt;/span&gt;, similar to how &lt;a href="http://ycombinator.com/"&gt;Y &lt;span class="blsp-spelling-error" id="SPELLING_ERROR_1"&gt;Combinator&lt;/span&gt;&lt;/a&gt; and &lt;a href="http://lowercasellc.com/"&gt;Lowercase Capital&lt;/a&gt; do.  We are happy to announce that in our own small way, we've begun to incubate a promising start-up.&lt;br /&gt;&lt;br /&gt;O&amp;amp;B is &lt;span class="blsp-spelling-error" id="SPELLING_ERROR_2"&gt;incuba&lt;/span&gt;&lt;a onblur="try {parent.deselectBloggerImageGracefully();} catch(e) {}" href="http://4.bp.blogspot.com/_-OLKNV0V3mE/TNIr9Q5aJPI/AAAAAAAAAGw/XFi1wxW_5XU/s1600/haybol_logo.png"&gt;&lt;img style="float: left; margin: 0pt 10px 10px 0pt; cursor: pointer; width: 145px; height: 27px;" src="http://4.bp.blogspot.com/_-OLKNV0V3mE/TNIr9Q5aJPI/AAAAAAAAAGw/XFi1wxW_5XU/s320/haybol_logo.png" alt="" id="BLOGGER_PHOTO_ID_5535535223499531506" border="0" /&gt;&lt;/a&gt;ting &lt;a style="font-weight: bold;" href="http://www.haybol.ph/"&gt;&lt;span class="blsp-spelling-error" id="SPELLING_ERROR_3"&gt;Haybol&lt;/span&gt;.&lt;span class="blsp-spelling-error" id="SPELLING_ERROR_4"&gt;ph&lt;/span&gt;&lt;/a&gt;, an innovative real-estate application built on &lt;a style="font-weight: bold;" href="http://www.google.com/enterprise/earthmaps/maps.html"&gt;Google Map&lt;/a&gt;&lt;a style="font-weight: bold;" href="http://www.google.com/enterprise/earthmaps/maps.html"&gt;s&lt;/a&gt; and &lt;a style="font-weight: bold;" href="http://code.google.com/appengine/business/"&gt;Google App Engine&lt;/a&gt;, founded by our own developers &lt;span style="font-weight: bold;"&gt;Edge &lt;span class="blsp-spelling-error" id="SPELLING_ERROR_5"&gt;Dalmacio&lt;/span&gt;&lt;/span&gt; and &lt;span style="font-weight: bold;"&gt;Lorenzo Dee&lt;/span&gt;.  We have been impressed by their passion and commitment to both &lt;span class="blsp-spelling-error" id="SPELLING_ERROR_6"&gt;technopreneurship&lt;/span&gt; and the craft of software engineering.  We see great potential in these two and in &lt;span class="blsp-spelling-error" id="SPELLING_ERROR_7"&gt;Haybol&lt;/span&gt;.&lt;br /&gt;&lt;br /&gt;Lorenzo and Edge are active in O&amp;amp;B's advocacy on &lt;span class="blsp-spelling-error" id="SPELLING_ERROR_8"&gt;Technopreneurship&lt;/span&gt;, often joining in &lt;span class="blsp-spelling-error" id="SPELLING_ERROR_9"&gt;Technopreneurship&lt;/span&gt; talks to university students.&lt;br /&gt;&lt;br /&gt;&lt;a onblur="try {parent.deselectBloggerImageGracefully();} catch(e) {}" href="http://1.bp.blogspot.com/_-OLKNV0V3mE/TNIsTk166eI/AAAAAAAAAHA/n96pvZ616BM/s1600/Edge.jpg"&gt;&lt;img style="float: left; margin: 0pt 10px 10px 0pt; cursor: pointer; width: 240px; height: 161px;" src="http://1.bp.blogspot.com/_-OLKNV0V3mE/TNIsTk166eI/AAAAAAAAAHA/n96pvZ616BM/s320/Edge.jpg" alt="" id="BLOGGER_PHOTO_ID_5535535606810733026" border="0" /&gt;&lt;/a&gt; &lt;a onblur="try {parent.deselectBloggerImageGracefully();} catch(e) {}" href="http://3.bp.blogspot.com/_-OLKNV0V3mE/TNIsegVga3I/AAAAAAAAAHI/_T7ddbLJWyo/s1600/Lorenzo.jpg"&gt;&lt;img style="float: left; margin: 0pt 10px 10px 0pt; cursor: pointer; width: 240px; height: 161px;" src="http://3.bp.blogspot.com/_-OLKNV0V3mE/TNIsegVga3I/AAAAAAAAAHI/_T7ddbLJWyo/s320/Lorenzo.jpg" alt="" id="BLOGGER_PHOTO_ID_5535535794579598194" border="0" /&gt;&lt;/a&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/21284276-957850416274918921?l=calenlegaspi.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://calenlegaspi.blogspot.com/feeds/957850416274918921/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=21284276&amp;postID=957850416274918921' title='1 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/21284276/posts/default/957850416274918921'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/21284276/posts/default/957850416274918921'/><link rel='alternate' type='text/html' href='http://calenlegaspi.blogspot.com/2010/11/o-incubates-haybolph.html' title='O&amp;B Incubates Haybol.ph'/><author><name>Calen Martin D. Legaspi</name><uri>http://www.blogger.com/profile/06661282916270749630</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='21' height='32' src='http://photos1.blogger.com/blogger/5907/2151/1600/calen_pic.jpg'/></author><media:thumbnail xmlns:media='http://search.yahoo.com/mrss/' url='http://3.bp.blogspot.com/_-OLKNV0V3mE/TNIsBr8AB8I/AAAAAAAAAG4/Zmpl2REEWXk/s72-c/staticmap.png' height='72' width='72'/><thr:total>1</thr:total></entry><entry><id>tag:blogger.com,1999:blog-21284276.post-6674167623565147389</id><published>2010-11-03T13:48:00.003+08:00</published><updated>2010-11-03T14:23:00.003+08:00</updated><title type='text'>Jun Carnecer Joins as Head of Sales</title><content type='html'>&lt;a onblur="try {parent.deselectBloggerImageGracefully();} catch(e) {}" href="http://1.bp.blogspot.com/_-OLKNV0V3mE/TND_TcgRGPI/AAAAAAAAAGA/UEdaTRpmYoo/s1600/JunCarnecer.jpg"&gt;&lt;img style="float: left; margin: 0pt 10px 10px 0pt; cursor: pointer; width: 200px; height: 133px;" src="http://1.bp.blogspot.com/_-OLKNV0V3mE/TND_TcgRGPI/AAAAAAAAAGA/UEdaTRpmYoo/s320/JunCarnecer.jpg" alt="" id="BLOGGER_PHOTO_ID_5535204651572467954" border="0" /&gt;&lt;/a&gt;We're proud to announce an industry heavyweight joining O&amp;amp;B's management team!   &lt;span style="font-weight: bold;"&gt;Jun &lt;span class="blsp-spelling-error" id="SPELLING_ERROR_0"&gt;Carnecer&lt;/span&gt;&lt;/span&gt; joins us as Head of Sales.  Jun has almost 20 years in the software industry and a solid reputation.  He began his career as a software developer, then progressed as Solutions Consultant at IBM, Channels Development Manager at Oracle, Vice-President and Business Development Director for Seer Technologies, and CEO of Agile Insights, Inc.&lt;br /&gt;&lt;br /&gt;Butch and I look forward to working with Jun as we feel he balances out our technical orientation with his business savvy.  We see him as the first of many top-ranked managers who we'll be recruiting to join O&amp;amp;B's management team over the next two years. &lt;br /&gt;&lt;br /&gt;Welcome to the team, Jun!&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/21284276-6674167623565147389?l=calenlegaspi.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://calenlegaspi.blogspot.com/feeds/6674167623565147389/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=21284276&amp;postID=6674167623565147389' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/21284276/posts/default/6674167623565147389'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/21284276/posts/default/6674167623565147389'/><link rel='alternate' type='text/html' href='http://calenlegaspi.blogspot.com/2010/11/jun-carnecer-joins-as-head-of-sales.html' title='Jun Carnecer Joins as Head of Sales'/><author><name>Calen Martin D. Legaspi</name><uri>http://www.blogger.com/profile/06661282916270749630</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='21' height='32' src='http://photos1.blogger.com/blogger/5907/2151/1600/calen_pic.jpg'/></author><media:thumbnail xmlns:media='http://search.yahoo.com/mrss/' url='http://1.bp.blogspot.com/_-OLKNV0V3mE/TND_TcgRGPI/AAAAAAAAAGA/UEdaTRpmYoo/s72-c/JunCarnecer.jpg' height='72' width='72'/><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-21284276.post-590384497547229488</id><published>2010-08-18T09:25:00.009+08:00</published><updated>2010-08-20T07:43:30.374+08:00</updated><title type='text'>Hate is a Drug</title><content type='html'>Hate is a drug. It's addictive - it gives you a rush that you don't want to let go.  It's a social drug - enjoying it with friends amplifies the rush and prolongs it. And like many drugs, it will alter your thinking, ruin your health, and damage relationships.&lt;br /&gt;&lt;br /&gt;Hate is not anger. One can be angry with someone, and yet still love that person. Anger is fine, and often healthy and productive. Hate is borne of contempt, and contempt is borne of pride. One cannot hate someone if one does not feel that that someone is inferior, and one does not feel that someone is inferior without being proud.&lt;br /&gt;&lt;br /&gt;When you're angry, let it out, express it. Make it emphasize your words and put energy to your actions. But once it subsides, let it go. Do not let anger open the door for contempt, and fan contempt into hate. Block the entry of contempt by filling the space with love. Again, you can be angry with a person and love a person at the same time. But you cannot love a person and have contempt for a person at the same time. They are mutually exclusive.&lt;br /&gt;&lt;br /&gt;&lt;span style="font-style: italic;"&gt;(Why am I writing about anger and hate in a blog about technopreneurship? It's because entrepreneurship will probably be the most stressful thing you'll ever do in your life, and if you go into business with your friends or family, it will take its toll on your relationships. All of you will make tough decisions where there are no clear answers, only huge consequences, and someone will inevitably feel wronged.&lt;br /&gt;&lt;br /&gt;But decisions need to be made and made quickly, and only time will tell if these decisions were right or wrong. It's fine to be angry at these decisions and it's fine to argue passionately about them in the proper forum, but one must respect another's right to make those decisions, especially in the areas for which they are accountable.&lt;br /&gt;&lt;br /&gt;At the end of the day, if you're angry with a coworker or business partner, let it all out in the conference room.  Then leave the conference room, shut the door, and leave your anger behind.)&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/21284276-590384497547229488?l=calenlegaspi.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://calenlegaspi.blogspot.com/feeds/590384497547229488/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=21284276&amp;postID=590384497547229488' title='1 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/21284276/posts/default/590384497547229488'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/21284276/posts/default/590384497547229488'/><link rel='alternate' type='text/html' href='http://calenlegaspi.blogspot.com/2010/08/hate-is-drug.html' title='Hate is a Drug'/><author><name>Calen Martin D. Legaspi</name><uri>http://www.blogger.com/profile/06661282916270749630</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='21' height='32' src='http://photos1.blogger.com/blogger/5907/2151/1600/calen_pic.jpg'/></author><thr:total>1</thr:total></entry><entry><id>tag:blogger.com,1999:blog-21284276.post-7381227284967313339</id><published>2010-08-06T18:35:00.003+08:00</published><updated>2010-08-11T09:02:08.249+08:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='Cloud Computing'/><title type='text'>Cloud Computing, a Simple Definition</title><content type='html'>Thousands of companies, from Fortune 500s to &lt;span class="blsp-spelling-error" id="SPELLING_ERROR_0"&gt;SMEs&lt;/span&gt;, are now rapidly moving to Cloud Computing services, platforms and infrastructure.  Also, it's hard to find a major software vendor nowadays that's not positioning at least some of its products as a Cloud Computing technology.  What is Cloud Computing and why is it so important?&lt;br /&gt;&lt;br /&gt;Could computing is really just a fancy term for utility computing.  In other words, &lt;a onblur="try {parent.deselectBloggerImageGracefully();} catch(e) {}" href="http://1.bp.blogspot.com/_-OLKNV0V3mE/TGH2R6tib1I/AAAAAAAAAFw/8Gz0S5de2pA/s1600/faucet.jpg"&gt;&lt;img style="float: right; margin: 0pt 0pt 10px 10px; cursor: pointer; width: 320px; height: 220px;" src="http://1.bp.blogspot.com/_-OLKNV0V3mE/TGH2R6tib1I/AAAAAAAAAFw/8Gz0S5de2pA/s320/faucet.jpg" alt="" id="BLOGGER_PHOTO_ID_5503951007301922642" border="0" /&gt;&lt;/a&gt;applications, platforms or infrastructure are made available from a central service provider, similar to our utility companies for electricity, water and telecommunication.  This simple concept has immense implications.&lt;br /&gt;&lt;br /&gt;First, cost goes dramatically down since resources and operating costs are shared across more applications and users.  Second, reliability and &lt;span class="blsp-spelling-error" id="SPELLING_ERROR_1"&gt;uptime&lt;/span&gt; go up since most cloud computing services provide fail-over and redundancy across thousands of servers and even multiple data-centers.  Thirdly, cloud computing can provide better performance since calculations can be spread across the resources of multiple servers, and content can be placed on edge severs that are positioned close to the consumers of the content.&lt;br /&gt;&lt;br /&gt;Companies, though, are concerned about security, control and vendor-lock-in issues that come with Cloud Computing.  Each Cloud Computing provider needs to address these issues in order to reassure clients of reliable service.&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/21284276-7381227284967313339?l=calenlegaspi.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://calenlegaspi.blogspot.com/feeds/7381227284967313339/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=21284276&amp;postID=7381227284967313339' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/21284276/posts/default/7381227284967313339'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/21284276/posts/default/7381227284967313339'/><link rel='alternate' type='text/html' href='http://calenlegaspi.blogspot.com/2010/08/cloud-computing-simple-definition.html' title='Cloud Computing, a Simple Definition'/><author><name>Calen Martin D. Legaspi</name><uri>http://www.blogger.com/profile/06661282916270749630</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='21' height='32' src='http://photos1.blogger.com/blogger/5907/2151/1600/calen_pic.jpg'/></author><media:thumbnail xmlns:media='http://search.yahoo.com/mrss/' url='http://1.bp.blogspot.com/_-OLKNV0V3mE/TGH2R6tib1I/AAAAAAAAAFw/8Gz0S5de2pA/s72-c/faucet.jpg' height='72' width='72'/><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-21284276.post-5366839187305491346</id><published>2010-06-24T10:47:00.007+08:00</published><updated>2010-07-05T08:50:29.100+08:00</updated><title type='text'>O&amp;B develops race-management system using Grails, iPads and RFID</title><content type='html'>We developed a race-management system for Coach Rio, involving RFIDs and iPads. :-)  &lt;a href="http://thebullrunner.com/2010/06/23/rexona-run-and-coach-rios-innovations/"&gt;See the article here.&lt;span style="text-decoration: underline;"&gt;&lt;/span&gt;&lt;/a&gt;&lt;a href="http://thebullrunner.com/2010/06/23/rexona-run-and-coach-rios-innovations/"&gt;&lt;/a&gt;&lt;br /&gt;&lt;br /&gt;&lt;img src="http://farm2.static.flickr.com/1392/4726341667_509e27b863.jpg" alt="IMG_3586" /&gt;&lt;br /&gt;&lt;br /&gt;&lt;img src="http://farm2.static.flickr.com/1117/4726341971_3cacf5281a.jpg" alt="IMG_3592" /&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/21284276-5366839187305491346?l=calenlegaspi.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://calenlegaspi.blogspot.com/feeds/5366839187305491346/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=21284276&amp;postID=5366839187305491346' title='1 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/21284276/posts/default/5366839187305491346'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/21284276/posts/default/5366839187305491346'/><link rel='alternate' type='text/html' href='http://calenlegaspi.blogspot.com/2010/06/o-develops-race-management-system-for.html' title='O&amp;B develops race-management system using Grails, iPads and RFID'/><author><name>Calen Martin D. Legaspi</name><uri>http://www.blogger.com/profile/06661282916270749630</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='21' height='32' src='http://photos1.blogger.com/blogger/5907/2151/1600/calen_pic.jpg'/></author><media:thumbnail xmlns:media='http://search.yahoo.com/mrss/' url='http://farm2.static.flickr.com/1392/4726341667_509e27b863_t.jpg' height='72' width='72'/><thr:total>1</thr:total></entry><entry><id>tag:blogger.com,1999:blog-21284276.post-5324351276001785029</id><published>2010-05-22T14:16:00.004+08:00</published><updated>2010-05-22T14:38:29.293+08:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='google apps'/><title type='text'>O&amp;B Now Official Google Apps Partner!</title><content type='html'>&lt;a onblur="try {parent.deselectBloggerImageGracefully();} catch(e) {}" href="http://2.bp.blogspot.com/_-OLKNV0V3mE/S_d4lPvUYJI/AAAAAAAAAFo/Jxkjoy2v-7E/s1600/google_apps_logo.jpg"&gt;&lt;img style="float:right; margin:0 0 10px 10px;cursor:pointer; cursor:hand;width: 347px; height: 313px;" src="http://2.bp.blogspot.com/_-OLKNV0V3mE/S_d4lPvUYJI/AAAAAAAAAFo/Jxkjoy2v-7E/s400/google_apps_logo.jpg" border="0" alt="" id="BLOGGER_PHOTO_ID_5473976453367619730" /&gt;&lt;/a&gt;We're now an official Google Apps Reseller!  Google approached us last year to represent them for Google Apps Premier Edition here in the Philippines.  We worked out the details with them for a while but since it fits in with our current skills in developing applications in Google App Engine and Android we decided to take this on.&lt;p&gt;The timing is perfect since Microsoft is currently pushing its 2010 versions of its software like Microsoft Exchange 2010 and Microsoft Sharepoint 2010.  Google Apps Premier provides much cheaper alternative to these Microsoft products, plus a lot more features, and a heck of a lot less administrative headaches.  &lt;/p&gt;&lt;p&gt;If your organization is looking at updating its email, document-management or collaboration systems, talk to us about the option of Google Apps.  &lt;/p&gt;&lt;p&gt;&lt;/p&gt;&lt;p&gt;&lt;a href="http://www.youtube.com/watch?v=M_TzCpYGpzw"&gt;Check out this video to get an Overview of Google Apps for Business. &lt;/a&gt;&lt;/p&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/21284276-5324351276001785029?l=calenlegaspi.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://calenlegaspi.blogspot.com/feeds/5324351276001785029/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=21284276&amp;postID=5324351276001785029' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/21284276/posts/default/5324351276001785029'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/21284276/posts/default/5324351276001785029'/><link rel='alternate' type='text/html' href='http://calenlegaspi.blogspot.com/2010/05/o-now-official-google-apps-partner.html' title='O&amp;B Now Official Google Apps Partner!'/><author><name>Calen Martin D. Legaspi</name><uri>http://www.blogger.com/profile/06661282916270749630</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='21' height='32' src='http://photos1.blogger.com/blogger/5907/2151/1600/calen_pic.jpg'/></author><media:thumbnail xmlns:media='http://search.yahoo.com/mrss/' url='http://2.bp.blogspot.com/_-OLKNV0V3mE/S_d4lPvUYJI/AAAAAAAAAFo/Jxkjoy2v-7E/s72-c/google_apps_logo.jpg' height='72' width='72'/><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-21284276.post-7941998054573903412</id><published>2010-05-14T22:25:00.002+08:00</published><updated>2010-05-14T22:30:37.071+08:00</updated><title type='text'>O&amp;B releases its latest newsletter</title><content type='html'>&lt;p&gt;&lt;span style="font-family:arial;"&gt;Orange &amp;amp; Bronze Software Labs, Inc. is proud to present the latest issue of the ORANGE ORCHARD, its official quarterly newsletter.&lt;/span&gt;&lt;span style="font-family:arial;"&gt;&lt;/span&gt;&lt;span style="font-family:arial;"&gt;&lt;br /&gt;&lt;/span&gt;&lt;span style="font-family:arial;"&gt;&lt;/span&gt;&lt;span style="font-family:arial;"&gt;&lt;br /&gt;&lt;/span&gt;&lt;span style="font-family:arial;"&gt;In this issue, find out all the good news that came O&amp;amp;B's way at the onset of 2010, including inspiring testimonials from our loyal clients and new endeavors like a fresher, friendlier website, a representative for Europe, new office tools to play with, various advocacies to give back to the community, and many others—all are SUMPTINK new under the sun.&lt;/span&gt;&lt;/p&gt;&lt;p&gt;&lt;a target="_blank" href="http://www.orangeandbronze.com/images/stories/orchard/OrangeOrchard3-vol1.pdf"&gt;&lt;span style="font-family:arial;"&gt;You may download the pdf version here.&lt;/span&gt;&lt;/a&gt;&lt;/p&gt;&lt;p&gt;&lt;img src="http://orangeandbronze.com/images/stories/newsletter-images/orangeorchard-issue3.jpg" alt="Orange Orchard Issue 3 Volume 1" title="Orange Orchard Issue 3   Volume 1" /&gt;&lt;/p&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/21284276-7941998054573903412?l=calenlegaspi.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://calenlegaspi.blogspot.com/feeds/7941998054573903412/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=21284276&amp;postID=7941998054573903412' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/21284276/posts/default/7941998054573903412'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/21284276/posts/default/7941998054573903412'/><link rel='alternate' type='text/html' href='http://calenlegaspi.blogspot.com/2010/05/o-releases-its-latest-newsletter.html' title='O&amp;B releases its latest newsletter'/><author><name>Calen Martin D. Legaspi</name><uri>http://www.blogger.com/profile/06661282916270749630</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='21' height='32' src='http://photos1.blogger.com/blogger/5907/2151/1600/calen_pic.jpg'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-21284276.post-6267924065464314987</id><published>2010-04-19T10:54:00.005+08:00</published><updated>2010-04-19T11:11:47.996+08:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='start-ups'/><category scheme='http://www.blogger.com/atom/ns#' term='Philippine technology'/><category scheme='http://www.blogger.com/atom/ns#' term='technopreneurship'/><category scheme='http://www.blogger.com/atom/ns#' term='Philippine start-ups'/><category scheme='http://www.blogger.com/atom/ns#' term='venture capital'/><category scheme='http://www.blogger.com/atom/ns#' term='philippine software industry'/><title type='text'>The Philippines needs a TechCrunch!</title><content type='html'>&lt;p&gt;What the Philippine start-up scene needs is its own version of &lt;a href="http://techcrunch.com/"&gt;&lt;span class="blsp-spelling-error" id="SPELLING_ERROR_0"&gt;TechCrunch&lt;/span&gt;&lt;/a&gt;.  We have our tech press but they're focused on news from big vendors and established companies.  We need a news organization focused on start-ups!  This will get the local start-up community excited, and help venture investors find interesting ventures to invest.&lt;/p&gt;&lt;p&gt;&lt;a onblur="try {parent.deselectBloggerImageGracefully();} catch(e) {}" href="http://techcrunch.com"&gt;&lt;img style="float:left; margin:0 10px 10px 0;cursor:pointer; cursor:hand;width: 231px; height: 34px;" src="http://4.bp.blogspot.com/_-OLKNV0V3mE/S8vJHKymwkI/AAAAAAAAAFQ/Co5iIIUAuBw/s400/techcrunch2.png" border="0" alt="" id="BLOGGER_PHOTO_ID_5461680098109735490" /&gt;&lt;/a&gt;I'm hoping the Filipino blogger community will step-up, by creating a Philippine start-up news blog or by contributing Philippine start-up news to &lt;span class="blsp-spelling-error" id="SPELLING_ERROR_1"&gt;TechCrunch&lt;/span&gt;.&lt;/p&gt;&lt;p&gt;Philippine-based &lt;span class="blsp-spelling-error" id="SPELLING_ERROR_2"&gt;VCs&lt;/span&gt;, maybe this is something you should sponsor?&lt;/p&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/21284276-6267924065464314987?l=calenlegaspi.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://calenlegaspi.blogspot.com/feeds/6267924065464314987/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=21284276&amp;postID=6267924065464314987' title='2 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/21284276/posts/default/6267924065464314987'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/21284276/posts/default/6267924065464314987'/><link rel='alternate' type='text/html' href='http://calenlegaspi.blogspot.com/2010/04/philippines-needs-techcrunch.html' title='The Philippines needs a TechCrunch!'/><author><name>Calen Martin D. Legaspi</name><uri>http://www.blogger.com/profile/06661282916270749630</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='21' height='32' src='http://photos1.blogger.com/blogger/5907/2151/1600/calen_pic.jpg'/></author><media:thumbnail xmlns:media='http://search.yahoo.com/mrss/' url='http://4.bp.blogspot.com/_-OLKNV0V3mE/S8vJHKymwkI/AAAAAAAAAFQ/Co5iIIUAuBw/s72-c/techcrunch2.png' height='72' width='72'/><thr:total>2</thr:total></entry><entry><id>tag:blogger.com,1999:blog-21284276.post-5373575645395989658</id><published>2010-04-08T11:33:00.004+08:00</published><updated>2010-04-08T12:02:00.650+08:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='open source'/><category scheme='http://www.blogger.com/atom/ns#' term='education'/><category scheme='http://www.blogger.com/atom/ns#' term='computer science'/><title type='text'>Teaching Open Source</title><content type='html'>&lt;a onblur="try {parent.deselectBloggerImageGracefully();} catch(e) {}" href="http://1.bp.blogspot.com/_-OLKNV0V3mE/S71VMEH1tuI/AAAAAAAAAFA/lrPdAcbyYaI/s1600/teachingopensource.png"&gt;&lt;img style="float:left; margin:0 10px 10px 0;cursor:pointer; cursor:hand;width: 135px; height: 135px;" src="http://1.bp.blogspot.com/_-OLKNV0V3mE/S71VMEH1tuI/AAAAAAAAAFA/lrPdAcbyYaI/s400/teachingopensource.png" border="0" alt="" id="BLOGGER_PHOTO_ID_5457611989196322530" /&gt;&lt;/a&gt;&lt;br /&gt;&lt;p&gt;I found an online community that's all about teaching open source, especially in universities.  The organization is called &lt;a href="http://teachingopensource.org/"&gt;TeachingOpenSource&lt;/a&gt;.  They've even created a &lt;a href="http://teachingopensource.org/index.php/Textbook_Project"&gt;text book&lt;/a&gt;, and the text book content is open source as well. &lt;/p&gt;&lt;p&gt;I think this is just awesome!  And I hope this catches on in universities and science high schools the Philippines.&lt;/p&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/21284276-5373575645395989658?l=calenlegaspi.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://calenlegaspi.blogspot.com/feeds/5373575645395989658/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=21284276&amp;postID=5373575645395989658' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/21284276/posts/default/5373575645395989658'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/21284276/posts/default/5373575645395989658'/><link rel='alternate' type='text/html' href='http://calenlegaspi.blogspot.com/2010/04/teaching-open-source.html' title='Teaching Open Source'/><author><name>Calen Martin D. Legaspi</name><uri>http://www.blogger.com/profile/06661282916270749630</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='21' height='32' src='http://photos1.blogger.com/blogger/5907/2151/1600/calen_pic.jpg'/></author><media:thumbnail xmlns:media='http://search.yahoo.com/mrss/' url='http://1.bp.blogspot.com/_-OLKNV0V3mE/S71VMEH1tuI/AAAAAAAAAFA/lrPdAcbyYaI/s72-c/teachingopensource.png' height='72' width='72'/><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-21284276.post-575932042321051422</id><published>2010-04-05T21:10:00.003+08:00</published><updated>2010-04-05T21:42:10.549+08:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='android'/><title type='text'>TechCrunch: Swedish company creates an Android-based TV</title><content type='html'>&lt;a onblur="try {parent.deselectBloggerImageGracefully();} catch(e) {}" href="http://www.crunchgear.com/wp-content/uploads/2010/04/scaled.People_of_Lava_Android_TV_Scandinavia_Main_Menu.jpg"&gt;&lt;img style="float:right; margin:0 0 10px 10px;cursor:pointer; cursor:hand;width: 630px; height: 404px;" src="http://www.crunchgear.com/wp-content/uploads/2010/04/scaled.People_of_Lava_Android_TV_Scandinavia_Main_Menu.jpg" border="0" alt="" /&gt;&lt;/a&gt;&lt;br /&gt;&lt;br /&gt;A Swedish company just &lt;a href="http://www.crunchgear.com/2010/04/05/swedish-company-people-of-lava-create-an-android-based-tv/"&gt;launched an Android-based TV&lt;/a&gt;.  By next year, you're going to see thousands of wildly-different types of devices running Android.  I'm talking about everyday appliances, office equipment, factory machines, POS terminals... every sort of device you can imagine.&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/21284276-575932042321051422?l=calenlegaspi.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://calenlegaspi.blogspot.com/feeds/575932042321051422/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=21284276&amp;postID=575932042321051422' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/21284276/posts/default/575932042321051422'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/21284276/posts/default/575932042321051422'/><link rel='alternate' type='text/html' href='http://calenlegaspi.blogspot.com/2010/04/techcrunch-swedish-company-creates.html' title='TechCrunch: Swedish company creates an Android-based TV'/><author><name>Calen Martin D. Legaspi</name><uri>http://www.blogger.com/profile/06661282916270749630</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='21' height='32' src='http://photos1.blogger.com/blogger/5907/2151/1600/calen_pic.jpg'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-21284276.post-4695701239070820800</id><published>2010-04-02T20:02:00.010+08:00</published><updated>2010-04-02T21:42:34.356+08:00</updated><title type='text'>O&amp;B's New Representative in France!</title><content type='html'>&lt;a onblur="try {parent.deselectBloggerImageGracefully();} catch(e) {}" href="http://3.bp.blogspot.com/_-OLKNV0V3mE/S7XwxpN5TmI/AAAAAAAAAEw/TBtwLIQkySo/s1600/DSC_1199.JPG"&gt;&lt;img style="float:left; margin:0 10px 10px 0;cursor:pointer; cursor:hand;width: 400px; height: 282px;" src="http://3.bp.blogspot.com/_-OLKNV0V3mE/S7XwxpN5TmI/AAAAAAAAAEw/TBtwLIQkySo/s400/DSC_1199.JPG" border="0" alt="" id="BLOGGER_PHOTO_ID_5455531259297615458" /&gt;&lt;/a&gt;Meet Manuel "Sanka" Oudin, O&amp;amp;B's energetic new representative for France!  Sanka was a freelance IT consultant in France before working with O&amp;amp;B.  Sanka will be doing sales, account management and requirements elicitation in his home country.&lt;p&gt;He's currently in the Philippines for two months.  He's been attending training in Agile Software Development as well as getting oriented in our technology specializations Grails, Spring, Hibernate and Android.  &lt;/p&gt;&lt;p&gt;He's already brought in a torrent of leads from France and has been collaborating with our development team for the proposals.  He's also been translating our website to French!&lt;br /&gt;&lt;/p&gt;&lt;p&gt;Welcome to the team, Sanka!&lt;br /&gt;&lt;/p&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/21284276-4695701239070820800?l=calenlegaspi.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://calenlegaspi.blogspot.com/feeds/4695701239070820800/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=21284276&amp;postID=4695701239070820800' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/21284276/posts/default/4695701239070820800'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/21284276/posts/default/4695701239070820800'/><link rel='alternate' type='text/html' href='http://calenlegaspi.blogspot.com/2010/04/o-new-representative-in-france.html' title='O&amp;B&apos;s New Representative in France!'/><author><name>Calen Martin D. Legaspi</name><uri>http://www.blogger.com/profile/06661282916270749630</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='21' height='32' src='http://photos1.blogger.com/blogger/5907/2151/1600/calen_pic.jpg'/></author><media:thumbnail xmlns:media='http://search.yahoo.com/mrss/' url='http://3.bp.blogspot.com/_-OLKNV0V3mE/S7XwxpN5TmI/AAAAAAAAAEw/TBtwLIQkySo/s72-c/DSC_1199.JPG' height='72' width='72'/><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-21284276.post-1148943857401820030</id><published>2010-03-24T22:28:00.003+08:00</published><updated>2010-03-24T22:42:53.989+08:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='software product development'/><category scheme='http://www.blogger.com/atom/ns#' term='grails product development'/><category scheme='http://www.blogger.com/atom/ns#' term='grails'/><title type='text'>Release of First Grails Product!</title><content type='html'>&lt;p&gt;&lt;img style="float:right; margin:0 0 10px 10px;cursor:pointer; cursor:hand;width: 467px; height: 222px;" src="http://trackmyapplicant.com/images/myapplicant_14.jpg" border="0" alt="" /&gt;I'd like to announce the release of our first Grails product, &lt;a href="http://trackmyapplicant.com/"&gt;Track My Applicant&lt;/a&gt;.  It's a recruitment management system that we're targeting at companies with high-volume recruitment requirements, such as call centers.  This product was a joint venture with HK-based Synerbyte.&lt;/p&gt;&lt;p&gt;More Grails (and Android) products are in the works.  Stay tuned! :-)&lt;/p&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/21284276-1148943857401820030?l=calenlegaspi.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://calenlegaspi.blogspot.com/feeds/1148943857401820030/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=21284276&amp;postID=1148943857401820030' title='1 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/21284276/posts/default/1148943857401820030'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/21284276/posts/default/1148943857401820030'/><link rel='alternate' type='text/html' href='http://calenlegaspi.blogspot.com/2010/03/release-of-first-grails-product.html' title='Release of First Grails Product!'/><author><name>Calen Martin D. Legaspi</name><uri>http://www.blogger.com/profile/06661282916270749630</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='21' height='32' src='http://photos1.blogger.com/blogger/5907/2151/1600/calen_pic.jpg'/></author><thr:total>1</thr:total></entry><entry><id>tag:blogger.com,1999:blog-21284276.post-8525032749316890415</id><published>2010-02-25T21:03:00.033+08:00</published><updated>2010-03-01T10:12:38.575+08:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='outsourced product development'/><category scheme='http://www.blogger.com/atom/ns#' term='grails'/><category scheme='http://www.blogger.com/atom/ns#' term='offshore product development'/><title type='text'>Five Software Trends and What They Mean for Business in the Third World</title><content type='html'>&lt;span style="font-style:italic;"&gt;&lt;span style="font-size:85%;"&gt;This is based on my talk at the Innovation Summit organized by John Clements and Harvard Business Publishing last month.&lt;/span&gt;&lt;/span&gt;&lt;br /&gt;&lt;br /&gt;There are five trends in the software and internet space that every businessperson and entrepreneur should be aware of, since they're going to shake up the business landscape dramatically.&lt;br /&gt;&lt;strong&gt;&lt;br /&gt;Trend #1: Accelerating pace and cost-reduction of software development&lt;/strong&gt;&lt;br /&gt;&lt;br /&gt;My company engaged in a joint-venture last year to develop an online product.  The JV partner has been trying for three years to develop the product with different partners with little success, even as he employed some of the top developers in Philippine software industry.&lt;br /&gt;&lt;br /&gt;Since the project was R&amp;amp;D with an unknown future revenue, we said that we could only commit two or three junior people at a time plus some interns, though the project was overseen by our CTO and we used the cutting-edge Grails framework.  After two-weeks, the team presented its initial work, and the JV partner exclaimed, “You guys accomplished more in two weeks than the other teams did in six months!”&lt;br /&gt;&lt;img style="float:right; margin:0 0 10px 10px;cursor:pointer; cursor:hand;width: 200px; height: 150px;" src="http://2.bp.blogspot.com/_-OLKNV0V3mE/S4Z1z4uGKzI/AAAAAAAAADQ/maJwzbl4xZM/s200/JM.gif" border="0" alt="" id="BLOGGER_PHOTO_ID_5442166733983329074" /&gt;&lt;br /&gt;I could attribute this success to the Grails framework, and example of the rapid-development frameworks available today that weren't available to programmers just three years ago.  The productivity jumps with these frameworks is literally and order of magnitude.  And the best part is, most of these frameworks are free and open source!&lt;br /&gt;&lt;br /&gt;This is a trend that will only accelerate – Software can be built faster and faster, and cheaper and cheaper, because of rapidly improving frameworks, tools, components and free web service APIs.  What does this mean for business?  It means that big software companies will increasingly face competition with smaller companies with smaller teams of developers.  Size and financial muscle will be less and less of a requirement to build powerful software.&lt;br /&gt;&lt;strong&gt;&lt;br /&gt;Trend #2: Everything is going on the internet&lt;/strong&gt;&lt;br /&gt;&lt;br /&gt;When was the last time you went to a store and bought packaged software?  Probably not in a while.  More often we download software and install, but this too is getting less and less.  Lately, web applications are getting so rich in functionality and feel that they are getting close to the richness of installed applications.  This trend will continue with HTML 5.  Not only will we experience even richer web applications, these web applications will have the capability to&lt;img style="float:right; margin:0 0 10px 10px;cursor:pointer; cursor:hand;width: 200px; height: 144px;" src="http://2.bp.blogspot.com/_-OLKNV0V3mE/S4Z2JlsXLZI/AAAAAAAAADY/sCq3ppjcXdE/s200/cloud_computing.jpg" border="0" alt="" id="BLOGGER_PHOTO_ID_5442167106832903570" /&gt; operate even offline and to store data on harddrives.&lt;br /&gt;&lt;br /&gt;Software-as-a-service will increasingly be the primary way to distribute and access software.  What does this mean for business?  It means that the cost of distributing software is coming crashing down as well.  You no longer need a massive manufacturing, packaging, distribution and retailing operation just to deliver your software.  Even the cost of hosting software on internet servers is coming crashing down, with cloud computing.  Again, the playing field is increasingly being leveled for smaller, more nimble software companies to compete against the giants.&lt;br /&gt;&lt;br /&gt;&lt;strong&gt;Trend #3: The internet of things&lt;/strong&gt;&lt;br /&gt;&lt;br /&gt;In January 2010, scientists from Yale University and South Korea announced that they had created a transistor made out of just six carbon atoms!  Does Moore's Law ring a bell?  Moore's Law not only means that microchips will get more powerful, but they will also get smaller and cheaper at an accelerating pace.&lt;br /&gt;&lt;br /&gt;What about Gilder's Law?  Gilder's Law states that the bandwidth of a communications network triples every year.&lt;br /&gt;&lt;br /&gt;Throw in nanotechnology, IPv6, self-configuring wireless networks and low-power wireless protocols and what do you get?  The internet of things.&lt;br /&gt;&lt;br /&gt;The internet of things means that not just PCs, mobile phones and servers will be on the internet.  Increasingly, it will be things.  Since computer processors and wifi adaptors are increasingly getting smaller and cheaper, we will increasingly have them everywhere – on our&lt;img style="float:right; margin:0 0 10px 10px;cursor:pointer; cursor:hand;width: 400px; height: 225px;" src="http://3.bp.blogspot.com/_-OLKNV0V3mE/S4Z3LjoEdPI/AAAAAAAAADw/XBvigQLZn5k/s400/internet_of_things.jpg" border="0" alt="" id="BLOGGER_PHOTO_ID_5442168240149394674" /&gt; clothes, vehicles, appliances... even on crops and livestock.  They will all have computer processors and be connected on the internet!&lt;br /&gt;&lt;br /&gt;Again, what does this mean for business?  It means that computer programs can be created that are even more powerful than previously imagined, since now they can reach out, extract data, or even control, a plethora of things that are all connected to the internet.  And since software can be created cheaper and faster... software developers are becoming increasingly powerful.&lt;br /&gt;&lt;strong&gt;&lt;br /&gt;Trend #4: Microsegmentation&lt;/strong&gt;&lt;br /&gt;&lt;br /&gt;Why is so much investment money going to search engines and social networking applications,&lt;img style="float:right; margin:0 0 10px 10px;cursor:pointer; cursor:hand;width: 134px; height: 200px;" src="http://4.bp.blogspot.com/_-OLKNV0V3mE/S4Z39uXBjdI/AAAAAAAAAEA/Z2KoO94S_0E/s200/needle-haystack.jpg" border="0" alt="" id="BLOGGER_PHOTO_ID_5442169102024150482" /&gt; which users are able to access for free?  These are data-mining operations, for the purpose of highly-targeted advertising.  Their goal is to learn as much as they can about you in a detailed manner, so that when advertisers need to reach out to someone like you they can do so without wasting their money on those they don't want to reach.  For advertisers, it means it's now affordable to reach out to that needle in a haystack, without having to spend advertising money on the hay.&lt;br /&gt;&lt;br /&gt;What does this mean for business?  Again, small companies get a more level playing field against the big.  Even with limited funds, a small company can dominate a small and dispersed niche, since it can target its advertising only on the people who'd be interested in its product.&lt;br /&gt;&lt;strong&gt;&lt;br /&gt;Trend #5: Rise of the MicroISV&lt;/strong&gt;&lt;br /&gt;&lt;br /&gt;MicroISVs (Micro Independent Software Vendors) are software company made up of only one&lt;img style="float:right; margin:0 0 10px 10px;cursor:pointer; cursor:hand;width: 200px; height: 132px;" src="http://2.bp.blogspot.com/_-OLKNV0V3mE/S4Z4U9iSVvI/AAAAAAAAAEI/DOy09eK9EAQ/s200/home+office.jpg" border="0" alt="" id="BLOGGER_PHOTO_ID_5442169501234910962" /&gt; or two people.  They've been gaining in popularity in the US in the past few years.&lt;br /&gt;&lt;br /&gt;This phenomenon is simply the result of the previous trends I just talked about – It's so easy to develop, maintain, promote and distribute powerful, desirable software such that even just one or two people can do it.  This just validates in the most extreme way that the playing field is leveling towards smaller, more nimble software companies.&lt;br /&gt;&lt;strong&gt;&lt;br /&gt;What does this all mean for business in the third world?&lt;/strong&gt;&lt;br /&gt;&lt;br /&gt;The advantages that MicroISVs enjoy are the same advantages that software companies in the&lt;img style="float:right; margin:0 0 10px 10px;cursor:pointer; cursor:hand;width: 200px; height: 150px;" src="http://2.bp.blogspot.com/_-OLKNV0V3mE/S4Z44PuFFkI/AAAAAAAAAEQ/f3QGljjRb5w/s200/onboffice.jpg" border="0" alt="" id="BLOGGER_PHOTO_ID_5442170107411633730" /&gt; third world have access to.  The level playing field being created does not just apply to size, but geographical location.  Companies in developed countries do not enjoy significant advantages over those in developing countries.&lt;br /&gt;&lt;br /&gt;This means that &lt;strong&gt;innovation and technopreneurship will continue to shift to the third world&lt;/strong&gt;.  We're seeing a lot of new technopreneurial enterprises emerging from China and India – not just outsourcing but the creation of intellectual property.  I'm sure we will see innovation coming from other developing countries like the Philippines soon, for as long as these countries maintain the technical, business and cultural skills in needed to foster these innovations.&lt;br /&gt;&lt;br /&gt;&lt;strong&gt;What can we do so that our country can compete in this new level playing field?&lt;/strong&gt;&lt;br /&gt;&lt;br /&gt;&lt;img style="float:right; margin:0 0 10px 10px;cursor:pointer; cursor:hand;width: 120px; height: 80px;" src="http://1.bp.blogspot.com/_-OLKNV0V3mE/S4Z5Oph-wdI/AAAAAAAAAEY/KpyKbRofDsE/s200/schoolgirl_Philippines.jpg" border="0" alt="" id="BLOGGER_PHOTO_ID_5442170492297331154" /&gt;&lt;strong&gt;The first is to support education.&lt;/strong&gt;  I mean not just for tertiary education in computer science and business.  I also mean basic education in science, math and communication.  Brain power wins in the new era and a country needs to cultivate its intellects to compete.&lt;br /&gt;&lt;br /&gt;&lt;img style="float:right; margin:0 0 10px 10px;cursor:pointer; cursor:hand;width: 160px; height: 107px;" src="http://1.bp.blogspot.com/_-OLKNV0V3mE/S4Z6TNMw7lI/AAAAAAAAAEg/IqWoYQy-hyA/s200/LuckyOliver-1696379-blog-networking.jpg" border="0" alt="" id="BLOGGER_PHOTO_ID_5442171670103125586" /&gt;&lt;strong&gt;The next is that we need to build communities between technologists and businesspeople.&lt;/strong&gt;  There's just not enough interaction between these groups of people.  Business people understand markets and their needs but not how to create solutions to fulfill them.  Technologies know how to create solutions, but not what markets need.  We need to get these people in the same room often enough so that they can start exploring ways to fulfill market needs.&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/21284276-8525032749316890415?l=calenlegaspi.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://calenlegaspi.blogspot.com/feeds/8525032749316890415/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=21284276&amp;postID=8525032749316890415' title='8 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/21284276/posts/default/8525032749316890415'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/21284276/posts/default/8525032749316890415'/><link rel='alternate' type='text/html' href='http://calenlegaspi.blogspot.com/2010/02/five-software-trends-and-what-they-mean.html' title='Five Software Trends and What They Mean for Business in the Third World'/><author><name>Calen Martin D. Legaspi</name><uri>http://www.blogger.com/profile/06661282916270749630</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='21' height='32' src='http://photos1.blogger.com/blogger/5907/2151/1600/calen_pic.jpg'/></author><media:thumbnail xmlns:media='http://search.yahoo.com/mrss/' url='http://2.bp.blogspot.com/_-OLKNV0V3mE/S4Z1z4uGKzI/AAAAAAAAADQ/maJwzbl4xZM/s72-c/JM.gif' height='72' width='72'/><thr:total>8</thr:total></entry><entry><id>tag:blogger.com,1999:blog-21284276.post-7314138193465196015</id><published>2009-11-30T16:00:00.007+08:00</published><updated>2009-11-30T16:56:04.604+08:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='company culture'/><category scheme='http://www.blogger.com/atom/ns#' term='creative conflict'/><title type='text'>The Dubai Meltdown and the Importance of Creative Conflict</title><content type='html'>&lt;p&gt;The &lt;a href="http://www.businessweek.com/globalbiz/content/nov2009/gb20091127_265938.htm"&gt;Dubai meltdown&lt;/a&gt; is another disaster caused by &lt;span class="blsp-spelling-error" id="SPELLING_ERROR_0"&gt;groupthink&lt;/span&gt;.  No one in the emirate was willing to question the soundness of its development plan until it all came crashing down.  &lt;/p&gt;&lt;p&gt;One of the most difficult things in Asian business is encouraging a culture of frankness and the willingness to challenge opinions of one's co-workers, even one's superiors.  In most Asian cultures, conflict is something to be avoided at all cost.  You will almost never hear an outright argument in an Asian boardroom. &lt;br /&gt;&lt;br /&gt;Yet conflict is essential in any healthy organization.  An organizational structure naturally puts people in conflict with one another - Sales is in conflict with Operations since more sales means more of a burden for Operations, at the same time Sales may be selling something that Operations cannot effectively deliver.  Finance is in conflict with other departments as it seeks to control costs, while at the same time it may be hampering the ability of the departments to operate effectively.   And there should be a natural conflict between the CEO and his department heads since it's his role to critique the others' work, while the department heads should question the soundness of the &lt;span class="blsp-spelling-error" id="SPELLING_ERROR_1"&gt;CEO's&lt;/span&gt; overall plans.  &lt;br /&gt;&lt;br /&gt;If people care about their work, they will end up coming into conflict with one another.  Many of these conflicts can be resolved amicably, but not all of them.  Either an outright conflict can occur, or people just bury their disagreements in silence.  In most Asian cultures, an outright conflict is usually taken as a personal attack, and permanently harms working relationships, which is why they're usually avoided.  Burying disagreements in silence is the more common choice, though very little gets resolved in this route.&lt;br /&gt;&lt;br /&gt;The worst case is when people stop caring about their work!  Conflict stops, everyone is enjoying cordial relationships, but a disaster is lurking just around the corner. &lt;br /&gt;&lt;br /&gt;What you want to encourage in your company is a culture of &lt;a href="http://www.futurist.com/archives/creating-your-future/creativeconflict/"&gt;"Creative Conflict"&lt;/a&gt;.  Everyone in the company should come to expect that conflict, even outright arguments, are a natural part of their work environment.  In an environment where everyone cares about their work, each one should be willing to argue their opinion on what they think is best for the company.  Each one in turn should be willing to listen to the logic of &lt;span class="blsp-spelling-error" id="SPELLING_ERROR_2"&gt;another's&lt;/span&gt; argument, argue back if necessary, with the intention not to win but to find the best solution to the issue - something that's not easy to do when tempers are already involved.&lt;br /&gt;&lt;br /&gt;At the end of the day, people should have the attitude of considering arguments as all part of a day's work.  Arguments should never be taken personally.  Two people who just had a yelling match during the afternoon should be able to have a drink together after work.  &lt;br /&gt;&lt;/p&gt;&lt;p&gt;It's a huge cultural leap for most Asian companies to embrace conflict as a part of their culture.  The amount of effort to change people's mindset about conflict is huge since it's ingrained in our upbringing.  However, if you seek an environment where people care about their work and where problems are resolved quickly instead of being swept under a rug (where they continue to grow), a culture of creative conflict is key. &lt;/p&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/21284276-7314138193465196015?l=calenlegaspi.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://calenlegaspi.blogspot.com/feeds/7314138193465196015/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=21284276&amp;postID=7314138193465196015' title='2 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/21284276/posts/default/7314138193465196015'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/21284276/posts/default/7314138193465196015'/><link rel='alternate' type='text/html' href='http://calenlegaspi.blogspot.com/2009/11/dubai-meltdown-and-importance-of.html' title='The Dubai Meltdown and the Importance of Creative Conflict'/><author><name>Calen Martin D. Legaspi</name><uri>http://www.blogger.com/profile/06661282916270749630</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='21' height='32' src='http://photos1.blogger.com/blogger/5907/2151/1600/calen_pic.jpg'/></author><thr:total>2</thr:total></entry><entry><id>tag:blogger.com,1999:blog-21284276.post-8778972007297963993</id><published>2009-11-25T09:06:00.004+08:00</published><updated>2009-11-25T09:22:14.478+08:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='entrepreneurship'/><title type='text'>No to email first thing in the morning?</title><content type='html'>&lt;p&gt;I'm thinking of starting my day by NOT reading emails.  Reading emails just shatters my brain into dozens of pieces.  Just holding all those things in my head keeps me from doing any thinking that involves some level of analysis, such as long-term planning or thinking of solutions to tricky company issues.  &lt;/p&gt;&lt;p&gt;I do my best thinking early in the morning and starting my day by going through my inbox means I waste this optimal thinking-time on knocking down whatever tasks that seem urgent at the time.  This was a survival mechanism I acquired when we were a less-than-twenty-person company, where every hour I wasted in not turning around work into revenue meant life-or-death for the company.  But now that we're at almost a hundred, I now have the unfamiliar luxury of being able to delay a decision by hours or days, and it won't kill the company.  (Transitioning from &lt;span class="blsp-spelling-error" id="SPELLING_ERROR_0"&gt;startup&lt;/span&gt;-survival mode to mid-size-strategic-thinking mode is a regular theme for me.)&lt;/p&gt;&lt;p&gt;So wish me luck on trying to avoid my inbox first thing in the morning!  I hope I succeed. :-)&lt;/p&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/21284276-8778972007297963993?l=calenlegaspi.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://calenlegaspi.blogspot.com/feeds/8778972007297963993/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=21284276&amp;postID=8778972007297963993' title='2 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/21284276/posts/default/8778972007297963993'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/21284276/posts/default/8778972007297963993'/><link rel='alternate' type='text/html' href='http://calenlegaspi.blogspot.com/2009/11/no-to-email-first-thing-in-morning.html' title='No to email first thing in the morning?'/><author><name>Calen Martin D. Legaspi</name><uri>http://www.blogger.com/profile/06661282916270749630</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='21' height='32' src='http://photos1.blogger.com/blogger/5907/2151/1600/calen_pic.jpg'/></author><thr:total>2</thr:total></entry><entry><id>tag:blogger.com,1999:blog-21284276.post-6924638118325940959</id><published>2009-08-24T16:47:00.004+08:00</published><updated>2009-08-24T17:19:34.054+08:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='linux mint gloria'/><category scheme='http://www.blogger.com/atom/ns#' term='ubuntu jaunty'/><category scheme='http://www.blogger.com/atom/ns#' term='sony vaio'/><title type='text'>Sony VAIO freezing when connecting/disconnecting from external monitor (fixed)</title><content type='html'>&lt;p&gt;For the past couple of weeks, my Sony VAIO (VGN-SR35G) would freeze everytime I would connect or disconnect an external monitor or projector.  I was originally on Linux Mint Gloria, then I tried Ubuntu Jaunty, and even tried upgrading to Karmic Alpha 4.  Same thing would happen. &lt;/p&gt;&lt;p&gt;I finally found the fix &lt;a href="https://bugs.launchpad.net/ubuntu/+source/xserver-xorg-video-intel/+bug/319717/comments/35"&gt;here&lt;/a&gt;.  Just add the line to the "kernel" entry in /boot/grub/menu.lst.   See mine below as an example, the part I added was in bold:&lt;br /&gt;&lt;/p&gt;&lt;br /&gt;&lt;pre&gt;&lt;br /&gt;&lt;span style="font-size:78%;"&gt;## ## End Default Options ##&lt;br /&gt;title           Linux Mint 7 Gloria, kernel 2.6.28-11-generic&lt;br /&gt;root            (hd0,0)&lt;br /&gt;kernel          /boot/vmlinuz-2.6.28-11-generic root=/dev/sda1 ro quiet splash &lt;b&gt;acpi_osi="!Windows 2006"&lt;/b&gt;&lt;br /&gt;initrd          /boot/initrd.img-2.6.28-11-generic&lt;br /&gt;quiet&lt;/span&gt;&lt;br /&gt;&lt;/pre&gt;&lt;br /&gt;&lt;p&gt;Thanks to O&amp;amp;B Sysads Onin and Armand for your help!&lt;/p&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/21284276-6924638118325940959?l=calenlegaspi.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://calenlegaspi.blogspot.com/feeds/6924638118325940959/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=21284276&amp;postID=6924638118325940959' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/21284276/posts/default/6924638118325940959'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/21284276/posts/default/6924638118325940959'/><link rel='alternate' type='text/html' href='http://calenlegaspi.blogspot.com/2009/08/for-past-couple-of-weeks-my-sony-vaio.html' title='Sony VAIO freezing when connecting/disconnecting from external monitor (fixed)'/><author><name>Calen Martin D. Legaspi</name><uri>http://www.blogger.com/profile/06661282916270749630</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='21' height='32' src='http://photos1.blogger.com/blogger/5907/2151/1600/calen_pic.jpg'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-21284276.post-3899689652004283472</id><published>2009-07-25T22:46:00.003+08:00</published><updated>2009-07-25T23:01:17.688+08:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='openerp'/><category scheme='http://www.blogger.com/atom/ns#' term='jaunty'/><category scheme='http://www.blogger.com/atom/ns#' term='gloria'/><title type='text'>Got OpenERP Server running on Mint Gloria (Ubuntu Jaunty)</title><content type='html'>&lt;p&gt;Finally successfully ran &lt;span class="blsp-spelling-error" id="SPELLING_ERROR_0"&gt;OpenERP&lt;/span&gt; Server.  Not sure if everything else works yet, but it's running.&lt;/p&gt;&lt;p&gt;I'm on Linux Mint Gloria, which is essentially &lt;span class="blsp-spelling-error" id="SPELLING_ERROR_1"&gt;Ubuntu&lt;/span&gt; Jaunty.  Every time I try to run "&lt;span class="blsp-spelling-error" id="SPELLING_ERROR_2"&gt;openerp&lt;/span&gt;-server", I get this error message:&lt;/p&gt;&lt;p&gt;    ERROR: Import &lt;span class="blsp-spelling-error" id="SPELLING_ERROR_3"&gt;xpath&lt;/span&gt; module &lt;br /&gt;    ERROR: Try to install the old python-&lt;span class="blsp-spelling-error" id="SPELLING_ERROR_4"&gt;xml&lt;/span&gt; package &lt;br /&gt;&lt;/p&gt;&lt;p&gt;Here's my fix:&lt;/p&gt;&lt;ol&gt;&lt;li&gt;Downloaded and installed the .deb of version 5.0.1 of &lt;span class="blsp-spelling-error" id="SPELLING_ERROR_5"&gt;openerp&lt;/span&gt;-server (the Gloria/Jaunty package is v.5.0.0) from &lt;a href="http://packages.debian.org/unstable/main/openerp-server"&gt;packages.debian.org&lt;/a&gt;.  Installed the 5.0.1 client as well.&lt;/li&gt;&lt;li&gt;Created this symbolic link:  &lt;span class="blsp-spelling-error" id="SPELLING_ERROR_6"&gt;sudo&lt;/span&gt; &lt;span class="blsp-spelling-error" id="SPELLING_ERROR_7"&gt;ln&lt;/span&gt; -s /usr/lib/python2.6/dist-packages/oldxml/_xmlplus/utils/boolean.so /usr/lib/python2.6/dist-packages/_xmlplus/utils/boolean.so&lt;/li&gt;&lt;/ol&gt;&lt;p&gt;And it ran!  Still haven't tried anything else but run the server.  Don't know if anything else works.&lt;/p&gt;&lt;p&gt;Thanks to &lt;a href="https://bugs.launchpad.net/ubuntu/+source/openerp-server/+bug/337759"&gt;this thread&lt;/a&gt; for helping figure things out.&lt;/p&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/21284276-3899689652004283472?l=calenlegaspi.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://calenlegaspi.blogspot.com/feeds/3899689652004283472/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=21284276&amp;postID=3899689652004283472' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/21284276/posts/default/3899689652004283472'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/21284276/posts/default/3899689652004283472'/><link rel='alternate' type='text/html' href='http://calenlegaspi.blogspot.com/2009/07/got-openerp-server-running-on-mint.html' title='Got OpenERP Server running on Mint Gloria (Ubuntu Jaunty)'/><author><name>Calen Martin D. Legaspi</name><uri>http://www.blogger.com/profile/06661282916270749630</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='21' height='32' src='http://photos1.blogger.com/blogger/5907/2151/1600/calen_pic.jpg'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-21284276.post-3107827884683881600</id><published>2009-07-21T09:18:00.003+08:00</published><updated>2009-07-21T09:42:00.230+08:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='filipino software developers'/><category scheme='http://www.blogger.com/atom/ns#' term='philippine software industry'/><title type='text'>PSIA Technology Council Blog Aggregator now up!</title><content type='html'>&lt;a onblur="try {parent.deselectBloggerImageGracefully();} catch(e) {}" href="http://4.bp.blogspot.com/_-OLKNV0V3mE/SmUcrTMb-uI/AAAAAAAAAC8/6X3_sf_r_no/s1600-h/PSIA_logo.gif"&gt;&lt;img style="float:right; margin:0 0 10px 10px;cursor:pointer; cursor:hand;width: 170px; height: 52px;" src="http://4.bp.blogspot.com/_-OLKNV0V3mE/SmUcrTMb-uI/AAAAAAAAAC8/6X3_sf_r_no/s400/PSIA_logo.gif" border="0" alt="" id="BLOGGER_PHOTO_ID_5360722461666835170" /&gt;&lt;/a&gt;The &lt;a href="http://psia.org.ph/tech"&gt;PSIA Technology Council blog aggregator&lt;/a&gt; is now up!  So far we only have four feeds but we'll get more soon.  Right now, we have the following:&lt;p&gt;&lt;a href="http://blogs.exist.com/oching/"&gt;Deng Ching&lt;/a&gt;, Project Management Committee Chair for the Apache Archive Project&lt;/p&gt;&lt;p&gt;&lt;a href="http://noisyheads.wordpress.com/"&gt;Mike Mallete&lt;/a&gt;, Philippine Groovy/Grails User Group founder and president, and author of the Grails SoundManager plugin&lt;/p&gt;&lt;p&gt;&lt;a href="http://digitaldelacroix.me/"&gt;Albert de la Cruz&lt;/a&gt;, Platform Strategy Manager of Microsoft Philippines&lt;/p&gt;&lt;p&gt;&lt;a href="http://blog.cplusplus-soup.com/"&gt;Dean Berris&lt;/a&gt;, Boost C++ contributor and high-performance, parallel computing specialist&lt;/p&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/21284276-3107827884683881600?l=calenlegaspi.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://calenlegaspi.blogspot.com/feeds/3107827884683881600/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=21284276&amp;postID=3107827884683881600' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/21284276/posts/default/3107827884683881600'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/21284276/posts/default/3107827884683881600'/><link rel='alternate' type='text/html' href='http://calenlegaspi.blogspot.com/2009/07/psia-technology-council-blog-aggregator.html' title='PSIA Technology Council Blog Aggregator now up!'/><author><name>Calen Martin D. Legaspi</name><uri>http://www.blogger.com/profile/06661282916270749630</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='21' height='32' src='http://photos1.blogger.com/blogger/5907/2151/1600/calen_pic.jpg'/></author><media:thumbnail xmlns:media='http://search.yahoo.com/mrss/' url='http://4.bp.blogspot.com/_-OLKNV0V3mE/SmUcrTMb-uI/AAAAAAAAAC8/6X3_sf_r_no/s72-c/PSIA_logo.gif' height='72' width='72'/><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-21284276.post-3369263416928139426</id><published>2009-07-17T16:07:00.007+08:00</published><updated>2009-07-26T08:25:53.897+08:00</updated><title type='text'>Orange &amp; Bronze is now an Official SpringSource Partner</title><content type='html'>&lt;a href="http://www.springsource.com/"&gt;&lt;img style="float:right; margin:0 0 10px 10px;cursor:pointer; cursor:hand;width: 235px; height: 83px;" src="http://2.bp.blogspot.com/_-OLKNV0V3mE/SmA2w3LEsVI/AAAAAAAAAC0/Vy1LqzInVPI/s400/springsource_logo.gif" border="0" alt="" id="BLOGGER_PHOTO_ID_5359343769642905938" /&gt;&lt;/a&gt;Orange &amp;amp; Bronze became an official &lt;a href="http://www.springsource.com/"&gt;SpringSource&lt;/a&gt; partner last month.  Initially, we were working on separate official partnerships with G2One, maintainers of the &lt;a href="http://orangeandbronze.com/index.php/groovy-grails-outsourcing"&gt;Grails&lt;/a&gt; framework, and SpringSource.  This was as far back as June of last year, where we had some initial conference calls with &lt;a href="http://javajeff.blogspot.com/"&gt;Jeff Brown&lt;/a&gt;, Grails committer and then G2One Director of North American Operations.  I also met with &lt;a href="https://www.springsource.com/about/management"&gt;Mitch Ferguson&lt;/a&gt;, SpringSource VP of Business Development, in August of last year, at the SpringSource headquarters in San Mateo.  Little did we know that SpringSource would acquire G2One!&lt;p&gt;We've been working with the &lt;a href="http://orangeandbronze.com/index.php/spring-outsourcing"&gt;Spring Framework&lt;/a&gt; for such a long time now.  Many of our architects have been working with Spring way before O&amp;amp;B even started.  In fact, even before the Spring Framework came out, I was organizing &lt;a href="http://tech.groups.yahoo.com/group/pinoyjug/"&gt;PinoyJUG&lt;/a&gt; sessions based on &lt;a href="http://www.springone2gx.com/conference/speaker/rod_johnson"&gt;Rod Johnson's&lt;/a&gt; book, &lt;a href="http://www.springsource.com/books/j2eewithoutejb"&gt;"J2EE Development Without EJB"&lt;/a&gt;.  I can safely say that, as a company, we are far-and-away the top experts in the Spring Framework in the Philippines.  Almost all of our projects are based on Spring, and Spring-based technologies such as &lt;a href="http://appfuse.org/"&gt;AppFuse&lt;/a&gt;.  We also run a healthy business in conducting &lt;a href="http://software.orangeandbronze.com/spring-framework-training"&gt;Spring Framework training courses&lt;/a&gt;, with major software development firms as clients.&lt;/p&gt;&lt;p&gt;Early on as well, we were evaluating dynamic languages and frameworks based on them.  We've looked at Ruby on Rails, Scala, and have even used &lt;a href="http://python.org/"&gt;Python&lt;/a&gt; and &lt;a href="http://www.djangoproject.com/"&gt;Django&lt;/a&gt; in production work.  By far however, we've found the most practical framework for enterprise applications to be &lt;a href="http://orangeandbronze.com/index.php/groovy-grails-outsourcing"&gt;Groovy and Grails&lt;/a&gt;, mainly because it was based on mature technologies like Spring and Hibernate.  We have begun using Grails as a replacement for AppFuse when building new enterprise applications.  When the &lt;a href="http://groups.google.com/group/philippine-groovy-users"&gt;Philippine Groovy Users Group (PGUG)&lt;/a&gt; formed, we immediately offered them sponsorship, including freedom to use our office for its meetings.&lt;/p&gt;&lt;p&gt;All-in-all, we've been finding SpringSource technologies the most practical choice for our enterprise software development work.  We have been early adopters of these technologies, and as a company, have established ourselves as the foremost experts in these technologies in the Philippines.  It just made sense to establish official ties with SpringSource.  We have very exciting plans in the coming months revolving around Spring and Grails, and looking forward to closer collaboration with SpringSource.&lt;/p&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/21284276-3369263416928139426?l=calenlegaspi.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://calenlegaspi.blogspot.com/feeds/3369263416928139426/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=21284276&amp;postID=3369263416928139426' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/21284276/posts/default/3369263416928139426'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/21284276/posts/default/3369263416928139426'/><link rel='alternate' type='text/html' href='http://calenlegaspi.blogspot.com/2009/07/orange-bronze-is-now-official.html' title='Orange &amp; Bronze is now an Official SpringSource Partner'/><author><name>Calen Martin D. Legaspi</name><uri>http://www.blogger.com/profile/06661282916270749630</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='21' height='32' src='http://photos1.blogger.com/blogger/5907/2151/1600/calen_pic.jpg'/></author><media:thumbnail xmlns:media='http://search.yahoo.com/mrss/' url='http://2.bp.blogspot.com/_-OLKNV0V3mE/SmA2w3LEsVI/AAAAAAAAAC0/Vy1LqzInVPI/s72-c/springsource_logo.gif' height='72' width='72'/><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-21284276.post-4424265741396390971</id><published>2009-07-17T10:23:00.017+08:00</published><updated>2009-09-04T16:58:23.563+08:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='outsourcing'/><category scheme='http://www.blogger.com/atom/ns#' term='offshoring'/><category scheme='http://www.blogger.com/atom/ns#' term='offshore'/><category scheme='http://www.blogger.com/atom/ns#' term='outsourcing horror stories'/><title type='text'>Cost-Savings in Offshore Software Development Outsourcing</title><content type='html'>How much do you really save when outsourcing your software development offshore?  What are the hidden costs of offshoring?&lt;br /&gt;&lt;p&gt;&lt;strong&gt;Compensation &amp;amp; Benefits Comparison&lt;/strong&gt;&lt;br /&gt;&lt;/p&gt;First of all, let's start with just a compensation and benefits comparison.  When doing your calculation for an onshore hire, don't forget to include the cost of such benefits as social security, healthcare, pension, time off and even bonuses.  According to &lt;a href="http://salary.com/"&gt;Salary.com&lt;/a&gt; (as of this writing), the total average US compensation and benefits package for a Java Developer comes to $112,435 a year.&lt;br /&gt;&lt;br /&gt;An offshore Java Developer in the Philippines, India or China, on the hand, usually costs somewhere around $20/hr, or around $40,000/yr.  This is all-in since you don't cover any benefits.  Your savings on comp &amp;amp; ben alone is $72,435/yr per developer, or 64%.&lt;br /&gt;&lt;p&gt;&lt;strong&gt;Infrastructure &amp;amp; Overhead Considerations&lt;/strong&gt;&lt;/p&gt;&lt;p&gt;After comp &amp;amp; ben, consider your onshore infrastructure  and overhead costs.  This of course varies widely from company to company, but do consider rent, renovations, new furniture, new computers, administrative overhead, exposure to various legal liabilities, training, etc.  And if you're ramping up quickly, consider that a lot of these will be upfront capital expenses that will take a toll on your cashflow.  With offshore outsourcing, these all become the costs of the vendor.&lt;/p&gt;&lt;p&gt;&lt;strong&gt;"Hidden Costs" of Offshoring&lt;/strong&gt;&lt;/p&gt;&lt;p&gt;On the other hand are the often-talked-about "hidden costs" of a distributed, outsourced team.  The cost of these "hidden costs" varies widely - sometimes the cost is not significant, and sometimes the cost is a deal-breaker. What factors affect the cost?  The biggest factor is &lt;u&gt;your choice of outsourcing partner&lt;/u&gt;.  You'd want a partner that is concerned about the increased cost of management on the client side, and has therefore invested in processes, tools, culture and technical ability to lower that cost.  &lt;/p&gt;&lt;p&gt;&lt;strong&gt;Process.  &lt;/strong&gt;Look for an outsourcing partner who's an expert in your preferred development process.  If you're an RUP shop, you should pick a partner who's already mature in their RUP practice.  If you're a Scrum shop, then pick a partner who's mature in Scrum.  If you're a CMMI shop... you get the picture.  It doesn't make sense to try to teach your partner how to do your process - that's way too much of an investment.  Your partner should know your chosen process &lt;em&gt;better than you do&lt;/em&gt;.  &lt;/p&gt;&lt;p&gt;&lt;strong&gt;Culture.  &lt;/strong&gt;It's also important that you look into your potential partner's &lt;em&gt;corporate culture&lt;/em&gt;.  You should look for a company where the desire to serve the customer and solve the customer's problems is present at the individual level. Remember that these people will likely be working while you're sleeping and sleeping while you're working.  They need to be motivated on the individual level to solve problems as they happen and not be complacent to wait for feedback or help from your side before they move.  &lt;/p&gt;&lt;p&gt;Individuals should be assertive enough to proactively communicate and collaborate with your side.  The time difference and distance make it essential for both parties to actively seek collaboration from the other for issues to be resolved quickly, it just doesn't work if those on the vendor side expect for communication and initiative to come mainly from your end.  This is an important point, since most Asian cultures favor &lt;a href="http://www.via-web.de/power-distance.html"&gt;power distance&lt;/a&gt;.  You should look for a company that deliberately fosters a culture of assertiveness, since this is not natural in most Asian countries.  &lt;/p&gt;&lt;p&gt;&lt;strong&gt;Technical Ability. &lt;/strong&gt;Technical ability also contributes to the cost of offshoring.  Your senior developers are not there to oversee the quality of the developers' work, and reviewing work the next day and trying to correct errors via email just doesn't work.  Your vendor must already be experts in the bulk of the technology you use.  For the parts that they don't know, they should be smart enough to figure things out on their own.  You shouldn't have to conduct any training for them unless it's on the domain or some proprietary technologies that are not widely known.&lt;/p&gt;&lt;p&gt;The vendor should have a very strong CTO, or better yet, a strong team of seasoned architects.  The vendor should have its own group of mentors and pinch-hitters who can oversee quality, mentor the more junior developers, and conduct their own internal training programs.&lt;/p&gt;&lt;p&gt;&lt;strong&gt;Conclusion&lt;/strong&gt;&lt;/p&gt;&lt;p&gt;Don't let offshore outsourcing scare you.  Offshore outsourcing has been a strategic factor in the success of many companies, from small startups to large enterprises.  Horror stories do abound, but those are due mainly to the wrong choice of partner.  Find a partner that knows what they're doing and matches your style.  Offshore outsourcing has its well-known issues, but a good outsourcing partner is one who is an expert in these issues, and has invested in the expertise, process, infrastructure and culture to mitigate them.  &lt;/p&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/21284276-4424265741396390971?l=calenlegaspi.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://calenlegaspi.blogspot.com/feeds/4424265741396390971/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=21284276&amp;postID=4424265741396390971' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/21284276/posts/default/4424265741396390971'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/21284276/posts/default/4424265741396390971'/><link rel='alternate' type='text/html' href='http://calenlegaspi.blogspot.com/2009/07/cost-savings-in-offshore-software.html' title='Cost-Savings in Offshore Software Development Outsourcing'/><author><name>Calen Martin D. Legaspi</name><uri>http://www.blogger.com/profile/06661282916270749630</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='21' height='32' src='http://photos1.blogger.com/blogger/5907/2151/1600/calen_pic.jpg'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-21284276.post-2259847388806325844</id><published>2009-06-30T08:54:00.003+08:00</published><updated>2009-06-30T09:00:14.824+08:00</updated><title type='text'>Arthur Tyde Joins Orange &amp; Bronze Board</title><content type='html'>&lt;a onblur="try {parent.deselectBloggerImageGracefully();} catch(e) {}" href="http://4.bp.blogspot.com/_-OLKNV0V3mE/Sklibnu2PtI/AAAAAAAAACU/oF1BStROz3c/s1600-h/tyde_scaled_down.jpg"&gt;&lt;img style="margin: 0pt 10px 10px 0pt; float: left; cursor: pointer; width: 200px; height: 300px;" src="http://4.bp.blogspot.com/_-OLKNV0V3mE/Sklibnu2PtI/AAAAAAAAACU/oF1BStROz3c/s400/tyde_scaled_down.jpg" alt="" id="BLOGGER_PHOTO_ID_5352917858768010962" border="0" /&gt;&lt;/a&gt;Arthur &lt;span class="blsp-spelling-error" id="SPELLING_ERROR_0"&gt;Tyde&lt;/span&gt; III, long-time Silicon Valley serial entrepreneur and investor, agrees to join the Orange &amp;amp; Bronze board of directors.  The senior partners of Orange &amp;amp; Bronze believe Art &lt;span class="blsp-spelling-error" id="SPELLING_ERROR_1"&gt;Tyde&lt;/span&gt; can lend an experienced and global perspective to O&amp;amp;B's business, as well as provide significant access to the Silicon Valley market.&lt;br /&gt;&lt;br /&gt;Arthur &lt;span class="blsp-spelling-error" id="SPELLING_ERROR_2"&gt;Tyde&lt;/span&gt; is an executive with 20 years of IT engineering, management and investment experience, 15 of those as a professional in the Linux &amp;amp; Open Source space.  He is credited by The Economist as the founder of the enterprise Linux services and support industry.&lt;br /&gt;&lt;br /&gt;In 1996 Arthur established the Bay Area (San Francisco &amp;amp; Silicon Valley) Linux Users Group; the first Linux LUG in the USA. Later, in 1998 he raised funding from top tier Silicon Valley venture capitalists (&lt;span class="blsp-spelling-error" id="SPELLING_ERROR_3"&gt;Kleiner&lt;/span&gt; Perkins), recruited the most strategically interesting players in Open Source and launched &lt;span class="blsp-spelling-error" id="SPELLING_ERROR_4"&gt;LinuxCare&lt;/span&gt;, the first company to offer commercial / enterprise class support (21 distributions, 9 hardware architectures), independent certification (&lt;span class="blsp-spelling-error" id="SPELLING_ERROR_5"&gt;LinuxCare&lt;/span&gt; Labs), professional services and training (&lt;span class="blsp-spelling-error" id="SPELLING_ERROR_6"&gt;LinuxCare&lt;/span&gt; University).  &lt;span class="blsp-spelling-error" id="SPELLING_ERROR_7"&gt;LinuxCare&lt;/span&gt; also contributed significantly to the Linux Kernel, SAMBA, &lt;span class="blsp-spelling-error" id="SPELLING_ERROR_8"&gt;PHP&lt;/span&gt;, and many other Open Source projects.&lt;br /&gt;&lt;br /&gt;In addition, &lt;span class="blsp-spelling-error" id="SPELLING_ERROR_9"&gt;Tyde&lt;/span&gt; is credited as the founding sponsor of the Linux Professional Institute (training) and the Free Standards Group, now the Linux Foundation (where he served as &lt;span class="blsp-spelling-error" id="SPELLING_ERROR_10"&gt;CTO&lt;/span&gt; from 2004 through 2005).&lt;br /&gt;&lt;br /&gt;Prior to &lt;span class="blsp-spelling-error" id="SPELLING_ERROR_11"&gt;Linuxcare&lt;/span&gt;, Arthur was an enterprise IT architect for Gap Inc., California State Automobile Association, and a software engineer at IBM. He is a board member or advisor to numerous high profile Linux and Open Source &lt;span class="blsp-spelling-error" id="SPELLING_ERROR_12"&gt;startups&lt;/span&gt;, a California licensed Private Investigator and a private pilot.&lt;br /&gt;&lt;br /&gt;Recently, Arthur co-founded a successful embedded Linux &lt;span class="blsp-spelling-error" id="SPELLING_ERROR_13"&gt;startup&lt;/span&gt; (Sputnik Inc.), consulted for a large software client in the US Pacific Northwest (building their Competitive Enterprise Linux Lab), in China (launching &lt;span class="blsp-spelling-error" id="SPELLING_ERROR_14"&gt;startup&lt;/span&gt; companies) and later, as &lt;span class="blsp-spelling-error" id="SPELLING_ERROR_15"&gt;APAC&lt;/span&gt; General Manager ran the sales and engineering business for &lt;span class="blsp-spelling-error" id="SPELLING_ERROR_16"&gt;Levanta&lt;/span&gt; Inc. Focused on enterprise customers in Japan and Korea; Arthur created sales relationships, partner programs, and designed enterprise infrastructures for such marquee customers as &lt;span class="blsp-spelling-error" id="SPELLING_ERROR_17"&gt;NTT&lt;/span&gt; Telecommunications and Hitachi.&lt;br /&gt;&lt;br /&gt;Arthur has been a computer enthusiast since 1979, graduated from Michigan State University, and is based with his family in Manila, Philippines.&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/21284276-2259847388806325844?l=calenlegaspi.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://calenlegaspi.blogspot.com/feeds/2259847388806325844/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=21284276&amp;postID=2259847388806325844' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/21284276/posts/default/2259847388806325844'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/21284276/posts/default/2259847388806325844'/><link rel='alternate' type='text/html' href='http://calenlegaspi.blogspot.com/2009/06/arthur-tyde-joins-orange-bronze-board.html' title='Arthur Tyde Joins Orange &amp; Bronze Board'/><author><name>Calen Martin D. Legaspi</name><uri>http://www.blogger.com/profile/06661282916270749630</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='21' height='32' src='http://photos1.blogger.com/blogger/5907/2151/1600/calen_pic.jpg'/></author><media:thumbnail xmlns:media='http://search.yahoo.com/mrss/' url='http://4.bp.blogspot.com/_-OLKNV0V3mE/Sklibnu2PtI/AAAAAAAAACU/oF1BStROz3c/s72-c/tyde_scaled_down.jpg' height='72' width='72'/><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-21284276.post-7614336458215323296</id><published>2009-06-20T09:45:00.010+08:00</published><updated>2009-06-21T14:52:54.237+08:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='entrepreneurship'/><category scheme='http://www.blogger.com/atom/ns#' term='Orange and Bronze'/><category scheme='http://www.blogger.com/atom/ns#' term='mission'/><title type='text'>Why I started Orange &amp; Bronze, and what keeps me going.</title><content type='html'>Why did I start this company?  And what are my current motivations?&lt;br /&gt;&lt;br /&gt;I can trace my motivations for starting this company continuing to work for this company to two experiences in college.  The first was wanting to be an engineer involved in R&amp;amp;D, but being frustrated at the near-complete lack of opportunities to do that in the Philippines.  As an engineer, you had two unattractive choices - join the academe and live on a very meager income, or join a company as a "glorified technician", and hope to move to either management or sales someday.&lt;br /&gt;&lt;br /&gt;The second was  being a mission volunteer for CFC Youth for Christ.  Among my many experiences and &lt;span class="blsp-spelling-error" id="SPELLING_ERROR_0"&gt;learnings&lt;/span&gt; there, I witnessed the beginnings of the &lt;a href="http://en.wikipedia.org/wiki/Gawad_Kalinga"&gt;&lt;span class="blsp-spelling-error" id="SPELLING_ERROR_1"&gt;Gawad&lt;/span&gt; &lt;span class="blsp-spelling-error" id="SPELLING_ERROR_2"&gt;Kalinga&lt;/span&gt;&lt;/a&gt; program, and I basically saw how the idea of one man, Tony &lt;span class="blsp-spelling-error" id="SPELLING_ERROR_3"&gt;Meloto&lt;/span&gt; was able to massively change many lives in such a short period of time, through the organization that he led.  Upon leaving CFC-&lt;span class="blsp-spelling-error" id="SPELLING_ERROR_4"&gt;YFC&lt;/span&gt;, I wanted my work to continue to massively affect people's lives.&lt;br /&gt;&lt;br /&gt;So I left college with two goals in mind - to build an organization that would massively affect people's lives, and to be involved in innovative engineering.  Orange &amp;amp; Bronze is the implementation of those goals.  Orange &amp;amp; Bronze's two-fold purpose is to provide innovative careers for engineers and other knowledge workers, and to affect the society it belongs to in a massive way.&lt;br /&gt;&lt;br /&gt;In the "affect society", the area where I think Orange &amp;amp; Bronze can help the most is education.  I'd like the profits of Orange &amp;amp; Bronze to be directed towards programs that would improve education, especially for those who have the potential to either be great engineers and scientists of our country, or great leaders (or both).&lt;br /&gt;&lt;br /&gt;I'd like to start programs to improve the level of science and mathematics education in the primary and secondary level; programs for teach training, and the retention and recognition of competent teachers, and encouraging young people to choose teaching as a profession.  I'd like us to build educational software that will allow the scarce number of teachers we have to be able to multiply their efforts.  I'd like us to provide leadership training talented people in the secondary level, to provide our country with a crop of future leaders.  At some point, I'd even like to build and run our own schools.&lt;br /&gt;&lt;br /&gt;This is what has motivated me to start Orange &amp;amp; Bronze, and what continues to motivate me to take it to its fullest potential.&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/21284276-7614336458215323296?l=calenlegaspi.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://calenlegaspi.blogspot.com/feeds/7614336458215323296/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=21284276&amp;postID=7614336458215323296' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/21284276/posts/default/7614336458215323296'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/21284276/posts/default/7614336458215323296'/><link rel='alternate' type='text/html' href='http://calenlegaspi.blogspot.com/2009/06/why-i-started-orange-bronze-and-what.html' title='Why I started Orange &amp; Bronze, and what keeps me going.'/><author><name>Calen Martin D. Legaspi</name><uri>http://www.blogger.com/profile/06661282916270749630</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='21' height='32' src='http://photos1.blogger.com/blogger/5907/2151/1600/calen_pic.jpg'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-21284276.post-5002140624965441436</id><published>2009-06-18T14:28:00.004+08:00</published><updated>2009-06-18T14:47:18.303+08:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='entrepreneurship'/><category scheme='http://www.blogger.com/atom/ns#' term='communication'/><title type='text'>Watch of for the point when your communication style has to change.</title><content type='html'>O&amp;amp;B is now at about 75 people.  It's come as a violent shock to me several times that a lot of people, even those closest to me in the management team, didn't know or understand what direction I wanted the company to go.  It's led to a lot of very bad arguments within the management team, since many felt that I've made unilateral decisions that affect them greatly, without consulting them or preparing them. &lt;br /&gt;&lt;br /&gt;I've been in the mindset where there were just so few of us, all in the same room, and we'd see each other so often (too often), that we knew what each other was thinking most of the time.  There wasn't any effort needed to inform each other of our plans.  In just a couple of years, this is no longer the case, and it's only lately that I've realized so.&lt;br /&gt;&lt;br /&gt;So now making decisions involves more preparation.  It used to feel like just a steady hike up a solid trail.  Now it feels like I'm walking through a knee-deep muddy marsh - and I need a staff to poke where I plan to take the next step, to make sure I have sure footing when I land my foot there.  Decision-making has become more slow-going, but then again the organization as a whole is doing so much more.  So even if I personally feel that it now takes more effort for me to get things done, more is being done by the entire organization.&lt;br /&gt;&lt;br /&gt;It's important for an entrepreneur to watch for that point when communication shifts from being effortless to having more effort.  That's the time when you have to start designing structures and protocols to make sure people continue to know what's on your mind and are with you in your decisions.&lt;br /&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/21284276-5002140624965441436?l=calenlegaspi.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://calenlegaspi.blogspot.com/feeds/5002140624965441436/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=21284276&amp;postID=5002140624965441436' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/21284276/posts/default/5002140624965441436'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/21284276/posts/default/5002140624965441436'/><link rel='alternate' type='text/html' href='http://calenlegaspi.blogspot.com/2009/06/watch-of-for-point-when-your.html' title='Watch of for the point when your communication style has to change.'/><author><name>Calen Martin D. Legaspi</name><uri>http://www.blogger.com/profile/06661282916270749630</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='21' height='32' src='http://photos1.blogger.com/blogger/5907/2151/1600/calen_pic.jpg'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-21284276.post-5024683660264420406</id><published>2009-03-03T17:51:00.002+08:00</published><updated>2009-03-03T17:55:02.478+08:00</updated><title type='text'>O&amp;B Architect Develops RMI Plugin for JMeter</title><content type='html'>JM Ibañez, O&amp;amp;B software architect, has recently been working on a project where he had to load test a client-server application where interaction between the client (a Swing app) and the server is via RMI. We've released the code to allow JMeter to record RMI calls as well as play them back.&lt;br /&gt;&lt;br /&gt;The code itself is self-contained, and only requires a JMeter binary release (and not the source), and Ant to build.&lt;br /&gt;&lt;br /&gt;Source code is hosted at GitHub at: git://github.com/jmibanez/jmeter-rmi-plugin.git&lt;br /&gt;&lt;br /&gt;Currently, we don't package release tarballs, so you'll have to clone the app from the above URL via git.&lt;br /&gt;&lt;br /&gt;To use, build the JAR file via the 'jar' target, copy the built JAR file to lib/ext inside your JMeter installation, and then copy any required JAR files that your RMI classes will need to lib inside your JMeter installation.&lt;br /&gt;&lt;br /&gt;Features:&lt;br /&gt;&lt;ul&gt;&lt;li&gt;Basic RMI proxy. To capture RMI method calls for a particular object, add the "RMI Proxy" element to the workbench, point the proxy to the actual server's RMI name, and then point your client application to the host and port of the proxy. The proxy will bind the same object name. There are no changes needed on the server end.&lt;/li&gt;&lt;/ul&gt;&lt;ul&gt;&lt;li&gt;Basic RMI sampler. The sampler depends on a BeanShell preprocessor to populate the argument list for each method. Methods are named as 'methodname:argument_list'. You also have to add an "RMI Remote Object Config" element to the thread group, which contains the configuration needed to point the samplers to the proper RMI object.&lt;/li&gt;&lt;/ul&gt;&lt;br /&gt;Current limitations:&lt;br /&gt;&lt;ul&gt;&lt;li&gt;Currently, the RMI Object Config element can only handle one remote object (not multiple RMI objects) in one test plan.&lt;/li&gt;&lt;/ul&gt;&lt;ul&gt;&lt;li&gt;If an exception is thrown by a remote method, the RMI sampler treats that as a sample failure, so methods which use exceptions to signal non-fatal error conditions (e.g. invalid input) will be treated as a sample failure.&lt;/li&gt;&lt;/ul&gt;&lt;ul&gt;&lt;li&gt;The element that the RMI proxy attaches samplers to is not configurable, and the RMI proxy will use the first Recording Controller in the test plan (or the Workbench if no Recording Controllers are found).&lt;/li&gt;&lt;/ul&gt;&lt;ul&gt;&lt;li&gt;The RMI proxy uses introspection and reflection to build the BeanShell preprocessor script to populate RMI sampler method arguments. If the objects exposed via RMI do not follow JavaBean naming conventions or don't have public fields (!!), you will need to edit the preprocessor script by hand to fix this.&lt;/li&gt;&lt;/ul&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/21284276-5024683660264420406?l=calenlegaspi.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://calenlegaspi.blogspot.com/feeds/5024683660264420406/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=21284276&amp;postID=5024683660264420406' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/21284276/posts/default/5024683660264420406'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/21284276/posts/default/5024683660264420406'/><link rel='alternate' type='text/html' href='http://calenlegaspi.blogspot.com/2009/03/o-architect-develops-rmi-plugin-for.html' title='O&amp;B Architect Develops RMI Plugin for JMeter'/><author><name>Calen Martin D. Legaspi</name><uri>http://www.blogger.com/profile/06661282916270749630</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='21' height='32' src='http://photos1.blogger.com/blogger/5907/2151/1600/calen_pic.jpg'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-21284276.post-3576563736784478690</id><published>2008-10-12T06:14:00.002+08:00</published><updated>2008-10-12T06:24:45.024+08:00</updated><title type='text'>Current Readings</title><content type='html'>I'm currently reading &lt;a href="http://as.wiley.com/WileyCDA/WileyTitle/productCd-0471780499.html"&gt;Balanced Scorecard, Step-by-Step, by Paul Niven&lt;/a&gt;.  The Balanced Scorecard is one of the most important management tools of the past century.  It's about identifying the key metrics in your company from every perspective, not just financial.  I'm developing the O&amp;amp;B's Balanced Scorecard as I read it.&lt;br /&gt;&lt;br /&gt;Next on my reading list is &lt;a href="http://www.bbrt.org/resources/bbbook.html"&gt;Beyond Budgeting, by Hope and Fraser&lt;/a&gt;.&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/21284276-3576563736784478690?l=calenlegaspi.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://calenlegaspi.blogspot.com/feeds/3576563736784478690/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=21284276&amp;postID=3576563736784478690' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/21284276/posts/default/3576563736784478690'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/21284276/posts/default/3576563736784478690'/><link rel='alternate' type='text/html' href='http://calenlegaspi.blogspot.com/2008/10/current-readings.html' title='Current Readings'/><author><name>Calen Martin D. Legaspi</name><uri>http://www.blogger.com/profile/06661282916270749630</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='21' height='32' src='http://photos1.blogger.com/blogger/5907/2151/1600/calen_pic.jpg'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-21284276.post-6776416200123149866</id><published>2008-09-25T08:47:00.005+08:00</published><updated>2008-09-26T09:50:12.281+08:00</updated><title type='text'>The 2 Secrets of a Successful Software Consulting Company</title><content type='html'>Seems a lot of software consulting companies don't get it, so we'll give away our "secret".  There's two keys to a successful consulting company:&lt;br /&gt;&lt;ol&gt;&lt;li&gt;Recruitment&lt;/li&gt;&lt;li&gt;Training&lt;/li&gt;&lt;/ol&gt;Some companies try to replace #1 with more of #2.  They settle for second-string or third-string recruits and hope that spending enough money on training will be enough.  This is the approach I see with a lot of the bigger companies.  Let me tell you right now that by our own experience (and we're damn good trainers), all the training in the world won't arm an under-talented person with the decision-making and problem-solving ability that he/she needs in the project.  Furthermore, given the pace of change in software development, you need people who can &lt;span style="font-style: italic;"&gt;train themselves&lt;/span&gt;, otherwise it's a monumental effort to keep their skills relevant.&lt;br /&gt;&lt;br /&gt;Some companies, particularly the smaller ones, try to replace #2 with more of #1.  This is better than the first alternative, since good recruits, while expensive, can usually figure things out by themselves.  The problem is, as you scale out, it's hard to find people who have both the talent &lt;span style="font-style: italic;"&gt;and experience&lt;/span&gt; not to screw up on the job.  I'm not just talking about more expensive salaries, I mean that even if you had all the money in the world there's just not enough of them out there!  So you start recruiting talented people who haven't had much experience yet, and you hope they'll learn on the job.  "After all", many developers-turned-entrepreneurs think, "I learned on the job as well, and look how I turned out."  But these entrepreneurs forget all the screw-ups they made while learning on the job, and they don't know how much these screw-ups cost the company they used to work for, in terms of lost confidence from clients, re-done work, etc.  So now, these talented but raw kids in your company will be learning from their own screw-ups, which you have to pay for.&lt;br /&gt;&lt;br /&gt;So that's it really.  Recruit and train.  And retain.  Okay, that's 3 secrets.&lt;br /&gt;&lt;br /&gt;By the way, &lt;a href="http://orangeandbronze.com/"&gt;O&amp;amp;B&lt;/a&gt; is looking for partner consulting companies both to subcontract work to, and to expand to new markets.  We're more than willing to share our recruitment, training and retention tactics to any company that we partner with.&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/21284276-6776416200123149866?l=calenlegaspi.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://calenlegaspi.blogspot.com/feeds/6776416200123149866/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=21284276&amp;postID=6776416200123149866' title='1 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/21284276/posts/default/6776416200123149866'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/21284276/posts/default/6776416200123149866'/><link rel='alternate' type='text/html' href='http://calenlegaspi.blogspot.com/2008/09/2-secrets-of-successful-software.html' title='The 2 Secrets of a Successful Software Consulting Company'/><author><name>Calen Martin D. Legaspi</name><uri>http://www.blogger.com/profile/06661282916270749630</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='21' height='32' src='http://photos1.blogger.com/blogger/5907/2151/1600/calen_pic.jpg'/></author><thr:total>1</thr:total></entry><entry><id>tag:blogger.com,1999:blog-21284276.post-5919604719767638562</id><published>2008-09-15T08:58:00.004+08:00</published><updated>2008-09-15T09:26:39.022+08:00</updated><title type='text'>First Post in 2-1/2 Months</title><content type='html'>My last blog post was 2-1/2 months ago, apologies to everyone, especially the other O&amp;amp;B people who I encourage to blog without blogging myself!  So what's been happening with me in the past 2-1/2 months...&lt;br /&gt;&lt;ul&gt;&lt;li&gt;Attended the &lt;span class="blsp-spelling-error" id="SPELLING_ERROR_0"&gt;PSIA&lt;/span&gt; US Roadshow.  I met a lot of US business people and got to bond with the top officers of the other &lt;span class="blsp-spelling-error" id="SPELLING_ERROR_1"&gt;PSIA&lt;/span&gt; member companies.  I learned a lot about doing business in the US not just from the US businesspeople but from the other &lt;span class="blsp-spelling-error" id="SPELLING_ERROR_2"&gt;PSIA&lt;/span&gt; members.  I met with potential clients and strategic partners, and one of them is a client now and has expressed interest in growing their team with us even further.&lt;/li&gt;&lt;li&gt;We're moving to a new office!  It'll have more than twice the office space we have now.  We've leased two whole floors at a building at &lt;span class="blsp-spelling-error" id="SPELLING_ERROR_3"&gt;Legaspi&lt;/span&gt; Village, &lt;span class="blsp-spelling-error" id="SPELLING_ERROR_4"&gt;Makati&lt;/span&gt;. &lt;br /&gt;&lt;/li&gt;&lt;li&gt;O&amp;amp;B is now over 50 people. &lt;br /&gt;&lt;/li&gt;&lt;li&gt;We &lt;span class="blsp-spelling-error" id="SPELLING_ERROR_5"&gt;must've&lt;/span&gt; bought 30-50 new books since my last post about books, I've lost track of how many.  I think that this is the first time that software development books were a minority, most of the books were on business and management, as well as some books on the various business domains of our projects. &lt;br /&gt;&lt;/li&gt;&lt;li&gt;We've been conducting a lot of internal training.  We've appointed some new practice heads in the areas of Usability, Web Design &amp;amp; Graphics, and &lt;span class="blsp-spelling-error" id="SPELLING_ERROR_6"&gt;UI&lt;/span&gt; Development (our original practice groups are in Software Development, Project Management &amp;amp; Business Analysis, and the Java Boot Camp).  All the practice heads have been very active in conducting training courses in their respective areas.  I've also been conducting book discussion in the areas of leadership and management. &lt;br /&gt;&lt;/li&gt;&lt;/ul&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/21284276-5919604719767638562?l=calenlegaspi.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://calenlegaspi.blogspot.com/feeds/5919604719767638562/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=21284276&amp;postID=5919604719767638562' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/21284276/posts/default/5919604719767638562'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/21284276/posts/default/5919604719767638562'/><link rel='alternate' type='text/html' href='http://calenlegaspi.blogspot.com/2008/09/first-post-in-2-12-months.html' title='First Post in 2-1/2 Months'/><author><name>Calen Martin D. Legaspi</name><uri>http://www.blogger.com/profile/06661282916270749630</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='21' height='32' src='http://photos1.blogger.com/blogger/5907/2151/1600/calen_pic.jpg'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-21284276.post-3532439117533056659</id><published>2008-07-02T10:17:00.001+08:00</published><updated>2008-07-02T10:19:33.048+08:00</updated><title type='text'>Eastern Telecom</title><content type='html'>We've been complaining to Eastern Telecom about a slowdown in our internet.  &lt;span style="font-style: italic;"&gt;Twice&lt;/span&gt; we've made our engineers available &lt;span style="font-style: italic;"&gt;at midnight&lt;/span&gt; in order for them to conduct remote tests, but they couldn't find the cause of the problem.  We've been asking them to send a technician to our office, and they could've sent one on either of those times because our office is just about 100 feet from theirs!!&lt;br /&gt;&lt;br /&gt;But today, they take the cake.  They finally sent a technician, but DURING OFFICE HOURS!  At 9:45 AM, just as everyone was getting into the groove of their day!!  So now, during what should be their most productive hour, I've got fifty people twiddling their thumbs!!&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/21284276-3532439117533056659?l=calenlegaspi.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://calenlegaspi.blogspot.com/feeds/3532439117533056659/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=21284276&amp;postID=3532439117533056659' title='1 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/21284276/posts/default/3532439117533056659'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/21284276/posts/default/3532439117533056659'/><link rel='alternate' type='text/html' href='http://calenlegaspi.blogspot.com/2008/07/eastern-telecom.html' title='Eastern Telecom'/><author><name>Calen Martin D. Legaspi</name><uri>http://www.blogger.com/profile/06661282916270749630</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='21' height='32' src='http://photos1.blogger.com/blogger/5907/2151/1600/calen_pic.jpg'/></author><thr:total>1</thr:total></entry><entry><id>tag:blogger.com,1999:blog-21284276.post-8955836777747767736</id><published>2008-06-20T11:35:00.004+08:00</published><updated>2008-06-20T13:01:11.060+08:00</updated><title type='text'>New Books</title><content type='html'>New books (thanks JM for buying them while at the US):&lt;br /&gt;&lt;ol&gt;&lt;li&gt;Effective Java, 2nd ed.&lt;/li&gt;&lt;li&gt;Programming Erlang&lt;/li&gt;&lt;li&gt;Beautiful Code&lt;/li&gt;&lt;li&gt;Adobe Flex 3&lt;/li&gt;&lt;li&gt;X-Teams&lt;/li&gt;&lt;li&gt;Bringing Design to Software&lt;/li&gt;&lt;/ol&gt;En Route  from Amazon:&lt;br /&gt;&lt;ol&gt;&lt;li&gt;Critical Testing Processes: Plan, Prepare, Perform, Perfect&lt;spap class="tiny"&gt;&lt;br /&gt;&lt;/spap&gt;&lt;/li&gt;&lt;li&gt;Working Effectively with Legacy Code (Robert C. Martin Series)&lt;spap class="tiny"&gt;&lt;br /&gt;&lt;/spap&gt;&lt;/li&gt;&lt;li&gt;Agile Database Techniques: Effective Strategies for the Agile Software Developer &lt;spap class="tiny"&gt;&lt;/spap&gt;&lt;/li&gt;&lt;li&gt;Pragmatic Software Testing: Becoming an Effective and Efficient Test Professional&lt;spap class="tiny"&gt;&lt;br /&gt;&lt;/spap&gt;&lt;/li&gt;&lt;li&gt;Essential Testing: A Use Case Driven Approach&lt;spap class="tiny"&gt;&lt;br /&gt;&lt;/spap&gt;&lt;/li&gt;&lt;li&gt;A Practitioner's Guide to Software Test Design&lt;spap class="tiny"&gt;&lt;br /&gt;&lt;/spap&gt;&lt;/li&gt;&lt;li&gt;Managing Agile Projects&lt;spap class="tiny"&gt;&lt;/spap&gt;&lt;/li&gt;&lt;li&gt;Happy About Global Software Test Automation: A Discussion of Software Testing for Executives&lt;/li&gt;&lt;li&gt;Lean Software Strategies: Proven Techniques for Managers and Developers&lt;/li&gt;&lt;li&gt;The Elements of Typographic Style&lt;/li&gt;&lt;li&gt;Beyond the C++ Standard Library: An Introduction to Boost&lt;spap class="tiny"&gt;&lt;br /&gt;&lt;/spap&gt;&lt;/li&gt;&lt;li&gt;C++ Common Knowledge: Essential Intermediate Programming&lt;spap class="tiny"&gt;&lt;br /&gt;&lt;/spap&gt;&lt;/li&gt;&lt;li&gt;C++ Template Metaprogramming: Concepts, Tools, and Techniques from Boost and Beyond (C++ In-Depth Series)&lt;spap class="tiny"&gt;&lt;br /&gt;&lt;/spap&gt;&lt;/li&gt;&lt;li&gt;Don't Make Me Think: A Common Sense Approach to Web Usability, 2nd Edition&lt;spap class="tiny"&gt;&lt;br /&gt;&lt;/spap&gt;&lt;/li&gt;&lt;li&gt;Effective C++: 55 Specific Ways to Improve Your Programs and Designs (3rd Edition) (Addison-Wesley Professional Computing Series)&lt;spap class="tiny"&gt;&lt;br /&gt;&lt;/spap&gt;&lt;/li&gt;&lt;li&gt;The C++ Standard Library Extensions: A Tutorial and Reference&lt;spap class="tiny"&gt;&lt;br /&gt;&lt;/spap&gt;&lt;/li&gt;&lt;li&gt;Stylin' with CSS: A Designer's Guide (2nd Edition) (Voices That Matter)&lt;spap class="tiny"&gt;&lt;br /&gt;&lt;/spap&gt;&lt;/li&gt;&lt;li&gt;Bulletproof Web Design: Improving flexibility and protecting against worst-case scenarios with XHTML and CSS (2nd Edition) (Voices That Matter)&lt;spap class="tiny"&gt;&lt;br /&gt;&lt;/spap&gt;&lt;/li&gt;&lt;li&gt;Search Engine Optimization: An Hour a Day&lt;spap class="tiny"&gt;&lt;br /&gt;&lt;/spap&gt;&lt;/li&gt;&lt;li&gt;JavaScript: The Good Parts&lt;/li&gt;&lt;li&gt;Harnessing Hibernate&lt;br /&gt;&lt;/li&gt;&lt;li&gt;C++ Primer Plus (5th Edition)&lt;br /&gt;&lt;/li&gt;&lt;li&gt;Hibernate Made Easy: Simplified Data Persistence with Hibernate and JPA (Java Persistence API) Annotations&lt;/li&gt;&lt;li&gt;The C++ Standard Library: A Tutorial and Reference&lt;/li&gt;&lt;li&gt;Color Index 2: Over 1500 New Color Combinations. For Print and Web Media. CMYK and RGB Formulas.&lt;/li&gt;&lt;li&gt;The CSS Anthology: 101 Essential Tips, Tricks &amp;amp; Hacks&lt;/li&gt;&lt;li&gt;C++ Coding Standards: 101 Rules, Guidelines, and Best Practices (C++ In-Depth Series)&lt;/li&gt;&lt;li&gt;Modern C++ Design: Generic Programming and Design Patterns Applied (C++ In-Depth Series)&lt;/li&gt;&lt;li&gt;Pro JavaScript Design Patterns &lt;/li&gt;&lt;/ol&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/21284276-8955836777747767736?l=calenlegaspi.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://calenlegaspi.blogspot.com/feeds/8955836777747767736/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=21284276&amp;postID=8955836777747767736' title='3 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/21284276/posts/default/8955836777747767736'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/21284276/posts/default/8955836777747767736'/><link rel='alternate' type='text/html' href='http://calenlegaspi.blogspot.com/2008/06/new-books.html' title='New Books'/><author><name>Calen Martin D. Legaspi</name><uri>http://www.blogger.com/profile/06661282916270749630</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='21' height='32' src='http://photos1.blogger.com/blogger/5907/2151/1600/calen_pic.jpg'/></author><thr:total>3</thr:total></entry><entry><id>tag:blogger.com,1999:blog-21284276.post-5469077741616828320</id><published>2008-06-05T08:43:00.003+08:00</published><updated>2008-06-05T08:51:11.168+08:00</updated><title type='text'>O&amp;B Going Into Erlang</title><content type='html'>O&amp;B is seriously going into &lt;a href="http://www.erlang.org/"&gt;Erlang&lt;/a&gt;.  We'll be using it for a system that has very high real-time requirements.  &lt;br /&gt;&lt;br /&gt;Right now, only a small group of people in the company have Erlang skills, but we'll be starting training in Erlang for a larger group of people starting next week.&lt;br /&gt;&lt;br /&gt;If any companies out there would like to consider outsourcing more Erlang work to O&amp;B, please send us a message!  :-)&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/21284276-5469077741616828320?l=calenlegaspi.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://calenlegaspi.blogspot.com/feeds/5469077741616828320/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=21284276&amp;postID=5469077741616828320' title='1 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/21284276/posts/default/5469077741616828320'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/21284276/posts/default/5469077741616828320'/><link rel='alternate' type='text/html' href='http://calenlegaspi.blogspot.com/2008/06/o-going-into-erlang.html' title='O&amp;B Going Into Erlang'/><author><name>Calen Martin D. Legaspi</name><uri>http://www.blogger.com/profile/06661282916270749630</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='21' height='32' src='http://photos1.blogger.com/blogger/5907/2151/1600/calen_pic.jpg'/></author><thr:total>1</thr:total></entry><entry><id>tag:blogger.com,1999:blog-21284276.post-809752931651414556</id><published>2008-06-03T11:10:00.002+08:00</published><updated>2008-06-03T11:14:50.889+08:00</updated><title type='text'>US Roadshow, July 17 - 31</title><content type='html'>I'll be in the US from July 17 - 31 as part of the &lt;a href="http://psiaroadshow.multiply.com/"&gt;PSIA US Roadshow&lt;/a&gt;.  I'm hoping to meet possible new clients for O&amp;B.  In particular, I'm hoping to meet venture capital funded startups who are looking for an outsourcing partner who can provide them with very strong architectural and software engineering guidance.  I'm also hoping to meet possible strategic partners who might be interested in establishing a beachhead for O&amp;B's services.&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/21284276-809752931651414556?l=calenlegaspi.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://calenlegaspi.blogspot.com/feeds/809752931651414556/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=21284276&amp;postID=809752931651414556' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/21284276/posts/default/809752931651414556'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/21284276/posts/default/809752931651414556'/><link rel='alternate' type='text/html' href='http://calenlegaspi.blogspot.com/2008/06/us-roadshow-july-17-31.html' title='US Roadshow, July 17 - 31'/><author><name>Calen Martin D. Legaspi</name><uri>http://www.blogger.com/profile/06661282916270749630</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='21' height='32' src='http://photos1.blogger.com/blogger/5907/2151/1600/calen_pic.jpg'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-21284276.post-6037532185870836627</id><published>2008-05-01T14:47:00.006+08:00</published><updated>2008-05-07T14:59:00.386+08:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='linux'/><title type='text'>Configured Dual-Head By Myself :-)</title><content type='html'>Yey!  I was able to set-up dual-monitor on my newly-formatted laptop all by myself!  I didn't need to ask for help from our great sysads, JM and Ealden.  I can still do sysad work! :-)  It took me 7 hours of my otherwise productive time doing my real job (boring management work)  Thanks a lot to &lt;a href="http://www.thinkwiki.org/wiki/Xorg_RandR_1.2"&gt;the ThinkWiki website&lt;/a&gt;.&lt;br /&gt;&lt;br /&gt;&lt;a onblur="try {parent.deselectBloggerImageGracefully();} catch(e) {}" href="http://1.bp.blogspot.com/_-OLKNV0V3mE/SBlo22Cqe0I/AAAAAAAAABw/1hLgCCASNps/s1600-h/dual-head.png"&gt;&lt;img style="margin: 0pt 10px 10px 0pt; float: left; cursor: pointer;" src="http://1.bp.blogspot.com/_-OLKNV0V3mE/SBlo22Cqe0I/AAAAAAAAABw/1hLgCCASNps/s400/dual-head.png" alt="" id="BLOGGER_PHOTO_ID_5195298936577489730" border="0" /&gt;&lt;/a&gt;&lt;br /&gt;&lt;br /&gt;The key issue I had was setting the "Virtual" entry.  I blindly set it to "2048 2048" like the article said, not knowing that I was setting the &lt;em&gt;total dimension of the two desktops combined&lt;/em&gt;.  I set "Virtual" to "2720 900" and then xrandr worked fine after that.&lt;br /&gt;&lt;br /&gt;Update: Was now able to configure my Logitect Marble Mouse to use the small scroll buttons by following this very simple &lt;a href="http://ubuntuforums.org/showthread.php?t=219894"&gt;this How-To&lt;/a&gt;.&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/21284276-6037532185870836627?l=calenlegaspi.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://calenlegaspi.blogspot.com/feeds/6037532185870836627/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=21284276&amp;postID=6037532185870836627' title='2 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/21284276/posts/default/6037532185870836627'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/21284276/posts/default/6037532185870836627'/><link rel='alternate' type='text/html' href='http://calenlegaspi.blogspot.com/2008/05/configured-dual-head-by-myself.html' title='Configured Dual-Head By Myself :-)'/><author><name>Calen Martin D. Legaspi</name><uri>http://www.blogger.com/profile/06661282916270749630</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='21' height='32' src='http://photos1.blogger.com/blogger/5907/2151/1600/calen_pic.jpg'/></author><media:thumbnail xmlns:media='http://search.yahoo.com/mrss/' url='http://1.bp.blogspot.com/_-OLKNV0V3mE/SBlo22Cqe0I/AAAAAAAAABw/1hLgCCASNps/s72-c/dual-head.png' height='72' width='72'/><thr:total>2</thr:total></entry><entry><id>tag:blogger.com,1999:blog-21284276.post-4589569736040635513</id><published>2008-04-24T14:45:00.005+08:00</published><updated>2008-04-24T16:53:44.180+08:00</updated><title type='text'>Some More Additions to Our Library</title><content type='html'>I was surprised when someone emailed me that he found my &lt;a href="http://calenlegaspi.blogspot.com/2007/10/new-books-at-office.html"&gt;previous post about the books we bought&lt;/a&gt; interesting.  Below are some titles we added to library since then:&lt;br /&gt;&lt;br /&gt;&lt;span style="font-weight: bold;"&gt;Project Management &amp;amp; Agile&lt;/span&gt;&lt;br /&gt;&lt;ul&gt;&lt;li&gt;Implementing Lean Software Development&lt;/li&gt;&lt;li&gt;Continuous Integration -Improving Software Quality and Reducing Risk&lt;/li&gt;&lt;li&gt;Project Management Tool Box&lt;/li&gt;&lt;li&gt;Tools &amp;amp; Techniques for the Practicing Project Manager&lt;/li&gt;&lt;li&gt;Agile Project Management with Scrum&lt;/li&gt;&lt;li&gt;Agile Project Management&lt;/li&gt;&lt;li&gt;Test Driven – Practical TDD &amp;amp; Acceptance TDD for Java Developers&lt;/li&gt;&lt;li&gt;Agile &amp;amp; Iterative Development – A  Manager's Guide&lt;/li&gt;&lt;/ul&gt;&lt;span style="font-weight: bold;"&gt;Computer Science, Fundamentals, Certification&lt;/span&gt;&lt;br /&gt;&lt;ul&gt;&lt;li&gt;The Algorithm Design Manual&lt;/li&gt;&lt;li&gt;Introduction to The Design &amp;amp; Anaylsis of Algorithms - 2nd Edition&lt;/li&gt;&lt;li&gt;Head First SQL&lt;/li&gt;&lt;li&gt;Sun Certified Programmer for Java 5 – Study Guide&lt;/li&gt;&lt;li&gt;Programming Challenges- The Programming Contest Training Manual&lt;br /&gt;&lt;/li&gt;&lt;/ul&gt;&lt;span style="font-weight: bold;"&gt;Frameworks&lt;/span&gt;&lt;br /&gt;&lt;ul&gt;&lt;li&gt;Spring in Action – Second Edition&lt;/li&gt;&lt;li&gt;Java Persistence with Hibernate&lt;/li&gt;&lt;li&gt;EJB 3 In Action&lt;/li&gt;&lt;li&gt;SEAM&lt;/li&gt;&lt;/ul&gt;&lt;span style="font-weight: bold;"&gt;Programming Best Practices&lt;/span&gt;&lt;br /&gt;&lt;ul&gt;&lt;li&gt;Implementation Patterns&lt;/li&gt;&lt;li&gt;High Performance Web Sites&lt;/li&gt;&lt;/ul&gt;&lt;span style="font-weight: bold;"&gt;Interaction Design / UI Design&lt;/span&gt;&lt;br /&gt;&lt;ul&gt;&lt;li&gt;WEB ApplicaitonDesign Handbook- Best Practices for Web -Based Software&lt;/li&gt;&lt;li&gt;Effective Prototyping For Software Makers&lt;/li&gt;&lt;li&gt;Designing The Obvious – A common Sense Approach to Web Application Design&lt;/li&gt;&lt;li&gt;Designing for Interaction- Creating Smart Applications and Clever Devices&lt;/li&gt;&lt;li&gt;Designing Interactions Bill Moggridge&lt;/li&gt;&lt;/ul&gt;&lt;span style="font-weight: bold;"&gt;Systems Administration&lt;/span&gt;&lt;br /&gt;&lt;ul&gt;&lt;li&gt;Essential  System Administration  3rd Edition&lt;/li&gt;&lt;li&gt;Linux  Server Hacks Volume 2&lt;/li&gt;&lt;li&gt;    Tips &amp;amp; Tools for Connecting, Monitoring and Troubleshooting&lt;/li&gt;&lt;/ul&gt;&lt;span style="font-weight: bold;"&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/21284276-4589569736040635513?l=calenlegaspi.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://calenlegaspi.blogspot.com/feeds/4589569736040635513/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=21284276&amp;postID=4589569736040635513' title='1 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/21284276/posts/default/4589569736040635513'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/21284276/posts/default/4589569736040635513'/><link rel='alternate' type='text/html' href='http://calenlegaspi.blogspot.com/2008/04/some-more-additions-to-our-library.html' title='Some More Additions to Our Library'/><author><name>Calen Martin D. Legaspi</name><uri>http://www.blogger.com/profile/06661282916270749630</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='21' height='32' src='http://photos1.blogger.com/blogger/5907/2151/1600/calen_pic.jpg'/></author><thr:total>1</thr:total></entry><entry><id>tag:blogger.com,1999:blog-21284276.post-2962644339711335160</id><published>2008-01-26T14:47:00.000+08:00</published><updated>2008-01-26T14:57:50.096+08:00</updated><title type='text'>Core Processes...</title><content type='html'>&lt;p&gt;Quote for the Day:&lt;br /&gt;&lt;/p&gt;&lt;p&gt;&lt;span style="font-weight:bold;"&gt;"Core processes... are those that differentiate you... so that customers select you over your competition. Everything else is context."&lt;/span&gt; &lt;i&gt;-Geoffrey Moore&lt;/i&gt;&lt;/p&gt;&lt;p&gt;&lt;i&gt;(Taken from &lt;a href="http://aileenapoloatwork.blogspot.com/"&gt;Aileen's&lt;/a&gt; Google presentation.)&lt;/i&gt;&lt;/p&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/21284276-2962644339711335160?l=calenlegaspi.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://calenlegaspi.blogspot.com/feeds/2962644339711335160/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=21284276&amp;postID=2962644339711335160' title='1 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/21284276/posts/default/2962644339711335160'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/21284276/posts/default/2962644339711335160'/><link rel='alternate' type='text/html' href='http://calenlegaspi.blogspot.com/2008/01/core-processes.html' title='Core Processes...'/><author><name>Calen Martin D. Legaspi</name><uri>http://www.blogger.com/profile/06661282916270749630</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='21' height='32' src='http://photos1.blogger.com/blogger/5907/2151/1600/calen_pic.jpg'/></author><thr:total>1</thr:total></entry><entry><id>tag:blogger.com,1999:blog-21284276.post-4172039737116001988</id><published>2008-01-26T14:04:00.000+08:00</published><updated>2008-01-27T08:14:33.534+08:00</updated><title type='text'>Job Sculpting and "The Eight Life Interests"</title><content type='html'>&lt;p&gt;I browsed the artcle entitled "Job Sculpting" in the book "Harvard Business Review on Appraising Employee Performance".  The framework of &lt;i&gt;The Eight Life Interests&lt;/i&gt; had a lot of insights for me.  The article says that each person has between one to three of these life interests which dominate that person's motivations.  It's important to understand the life interests of the people in your team in order to sculpt a career that will keep the person motivated.  I think it's a good framework for O&amp;amp;B to apply in Career Planning for our employees, to better understand each person's motivations.&lt;br /&gt;&lt;/p&gt;&lt;p&gt;The Eight Life Interests are:&lt;br /&gt;&lt;/p&gt;&lt;ul&gt;&lt;li&gt;Application of Technology&lt;br /&gt;&lt;ul&gt;&lt;li&gt;Fondness for learning new technologies and applying them to solve business problems.&lt;br /&gt;&lt;/li&gt;&lt;li&gt;Also applies to people who approach business problems by "taking it apart".&lt;/li&gt;&lt;/ul&gt;&lt;br /&gt;&lt;/li&gt;&lt;li&gt;Quantitative Analysis&lt;br /&gt;&lt;ul&gt;&lt;li&gt;Usually see analysis of numbers as the best way to solve a problem.&lt;/li&gt;&lt;li&gt;Find math work fun.&lt;/li&gt;&lt;li&gt;Examples are those that like to calculate forecasts or investigate ratios.&lt;/li&gt;&lt;li&gt;Sometimes called "Quant Jocks".&lt;/li&gt;&lt;/ul&gt;&lt;br /&gt;&lt;/li&gt;&lt;li&gt;Theory Development and Conceptual Thinking&lt;br /&gt;&lt;ul&gt;&lt;li&gt;Enjoy thinking and talking about ideas.&lt;/li&gt;&lt;li&gt;"Why" is more interesting than "How".&lt;/li&gt;&lt;li&gt;Examples are people who like to create business models, prefer to talk about "the big picture", and enjoy reading academic articles.&lt;/li&gt;&lt;/ul&gt;&lt;br /&gt;&lt;/li&gt;&lt;li&gt;Creative Production&lt;br /&gt;&lt;ul&gt;&lt;li&gt;Enjoy the beginning of projects most, because there are many unknowns and one is able to create something out of nothing.&lt;/li&gt;&lt;li&gt;Often seen as "out-of-the-box" thinkers.&lt;/li&gt;&lt;li&gt;Many entrepreneurs, R&amp;amp;D scientists, and engineers have this life interest.&lt;/li&gt;&lt;/ul&gt;&lt;br /&gt;&lt;/li&gt;&lt;li&gt;Counseling and Mentoring&lt;br /&gt;&lt;ul&gt;&lt;li&gt;Enjoy teaching.&lt;/li&gt;&lt;li&gt;Derive satisfaction from being needed or from helping others succeed.&lt;/li&gt;&lt;/ul&gt;&lt;br /&gt;&lt;/li&gt;&lt;li&gt;Managing Peole and Relationships&lt;br /&gt;&lt;ul&gt;&lt;li&gt;Enjoy dealing with people on a day-to-day basis.&lt;/li&gt;&lt;li&gt;Derive satisfaction from workplace relationships.&lt;/li&gt;&lt;li&gt;Should not be confused with Counseling and Mentoring.&lt;/li&gt;&lt;/ul&gt;&lt;br /&gt;&lt;/li&gt;&lt;li&gt;Enterprise Control&lt;br /&gt;&lt;ul&gt;&lt;li&gt;People who like being in charge.&lt;/li&gt;&lt;li&gt;Happiest when running projects or teams.&lt;/li&gt;&lt;li&gt;Sometimes considered "control freaks".&lt;/li&gt;&lt;/ul&gt;&lt;br /&gt;&lt;/li&gt;&lt;li&gt;Influence Through Language and Ideas&lt;br /&gt;&lt;ul&gt;&lt;li&gt;Most fulfilled when writing or speaking.&lt;/li&gt;&lt;li&gt;Enjoy storytelling, negotiating, persuading.&lt;br /&gt;&lt;/li&gt;&lt;/ul&gt;&lt;/li&gt;&lt;/ul&gt;&lt;p&gt;Personally, I think my interests lie firstly in "Theory Development and Conceptual Thinking", followed by "Creative Production", followed by "Quantitative Analysis". I prefer to work more on such things as strategy formulation and finance.&lt;br /&gt;&lt;/p&gt;&lt;p&gt;Currently however, my job as general manager of a busy start-up leaves me with not much time to pursue tasks along my life interests. It did at first, but as the company grew, all the tactical work took over almost all of my time. It's a good thing that everyone in the management team of O&amp;amp;B is superb, or it would've been much worse for me.  I'm looking forward to a couple of years from now when we're a little bit bigger, where I can hopefully have time for more strategic tasks.&lt;br /&gt;&lt;/p&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/21284276-4172039737116001988?l=calenlegaspi.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://calenlegaspi.blogspot.com/feeds/4172039737116001988/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=21284276&amp;postID=4172039737116001988' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/21284276/posts/default/4172039737116001988'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/21284276/posts/default/4172039737116001988'/><link rel='alternate' type='text/html' href='http://calenlegaspi.blogspot.com/2008/01/job-sculpting-and-eight-life-interests.html' title='Job Sculpting and &quot;The Eight Life Interests&quot;'/><author><name>Calen Martin D. Legaspi</name><uri>http://www.blogger.com/profile/06661282916270749630</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='21' height='32' src='http://photos1.blogger.com/blogger/5907/2151/1600/calen_pic.jpg'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-21284276.post-3438927938771630336</id><published>2008-01-17T15:02:00.000+08:00</published><updated>2008-01-17T15:09:37.090+08:00</updated><title type='text'>12 Rules for Bringing Out the Best in People</title><content type='html'>&lt;p&gt;I'm planning to do an in-house seminar series at the office based on the book, "Bringing Out the Best in People".  Since we're growing extremely fast, it's important that as many people as possible develop or enhance their leadership skills.  As a teaser to the seminar, below is the book's "12 Rules for Bringing Out the Best in People":&lt;br /&gt;&lt;ol&gt;&lt;br /&gt;&lt;li&gt;Expect the best from the people you lead.&lt;br /&gt;&lt;li&gt;Make a thorough study of the other person's needs.&lt;br /&gt;&lt;li&gt;Establish high standards of excellence.&lt;br /&gt;&lt;li&gt;Create an environment where failure is not fatal.&lt;br /&gt;&lt;li&gt;If they are going anywhere near where you want to go, climb on other people's bandwagons.&lt;br /&gt;&lt;li&gt;Employ models to encourage success.&lt;br /&gt;&lt;li&gt;Recognize and applaud achievement.&lt;br /&gt;&lt;li&gt;Employ a mixture of positive and negative reinforcement.&lt;br /&gt;&lt;li&gt;Appeal sparingly to the competitive urge.&lt;br /&gt;&lt;li&gt;Place a premium on collaboration.&lt;br /&gt;&lt;li&gt;Build into the group an allowance for storms.&lt;br /&gt;&lt;li&gt; Take steps to keep your own motivation high.&lt;br /&gt;&lt;/ol&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/21284276-3438927938771630336?l=calenlegaspi.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://calenlegaspi.blogspot.com/feeds/3438927938771630336/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=21284276&amp;postID=3438927938771630336' title='1 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/21284276/posts/default/3438927938771630336'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/21284276/posts/default/3438927938771630336'/><link rel='alternate' type='text/html' href='http://calenlegaspi.blogspot.com/2008/01/12-rules-for-bringing-out-best-in.html' title='12 Rules for Bringing Out the Best in People'/><author><name>Calen Martin D. Legaspi</name><uri>http://www.blogger.com/profile/06661282916270749630</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='21' height='32' src='http://photos1.blogger.com/blogger/5907/2151/1600/calen_pic.jpg'/></author><thr:total>1</thr:total></entry><entry><id>tag:blogger.com,1999:blog-21284276.post-2251042662823038387</id><published>2007-10-28T17:40:00.000+08:00</published><updated>2007-10-28T19:26:45.615+08:00</updated><title type='text'>New Books at the Office!</title><content type='html'>Another shipment of books from Amazon just arrived!  Yet another is en route.&lt;br /&gt;&lt;br /&gt;&lt;u&gt;Development&lt;/u&gt;&lt;ul&gt;&lt;li&gt;xUnit Test Patterns: Refactoring Test Code&lt;/li&gt;&lt;li&gt;Ruby Cookbook&lt;/li&gt;&lt;li&gt;Pro Drupal Development&lt;/li&gt;&lt;/ul&gt;&lt;u&gt;Systems Administration&lt;/u&gt;&lt;ul&gt;&lt;li&gt;Apache Phrasebook&lt;/li&gt;&lt;li&gt;The Official Ubuntu Book&lt;/li&gt;&lt;/ul&gt;&lt;u&gt;Project Management &amp;amp; Business Analysis&lt;/u&gt;&lt;ul&gt;&lt;li&gt;Requirements by Collaboration: Workshops for Defining Needs&lt;/li&gt;&lt;li&gt;Communicating Design: Developing Web Site Documentation for Design and Planning&lt;/li&gt;&lt;li&gt;Ship it! A Practical Guide to Successful Software Projects&lt;/li&gt;&lt;li&gt;UML for the IT Business Analyst: A Practical Guide to Object-Oriented Requirements Gathering&lt;/li&gt;&lt;/ul&gt;&lt;u&gt;UI Design&lt;/u&gt;&lt;ul&gt;&lt;li&gt;Don't Make Me Think: A Common Sense Approach to Web Usability&lt;br /&gt;&lt;/li&gt;&lt;/ul&gt;&lt;u&gt;Management &amp;amp; Leadership&lt;/u&gt;&lt;ul&gt;&lt;li&gt;Winning by Jack Welch&lt;/li&gt;&lt;li&gt;Bringing Out the Best in People: How to Enjoy Helping Others Excel&lt;/li&gt;&lt;li&gt;Financial Statements: A Step-By-Step Guide to Understanding and Creating Financial Reports&lt;/li&gt;&lt;/ul&gt;&lt;u&gt;Others&lt;/u&gt;&lt;ul&gt;&lt;li&gt;The Friendship Factor: How to Get Closer to the People You Care for&lt;/li&gt;&lt;/ul&gt;&lt;u&gt;En Route&lt;/u&gt;&lt;ul&gt;&lt;li&gt;The Design of Sites: Patterns for Creating Winning Web Sites&lt;/li&gt;&lt;li&gt; Core J2EE Patterns: Best Practices and Design Strategies, Second Edition&lt;/li&gt;&lt;li&gt;Business Intelligence Roadmap: The Complete Project Lifecycle for Decision-Support Applications&lt;/li&gt;&lt;li&gt;bash Cookbook: Solutions and Examples for bash Users&lt;/li&gt;&lt;li&gt;Ubuntu Hacks: Tips &amp;amp; Tools for Exploring, Using, and Tuning Linux&lt;/li&gt;&lt;li&gt;Financial Accounting: A Mercifully Brief Introduction&lt;/li&gt;&lt;/ul&gt;Enjoy, O&amp;amp;B people!&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/21284276-2251042662823038387?l=calenlegaspi.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://calenlegaspi.blogspot.com/feeds/2251042662823038387/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=21284276&amp;postID=2251042662823038387' title='1 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/21284276/posts/default/2251042662823038387'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/21284276/posts/default/2251042662823038387'/><link rel='alternate' type='text/html' href='http://calenlegaspi.blogspot.com/2007/10/new-books-at-office.html' title='New Books at the Office!'/><author><name>Calen Martin D. Legaspi</name><uri>http://www.blogger.com/profile/06661282916270749630</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='21' height='32' src='http://photos1.blogger.com/blogger/5907/2151/1600/calen_pic.jpg'/></author><thr:total>1</thr:total></entry><entry><id>tag:blogger.com,1999:blog-21284276.post-2481520795826143146</id><published>2007-10-10T22:37:00.000+08:00</published><updated>2007-10-10T23:01:11.601+08:00</updated><title type='text'>A Place for Engineers - O&amp;B's Mission &amp; Vision</title><content type='html'>&lt;span style="font-style: italic;"&gt;(blogging when I should be working)&lt;/span&gt;&lt;br /&gt;&lt;br /&gt;While I was taking engineering in college, I knew and dreaded what lay ahead of me after graduation - a career of &lt;span style="font-style: italic;"&gt;not&lt;/span&gt; engineering!  In the Philippines, the prospect of actually doing innovative design and development work is rare.  Engineers become glorified technicians, plant managers, or even sales people. &lt;br /&gt;&lt;br /&gt;Coming from a family that encouraged me to be an entrepreneur, I dreamed about creating a company where innovative Filipino engineers would be able to happily pursue innovation.  Graduation came and "practicality" set in, and I took jobs that were anything but innovative.&lt;br /&gt;&lt;br /&gt;Fast-forward to after I discovered programming... After some time in the software industry, I realized that my original dream was reachable, at least for the field of software engineering.  After all, the only assets you needed to do R&amp;amp;D in the software field were computers, unlike in other engineering fields where R&amp;amp;D facilities would cost enormous amounts.&lt;br /&gt;&lt;br /&gt;Fast-forward again, to the time of Orange &amp;amp; Bronze... This is the beginning of what I dreamed - a company where engineers are happily pursuing the things that fulfilled them.  But I'm hoping that it doesn't stop with software engineers.&lt;br /&gt;&lt;br /&gt;Right now, there are a good number of Filipinos who dreamt of becoming innovative engineers and scientists, but are doing something not quite as exciting.  A friend of mine took Molecular Biology in college and did research at the university for a while, but probably sensing no good career path, she took her MBA and now works in a bank. &lt;br /&gt;&lt;br /&gt;I'm hoping that after O&amp;amp;B succeeds in becoming a strong and &lt;span class="blsp-spelling-corrected" id="SPELLING_ERROR_0"&gt;sizable&lt;/span&gt; company that provides a fulfilling environment for software engineers, it can play a part in stimulating other areas of Philippine engineering and science.  I would someday (hopefully within my lifetime) like to see flourishing Filipino industries in such things as robotics, biotechnology and materials science.&lt;br /&gt;&lt;br /&gt;This, in so many words, is the mission and vision of Orange &amp;amp; Bronze.&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/21284276-2481520795826143146?l=calenlegaspi.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://calenlegaspi.blogspot.com/feeds/2481520795826143146/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=21284276&amp;postID=2481520795826143146' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/21284276/posts/default/2481520795826143146'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/21284276/posts/default/2481520795826143146'/><link rel='alternate' type='text/html' href='http://calenlegaspi.blogspot.com/2007/10/place-for-engineers-o-mission-vision.html' title='A Place for Engineers - O&amp;B&apos;s Mission &amp; Vision'/><author><name>Calen Martin D. Legaspi</name><uri>http://www.blogger.com/profile/06661282916270749630</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='21' height='32' src='http://photos1.blogger.com/blogger/5907/2151/1600/calen_pic.jpg'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-21284276.post-7019455361162040240</id><published>2007-09-09T10:46:00.001+08:00</published><updated>2007-09-11T08:35:36.505+08:00</updated><title type='text'>eUML2 by Soyatec (Eclipse Plugin)</title><content type='html'>I'm checking out &lt;a href="http://www.soyatec.com/euml2"&gt;eUML2 from Soyatec&lt;/a&gt;.  We've been looking for a free UML tool to replace Jude.  Jude was a great diagramming tool, but when we wanted to generate code it would represent one-to-many associations as arrays instead of Lists or other collections.  eUML2 had high ratings on &lt;a href="http://eclipse-plugins.2y.net/eclipse/index.jsp"&gt;Eclipse Plugins&lt;/a&gt; so I decided to check it out.&lt;br /&gt;&lt;br /&gt;&lt;a onblur="try {parent.deselectBloggerImageGracefully();} catch(e) {}" href="http://2.bp.blogspot.com/_-OLKNV0V3mE/RuNu4mDmF6I/AAAAAAAAAAk/npOd7r0nha4/s1600-h/euml2.jpg"&gt;&lt;img style="margin: 0px auto 10px; display: block; text-align: center; cursor: pointer;" src="http://2.bp.blogspot.com/_-OLKNV0V3mE/RuNu4mDmF6I/AAAAAAAAAAk/npOd7r0nha4/s400/euml2.jpg" alt="" id="BLOGGER_PHOTO_ID_5108048320935630754" border="0" /&gt;&lt;/a&gt;&lt;br /&gt;&lt;br /&gt;By default, it represented one-to-many associations as java.util.Collections.  You can then modify the Collection to be whatever type you wish by modifying the properties on the association arrow.  I'm still studying how to specify generics with it.&lt;br /&gt;&lt;br /&gt;&lt;span style="font-style: italic;"&gt;Update:&lt;/span&gt;  I learned how to use Generics and other Java 5 features.  Make sure you're in the Java perspective so you'll see the Package View.  On the Package View, right-click the project.  Select eUML2 --&gt; Activate JDK 1.5 features.  After that, when you specify a one-to-many relationship, the Collection created will use generics by default.&lt;br /&gt;&lt;br /&gt;&lt;span style="font-style: italic;"&gt;Note:&lt;/span&gt;  When installing via the Update Manager, make sure you only install the "Free" edition.  Don't check the other two choices.  I made that mistake initially and I ended up with redundant menu items, some of which didn't work.&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/21284276-7019455361162040240?l=calenlegaspi.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://calenlegaspi.blogspot.com/feeds/7019455361162040240/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=21284276&amp;postID=7019455361162040240' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/21284276/posts/default/7019455361162040240'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/21284276/posts/default/7019455361162040240'/><link rel='alternate' type='text/html' href='http://calenlegaspi.blogspot.com/2007/09/euml2-by-soyatec-eclipse-plugin.html' title='eUML2 by Soyatec (Eclipse Plugin)'/><author><name>Calen Martin D. Legaspi</name><uri>http://www.blogger.com/profile/06661282916270749630</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='21' height='32' src='http://photos1.blogger.com/blogger/5907/2151/1600/calen_pic.jpg'/></author><media:thumbnail xmlns:media='http://search.yahoo.com/mrss/' url='http://2.bp.blogspot.com/_-OLKNV0V3mE/RuNu4mDmF6I/AAAAAAAAAAk/npOd7r0nha4/s72-c/euml2.jpg' height='72' width='72'/><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-21284276.post-8369659407069392472</id><published>2007-09-03T11:09:00.000+08:00</published><updated>2007-09-03T11:15:19.562+08:00</updated><title type='text'>New books at the office!</title><content type='html'>We've been buying several books in the past month from Amazon.  Below are some of the books we've bought as well as a link to our wishlist:&lt;br /&gt;&lt;br /&gt;&lt;span style="text-decoration: underline;"&gt;Arrived&lt;/span&gt;&lt;br /&gt;&lt;ul&gt;&lt;li&gt;Applying UML and Patterns: An Introduction to Object-Oriented Analysis and Design and Iterative Development (3rd Edition) &lt;/li&gt;&lt;li&gt;The Rational Unified Process Made Easy: A Practitioner's Guide to Rational Unified Process&lt;br /&gt;&lt;/li&gt;&lt;li&gt;User Stories Applied: For Agile Software Development (The Addison-Wesley Signature Series)&lt;/li&gt;&lt;li&gt;Head First Servlets and JSP: Passing the Sun Certified Web Component Developer Exam (SCWCD) &lt;/li&gt;&lt;li&gt;Data Model Patterns: Conventions of Thought&lt;/li&gt;&lt;li&gt;Software Estimation: Demystifying the Black Art (Best Practices (Microsoft))&lt;/li&gt;&lt;li&gt;The Software Requirements Memory Jogger: A Pocket Guide to Help Software And Business Teams Develop And Manage Requirements (Memory Jogger)&lt;br /&gt;&lt;/li&gt;&lt;li&gt;Use Cases: Requirements in Context, Second Edition&lt;br /&gt;&lt;/li&gt;&lt;li&gt;Succeeding with Use Cases: Working Smart to Deliver Quality (The Addison-Wesley Object Technology Series)&lt;/li&gt;&lt;/ul&gt;&lt;span style="text-decoration: underline;"&gt; En Route&lt;/span&gt;&lt;br /&gt;&lt;ul&gt;&lt;li&gt;Code Complete, Second Edition&lt;/li&gt;&lt;li&gt;Service-Oriented Architecture : A Field Guide to Integrating XML and Web Services&lt;br /&gt;&lt;/li&gt;&lt;li&gt;PHP Solutions: Dynamic Web Design Made Easy (Solutions)&lt;br /&gt;&lt;/li&gt;&lt;li&gt;Domain-Driven Design: Tackling Complexity in the Heart of Software&lt;br /&gt;&lt;/li&gt;&lt;li&gt;JavaScript: The Definitive Guide [Illustrated]&lt;br /&gt;&lt;/li&gt;&lt;li&gt;The Data Warehouse Toolkit: The Complete Guide to Dimensional Modeling (Second Edition)&lt;br /&gt;&lt;/li&gt;&lt;li&gt;JavaScript &amp;amp; DHTML Cookbook&lt;/li&gt;&lt;li&gt;Business Intelligence: The Savvy Manager's Guide (The Savvy Manager's Guides)&lt;br /&gt;&lt;/li&gt;&lt;li&gt;Core Web Application Development with PHP and MySQL (Core Series)&lt;br /&gt;&lt;/li&gt;&lt;li&gt;Enterprise SOA: Service-Oriented Architecture Best Practices (The Coad Series)&lt;br /&gt;&lt;/li&gt;&lt;li&gt;Effective Enterprise Java (Effective Software Development Series)&lt;br /&gt;&lt;/li&gt;&lt;li&gt;Refactoring Databases: Evolutionary Database Design (The Addison-Wesley Signature Series)&lt;br /&gt;&lt;/li&gt;&lt;li&gt;PHP Phrasebook (Developer's Library)&lt;br /&gt;&lt;/li&gt;&lt;li&gt;The Data Warehouse ETL Toolkit: Practical Techniques for Extracting, Cleaning, Conforming and Delivering Data&lt;br /&gt;&lt;/li&gt;&lt;li&gt;PHP Functions Essential Reference&lt;/li&gt;&lt;/ul&gt;Amazon Wishlist:             &lt;a href="http://www.amazon.com/gp/registry/wishlist/O3HM49IYHFDM/"&gt;http://www.amazon.com/gp/registry/wishlist/O3HM49IYHFDM/&lt;/a&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/21284276-8369659407069392472?l=calenlegaspi.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://calenlegaspi.blogspot.com/feeds/8369659407069392472/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=21284276&amp;postID=8369659407069392472' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/21284276/posts/default/8369659407069392472'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/21284276/posts/default/8369659407069392472'/><link rel='alternate' type='text/html' href='http://calenlegaspi.blogspot.com/2007/09/new-books-at-office.html' title='New books at the office!'/><author><name>Calen Martin D. Legaspi</name><uri>http://www.blogger.com/profile/06661282916270749630</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='21' height='32' src='http://photos1.blogger.com/blogger/5907/2151/1600/calen_pic.jpg'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-21284276.post-281372359076240094</id><published>2007-08-27T16:31:00.000+08:00</published><updated>2007-08-27T16:57:57.599+08:00</updated><title type='text'>OT: Looking for muay thai / boxing / mma gym in Makati</title><content type='html'>This is an off-topic post:  Does anyone know of a gym that's easily accessible from the Makati CBD area, that teaches serious Muay Thai, Boxing, or MMA in general?  I'm getting winded without doing anything, so I really need to get some exercise again.  Martial arts has been the only form of exercise that can keep my interest.&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/21284276-281372359076240094?l=calenlegaspi.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://calenlegaspi.blogspot.com/feeds/281372359076240094/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=21284276&amp;postID=281372359076240094' title='1 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/21284276/posts/default/281372359076240094'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/21284276/posts/default/281372359076240094'/><link rel='alternate' type='text/html' href='http://calenlegaspi.blogspot.com/2007/08/ot-looking-for-muai-thai-boxing-mma-gym.html' title='OT: Looking for muay thai / boxing / mma gym in Makati'/><author><name>Calen Martin D. Legaspi</name><uri>http://www.blogger.com/profile/06661282916270749630</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='21' height='32' src='http://photos1.blogger.com/blogger/5907/2151/1600/calen_pic.jpg'/></author><thr:total>1</thr:total></entry><entry><id>tag:blogger.com,1999:blog-21284276.post-6946664205735478278</id><published>2007-08-22T11:04:00.000+08:00</published><updated>2007-08-22T11:44:24.625+08:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='linux'/><title type='text'>Installing Pidgin on Feisty... just install tcllib!</title><content type='html'>I bought a new laptop and installed Feisty on it.  I expected Pidgin to be in the repositories but it wasn't.  A quick google led me to these links:  http://download.ubuntu.pl/_Feisty_Fawn/pidgin/ http://www.ubuntugeek.com/howto-install-pidgin-200-on-ubuntu-feisty-with-plugin-pack.html#more-203 .  I downloaded the .deb files from the first site and began to install them, but dpkg complained about missing tcl libraries.&lt;br /&gt;&lt;br /&gt;I did an aptitude install on "tcllib", ignoring all the warnings and crossed my fingers.  After the install, I saw that the second-to-the-last line of console output was "Setting up pidgin (2.1.1-1) ...".  I checked  my list of programs and sure enough, Pidgin was already installed!&lt;br /&gt;&lt;br /&gt;So that's weird, installing the Standard TCL Library installs Pidgin.  I got what I want but I'm not sure it's proper to package an application with a library.&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/21284276-6946664205735478278?l=calenlegaspi.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://calenlegaspi.blogspot.com/feeds/6946664205735478278/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=21284276&amp;postID=6946664205735478278' title='2 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/21284276/posts/default/6946664205735478278'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/21284276/posts/default/6946664205735478278'/><link rel='alternate' type='text/html' href='http://calenlegaspi.blogspot.com/2007/08/installing-pidgin-on-feisty-just.html' title='Installing Pidgin on Feisty... just install tcllib!'/><author><name>Calen Martin D. Legaspi</name><uri>http://www.blogger.com/profile/06661282916270749630</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='21' height='32' src='http://photos1.blogger.com/blogger/5907/2151/1600/calen_pic.jpg'/></author><thr:total>2</thr:total></entry><entry><id>tag:blogger.com,1999:blog-21284276.post-656178344984253218</id><published>2007-05-21T15:00:00.000+08:00</published><updated>2007-05-21T17:42:30.062+08:00</updated><title type='text'>CRC Exercise Note</title><content type='html'>I'm currently conducting a &lt;a href="http://c2.com/doc/oopsla89/paper.html"&gt;CRC exercise&lt;/a&gt; as part of an OOAD course for a .NET group.  For the first time, we're designing our mock application as a desktop application rather than a webapp.  It's so much clearer!  I didn't have to explain all the layers involved in a web application.  All views were just ordinary classes, not pages and actions and controllers and whatever.  I think I should take this route from now on.&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/21284276-656178344984253218?l=calenlegaspi.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://calenlegaspi.blogspot.com/feeds/656178344984253218/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=21284276&amp;postID=656178344984253218' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/21284276/posts/default/656178344984253218'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/21284276/posts/default/656178344984253218'/><link rel='alternate' type='text/html' href='http://calenlegaspi.blogspot.com/2007/05/crc-exercise-note.html' title='CRC Exercise Note'/><author><name>Calen Martin D. Legaspi</name><uri>http://www.blogger.com/profile/06661282916270749630</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='21' height='32' src='http://photos1.blogger.com/blogger/5907/2151/1600/calen_pic.jpg'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-21284276.post-6221172676658058948</id><published>2007-03-14T14:30:00.000+08:00</published><updated>2007-03-14T14:35:33.508+08:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='News'/><title type='text'>Joel Tanangonan Joins Orange &amp; Bronze Software Labs</title><content type='html'>Joel Tanangonan joins us as CFO of &lt;a href="http://software.orangeandbronze.com"&gt;Orange &amp; Bronze Software Labs&lt;/a&gt;.  Since OBSL is a lot like the Marines in the sense that "everyone is a rifleman", Joel will not just be involved finance and administration but also the operations of the company, providing oversight to business development, project management and business analysis. &lt;br /&gt;&lt;br /&gt;Joel spent five years as an AVP of the IT department of Generali Pilipinas insurance company, overseeing several successful IT projects there.  Over all he has about two decades of experience as a developer and IT manager.&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/21284276-6221172676658058948?l=calenlegaspi.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://calenlegaspi.blogspot.com/feeds/6221172676658058948/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=21284276&amp;postID=6221172676658058948' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/21284276/posts/default/6221172676658058948'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/21284276/posts/default/6221172676658058948'/><link rel='alternate' type='text/html' href='http://calenlegaspi.blogspot.com/2007/03/joel-tanangonan-joins-orange-bronze.html' title='Joel Tanangonan Joins Orange &amp; Bronze Software Labs'/><author><name>Calen Martin D. Legaspi</name><uri>http://www.blogger.com/profile/06661282916270749630</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='21' height='32' src='http://photos1.blogger.com/blogger/5907/2151/1600/calen_pic.jpg'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-21284276.post-2009875684902600300</id><published>2007-03-14T14:26:00.000+08:00</published><updated>2007-03-14T17:00:10.403+08:00</updated><title type='text'>Sorting Out Our Priorities (the company's and mine)</title><content type='html'>I'm writing this to get my own head organized.  Everyday, when I start my day, there are so many things that seem to scream "urgent" at me.  I need to figure out which of them are the most important.  We're at a point where several projects are about to end and several more look like they're about to start. &lt;br /&gt;&lt;br /&gt;Let me see if I can parse things along functional lines:&lt;br /&gt;&lt;br /&gt;Marketing:&lt;br /&gt;&lt;ul&gt;&lt;li&gt;Looks like marketing might need to take a bit of a lower priority for a while.  We already have quite a bit of work ahead of us and I've in fact diverted one marketing resource into business analysis already.  Priority now is implementation.&lt;/li&gt;&lt;/ul&gt;Recruitment:&lt;br /&gt;&lt;ul&gt;&lt;li&gt;We definitely need to expand.  Looks like I'll need to personally get involved here to get more good developers in the door.&lt;br /&gt;&lt;/li&gt;&lt;/ul&gt;Operations:&lt;br /&gt;&lt;ul&gt;&lt;li&gt;I'm looking forward to doing project management and some design work again, and hopefully even a significant amount of coding.  Today and tomorrow, in fact, I'll be reviewing some of the source code sent by a client.&lt;/li&gt;&lt;/ul&gt;&lt;ul&gt;&lt;li&gt;We need to squeeze in at least one day to do a &lt;a href="http://en.wikipedia.org/wiki/Retrospective#Software_engineering"&gt;retrospective &lt;/a&gt;on our operations so far, so we can improve the way we work.&lt;br /&gt;&lt;/li&gt;&lt;/ul&gt;Finance:&lt;br /&gt;&lt;ul&gt;&lt;li&gt;Given that we need to expand, I'll need to get some cash in to support this expansion.  I expect I'll need to buy more hardware, maybe get some more office space, and other assets like airconditioners, furniture, and teleconferencing facilities.&lt;br /&gt;&lt;/li&gt;&lt;/ul&gt;Personally, I think my time should be best directed at recruitment and at operations.  I need to shake my networks to recruit some new developers.  I need to go over the requirements of the various projects in the pipeline and make sure that all the analysis work and coordination with the prospects are getting done properly.  And I need to find time to learn &lt;a href="http://calenlegaspi.blogspot.com/2007/02/my-study-list-looking-for-good-class.html"&gt;all the technologies and tools we'll be using&lt;/a&gt; for the next projects!  First on my list are &lt;a href="http://maven.apache.org/"&gt;Maven 2&lt;/a&gt; and &lt;a href="http://appfuse.org/"&gt;AppFuse 2&lt;/a&gt;.  Then probably I'll study &lt;a href="http://cruisecontrol.sourceforge.net/"&gt;CruiseControl &lt;/a&gt;administration, or maybe I'll look at &lt;a href="http://maven.apache.org/continuum/"&gt;Continuum&lt;/a&gt;.&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/21284276-2009875684902600300?l=calenlegaspi.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://calenlegaspi.blogspot.com/feeds/2009875684902600300/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=21284276&amp;postID=2009875684902600300' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/21284276/posts/default/2009875684902600300'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/21284276/posts/default/2009875684902600300'/><link rel='alternate' type='text/html' href='http://calenlegaspi.blogspot.com/2007/03/sorting-out-our-priorities-companys-and.html' title='Sorting Out Our Priorities (the company&apos;s and mine)'/><author><name>Calen Martin D. Legaspi</name><uri>http://www.blogger.com/profile/06661282916270749630</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='21' height='32' src='http://photos1.blogger.com/blogger/5907/2151/1600/calen_pic.jpg'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-21284276.post-7610419220295953299</id><published>2007-03-07T02:42:00.000+08:00</published><updated>2007-03-07T02:48:10.315+08:00</updated><title type='text'>JM Ibanez on Hibernate at next PinoyJUG meeting</title><content type='html'>&lt;a href="http://software.orangeandbronze.com/"&gt;O&amp;B&lt;/a&gt; partner and software architect &lt;a href="http://jmibanez.livejournal.com/"&gt;JM Ibanez&lt;/a&gt; will be speaking at &lt;a href="http://tech.groups.yahoo.com/group/pinoyjug/message/15360"&gt;this Friday's at PinoyJUG meeting&lt;/a&gt; regarding the &lt;a href="http://hibernate.org/"&gt;Hibernate ORM framework&lt;/a&gt;.   Should be a good one, looking forward to it.  Admission is free so do attend if you can.&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/21284276-7610419220295953299?l=calenlegaspi.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://calenlegaspi.blogspot.com/feeds/7610419220295953299/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=21284276&amp;postID=7610419220295953299' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/21284276/posts/default/7610419220295953299'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/21284276/posts/default/7610419220295953299'/><link rel='alternate' type='text/html' href='http://calenlegaspi.blogspot.com/2007/03/jm-ibanez-on-hibernate-at-next-pinoyjug.html' title='JM Ibanez on Hibernate at next PinoyJUG meeting'/><author><name>Calen Martin D. Legaspi</name><uri>http://www.blogger.com/profile/06661282916270749630</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='21' height='32' src='http://photos1.blogger.com/blogger/5907/2151/1600/calen_pic.jpg'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-21284276.post-1810670399927843105</id><published>2007-02-27T16:32:00.000+08:00</published><updated>2007-03-01T02:21:45.040+08:00</updated><title type='text'>Entity vs Value Object</title><content type='html'>I&amp;#39;ve been browsing &amp;quot;Domain Driven Design&amp;quot; by Eric Evans lately.  It &lt;br&gt;corrected one of the misconceptions I&amp;#39;ve held, which is the difference &lt;br&gt;between an Entity and a Value Object.  I used to think they were the &lt;br&gt;same thing, but that an Entity was just a more important class in the &lt;br&gt;domain model than a Value Object.  But according to the book, if I &lt;br&gt;understood it correctly, the main difference is identity.  For an &lt;br&gt;Entity, its identity is important, whereas for Value Objects, its &lt;br&gt;identity does not.  Whether you use the same instance of a VO or two &lt;br&gt;different instances, it doesn&amp;#39;t matter for as long as the value(s) &lt;br&gt;within the VO are the same.  However, for an Entity, one instance of an &lt;br&gt;Entity is not interchangeable for another. &lt;p&gt;The example used for an Entity was TransactionHistory.  Each Customer &lt;br&gt;has a TransactionHistory that cannot be exchanged for another instance &lt;br&gt;of TransactionHistory.&lt;p&gt;Address, on the other hand, is a Value Object.  It usually doesn&amp;#39;t &lt;br&gt;matter if one is using the same instance of an Address object or &lt;br&gt;different instances, for as long as the values (street, city, zip code, &lt;br&gt;etc) are the same.&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/21284276-1810670399927843105?l=calenlegaspi.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://calenlegaspi.blogspot.com/feeds/1810670399927843105/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=21284276&amp;postID=1810670399927843105' title='5 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/21284276/posts/default/1810670399927843105'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/21284276/posts/default/1810670399927843105'/><link rel='alternate' type='text/html' href='http://calenlegaspi.blogspot.com/2007/02/entity-vs-value-object_27.html' title='Entity vs Value Object'/><author><name>Calen Martin D. Legaspi</name><uri>http://www.blogger.com/profile/06661282916270749630</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='21' height='32' src='http://photos1.blogger.com/blogger/5907/2151/1600/calen_pic.jpg'/></author><thr:total>5</thr:total></entry><entry><id>tag:blogger.com,1999:blog-21284276.post-3109102455504392555</id><published>2007-02-21T18:55:00.000+08:00</published><updated>2007-02-21T19:02:40.373+08:00</updated><title type='text'>Trying to be the next Google, especially in one way...</title><content type='html'>We're trying to be the next Google, at least in the way we take care of staff:  &lt;a href="http://www.youtube.com/watch?v=j6h-gm01Fb0"&gt;http://www.youtube.com/watch?v=j6h-gm01Fb0&lt;/a&gt;  :-)&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/21284276-3109102455504392555?l=calenlegaspi.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://calenlegaspi.blogspot.com/feeds/3109102455504392555/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=21284276&amp;postID=3109102455504392555' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/21284276/posts/default/3109102455504392555'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/21284276/posts/default/3109102455504392555'/><link rel='alternate' type='text/html' href='http://calenlegaspi.blogspot.com/2007/02/trying-to-be-next-google-especially-in.html' title='Trying to be the next Google, especially in one way...'/><author><name>Calen Martin D. Legaspi</name><uri>http://www.blogger.com/profile/06661282916270749630</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='21' height='32' src='http://photos1.blogger.com/blogger/5907/2151/1600/calen_pic.jpg'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-21284276.post-1444903653837314921</id><published>2007-02-21T14:21:00.000+08:00</published><updated>2007-02-21T14:26:27.237+08:00</updated><title type='text'>Looking for RFID Vendor</title><content type='html'>O&amp;B is looking for a company that can provide us with RFID technology for use in inventory systems.  Please email business-dev AT orangeandbronze DOT com if you can help us or if you can refer someone who can.&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/21284276-1444903653837314921?l=calenlegaspi.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://calenlegaspi.blogspot.com/feeds/1444903653837314921/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=21284276&amp;postID=1444903653837314921' title='1 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/21284276/posts/default/1444903653837314921'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/21284276/posts/default/1444903653837314921'/><link rel='alternate' type='text/html' href='http://calenlegaspi.blogspot.com/2007/02/looking-for-rfid-vendor.html' title='Looking for RFID Vendor'/><author><name>Calen Martin D. Legaspi</name><uri>http://www.blogger.com/profile/06661282916270749630</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='21' height='32' src='http://photos1.blogger.com/blogger/5907/2151/1600/calen_pic.jpg'/></author><thr:total>1</thr:total></entry><entry><id>tag:blogger.com,1999:blog-21284276.post-8928183648845834392</id><published>2007-02-18T16:01:00.000+08:00</published><updated>2007-02-19T09:17:16.367+08:00</updated><title type='text'>How Big Do We Want To Grow?  - Mid-Term Vision of O&amp;B</title><content type='html'>Butch and I were once talking about "how big do we want to grow"?  Given that we grew from two to over twenty in less than a year, that was an urgent question to answer.  Definitely, neither of us wanted our company to be another Accenture - thousands of anonymous coders in a bureaucratic environment.&lt;br /&gt;&lt;br /&gt;Our vision is to have a crack team of fifty or so people.  We'll retain the good mix we have of not just sharp software engineers and architects but also expert business analysts and project managers.  We'd like to be a consulting company in the true sense of the word "consulting" - people brought in to lend expertise to special problems, and not the code-monkey-for-hire-per-man-hour type of consulting company.  We want it small because we want to take part in the experience of learning as a team - being able to assimilate the learnings we get from our projects, be it business domain knowledge, technology or process, and have it permeate throughout and be retained by the entire organization.&lt;br /&gt;&lt;br /&gt;On the slightly longer term, we'd like most of the current people we have now to be the leaders of future subsidiaries that we'd like to set up around products or specialized services.  For example, if we build an ERP-type of product, we'll eventually spin it off as a separate company and have the core developers, business analysts and marketing people to be the initial leaders of this new organization.  We'll still retain the fifty-person core consulting group - we'd probably have people wear two hats as officers of a subsidiary and advisors to other consultants - because we'd still like to retain the cross-pollination of learnings from one group to another.&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/21284276-8928183648845834392?l=calenlegaspi.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://calenlegaspi.blogspot.com/feeds/8928183648845834392/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=21284276&amp;postID=8928183648845834392' title='1 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/21284276/posts/default/8928183648845834392'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/21284276/posts/default/8928183648845834392'/><link rel='alternate' type='text/html' href='http://calenlegaspi.blogspot.com/2007/02/how-big-do-we-want-to-grow-mid-term.html' title='How Big Do We Want To Grow?  - Mid-Term Vision of O&amp;B'/><author><name>Calen Martin D. Legaspi</name><uri>http://www.blogger.com/profile/06661282916270749630</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='21' height='32' src='http://photos1.blogger.com/blogger/5907/2151/1600/calen_pic.jpg'/></author><thr:total>1</thr:total></entry><entry><id>tag:blogger.com,1999:blog-21284276.post-8152021089027076253</id><published>2007-02-16T15:51:00.000+08:00</published><updated>2007-02-16T16:20:23.704+08:00</updated><title type='text'>My Study List / Looking for good class-diagram tool</title><content type='html'>I'm looking forward to going back into development, or at least project management, next month.  I've been caught up in a lot of administrative responsibilities since the company's work started to pick-up, which was about a year ago.  But now one of our partners, Joel Tanangonan, will be joining us full-time.  He's a seasoned developer and project manager but also someone with a strong management background and I'm glad he's coming onboard to share in the senior management tasks.  We've got some important projects coming up and I'll probably need to take charge of one of the teams or at least closely oversee one.&lt;br /&gt;&lt;br /&gt;I'm rusty though, so I've got to brush up on the tools and technologies we've standardized on:&lt;br /&gt;&lt;ul&gt;&lt;li&gt;&lt;a href="http://springframework.org"&gt;Spring 2&lt;/a&gt;&lt;/li&gt;&lt;li&gt;&lt;a href="http://hibernate.org"&gt;Hibernate 3&lt;/a&gt;&lt;/li&gt;&lt;li&gt;&lt;a href="http://struts.apache.org/2.x/"&gt;Struts 2&lt;/a&gt; / &lt;a href="http://www.opensymphony.com/webwork/"&gt;Webwork&lt;/a&gt;&lt;/li&gt;&lt;li&gt;&lt;a href="http://maven.apache.org/"&gt;Maven 2&lt;/a&gt;&lt;/li&gt;&lt;li&gt;&lt;a href="http://www.acegisecurity.org/"&gt;Acegi&lt;/a&gt;&lt;/li&gt;&lt;li&gt;&lt;a href="http://getahead.ltd.uk/dwr"&gt;DWR&lt;/a&gt;&lt;/li&gt;&lt;li&gt;&lt;a href="http://appfuse.org/"&gt;AppFuse 2&lt;/a&gt;&lt;/li&gt;&lt;li&gt;&lt;a href="http://www.eclipse.org/mylar/"&gt;Mylar&lt;/a&gt;&lt;/li&gt;&lt;li&gt;&lt;a href="http://cruisecontrol.sourceforge.net/"&gt;CruiseControl&lt;/a&gt;&lt;/li&gt;&lt;/ul&gt;I've got a lot of studying to do. :-)  By the way, can anyone recommend a good cheap/free tool for creating class diagrams, generating Java classes from them, and round-tripping the modified Java code back into the class diagrams?  Something with good support for concurrent modifications by team members will be a big plus.&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/21284276-8152021089027076253?l=calenlegaspi.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://calenlegaspi.blogspot.com/feeds/8152021089027076253/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=21284276&amp;postID=8152021089027076253' title='3 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/21284276/posts/default/8152021089027076253'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/21284276/posts/default/8152021089027076253'/><link rel='alternate' type='text/html' href='http://calenlegaspi.blogspot.com/2007/02/my-study-list-looking-for-good-class.html' title='My Study List / Looking for good class-diagram tool'/><author><name>Calen Martin D. Legaspi</name><uri>http://www.blogger.com/profile/06661282916270749630</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='21' height='32' src='http://photos1.blogger.com/blogger/5907/2151/1600/calen_pic.jpg'/></author><thr:total>3</thr:total></entry><entry><id>tag:blogger.com,1999:blog-21284276.post-5176742315310079960</id><published>2006-12-20T03:29:00.000+08:00</published><updated>2006-12-20T04:12:42.014+08:00</updated><title type='text'>Another Christmas in the Trenches</title><content type='html'>It's less than a week before Christmas and O&amp;B is still working at full capacity!  We've even taken on several contractors to help us with all the work.  We have two concurrent training engagements going on (each more than a month long) and two concurrent projects.   Good for our bottom line, bad for our health! :-)  Next year will probably see us attempt to be a lot more picky with our projects to give people time to rest... so far I haven't been successful in spacing out our projects because we're already booked solid for training until early February!&lt;br /&gt;&lt;br /&gt;I've been spending quite a bit of time interviewing possible hires the past couple of weeks.  None of them really wowed me but many showed eagerness to learn.  &lt;a href="http://www.joelonsoftware.com/articles/GuerrillaInterviewing3.html"&gt;According to Joel on Software&lt;/a&gt;, you're only supposed to hire people who wow you.  However, maybe I can accommodate a few diamonds-in-the-rough... I think we have a &lt;a href="http://software.orangeandbronze.com/services/trainings"&gt;great training program&lt;/a&gt;, and so far the people we've sent through it who have both talent and eagerness have shined very brightly - I've had clients say that our guys with less than a year's experience are sharper and more productive than the other contractors they've hired with more than five years' experience!  I'm still going to be quite picky though... I think I'll hire no more than two or three people from the current batch of applicants.&lt;br /&gt;&lt;br /&gt;I'm very happy, too, that I'm receiving interest in student internships.  Not just the formal internships organized by schools, but also some students seeking internships out of their own initiative!  The latter kind is definitely the kind of driven people we'd like to have in O&amp;B.  We're lucky to have &lt;a href="http://puzzledd.wordpress.com/"&gt;Diane Gonzales&lt;/a&gt; onboard as our first student intern, who approached us by her own initiative.  She's also quite happy with the training and exposure she's getting.  We're hoping to have more like her.&lt;br /&gt;&lt;br /&gt;Next year should be the year we transition from a "guerrilla" organization to a more professional organization.  We have a new CFO onboard, a new accountant, and a new marketing officer, which should allow us to operate with more elegance and polish.  We're still the same  independent, non-conformist, opinionated and highly-expressive bunch of people, but now with a lot more slick and stride.&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/21284276-5176742315310079960?l=calenlegaspi.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://calenlegaspi.blogspot.com/feeds/5176742315310079960/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=21284276&amp;postID=5176742315310079960' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/21284276/posts/default/5176742315310079960'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/21284276/posts/default/5176742315310079960'/><link rel='alternate' type='text/html' href='http://calenlegaspi.blogspot.com/2006/12/another-christmas-in-trenches.html' title='Another Christmas in the Trenches'/><author><name>Calen Martin D. Legaspi</name><uri>http://www.blogger.com/profile/06661282916270749630</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='21' height='32' src='http://photos1.blogger.com/blogger/5907/2151/1600/calen_pic.jpg'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-21284276.post-945641863349598549</id><published>2006-12-16T20:11:00.001+08:00</published><updated>2006-12-20T04:23:38.344+08:00</updated><title type='text'>Trying to Popularize a Two-Phased Approach to Fixed-Bid Projects</title><content type='html'>Lately, when asked for proposals for fixed-bid projects, I've been trying to convince prospects to take a two-phased approach. The first phase would be some sort of a feasibility study, to make a more precise cost of the second phase. Below is a discussion of how this two-phased approach would go. (FYI, I haven't been successful at convincing prospects so far.)&lt;br /&gt;&lt;br /&gt;The first phase would correspond to RUP's &lt;a href="http://en.wikipedia.org/wiki/RUP#Inception_phase"&gt;Inception &lt;/a&gt;and &lt;a href="http://en.wikipedia.org/wiki/RUP#Elaboration_phase"&gt;Elaboration &lt;/a&gt;phases.  The duration of this phase can be anywhere from one week to three months, depending on the scale of the project.  The team can be as small as two people -  one architect and one business analyst - and the occasional help of a user-interface designer.&lt;br /&gt;&lt;br /&gt;The goals of this phase would be as follows:&lt;br /&gt;&lt;ul&gt;&lt;li&gt;Business requirements analysis.&lt;/li&gt;&lt;li&gt;Architectural design and      prototyping.&lt;/li&gt;&lt;li&gt;Project plan, including      schedule and cost estimates.&lt;/li&gt;&lt;/ul&gt;Note that this is &lt;span style="font-style: italic;"&gt;not waterfall&lt;/span&gt;.  Design will be validated by working code and automated tests.&lt;br /&gt;&lt;br /&gt;The benefits to the client will be as follows:&lt;br /&gt;&lt;ul&gt;&lt;li&gt;Less "padding" on construction estimates.&lt;/li&gt;&lt;li&gt;A chance to decide if the project is worth pursuing before engaging in a more expensive commitment.&lt;/li&gt;&lt;li&gt;The client can choose to use a different contracting firm than the ones that did the initial phase.  The client will have business requirements, an initial codebase, and a project plan which another contractor can start with.&lt;/li&gt;&lt;/ul&gt;The benefits to us, on the other hand, are avoiding gross underestimation a project's cost, and avoiding scope creep during the construction phase of the project.&lt;br /&gt;&lt;br /&gt;I'm trying to think of a good name for this phase, something that business people and traditional IT people can appreciate quickly.  I've thought of calling it the "Feasibility Phase" (ugh), the "Business Analysis and Design Phase" (B.A.D.?), or the "Analysis and Architecture Phase" (A.A.A.?  A.A.P.?).&lt;br /&gt;&lt;br /&gt;The second phase, would map to RUP's &lt;a href="http://en.wikipedia.org/wiki/RUP#Construction_phase"&gt;Construction &lt;/a&gt;and &lt;a href="http://en.wikipedia.org/wiki/RUP#Transition_phase"&gt;Transition &lt;/a&gt;phases.  Again, this is &lt;span style="font-style: italic;"&gt;not waterfall&lt;/span&gt;.  Delivery will be in regular &lt;a href="http://en.wikipedia.org/wiki/RUP#Develop_software_iteratively"&gt;&lt;span style="font-style: italic;"&gt;iterations&lt;/span&gt;&lt;/a&gt;, say every month or every two weeks.  The client will be able to test working code after each iteration, and can thus are able to give their feedback in short cycles.&lt;br /&gt;&lt;br /&gt;Furthermore, we allow the client the privilege to &lt;span style="font-style: italic;"&gt;&lt;span style="font-weight: bold;"&gt;change their mind&lt;/span&gt;&lt;/span&gt;.  At any point in the project, the customer can say, "I want a new feature.", and we can accomodate that, of course with a corresponding change in pricing and schedule.  The iterative nature of the process will allow us to work in the new feature efficiently.&lt;br /&gt;&lt;br /&gt;Also, we will allow the client to &lt;span style="font-weight: bold;"&gt;&lt;span style="font-style: italic;"&gt;end the project at any iteration&lt;/span&gt;&lt;/span&gt;.  We allow a client to say, "Ok, we're happy with what we'll get after this iteration.  Let's not continue anymore."  They will be able to do that because they have a working, usable application at the end of each iteration.  It is therefore up to us to continue to bring business value to the client with each succeeding iteration.  (I don't mind an abrupt end to a project, we always have lots of other pending work for people.)&lt;br /&gt;&lt;br /&gt;The second phase can probably simply be called the "Construction Phase", even if it covers both Construction and Transition.&lt;br /&gt;&lt;br /&gt;&lt;span style="font-weight: bold;"&gt;Update:&lt;/span&gt;  Looks like there's a company that's &lt;a href="http://groups.yahoo.com/group/scrumdevelopment/message/18321"&gt;already successful in doing this&lt;/a&gt;.&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/21284276-945641863349598549?l=calenlegaspi.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://calenlegaspi.blogspot.com/feeds/945641863349598549/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=21284276&amp;postID=945641863349598549' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/21284276/posts/default/945641863349598549'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/21284276/posts/default/945641863349598549'/><link rel='alternate' type='text/html' href='http://calenlegaspi.blogspot.com/2006/12/trying-to-popularize-two-phased_16.html' title='Trying to Popularize a Two-Phased Approach to Fixed-Bid Projects'/><author><name>Calen Martin D. Legaspi</name><uri>http://www.blogger.com/profile/06661282916270749630</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='21' height='32' src='http://photos1.blogger.com/blogger/5907/2151/1600/calen_pic.jpg'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-21284276.post-1291423641949742520</id><published>2006-12-02T08:21:00.000+08:00</published><updated>2006-12-02T08:22:53.799+08:00</updated><title type='text'>Wanted: Student Interns</title><content type='html'>Orange &amp; Bronze Software Labs needs student interns for a variety of work:&lt;div class="content"&gt; &lt;ul&gt;&lt;li&gt;Programming &lt;/li&gt;&lt;li&gt;Web Design &lt;/li&gt;&lt;li&gt;Marketing and Market Research &lt;/li&gt;&lt;li&gt;Software Quality Assurance &lt;/li&gt;&lt;li&gt;Business Analysis &lt;/li&gt;&lt;/ul&gt; &lt;p&gt;Definitely, an internship in O&amp;amp;B means you’ll learn a lot! If you’re interested, please send your resume to info AT orangeandbronze DOT com. &lt;/p&gt;&lt;/div&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/21284276-1291423641949742520?l=calenlegaspi.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://calenlegaspi.blogspot.com/feeds/1291423641949742520/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=21284276&amp;postID=1291423641949742520' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/21284276/posts/default/1291423641949742520'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/21284276/posts/default/1291423641949742520'/><link rel='alternate' type='text/html' href='http://calenlegaspi.blogspot.com/2006/12/wanted-student-interns.html' title='Wanted: Student Interns'/><author><name>Calen Martin D. Legaspi</name><uri>http://www.blogger.com/profile/06661282916270749630</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='21' height='32' src='http://photos1.blogger.com/blogger/5907/2151/1600/calen_pic.jpg'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-21284276.post-9094298705055397818</id><published>2006-11-21T09:33:00.000+08:00</published><updated>2006-11-21T09:35:13.705+08:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='Agile'/><category scheme='http://www.blogger.com/atom/ns#' term='Software Engineering'/><category scheme='http://www.blogger.com/atom/ns#' term='Iterative Development'/><title type='text'>Iterations are not Milestones</title><content type='html'>It's all too common to for a project team to decide to delay the end of an iteration because this or that iteration goal has not yet been implemented.  This is a bad idea.  Why? &lt;br /&gt;&lt;br /&gt;The objective of iterative development is to get regular feedback.  Now, in a typical enterprise organization, it takes a while to organize users to test the application.  Users, after all, will most probably have a lot of important work besides testing your application.  If you announce a delay, users will have to reorganize their schedules in order to &lt;span onclick="BLOG_clickHandler(this)" class="blsp-spelling-corrected" id="SPELLING_ERROR_0"&gt;accommodate&lt;/span&gt; a new testing date.  Their availability will probably not coincide precisely with when you intend to release your iteration, which means a further delay in testing.  This leads to significant delays in feedback, which leads to wasted work because when feedback does arrive, the development team will probably find that it needs to revise a lot of the work they did while waiting for the feedback.&lt;br /&gt;&lt;br /&gt;If your iterations come at &lt;span style="font-style: italic;"&gt;regular&lt;/span&gt; intervals, say every two weeks, users can get into a rhythm of organizing their schedules to &lt;span onclick="BLOG_clickHandler(this)" class="blsp-spelling-corrected" id="SPELLING_ERROR_1"&gt;accommodate&lt;/span&gt; the testing and feedback, just as you get into a rhythm to &lt;span onclick="BLOG_clickHandler(this)" class="blsp-spelling-corrected" id="SPELLING_ERROR_2"&gt;accommodate&lt;/span&gt; a weekly family gathering or sports event.  The way to do this is to tag and release whatever working code you have at the end of an iteration period, whether you have achieved all your goals or not.&lt;br /&gt;&lt;br /&gt;An iteration should not be confused with a milestone.  A milestone is a fixed set of goals but is not necessarily at a fixed point in time.  An iteration should be a fixed length of time, to allow for the rhythm or synchronization of all those &lt;span onclick="BLOG_clickHandler(this)" class="blsp-spelling-corrected" id="SPELLING_ERROR_3"&gt;involved&lt;/span&gt; in the project.  So you might find yourself in a situation where you negotiate with your client that it will take five iterations and not four as originally planned, or that the milestone objectives need to be revised in order to meet a schedule.&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/21284276-9094298705055397818?l=calenlegaspi.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://calenlegaspi.blogspot.com/feeds/9094298705055397818/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=21284276&amp;postID=9094298705055397818' title='3 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/21284276/posts/default/9094298705055397818'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/21284276/posts/default/9094298705055397818'/><link rel='alternate' type='text/html' href='http://calenlegaspi.blogspot.com/2006/11/iterations-are-not-milestones.html' title='Iterations are not Milestones'/><author><name>Calen Martin D. Legaspi</name><uri>http://www.blogger.com/profile/06661282916270749630</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='21' height='32' src='http://photos1.blogger.com/blogger/5907/2151/1600/calen_pic.jpg'/></author><thr:total>3</thr:total></entry><entry><id>tag:blogger.com,1999:blog-21284276.post-211707706149589199</id><published>2006-11-01T08:59:00.000+08:00</published><updated>2006-11-01T09:00:35.178+08:00</updated><title type='text'>New Blog for Java</title><content type='html'>I've created a &lt;a href="http://calenjava.blogspot.com"&gt;new blog just for Java-related posts&lt;/a&gt;.  I'll reserve this one more for business-related entries.&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/21284276-211707706149589199?l=calenlegaspi.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://calenlegaspi.blogspot.com/feeds/211707706149589199/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=21284276&amp;postID=211707706149589199' title='3 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/21284276/posts/default/211707706149589199'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/21284276/posts/default/211707706149589199'/><link rel='alternate' type='text/html' href='http://calenlegaspi.blogspot.com/2006/11/new-blog-for-java.html' title='New Blog for Java'/><author><name>Calen Martin D. Legaspi</name><uri>http://www.blogger.com/profile/06661282916270749630</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='21' height='32' src='http://photos1.blogger.com/blogger/5907/2151/1600/calen_pic.jpg'/></author><thr:total>3</thr:total></entry><entry><id>tag:blogger.com,1999:blog-21284276.post-9196571089639385746</id><published>2006-10-09T18:49:00.000+08:00</published><updated>2006-10-09T18:52:33.728+08:00</updated><title type='text'>New Website!</title><content type='html'>Hey, hey, hey... our new website is up!  Check it out at &lt;a href="http://software.orangeandbronze.com/"&gt;http://software.orangeandbronze.com/&lt;/a&gt;.  Props to &lt;a href="http://clair.free.net.ph/"&gt;Clair Ching&lt;/a&gt; for accomplishing this!&lt;br /&gt;&lt;br /&gt;There may still be some kinks here and there, so we're leaving it in "beta" status for now.&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/21284276-9196571089639385746?l=calenlegaspi.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://calenlegaspi.blogspot.com/feeds/9196571089639385746/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=21284276&amp;postID=9196571089639385746' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/21284276/posts/default/9196571089639385746'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/21284276/posts/default/9196571089639385746'/><link rel='alternate' type='text/html' href='http://calenlegaspi.blogspot.com/2006/10/new-website.html' title='New Website!'/><author><name>Calen Martin D. Legaspi</name><uri>http://www.blogger.com/profile/06661282916270749630</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='21' height='32' src='http://photos1.blogger.com/blogger/5907/2151/1600/calen_pic.jpg'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-21284276.post-116028082777327156</id><published>2006-10-08T12:03:00.000+08:00</published><updated>2006-10-09T08:05:18.820+08:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='OOAD'/><category scheme='http://www.blogger.com/atom/ns#' term='Software Engineering'/><category scheme='http://www.blogger.com/atom/ns#' term='OO'/><category scheme='http://www.blogger.com/atom/ns#' term='Design'/><category scheme='http://www.blogger.com/atom/ns#' term='Process'/><title type='text'>Why Consultants DON'T use OOAD!</title><content type='html'>&lt;span style="font-weight: bold;"&gt;"We don't create Domain Models"&lt;br /&gt;&lt;br /&gt;&lt;/span&gt;Just before I quit my last job to start a company, I was frequently visiting a friend of mine who was (and still is) one of the most sought software-development consultants at the time.  I was nervous about starting my own company and would constantly ask his advice on various aspects of the software business.&lt;br /&gt;&lt;br /&gt;There was one piece of advice that really surprised me. "We don't create Domain Models."  I was speechless.  &lt;a href="http://www.aptprocess.com/whitepapers/DomainModelling.pdf"&gt;The Domain Model&lt;/a&gt;, after all, is at the heart of Object-Oriented Analysis and Design (OOAD).  It is a software model of the business domain.  It embodies the various business entities (Customer, Employee, Purchase Order, Invoice, Product, etc.) and the business rules that govern their interactions.  It makes the maintenance of a enterprise software system economical because new applications would simply be built on top of the domain model, and the business rules will be reused.  Implementing changes in the business rules would also be economical because changes to the Domain Model would propagate to all the applications built on top of it.&lt;br /&gt;&lt;br /&gt;Why, then, did my consultant friend advocate otherwise? "It takes too much time", he said. "It's so much faster to implement each function as a large vertical slice."  The unspoken penalty, of course, is with the client, who has to bear the cost of maintaining the system.&lt;br /&gt;&lt;br /&gt;&lt;span style="font-weight: bold;"&gt;Game Theory&lt;br /&gt;&lt;br /&gt;&lt;/span&gt;And so plays the game theory of software development consulting.  Even if some consultants know that establishing a Domain Model for their client would be in their client's best interest, they don't do so because they lose out when bidding against other consultants, who promise to deliver faster and cheaper, but don't speak of maintainability.&lt;br /&gt;&lt;br /&gt;To elaborate, here's how the game goes.  Enterprise Client says he needs, say, a resource-management system implemented.  Enterprise Client entertains bidders for this project.  Big-Picture Consultant proposes a design that is based on a Domain Model, so that Enterprise Client can easily add other applications and features to the system or easily modify business rules.  However, Narrow-Minded Consultant proposes a design that has screens making direct calls to a database.  Guess what?  Narrow-Minded Consultant's bid is half the cost and takes half the time.  Of course,  Big-Picture Consultant's proposal has a net value that is many times more than Narrow-Minded Consultant's proposal, but this argument somehow fails to make its case in Enterprise Client's corporate budget meetings.  So Narrow-Minded Consultant wins the bid.&lt;br /&gt;&lt;br /&gt;Narrow-Minded Consultant has an extra benefit.  Since it becomes difficult to extend or modify Narrow-Minded Consultant's application by anyone else, Narrow-Minded Consultant gets hired again for any new work that needs to be done.  Bad software engineering leads to job security!&lt;br /&gt;&lt;br /&gt;The saddest part of the story is what happens to Big-Picture Consultant.  In order to win future bids, Big-Picture Consultant decides to no longer propose the implementation of a Domain Model, so they can bid at prices and schedules comparative to Narrow-Minded Consultant.  (I think my friend falls into this, a consultant who wants the best for his clients, but is required by competition to compromise on this.)&lt;br /&gt;&lt;br /&gt;&lt;span style="font-weight: bold;"&gt;The Story for Enterprise Clients&lt;/span&gt;&lt;br /&gt;&lt;br /&gt;And what happens to Enterprise Client and other companies like it?  It ends up with "island applications" that do not integrate well with each other, and it ends up being dependent on the consulting companies that built them.&lt;br /&gt;&lt;br /&gt;If Enterprise Client is big enough, some big-name vendor will start selling them on some "SOA" solution, but still won't address the fact that Enterprise Client needs a unified domain model behind whatever integration solution that is proposed.&lt;br /&gt;&lt;br /&gt;&lt;span style="font-weight: bold;"&gt;Moral of the Story&lt;/span&gt;&lt;br /&gt;&lt;br /&gt;So what's the moral of this story?  &lt;span style="font-style: italic;"&gt;It's up to the Enterprise Client&lt;/span&gt; to &lt;span style="font-style: italic;"&gt;require &lt;/span&gt;consultants to commit to proper Object-Oriented Analysis and Design, including the proper implementation of the enterprise's Domain Model.  It's only the Enterprise Client who stands to benefit from a well-designed Domain Model, not the competing vendors.&lt;br /&gt;&lt;br /&gt;If Enterprise Clients fail to understand the value of OOAD and impose it on their consultants, consultants will be driven to forgo careful OOAD in favor of the very narrow implementation of project requirements, in order to bid lower and faster than each other.&lt;br /&gt;&lt;br /&gt;It is important for Enterprise Clients to &lt;span style="font-style: italic;"&gt;own&lt;/span&gt; their systems' &lt;span style="font-style: italic;"&gt;design&lt;/span&gt;.  Notice I did not use the overused buzzword "architecture", because I did not want you to think that all one needs to know is a very high-level "architectural" appreciation of the Enterprise's systems.  What I mean is that the IT department has to go far, far beyond just managing applications and outsourced services.  It has to really know the business of the company to which they belong.  It has to invest in the careful discovery and analysis of the various entities, business rules and workflows of the Enterprise, and continually invest in keeping this knowledge updated, because these facts will continuously be in rapid flux.&lt;br /&gt;&lt;br /&gt;Ask yourself: On the wall of your company's CIO, does he have a class diagram depicting the Domain Model of your company?  Off the top of his head, can he recite the most important entities of the company for a particular aspect of the business, and discuss the workflows and business rules associated with them?  If not, then before you make your next software investment, you need to invest in making sure the CIO and the other top IT execs know your business.&lt;br /&gt;&lt;br /&gt;&lt;span style="font-weight: bold;"&gt;Picking the Right Consultant&lt;/span&gt;&lt;br /&gt;&lt;br /&gt;Ok, I'll admit, this is the part where I make a shameless sales pitch, but here it goes.  A lot of people know that Orange &amp; Bronze is full of Object-Oriented &lt;span style="font-style: italic;"&gt;zealots&lt;/span&gt;.  The reason we chant the mantra of OO is because we also chant the mantra of providing the highest value for our clients (whether they know it or not).  It saddens us to see IT managers struggle under the weight of managing disparate yet rapidly growing systems.&lt;br /&gt;&lt;br /&gt;In every project we bid for, we attempt to provide an allowance to include careful modeling of the business as a Domain Model within the software.  This has sometimes meant that we have lost because we are not able to bid as low as some of our competitors, oh well.  But in the clients who we are able to serve, we leave a highly extensible and maintainable system on top of which they can economically build other systems or economically accommodate changes to business rules.&lt;br /&gt;&lt;br /&gt;Orange &amp; Bronze can work with your company to provide a careful discovery and analysis of your business's entities, business rules and workflows.  We can then implement such knowledge in the form of software as a Domain Model, which can be reused over and over again for both present and future software applications of your company.&lt;br /&gt;&lt;br /&gt;&lt;span style="font-weight: bold;"&gt;Recommended Readings&lt;/span&gt;&lt;br /&gt;&lt;br /&gt;&lt;a href="http://www.aptprocess.com/whitepapers/DomainModelling.pdf"&gt;Domain Modeling - Paul Oldfield&lt;/a&gt;&lt;br /&gt;&lt;a href="http://www.martinfowler.com/books.html#eaa"&gt;Patterns of Enterprise Application Architecture - Martin Fowler&lt;/a&gt;&lt;br /&gt;&lt;a href="http://domaindrivendesign.org/books/index.html"&gt;Domain-Driven Design - Eric Evans&lt;/a&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/21284276-116028082777327156?l=calenlegaspi.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://calenlegaspi.blogspot.com/feeds/116028082777327156/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=21284276&amp;postID=116028082777327156' title='2 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/21284276/posts/default/116028082777327156'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/21284276/posts/default/116028082777327156'/><link rel='alternate' type='text/html' href='http://calenlegaspi.blogspot.com/2006/10/why-consultants-dont-use-ooad.html' title='Why Consultants DON&apos;T use OOAD!'/><author><name>Calen Martin D. Legaspi</name><uri>http://www.blogger.com/profile/06661282916270749630</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='21' height='32' src='http://photos1.blogger.com/blogger/5907/2151/1600/calen_pic.jpg'/></author><thr:total>2</thr:total></entry><entry><id>tag:blogger.com,1999:blog-21284276.post-115814333157073648</id><published>2006-09-13T17:43:00.000+08:00</published><updated>2006-09-13T19:30:38.540+08:00</updated><title type='text'>Pride in Our Work is Our Greatest Asset</title><content type='html'>Let me just say that I have the utmost admiration and gratitude for the people of Orange &amp; Bronze who I've observed to be working so hard to meet the needs of our clients.&lt;br /&gt;&lt;br /&gt;First on my "thank you" list is the ABS-CBN Integrated Payroll System team, led by &lt;a href="http://javaaddict.blogspirit.com/"&gt;JP Alcala&lt;/a&gt;.  The rest of the team are &lt;a href="http://mam0n.blogspot.com/"&gt;Martin Mamonluk&lt;/a&gt; (Project Manager), Owie Saliendra (Software Engineer and Trainor), Glenn Gequillo (Software Engineer and Trainor), and Eunice Cueto (Eunice is a PL/SQL developer from CPI, on loan for this project).  They've been staying at a hotel near ABS-CBN (a few feet from the Big Brother house) just so they can put in a heck of a lot of hours for the project, including very late nights and weekends.&lt;br /&gt;&lt;br /&gt;Next is &lt;a href="http://blog.ealden.net/"&gt;Ealden Escanan&lt;/a&gt;, Software Engineer and Trainor, who &lt;a href="http://blog.ealden.net/article/sleeping-in-the-office"&gt;sleeps at the office all week&lt;/a&gt; on a regular basis just so he can be at the client early and well-rested.  (We've got rudimentary sofa beds and a shower at the office.)&lt;br /&gt;&lt;br /&gt;And then there's the tandem of Chelle Gray and &lt;a href="http://clair.free.net.ph/"&gt;Clair Ching&lt;/a&gt;, Business Development Manager and Project Manager, respectively, who constantly slave away at several things it seems (requirements documents, our website, etc), and who I discovered spent the night at the office just to finish requirements documents and a proposal for a prospect.&lt;br /&gt;&lt;br /&gt;There's also &lt;a href="http://jmibanez.livejournal.com/" title="Insanity in a box"&gt;JM Ibañez&lt;/a&gt;, who's tenacious in wiping out the assignments given to him despite his busy school schedule.&lt;br /&gt;&lt;br /&gt;Then there's Rose Nagutom, our administrative assistant, who makes sure all our finances and forms are in order, makes sure that the checks from the clients get collected, and doesn't let me get away with forgetting my administrative duties!&lt;br /&gt;&lt;br /&gt;And finally, my partner &lt;a href="http://memesplicer.blogspot.com/"&gt;Butch Landingin&lt;/a&gt;, our CTO who after spending the whole day at a client, visits the different projects (including going all the way to ABS-CBN) to see how he can support them.&lt;br /&gt;&lt;br /&gt;I'm sure there are others I've missed out, because I haven't had a chance to observe them.  I see the Aker team under &lt;a href="http://cplusplus-soup.blogspot.com/index.html"&gt;Dean&lt;/a&gt;, composed of &lt;a href="http://zakame.spunge.org/blog"&gt;Zak Elep&lt;/a&gt;, &lt;a href="http://cmarguel.livejournal.com"&gt;Miguel Arguelles&lt;/a&gt; and &lt;a href="http://jmibanez.livejournal.com/"&gt;JM Ibanez&lt;/a&gt;, are always busy at their computers hacking-up C++ code.  Unfortunately I don't know enough about C++ and messaging systems to comment on their work, but I'm sure they're coding like crazy.  I see Zak spend a lot of long days at the office, and he's here on weekends as well.  There's also &lt;a href="http://fairtradetech.pinoyweb.net/"&gt;Charo Nuguid&lt;/a&gt;, who's working on revisions to the material for The Java Boot Camp.  I'm sure those will turn out quite well, too.&lt;br /&gt;&lt;br /&gt;Thank you all for working so hard to make O&amp;amp;B the team of screaming banshees that it is!&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/21284276-115814333157073648?l=calenlegaspi.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://calenlegaspi.blogspot.com/feeds/115814333157073648/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=21284276&amp;postID=115814333157073648' title='2 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/21284276/posts/default/115814333157073648'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/21284276/posts/default/115814333157073648'/><link rel='alternate' type='text/html' href='http://calenlegaspi.blogspot.com/2006/09/pride-in-our-work-is-our-greatest.html' title='Pride in Our Work is Our Greatest Asset'/><author><name>Calen Martin D. Legaspi</name><uri>http://www.blogger.com/profile/06661282916270749630</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='21' height='32' src='http://photos1.blogger.com/blogger/5907/2151/1600/calen_pic.jpg'/></author><thr:total>2</thr:total></entry><entry><id>tag:blogger.com,1999:blog-21284276.post-115768131282920480</id><published>2006-09-08T10:05:00.000+08:00</published><updated>2006-09-08T10:09:16.186+08:00</updated><title type='text'>Quote for the Day</title><content type='html'>Ha!  I got this quote from an &lt;a href="http://discuss.fogcreek.com/joelonsoftware/default.asp?cmd=show&amp;ixPost=53978&amp;amp;ixReplies=21"&gt;old post on "Joel on Software"&lt;/a&gt;:&lt;br /&gt;&lt;blockquote&gt;&lt;br /&gt;&lt;strong&gt;Always code as if the person who ends up maintaining your code will be a violent psychopath who knows where you live.&lt;/strong&gt;&lt;/blockquote&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/21284276-115768131282920480?l=calenlegaspi.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://calenlegaspi.blogspot.com/feeds/115768131282920480/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=21284276&amp;postID=115768131282920480' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/21284276/posts/default/115768131282920480'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/21284276/posts/default/115768131282920480'/><link rel='alternate' type='text/html' href='http://calenlegaspi.blogspot.com/2006/09/quote-for-day.html' title='Quote for the Day'/><author><name>Calen Martin D. Legaspi</name><uri>http://www.blogger.com/profile/06661282916270749630</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='21' height='32' src='http://photos1.blogger.com/blogger/5907/2151/1600/calen_pic.jpg'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-21284276.post-115759656725659836</id><published>2006-09-07T10:34:00.000+08:00</published><updated>2006-09-07T10:36:07.256+08:00</updated><title type='text'>Planet Orange &amp; Bronze is Up!</title><content type='html'>Hey, our blog-aggregator site is up!  Visit &lt;a href="http://planet.orangeandbronze.com/"&gt;Planet Orange &amp;amp; Bronze&lt;/a&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/21284276-115759656725659836?l=calenlegaspi.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://calenlegaspi.blogspot.com/feeds/115759656725659836/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=21284276&amp;postID=115759656725659836' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/21284276/posts/default/115759656725659836'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/21284276/posts/default/115759656725659836'/><link rel='alternate' type='text/html' href='http://calenlegaspi.blogspot.com/2006/09/planet-orange-bronze-is-up.html' title='Planet Orange &amp; Bronze is Up!'/><author><name>Calen Martin D. Legaspi</name><uri>http://www.blogger.com/profile/06661282916270749630</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='21' height='32' src='http://photos1.blogger.com/blogger/5907/2151/1600/calen_pic.jpg'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-21284276.post-115683353686814537</id><published>2006-08-29T14:33:00.000+08:00</published><updated>2006-08-29T14:45:03.873+08:00</updated><title type='text'>Thank you, Sacha!</title><content type='html'>&lt;a onblur="try {parent.deselectBloggerImageGracefully();} catch(e) {}" href="http://www.flickr.com/photos/mburpee/226352608/"&gt;&lt;img style="margin: 0pt 10px 10px 0pt; float: left; cursor: pointer; width: 320px;" src="http://static.flickr.com/83/226352608_dfba8da926.jpg?v=0" alt="" border="0" /&gt;&lt;/a&gt;&lt;br /&gt;&lt;a onblur="try {parent.deselectBloggerImageGracefully();} catch(e) {}" href="http://www.flickr.com/photos/mburpee/226350977/"&gt;&lt;img style="margin: 0pt 10px 10px 0pt; float: left; cursor: pointer; width: 320px;" src="http://static.flickr.com/77/226350977_f1127cbf1d.jpg?v=0" alt="" border="0" /&gt;&lt;/a&gt;&lt;br /&gt;&lt;br /&gt;Thanks, Sacha, for marketing O&amp;amp;B at Toronto BarCamp!&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/21284276-115683353686814537?l=calenlegaspi.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://calenlegaspi.blogspot.com/feeds/115683353686814537/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=21284276&amp;postID=115683353686814537' title='2 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/21284276/posts/default/115683353686814537'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/21284276/posts/default/115683353686814537'/><link rel='alternate' type='text/html' href='http://calenlegaspi.blogspot.com/2006/08/thank-you-sacha.html' title='Thank you, Sacha!'/><author><name>Calen Martin D. Legaspi</name><uri>http://www.blogger.com/profile/06661282916270749630</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='21' height='32' src='http://photos1.blogger.com/blogger/5907/2151/1600/calen_pic.jpg'/></author><thr:total>2</thr:total></entry><entry><id>tag:blogger.com,1999:blog-21284276.post-115611990276859405</id><published>2006-08-21T07:54:00.000+08:00</published><updated>2006-08-21T08:25:02.816+08:00</updated><title type='text'>Thanksgiving</title><content type='html'>Last week, we closed two projects.  The combined value of the two projects is worth twice the revenue we've ever earned to this date.  Butch and I thought that it would be two to three years before we would be at this scale.  It took us one.  I can't help but feel humbled by how &lt;span style="font-weight: bold;"&gt;God &lt;/span&gt;has blessed us with good opportunities, and the good people to execute on them.&lt;br /&gt;&lt;br /&gt;Now, even more than before, I feel that God has a plan for this company.  From the start, we wanted this company to be a way to contribute back to our country.  We want to resuscitate the engineering community and engineering tradition in this nation.  We want the Philippines to be known as a center of engineering excellence.  Our efforts are for software engineering, but success in this area may encourage growth in the engineering communities in other fields (robotics? materials? genetics?).  A strong engineering industry will significantly contribute to a strong economy, as it has for Japan, the USA, Taiwan, South Korea, Israel, India, China and South Africa.  I feel that our blessings last week was part of God's way of telling us that we're on the right track, that our dreams for this country are realistic.&lt;br /&gt;&lt;br /&gt;I also want to thank all the brilliant yet tough-as-nails engineers of Orange &amp;amp; Bronze Software Labs, whose commitment to fulfilling our promises to our clients has won us our clients' trust in these bigger endeavours.&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/21284276-115611990276859405?l=calenlegaspi.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://calenlegaspi.blogspot.com/feeds/115611990276859405/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=21284276&amp;postID=115611990276859405' title='1 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/21284276/posts/default/115611990276859405'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/21284276/posts/default/115611990276859405'/><link rel='alternate' type='text/html' href='http://calenlegaspi.blogspot.com/2006/08/thanksgiving.html' title='Thanksgiving'/><author><name>Calen Martin D. Legaspi</name><uri>http://www.blogger.com/profile/06661282916270749630</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='21' height='32' src='http://photos1.blogger.com/blogger/5907/2151/1600/calen_pic.jpg'/></author><thr:total>1</thr:total></entry><entry><id>tag:blogger.com,1999:blog-21284276.post-115528284837196154</id><published>2006-08-11T15:49:00.000+08:00</published><updated>2006-08-11T15:54:08.386+08:00</updated><title type='text'>We FINALLY have a website!</title><content type='html'>&lt;a ref="http://software.orangeandbronze.com/"&gt;http://software.orangeandbronze.com/&lt;/a&gt;&lt;br /&gt;&lt;br /&gt;We took our sweet goddam time.  Sorry! =)&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/21284276-115528284837196154?l=calenlegaspi.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://calenlegaspi.blogspot.com/feeds/115528284837196154/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=21284276&amp;postID=115528284837196154' title='2 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/21284276/posts/default/115528284837196154'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/21284276/posts/default/115528284837196154'/><link rel='alternate' type='text/html' href='http://calenlegaspi.blogspot.com/2006/08/we-finally-have-website.html' title='We FINALLY have a website!'/><author><name>Calen Martin D. Legaspi</name><uri>http://www.blogger.com/profile/06661282916270749630</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='21' height='32' src='http://photos1.blogger.com/blogger/5907/2151/1600/calen_pic.jpg'/></author><thr:total>2</thr:total></entry><entry><id>tag:blogger.com,1999:blog-21284276.post-115468149287519734</id><published>2006-08-04T16:28:00.000+08:00</published><updated>2006-08-04T16:51:32.886+08:00</updated><title type='text'>The Noisy Code Sessions</title><content type='html'>I finally got a chance to go back to "coder mode" a couple of weeks back, when Butch asked me to help out in a project.  While coding with the other guys, I noticed something different from the usual coding office - we were noisy!&lt;br /&gt;&lt;br /&gt;Ok, not rowdy, drunk-guys in a bar noisy, but we were chattering the whole time.  Everybody was asking questions, sharing something they discovered, celebrating a fix... ok, and almost everyboy was talking to themselves as they coded, me included - I guess that's another story altogether.&lt;br /&gt;&lt;br /&gt;In a usual software development office, it's usually pretty quiet.  Programmers would only talk to each other a few times a day, to ask quick questions in soft tones.&lt;br /&gt;&lt;br /&gt;Despite our relative noisiness, we were very productive!  It's like we were in a "group zone", probably similar to the zone experience by athletes in a team sport.  What's more, we were able to resolve issues quickly... programmers wouldn't languish for hours wrestling with a problem before "bothering" another guy with a question.  When I'd run into a bit of roadblock, I'd just ask whoever I thought would know, and I'd get a quick response and I can move on with my work.  Since we were in a "group zone", somehow his concentration wasn't disturbed.&lt;br /&gt;&lt;br /&gt;More and more, we're experiencing how Agile approaches, in this case, the work area layout and the culture of communication, improves productivity over the more traditional software development environments.&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/21284276-115468149287519734?l=calenlegaspi.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://calenlegaspi.blogspot.com/feeds/115468149287519734/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=21284276&amp;postID=115468149287519734' title='2 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/21284276/posts/default/115468149287519734'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/21284276/posts/default/115468149287519734'/><link rel='alternate' type='text/html' href='http://calenlegaspi.blogspot.com/2006/08/noisy-code-sessions.html' title='The Noisy Code Sessions'/><author><name>Calen Martin D. Legaspi</name><uri>http://www.blogger.com/profile/06661282916270749630</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='21' height='32' src='http://photos1.blogger.com/blogger/5907/2151/1600/calen_pic.jpg'/></author><thr:total>2</thr:total></entry><entry><id>tag:blogger.com,1999:blog-21284276.post-115457276357693164</id><published>2006-08-03T10:38:00.000+08:00</published><updated>2006-08-03T10:43:29.383+08:00</updated><title type='text'>I'm getting different bytes when pulling a Shift_JIS string from a POST</title><content type='html'>&lt;span style="font-family:Helvetica,Arial,sans-serif;"&gt;I'm creating a servlet that receives Japanese characters in Shift_JIS character encoding.  When I pull a parameter out of the request object, the bytes look right in GET but anomalous when use POST.  (Why I'm pulling out raw bytes is another story... a long one... anyways...)&lt;br /&gt;&lt;br /&gt;If you're able to view Japanese characters, the String I'm supposed to be receiving is this:    &lt;/span&gt;ミーティングルーム  &lt;span style="font-family:Helvetica,Arial,sans-serif;"&gt;(...don't ask me what it means, I don't know either.)&lt;br /&gt;If I use &lt;i&gt;&lt;b&gt;GET&lt;/b&gt;, &lt;/i&gt;the bytes I receive are these (hex):  &lt;/span&gt;&lt;tt&gt;&lt;br /&gt;&lt;/tt&gt; &lt;blockquote&gt;&lt;tt&gt;[83] [7e] [81] [5b] [83] [65] [83] [42] [83] [93] [83] [4b] [83] [8b] [81] [5b] [83] [80]    &lt;/tt&gt;&lt;br /&gt;&lt;/blockquote&gt;  &lt;span style="font-family:Helvetica,Arial,sans-serif;"&gt;These are the values I expect from Shift_JIS encoding.&lt;/span&gt;&lt;span style="font-family:Helvetica,Arial,sans-serif;"&gt;  However, using &lt;i&gt;&lt;b&gt;POST&lt;/b&gt;, &lt;/i&gt;I get these (hex):&lt;br /&gt;&lt;/span&gt; &lt;blockquote&gt;&lt;tt&gt;[ff] [fd] [7e] [ff] [fd] [5b] [ff] [fd] [65] [ff] [fd] [42] [ff] [fd] [ff] [fd] [ff] [fd] [4f] [ff] [fd] [ff] [fd] [ff] [fd] [5b] [ff] [fd] [ff] [fd]&lt;/tt&gt;&lt;br /&gt;&lt;/blockquote&gt;  &lt;span style="font-family:Helvetica,Arial,sans-serif;"&gt;Does anyone here know why the POST bytes are the way they are?&lt;br /&gt;&lt;br /&gt;By the way, in case you were not able to view the Japanese characters, the UTF-8 (erm... Unicode?) values of the &lt;i&gt;characters&lt;/i&gt; in the String I'm supposed to be receiving is this: &lt;/span&gt;[30df] [30fc] [30c6] [30a3] [30f3] [30b0] [30eb] [30fc] [30e0]  &lt;span style="font-family:Helvetica,Arial,sans-serif;"&gt;(You can tell I'm a newbie to charsets and encodings).&lt;br /&gt;&lt;br /&gt;Looking forward to your insights!  Thanks!&lt;/span&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/21284276-115457276357693164?l=calenlegaspi.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://calenlegaspi.blogspot.com/feeds/115457276357693164/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=21284276&amp;postID=115457276357693164' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/21284276/posts/default/115457276357693164'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/21284276/posts/default/115457276357693164'/><link rel='alternate' type='text/html' href='http://calenlegaspi.blogspot.com/2006/08/im-getting-different-bytes-when.html' title='I&apos;m getting different bytes when pulling a Shift_JIS string from a POST'/><author><name>Calen Martin D. Legaspi</name><uri>http://www.blogger.com/profile/06661282916270749630</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='21' height='32' src='http://photos1.blogger.com/blogger/5907/2151/1600/calen_pic.jpg'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-21284276.post-115451171297873743</id><published>2006-08-02T17:28:00.000+08:00</published><updated>2006-08-02T17:41:52.993+08:00</updated><title type='text'>ServletUnit... Where have you been all my life?</title><content type='html'>Thanks to Joen Moreno for pointing me to this!  &lt;a href="http://httpunit.sourceforge.net/doc/servletunit-intro.html"&gt;ServletUnit &lt;/a&gt;is a part of &lt;a href="http://httpunit.sourceforge.net"&gt;HttpUnit&lt;/a&gt;.  It allows you to test your web components without having to deploy into a container!  It comes with its own container simulator!  For example, if I have this Servlet:&lt;br /&gt;&lt;pre&gt;&lt;br /&gt;public class TheServlet extends HttpServlet {&lt;br /&gt; protected void doGet(HttpServletRequest req, HttpServletResponse res)&lt;br /&gt;         throws ServletException, IOException {&lt;br /&gt;     final String param = req.getParameter("param");&lt;br /&gt; final PrintWriter writer = res.getWriter();&lt;br /&gt; if(param != null) {&lt;br /&gt;     writer.write("the parameter: " + param);&lt;br /&gt; } else {&lt;br /&gt;     writer.write("no parameter");&lt;br /&gt;     }&lt;br /&gt; writer.flush();&lt;br /&gt; }&lt;br /&gt;}&lt;/pre&gt;&lt;br /&gt;&lt;br /&gt;My ServletUnit test code can be something like this:&lt;br /&gt;&lt;pre&gt;&lt;br /&gt;public class ServletTest extends TestCase {&lt;br /&gt;  public void testGet() throws Exception {&lt;br /&gt; final ServletRunner runner = new ServletRunner();&lt;br /&gt; runner.registerServlet("myServlet", TheServlet.class.getName());&lt;br /&gt; final ServletUnitClient client = runner.newClient();&lt;br /&gt; final WebRequest req = new GetMethodWebRequest("http://localhost/myServlet");&lt;br /&gt; final String paramSent = "swak";&lt;br /&gt; req.setParameter("param", paramSent);&lt;br /&gt; final WebResponse res = client.getResponse(req);&lt;br /&gt; assertEquals("the parameter: " + paramSent, res.getText());&lt;br /&gt;  }&lt;br /&gt;}&lt;br /&gt;&lt;/pre&gt;&lt;br /&gt;&lt;br /&gt;It's just an ordinary JUnit TestCase!&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/21284276-115451171297873743?l=calenlegaspi.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://calenlegaspi.blogspot.com/feeds/115451171297873743/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=21284276&amp;postID=115451171297873743' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/21284276/posts/default/115451171297873743'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/21284276/posts/default/115451171297873743'/><link rel='alternate' type='text/html' href='http://calenlegaspi.blogspot.com/2006/08/servletunit-where-have-you-been-all-my.html' title='ServletUnit... Where have you been all my life?'/><author><name>Calen Martin D. Legaspi</name><uri>http://www.blogger.com/profile/06661282916270749630</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='21' height='32' src='http://photos1.blogger.com/blogger/5907/2151/1600/calen_pic.jpg'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-21284276.post-115434494756562827</id><published>2006-07-31T19:22:00.000+08:00</published><updated>2006-08-01T15:20:05.090+08:00</updated><title type='text'>Wanted: Project Manager / Business Analyst</title><content type='html'>&lt;span style="font-family:Helvetica, Arial, sans-serif;"&gt;&lt;u&gt;Wanted&lt;/u&gt;: Project Manager / Business Analyst&lt;br /&gt;&lt;br /&gt;&lt;u&gt;About the Company&lt;/u&gt;: &lt;br /&gt;&lt;/span&gt; &lt;ul&gt;   &lt;li&gt;&lt;span style="font-family:Helvetica, Arial, sans-serif;"&gt;Orange &amp; Bronze Software Labs, Ltd. Co., is a team of high-achieving software architects and software engineers.&lt;/span&gt;&lt;span style="font-family:Helvetica, Arial, sans-serif;"&gt;  We provide software development, consulting and training.&lt;/span&gt;&lt;span style="font-family:Helvetica, Arial, sans-serif;"&gt;  We are a rapidly growing company - we're less than a year old but we have a strong client base of both local and foreign companies such as Headstrong Philippines, ABS-CBN Broadcasting, GXS Philippines and Cormant Technologies Philippines.&lt;/span&gt;&lt;/li&gt; &lt;/ul&gt; &lt;span style="font-family:Helvetica, Arial, sans-serif;"&gt;&lt;br /&gt;&lt;u&gt;General Job Description&lt;/u&gt;: &lt;br /&gt;&lt;/span&gt; &lt;ul&gt;   &lt;li&gt;&lt;span style="font-family:Helvetica, Arial, sans-serif;"&gt;Support a programming team by providing management of the non-programming aspects of the software development process, such as requirements management, project management, and quality assurance.&lt;/span&gt;&lt;/li&gt; &lt;/ul&gt; &lt;span style="font-family:Helvetica, Arial, sans-serif;"&gt;&lt;br /&gt;&lt;u&gt;Roles&lt;/u&gt;:&lt;br /&gt;&lt;/span&gt; &lt;ul&gt;   &lt;li&gt;&lt;span style="font-family:Helvetica, Arial, sans-serif;"&gt;Requirements Management&lt;br /&gt;    &lt;/span&gt;&lt;/li&gt;   &lt;ul&gt;     &lt;li&gt;&lt;span style="font-family:Helvetica, Arial, sans-serif;"&gt;Ensure that project requirements are documented and that the documentation completely covers the scope of the project.&lt;/span&gt;&lt;/li&gt;     &lt;li&gt;&lt;span style="font-family:Helvetica, Arial, sans-serif;"&gt;Will primarily involve the drafting of Use Case documents and verifying their acceptability with both customers and programmers.&lt;br /&gt;      &lt;/span&gt;&lt;/li&gt;   &lt;/ul&gt;   &lt;li&gt;&lt;span style="font-family:Helvetica, Arial, sans-serif;"&gt;Project Management&lt;/span&gt;&lt;/li&gt;   &lt;ul&gt;     &lt;li&gt;&lt;span style="font-family:Helvetica, Arial, sans-serif;"&gt;Ensure that requirements are built and delivered on schedule.&lt;/span&gt;&lt;/li&gt;     &lt;li&gt;&lt;span style="font-family:Helvetica, Arial, sans-serif;"&gt;Will involve creating project plans and following up with programmers on assigned tasks.&lt;br /&gt;      &lt;/span&gt;&lt;/li&gt;   &lt;/ul&gt;   &lt;li&gt;&lt;span style="font-family:Helvetica, Arial, sans-serif;"&gt;Quality Assurance&lt;/span&gt;&lt;/li&gt;   &lt;ul&gt;     &lt;li&gt;&lt;span style="font-family:Helvetica, Arial, sans-serif;"&gt;Verifying that work produced meets requirements.&lt;/span&gt;&lt;/li&gt;     &lt;li&gt;&lt;span style="font-family:Helvetica, Arial, sans-serif;"&gt;Will involve drafting test plans, managing a team of software testers, and the use of issue-tracking software.&lt;/span&gt;&lt;/li&gt;   &lt;/ul&gt; &lt;/ul&gt; &lt;span style="font-family:Helvetica, Arial, sans-serif;"&gt;&lt;u&gt;Work Environment&lt;/u&gt;:&lt;br /&gt;&lt;/span&gt; &lt;ul&gt;   &lt;li&gt;&lt;span style="font-family:Helvetica, Arial, sans-serif;"&gt;Entrepreneurial environment&lt;br /&gt;    &lt;/span&gt;&lt;/li&gt;   &lt;ul&gt;     &lt;li&gt;&lt;span style="font-family:Helvetica, Arial, sans-serif;"&gt;The company is a startup consulting company of less than ten people, almost entirely software engineers. &lt;br /&gt;      &lt;/span&gt;&lt;/li&gt;     &lt;li&gt;&lt;span style="font-family:Helvetica, Arial, sans-serif;"&gt;The company is made up primarily of high-achieving, aggressive, creative individuals.&lt;/span&gt;&lt;/li&gt;     &lt;li&gt;&lt;span style="font-family:Helvetica, Arial, sans-serif;"&gt;Atmosphere is informal but fast-paced.&lt;/span&gt;&lt;/li&gt;     &lt;li&gt;&lt;span style="font-family:Helvetica, Arial, sans-serif;"&gt;Your opinions and initiative will not only be welcome but be highly encouraged.&lt;br /&gt;      &lt;/span&gt;&lt;/li&gt;   &lt;/ul&gt; &lt;/ul&gt; &lt;span style="font-family:Helvetica, Arial, sans-serif;"&gt;&lt;u&gt;Requirements&lt;/u&gt;:&lt;br /&gt;&lt;/span&gt; &lt;ul&gt;   &lt;li&gt;&lt;span style="font-family:Helvetica, Arial, sans-serif;"&gt;Self-learner.&lt;/span&gt;&lt;/li&gt;   &lt;li&gt;&lt;span style="font-family:Helvetica, Arial, sans-serif;"&gt;Self-manager.&lt;/span&gt;&lt;/li&gt;   &lt;li&gt;&lt;span style="font-family:Helvetica, Arial, sans-serif;"&gt;Disciplined, organized.&lt;/span&gt;&lt;/li&gt;   &lt;li&gt;&lt;span style="font-family:Helvetica, Arial, sans-serif;"&gt;Highly analytical.&lt;/span&gt;&lt;/li&gt;   &lt;li&gt;&lt;span style="font-family:Helvetica, Arial, sans-serif;"&gt;Optional:  Familiarity with Agile Methodologies or the Rational Unified Process a plus.&lt;/span&gt;&lt;/li&gt; &lt;/ul&gt; &lt;span style="font-family:Helvetica, Arial, sans-serif;"&gt;&lt;u&gt;Compensation&lt;/u&gt;:&lt;br /&gt;&lt;/span&gt; &lt;ul&gt;   &lt;li&gt;&lt;span style="font-family:Helvetica, Arial, sans-serif;"&gt;20k-50k / mo, depending on experience.&lt;br /&gt;    &lt;/span&gt;&lt;/li&gt; &lt;/ul&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/21284276-115434494756562827?l=calenlegaspi.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://calenlegaspi.blogspot.com/feeds/115434494756562827/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=21284276&amp;postID=115434494756562827' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/21284276/posts/default/115434494756562827'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/21284276/posts/default/115434494756562827'/><link rel='alternate' type='text/html' href='http://calenlegaspi.blogspot.com/2006/07/wanted-project-manager-business.html' title='Wanted: Project Manager / Business Analyst'/><author><name>Calen Martin D. Legaspi</name><uri>http://www.blogger.com/profile/06661282916270749630</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='21' height='32' src='http://photos1.blogger.com/blogger/5907/2151/1600/calen_pic.jpg'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-21284276.post-115182028754851759</id><published>2006-07-02T13:50:00.000+08:00</published><updated>2006-07-02T14:04:47.560+08:00</updated><title type='text'>New Heavyweight on the Team: JP Alcala</title><content type='html'>Orange &amp; Bronze Software Labs adds a new heavyweight to its team:  Welcome &lt;a href="http://javaaddict.blogspirit.com/"&gt;John Paul Alcala&lt;/a&gt;!  JP will be joining us as a software architect.&lt;br /&gt;&lt;br /&gt;&lt;div style="text-align: left;"&gt;We were first introduced to JP's skills when he gave an excellent talk on PinoyJUG about Hibernate.  We then engaged him to be a panelist in our Software Architect's Course, where he quite aggressively critiqued the case presentations of our students.  He has had a successful career in several consulting companies in leading development teams and designing enterprise applications. His last job prior to joining O&amp;B was as chief architect of a software development consulting company.  He is currently involved in research on &lt;a href="http://javaaddict.blogspirit.com/archive/2006/06/30/persistence-strategies-asynchronous-persistence.html"&gt;high-throughput persistence&lt;/a&gt;.&lt;br /&gt;&lt;br /&gt;We are eager to have him benefit the larger Philippine development community as a consultant and trainor.&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/21284276-115182028754851759?l=calenlegaspi.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://calenlegaspi.blogspot.com/feeds/115182028754851759/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=21284276&amp;postID=115182028754851759' title='3 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/21284276/posts/default/115182028754851759'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/21284276/posts/default/115182028754851759'/><link rel='alternate' type='text/html' href='http://calenlegaspi.blogspot.com/2006/07/new-heavyweight-on-team-jp-alcala.html' title='New Heavyweight on the Team: JP Alcala'/><author><name>Calen Martin D. Legaspi</name><uri>http://www.blogger.com/profile/06661282916270749630</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='21' height='32' src='http://photos1.blogger.com/blogger/5907/2151/1600/calen_pic.jpg'/></author><thr:total>3</thr:total></entry><entry><id>tag:blogger.com,1999:blog-21284276.post-115128729118541909</id><published>2006-06-26T09:59:00.000+08:00</published><updated>2006-06-26T10:01:31.196+08:00</updated><title type='text'>Jetty with Eclipse WTP</title><content type='html'>I wanted to try using Jetty with Eclipse WTP but found no server definition for Jetty (short of installing the Geronimo server definition).  Does anybody know how to use Jetty with Eclipse WTP without installing the Geronimo server definition?&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/21284276-115128729118541909?l=calenlegaspi.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://calenlegaspi.blogspot.com/feeds/115128729118541909/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=21284276&amp;postID=115128729118541909' title='3 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/21284276/posts/default/115128729118541909'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/21284276/posts/default/115128729118541909'/><link rel='alternate' type='text/html' href='http://calenlegaspi.blogspot.com/2006/06/jetty-with-eclipse-wtp.html' title='Jetty with Eclipse WTP'/><author><name>Calen Martin D. Legaspi</name><uri>http://www.blogger.com/profile/06661282916270749630</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='21' height='32' src='http://photos1.blogger.com/blogger/5907/2151/1600/calen_pic.jpg'/></author><thr:total>3</thr:total></entry><entry><id>tag:blogger.com,1999:blog-21284276.post-115114274032762368</id><published>2006-06-24T17:42:00.000+08:00</published><updated>2006-06-24T17:58:45.850+08:00</updated><title type='text'>Running DbUnit on a Single Connection</title><content type='html'>When I run my DbUnit tests using on a single connection, I get the following exception:&lt;br /&gt;&lt;blockquote&gt;java.sql.SQLException: No operations allowed after connection closed&lt;/blockquote&gt;My guess is DbUnit closes a connection after each test is run.  This not an issue if I'm using an ordinary DB which allows multiple connections, but if I'm using Derby in embedded mode, I'm stuck, because embedded Derby only allows one connection at a time.&lt;br /&gt;&lt;br /&gt;Is there a way to configure DbUnit to reuse a single connection?&lt;br /&gt;&lt;br /&gt;Note:  I'm using the default setup and teardown operations of DbUnit (CLEAN_INSERT).&lt;br /&gt;&lt;br /&gt;UPDATE:  Looks like I found the &lt;a href="http://dbunit.sourceforge.net/bestpractices.html#connections"&gt;answer to my question&lt;/a&gt;.&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/21284276-115114274032762368?l=calenlegaspi.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://calenlegaspi.blogspot.com/feeds/115114274032762368/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=21284276&amp;postID=115114274032762368' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/21284276/posts/default/115114274032762368'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/21284276/posts/default/115114274032762368'/><link rel='alternate' type='text/html' href='http://calenlegaspi.blogspot.com/2006/06/running-dbunit-on-single-connection.html' title='Running DbUnit on a Single Connection'/><author><name>Calen Martin D. Legaspi</name><uri>http://www.blogger.com/profile/06661282916270749630</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='21' height='32' src='http://photos1.blogger.com/blogger/5907/2151/1600/calen_pic.jpg'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-21284276.post-114959836044251008</id><published>2006-06-06T20:44:00.000+08:00</published><updated>2006-06-06T20:52:40.633+08:00</updated><title type='text'>Is This a Code Smell / Name the Code Smell</title><content type='html'>&lt;a onblur="try {parent.deselectBloggerImageGracefully();} catch(e) {}" href="http://photos1.blogger.com/blogger/5907/2151/1600/IllogicalHierarchy.png"&gt;&lt;img style="margin: 0pt 10px 10px 0pt; float: right; cursor: pointer;" src="http://photos1.blogger.com/blogger/5907/2151/320/IllogicalHierarchy.png" alt="" border="0" /&gt;&lt;/a&gt;&lt;br /&gt;I did a lecture on "Code Smells" based on those found in Martin Fowler's "Refactoring" book.  One of the things that wasn't covered in those smells is the practice that I show on the right, what I have so far called "Subclassing for Functionality".  My questions are these:&lt;br /&gt;&lt;ul&gt;&lt;li&gt;Is the practice of "Subclassing for Functionality" a Code Smell or is this bad practice better categorized under some other grouping?&lt;/li&gt;&lt;li&gt;Is there a better name for this bad practice?  After all, Fowler's Code Smells have catchy names ("Shotgun Surgery", "Refused Bequest", "Divergent Change"...).  How about the name "Illogical Hierarchy"?  Can anyone think of a catchier term?  Or at least a more precise or sticky term?&lt;br /&gt;&lt;/li&gt;&lt;/ul&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/21284276-114959836044251008?l=calenlegaspi.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://calenlegaspi.blogspot.com/feeds/114959836044251008/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=21284276&amp;postID=114959836044251008' title='3 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/21284276/posts/default/114959836044251008'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/21284276/posts/default/114959836044251008'/><link rel='alternate' type='text/html' href='http://calenlegaspi.blogspot.com/2006/06/is-this-code-smell-name-code-smell.html' title='Is This a Code Smell / Name the Code Smell'/><author><name>Calen Martin D. Legaspi</name><uri>http://www.blogger.com/profile/06661282916270749630</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='21' height='32' src='http://photos1.blogger.com/blogger/5907/2151/1600/calen_pic.jpg'/></author><thr:total>3</thr:total></entry><entry><id>tag:blogger.com,1999:blog-21284276.post-114956542120570921</id><published>2006-06-06T11:35:00.000+08:00</published><updated>2006-06-06T11:43:41.206+08:00</updated><title type='text'>Start of Headstrong Boot Camp</title><content type='html'>I'm here at the Headstrong office, it's the second day of their boot camp.  We've started conducting our completely-overhauled Java Fundamentals curriculum, where we soak them for &lt;span style="font-style: italic;"&gt;two whole days&lt;/span&gt; in OOP and OOD.  I just gave a quiz this morning so I'll find out if they really got the concepts.  Here are some of the questions I asked:&lt;br /&gt;&lt;br /&gt;1. (1 pt) What is the worst sin in object-oriented programming?&lt;br /&gt;&lt;br /&gt;duplicate code&lt;br /&gt;&lt;br /&gt;2. (1 pt) If you are experiencing “shotgun surgery”, what should you do?&lt;br /&gt;&lt;br /&gt;• consolidate related code together&lt;br /&gt;• eliminate duplicate code&lt;br /&gt;&lt;br /&gt;3. (1 pt) If you see data clumps or are having long parameter lists, what should you do?&lt;br /&gt;&lt;br /&gt;• consolidate the data clumps into a classes&lt;br /&gt;&lt;br /&gt;4. (2 pts) What are the five recommended guidelines in writing a good OO program?&lt;br /&gt;&lt;br /&gt;• The Once and Only Once Rule&lt;br /&gt;• The One Responsibility Rule&lt;br /&gt;• The OO Prime Directive&lt;br /&gt;• The Law of Demeter&lt;br /&gt;• Well-Defined Interfaces, Hidden Implementations&lt;br /&gt;&lt;br /&gt;5. (2 pts) State the “OO Prime Directive”.  Any of the three versions given will suffice.&lt;br /&gt;• Never ask an object for information that you need to do something; rather, ask the object that has the information to do the work for you.”&lt;br /&gt;• Ask for help, not information.&lt;br /&gt;• The maintainability of a program is inversely proportional to the amount of data that flows between objects.&lt;br /&gt;&lt;br /&gt;6. (2 pts)State the Law of Demeter in its precise form.  Complete the blanks below&lt;br /&gt;A method of an object should only invoke the following kinds of objects:&lt;br /&gt;1. itself&lt;br /&gt;2. its parameters&lt;br /&gt;3. any objects it instantiates&lt;br /&gt;4. its direct component objects&lt;br /&gt;7. (1 pt) State the Law of Demeter in its short form:&lt;br /&gt;&lt;br /&gt;Don’t  talk to strangers .&lt;br /&gt;&lt;br /&gt;8. (3 pts) What are the three Core Principles of OOP?  Define each.&lt;br /&gt;• Encapsulation&lt;br /&gt;  o Bundling of related data and operations&lt;br /&gt;  o Information hiding&lt;br /&gt;• Inheritance&lt;br /&gt;o Creating a class by deriving attributes and methods from another class.&lt;br /&gt;• Polymorphism&lt;br /&gt;o When a single data type exhibits multiple behaviors during execution.&lt;br /&gt;o Dynamic binding of a data type.&lt;br /&gt;o “substitutability”&lt;br /&gt;o “pluggability”&lt;br /&gt;&lt;br /&gt;9. (1 pt) In a purely Object-Oriented Language, a class is what does the work. (TRUE / FALSE)&lt;br /&gt;&lt;br /&gt;FALSE – An object/instance does the work.  A class is just a specification/design/template.&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/21284276-114956542120570921?l=calenlegaspi.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://calenlegaspi.blogspot.com/feeds/114956542120570921/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=21284276&amp;postID=114956542120570921' title='3 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/21284276/posts/default/114956542120570921'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/21284276/posts/default/114956542120570921'/><link rel='alternate' type='text/html' href='http://calenlegaspi.blogspot.com/2006/06/start-of-headstrong-boot-camp.html' title='Start of Headstrong Boot Camp'/><author><name>Calen Martin D. Legaspi</name><uri>http://www.blogger.com/profile/06661282916270749630</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='21' height='32' src='http://photos1.blogger.com/blogger/5907/2151/1600/calen_pic.jpg'/></author><thr:total>3</thr:total></entry><entry><id>tag:blogger.com,1999:blog-21284276.post-114925113588042580</id><published>2006-06-02T20:15:00.000+08:00</published><updated>2006-06-02T20:39:21.683+08:00</updated><title type='text'>Revising Java Boot Camp Presentations</title><content type='html'>I've just finished writing my two presentations on Object-Oriented Programming and Object-Oriented Design, and now I've been spending two days writing my &lt;span style="font-style: italic;"&gt;grand opus&lt;/span&gt; on "Working with Objects".  These will change the world!  Haha, I'm having delusions. ;-)  Anyways, I'll post these presentations for free download once we get to overhaul the O&amp;amp;B site.&lt;br /&gt;&lt;br /&gt;Speaking of overhauling our website, has anybody here tried &lt;a href="http://lenya.apache.org/"&gt;Apache Lenya&lt;/a&gt;?  Would you recommend it as our CMS?  How about the &lt;a href="http://www.xwiki.org/"&gt;XWiki&lt;/a&gt; for our external wiki?&lt;br /&gt;&lt;br /&gt;&lt;img src="http://www.mbl.is/folk/dilbert/img/05/1223.gif" width="95%" /&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/21284276-114925113588042580?l=calenlegaspi.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://calenlegaspi.blogspot.com/feeds/114925113588042580/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=21284276&amp;postID=114925113588042580' title='4 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/21284276/posts/default/114925113588042580'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/21284276/posts/default/114925113588042580'/><link rel='alternate' type='text/html' href='http://calenlegaspi.blogspot.com/2006/06/revising-java-boot-camp-presentations.html' title='Revising Java Boot Camp Presentations'/><author><name>Calen Martin D. Legaspi</name><uri>http://www.blogger.com/profile/06661282916270749630</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='21' height='32' src='http://photos1.blogger.com/blogger/5907/2151/1600/calen_pic.jpg'/></author><thr:total>4</thr:total></entry><entry><id>tag:blogger.com,1999:blog-21284276.post-114846326319936750</id><published>2006-05-24T17:29:00.000+08:00</published><updated>2006-05-24T17:50:23.773+08:00</updated><title type='text'>Software Architect's Course - Case Defenses</title><content type='html'>Man!  It's been one &lt;span style="font-style: italic;"&gt;heck&lt;/span&gt; of a month! :-)  We've been conducting &lt;span style="font-style: italic;"&gt;three&lt;/span&gt; simultaneous Java Boot Camps, wrapping up the  Java Architect's Course, and working on a software project.  We've also added two more people to our team... Charo and Ulysses, bringing our compliment to seven.&lt;br /&gt;&lt;br /&gt;The most enjoyable part for me were the &lt;span style="font-weight: bold; font-style: italic;"&gt;case defenses&lt;/span&gt; of the Architect's Course.  For each of three weeks, we would give teams of trainees some project requirements based on actual projects.  The teams would pretend to be competing companies that would put forward bids.  I invited a panel of cheif architects from different consulting companies to sit as panelists for the defense (think of American Idol, only Paula, Randy and Simon are software architects.).&lt;br /&gt;&lt;br /&gt;Man, the panelists dissected each case even more that I expected!  They critiqued each presentation in such areas as performance, security, cost, and correctness.  In the end, I believe the trainees now have working grasp on the heuristics involved in the arcane art of architectural design.  Butch and I picked up quite a thing or two as well!&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/21284276-114846326319936750?l=calenlegaspi.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://calenlegaspi.blogspot.com/feeds/114846326319936750/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=21284276&amp;postID=114846326319936750' title='1 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/21284276/posts/default/114846326319936750'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/21284276/posts/default/114846326319936750'/><link rel='alternate' type='text/html' href='http://calenlegaspi.blogspot.com/2006/05/software-architects-course-case.html' title='Software Architect&apos;s Course - Case Defenses'/><author><name>Calen Martin D. Legaspi</name><uri>http://www.blogger.com/profile/06661282916270749630</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='21' height='32' src='http://photos1.blogger.com/blogger/5907/2151/1600/calen_pic.jpg'/></author><thr:total>1</thr:total></entry><entry><id>tag:blogger.com,1999:blog-21284276.post-114646772414200421</id><published>2006-05-01T15:15:00.000+08:00</published><updated>2006-05-10T09:36:59.823+08:00</updated><title type='text'>O&amp;B Looking for Java Engineers!</title><content type='html'>Ya'll!  Orange &amp; Bronze Software Labs is in frantic need of more Java engineers!  JM, Ealden, Owie, Butch and myself (and tomorrow, Charo) have been working long hours to cover all the work that needs to be done in conducting the Java Boot Camps and the Java Architect's Course, in reviewing and revising the material, and in the two projects we're developing.  And more projects and training gigs are banging on our door!&lt;br /&gt;&lt;br /&gt;If you know anyone who might be interested in joining our team, please have him contact me or anyone on the team.  We're looking for people who truly has a love affair with software development.  The hours are long and irregular, but... they'll be working with, *ehem*, a great team. ;-)  Benefits include a zippy laptop and a personal DSL connection for your home.  There's also the benefit of joining a young and rapidly growing company at the ground floor, and thus having the chance to be one of its leaders when it makes it to the top.  We have also decided from the beginning that deserving staff will be made partners in the company, and so joining us at this time will give one a good shot at partnership.&lt;br /&gt;&lt;br /&gt;Other benefits:  Everyone is &lt;i&gt;required&lt;/i&gt; to blog.  Everyone is encouraged to contribute to an opensource project.  You learn from and otherwise exchange ideas with a team of very passionate programmers.  You're part of an organization that is concerned about &lt;i&gt;your&lt;/i&gt; personal growth as a programmer and as a professional.  You're part of an organization that wants to make a solid contribution to the development of this nation.&lt;br /&gt;&lt;br /&gt;We're looking for all levels... from fresh grads (or even people who haven't finished college), to software architects.  If you're interested, or if you have friends who might be, you can email me your resume (calen AT orangeandbronze DOT com) or contact anyone else on the team.&lt;br /&gt;&lt;br /&gt;Thanks!&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/21284276-114646772414200421?l=calenlegaspi.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://calenlegaspi.blogspot.com/feeds/114646772414200421/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=21284276&amp;postID=114646772414200421' title='4 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/21284276/posts/default/114646772414200421'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/21284276/posts/default/114646772414200421'/><link rel='alternate' type='text/html' href='http://calenlegaspi.blogspot.com/2006/05/ob-looking-for-java-engineers.html' title='O&amp;B Looking for Java Engineers!'/><author><name>Calen Martin D. Legaspi</name><uri>http://www.blogger.com/profile/06661282916270749630</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='21' height='32' src='http://photos1.blogger.com/blogger/5907/2151/1600/calen_pic.jpg'/></author><thr:total>4</thr:total></entry><entry><id>tag:blogger.com,1999:blog-21284276.post-114646355405541811</id><published>2006-05-01T13:54:00.000+08:00</published><updated>2006-05-01T23:04:33.616+08:00</updated><title type='text'>Professionalism in the Software Industry</title><content type='html'>Good point from the article &lt;a href="http://www.butunclebob.com/ArticleS.UncleBob.TheNextBigThing"&gt;"The Next Big Thing"&lt;/a&gt;.  Thanks to Paolo Melendres for posting it on PinoyJUG and Jojo Paderes for resurrecting &lt;a href="http://groups.yahoo.com/group/pinoyjug/message/13321"&gt;the thread&lt;/a&gt;.  Here's the section I want to point out:&lt;br /&gt;&lt;br /&gt;&lt;blockquote&gt;Let's face it. Our industry is hideously unprofessional. What other industry ships the kind of crap to their customers that we so regularly do?&lt;br /&gt;&lt;br /&gt;Don't get me wrong.  There are some &lt;i&gt;very&lt;/i&gt; professional programmers out there. There are professional teams, and even professional software companies. But they are the exception, not the rule. The rule, the exasperating repetitive depressing rule, is that software products are late, over budget, and buggy.&lt;br /&gt;&lt;br /&gt;&lt;span style="font-weight: bold;"&gt;Companies who hire programmers don't really know what a programmer is, so they hire just about anybody and tell them to write code. Then they don't look at the code they write. They just let them hack away until, five or six years later, a &lt;/span&gt;&lt;i style="font-weight: bold;"&gt;few&lt;/i&gt;&lt;span style="font-weight: bold;"&gt; of them realize that cut and paste might not be the best way to build a system.&lt;/span&gt;&lt;br /&gt;&lt;br /&gt;One would think that the schools might help. One would think that a degree in computer science might mean that the graduate could write code. One would be wrong. Many CS grads wrote little or no code in order to get their degrees. I find this astounding; but nevertheless it is true. The CS degree means very little in terms of programming ability.&lt;br /&gt;&lt;/blockquote&gt;I'm hoping O&amp;B can initiate some sort of standardization in the skillset of the Filipino Java Developer.  At some point, we'd like it to be &lt;span style="font-style: italic;"&gt;common knowledge&lt;/span&gt; among managers and recruiters to know that programming syntax isn't the only prerequisite to a programming job.  A programmer has to be able to verify the quality of his code by supporting it with automated unit tests. He has to understand the rudiments of Object-Oriented Design so that his code is efficient to maintain.  He has to understand software engineering processes so he knows how to work in a team.  And then, he has to know the ins and outs of Java technology so well that he can understand and fix any problem, and not just be dependent on his tools.&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/21284276-114646355405541811?l=calenlegaspi.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://calenlegaspi.blogspot.com/feeds/114646355405541811/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=21284276&amp;postID=114646355405541811' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/21284276/posts/default/114646355405541811'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/21284276/posts/default/114646355405541811'/><link rel='alternate' type='text/html' href='http://calenlegaspi.blogspot.com/2006/05/professionalism-in-software-industry.html' title='Professionalism in the Software Industry'/><author><name>Calen Martin D. Legaspi</name><uri>http://www.blogger.com/profile/06661282916270749630</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='21' height='32' src='http://photos1.blogger.com/blogger/5907/2151/1600/calen_pic.jpg'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-21284276.post-114638015824297801</id><published>2006-04-30T14:44:00.000+08:00</published><updated>2006-04-30T22:30:40.270+08:00</updated><title type='text'>First few days of The Java Boot Camp</title><content type='html'>We're now running THREE simultaneous &lt;strong&gt;Java Boot Camps&lt;/strong&gt; and so we've been quite busy. Right now, we're in the middle of the Java Fundamentals and OO module for the classes. We've had an interesting mix of students, from fresh grads to veterans, and so we learned a lot of lessons.&lt;br /&gt;&lt;br /&gt;The first lesson for me is that learning Java syntax and OO at the same time is information overload. Worse, elements of Java syntax actually get in the way of effective understand of OO, particularly &lt;em&gt;statics&lt;/em&gt;. However, using the traditional pattern of Java teaching, it's hard to get away from statics, because the static &lt;em&gt;main&lt;/em&gt; method is one of the first things we teach!&lt;br /&gt;&lt;br /&gt;So I and the team put our heads together and we came up with a few ideas:&lt;br /&gt;&lt;br /&gt;&lt;ul&gt;&lt;li&gt;Spend two or three days &lt;em&gt;just&lt;/em&gt; teaching OO &lt;em&gt;concepts, &lt;/em&gt;devoid of any Java sytax.  The CRC card execise fits into this. &lt;/li&gt;&lt;li&gt;The last part of teaching OO concepts could be UML.  They can model a system using a UML tool, then... generate the Java code!  Voila!  They've created the stubs for a Java application without even knowing Java!  That should be a good segue for learning Java.&lt;/li&gt;&lt;li&gt;Instead of exercises using the &lt;em&gt;main&lt;/em&gt; method, we'll give them classes with method stubs... and UNIT TESTS!  They have to implement the method stubs to make the unit tests pass.  That way, while they only need to know a narrow aspect of the Java language to do an exercise, they get to see how a Java class is properly written and they get a taste of Test-Driven Development!&lt;/li&gt;&lt;/ul&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/21284276-114638015824297801?l=calenlegaspi.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://calenlegaspi.blogspot.com/feeds/114638015824297801/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=21284276&amp;postID=114638015824297801' title='5 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/21284276/posts/default/114638015824297801'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/21284276/posts/default/114638015824297801'/><link rel='alternate' type='text/html' href='http://calenlegaspi.blogspot.com/2006/04/first-few-days-of-java-boot-camp.html' title='First few days of The Java Boot Camp'/><author><name>Calen Martin D. Legaspi</name><uri>http://www.blogger.com/profile/06661282916270749630</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='21' height='32' src='http://photos1.blogger.com/blogger/5907/2151/1600/calen_pic.jpg'/></author><thr:total>5</thr:total></entry><entry><id>tag:blogger.com,1999:blog-21284276.post-114474976675847190</id><published>2006-04-11T18:02:00.000+08:00</published><updated>2006-04-11T22:02:35.203+08:00</updated><title type='text'>Back from the Sun Developer Advisory Council</title><content type='html'>I just got back from the Sun Developer Advisory Council meeting in Goa, India.  I can't say much about it because of the confidentiality agreement I signed with them, but in general terms its a retreat for Sun execs with representatives from the Java development community.  Basically, it was a chance for Sun to get feedback on their strategies.  There were between one and five representatives from each country in the region.&lt;br /&gt;&lt;br /&gt;My most valuable takeaway from the forum were the casual discussions I was able to have with my Indian counterparts.  These execs manage companies with tens of thousands of developers!  Again, the CDA I signed prevents me from going into details, but suffice it to say that it was reassuring to know that even in these immense and well-established companies, the trends of thinking are along similar lines to what we at Orange &amp; Bronze have been advocating in our training - that of leanness, agility, and software engineering best practices.&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/21284276-114474976675847190?l=calenlegaspi.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://calenlegaspi.blogspot.com/feeds/114474976675847190/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=21284276&amp;postID=114474976675847190' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/21284276/posts/default/114474976675847190'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/21284276/posts/default/114474976675847190'/><link rel='alternate' type='text/html' href='http://calenlegaspi.blogspot.com/2006/04/back-from-sun-developer-advisory.html' title='Back from the Sun Developer Advisory Council'/><author><name>Calen Martin D. Legaspi</name><uri>http://www.blogger.com/profile/06661282916270749630</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='21' height='32' src='http://photos1.blogger.com/blogger/5907/2151/1600/calen_pic.jpg'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-21284276.post-114410597948389102</id><published>2006-04-04T06:56:00.000+08:00</published><updated>2006-04-04T07:12:59.500+08:00</updated><title type='text'>Architect's Training Course</title><content type='html'>I'm happy to report that we're on our fifth day of our "Architect's Training Course" which we're giving to thirteen senior developers of Pointwest Technologies.  The objective of the course is to help turn senior developers into software architects.  Below is an outline of the course:&lt;br /&gt;&lt;ul&gt;&lt;li&gt;Overviews of RUP, Extreme Programming, and the role of the software architect.&lt;/li&gt;&lt;li&gt;Code  Smells, Refactoring,  Object-Oriented Design topics (such as the Law of Demeter) and the GoF Design Patterns&lt;/li&gt;&lt;li&gt; Test-Driven Development and JUnit&lt;/li&gt;&lt;li&gt;Enterprise Testing Tools&lt;/li&gt;&lt;ul&gt;&lt;li&gt;JWebUnit, dbUnit, jMock&lt;/li&gt;&lt;/ul&gt;&lt;li&gt;Enterprise Application Patterns (3 days, mainly based on &lt;a href="http://www.martinfowler.com/books.html#eaa"&gt;Martin Fowler's book&lt;/a&gt; but with other patterns as well.  &lt;a href="http://raibledesigns.com/wiki/Wiki.jsp?page=AppFuse"&gt;AppFuse&lt;/a&gt; will be used to demonstrate some of the patterns.)&lt;/li&gt;&lt;li&gt;Survey of various Java technologies&lt;/li&gt;&lt;li&gt;Comprehensive exam&lt;/li&gt;&lt;li&gt;Case presentations!&lt;/li&gt;&lt;ul&gt;&lt;li&gt;The students will be given real RFPs and they will have to create and architectural design.  Then they will have to defend their design to a panel of architects.  There will be three case presentations.&lt;/li&gt;&lt;/ul&gt;&lt;/ul&gt;We've been distributing feedback forms daily and so far we've been getting high marks from our students.  We've also been giving quizzes and graded recitations daily, and the generally good marks on those show that the concepts have been sticking.&lt;br /&gt;&lt;br /&gt;I'm trying to think of a better name for the course.  Originally, we were planning to name it "The Architect's Boot Camp" but I don't feel it's precise because the course isn't in one contiguous block of time (the lectures are twice a week and the cases will be once a week).  "Architect's Training Course" seems kind of bland.  How about "The Architect's Development Course"?&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/21284276-114410597948389102?l=calenlegaspi.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://calenlegaspi.blogspot.com/feeds/114410597948389102/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=21284276&amp;postID=114410597948389102' title='3 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/21284276/posts/default/114410597948389102'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/21284276/posts/default/114410597948389102'/><link rel='alternate' type='text/html' href='http://calenlegaspi.blogspot.com/2006/04/architects-training-course.html' title='Architect&apos;s Training Course'/><author><name>Calen Martin D. Legaspi</name><uri>http://www.blogger.com/profile/06661282916270749630</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='21' height='32' src='http://photos1.blogger.com/blogger/5907/2151/1600/calen_pic.jpg'/></author><thr:total>3</thr:total></entry><entry><id>tag:blogger.com,1999:blog-21284276.post-114044860392799194</id><published>2006-02-20T23:06:00.000+08:00</published><updated>2006-02-20T23:16:44.493+08:00</updated><title type='text'>TrackIt vs Trac</title><content type='html'>I downloaded and installed &lt;a href="http://trackit.sourceforge.net/"&gt;TrackIt&lt;/a&gt; because of the article on &lt;a href="http://theserverside.com"&gt;TSS&lt;/a&gt;.   It seemed to have a nice feature set... "builtin support for several XP item types...".  Well, I found it... confusing.  Maybe I was impatient, but I couldn't figure out how it was used just by poking around.  And it didn't come with a "help" page... I might have looked longer if there was a little tutorial to guide me.&lt;br /&gt;&lt;br /&gt;This is opposed to &lt;a href="http://www.edgewall.com/trac/"&gt;Trac&lt;/a&gt;.  Trac is an issue tracker and wiki in one.  Wiki use should be familiar to many web developers.  Also, the layout is neat and simple - as opposed to TrackIt, which made me tired just looking at everything going on in a single page.  The feature Butch likes most about Trac is you can close an issue with a commit comment.&lt;br /&gt;&lt;br /&gt;Trac is built against SVN. I don't think it works with CVS, which is fine with me. &lt;span class="down" style="display: block;" id="formatbar_CreateLink" title="Link" onmouseover="ButtonHoverOn(this);" onmouseout="ButtonHoverOff(this);" onmouseup="" onmousedown="CheckFormatting(event);FormatbarButton('richeditorframe', this, 8);ButtonMouseDown(this);"&gt;&lt;/span&gt; &lt;span class="down" style="display: block;" id="formatbar_CreateLink" title="Link" onmouseover="ButtonHoverOn(this);" onmouseout="ButtonHoverOff(this);" onmouseup="" onmousedown="CheckFormatting(event);FormatbarButton('richeditorframe', this, 8);ButtonMouseDown(this);"&gt;&lt;/span&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/21284276-114044860392799194?l=calenlegaspi.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://calenlegaspi.blogspot.com/feeds/114044860392799194/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=21284276&amp;postID=114044860392799194' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/21284276/posts/default/114044860392799194'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/21284276/posts/default/114044860392799194'/><link rel='alternate' type='text/html' href='http://calenlegaspi.blogspot.com/2006/02/trackit-vs-trac.html' title='TrackIt vs Trac'/><author><name>Calen Martin D. Legaspi</name><uri>http://www.blogger.com/profile/06661282916270749630</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='21' height='32' src='http://photos1.blogger.com/blogger/5907/2151/1600/calen_pic.jpg'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-21284276.post-114042206259587490</id><published>2006-02-20T15:54:00.000+08:00</published><updated>2006-02-20T15:54:22.600+08:00</updated><title type='text'>Props to the Doc Team of AspectJ!</title><content type='html'>I'd just like to give props to the documentation team of AspectJ!&amp;nbsp; It was such an easy read to go through their tutorial, mainly because it was teaching &lt;I&gt;by example&lt;/I&gt;.&amp;nbsp; I have no doubt there were more lines of code examples in &lt;I&gt;The&lt;/I&gt; &lt;I&gt;AspectJ Programming Guide&lt;/I&gt; than lines of text.&lt;BR&gt; &lt;BR&gt; Even their &amp;quot;Quick Reference&amp;quot; guide was by example.&amp;nbsp; Take a look at this:&lt;BR&gt; &lt;BR&gt; &amp;nbsp;&amp;nbsp;&amp;nbsp; before () : get(int Foo.y) { ... }&lt;BR&gt; &amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;I&gt;runs before reading the field int Foo.y&lt;/I&gt;&lt;BR&gt; &lt;BR&gt; Other quick reference guides would opt for backus-naur notation, which is more precise and concise, but doesn't really get you to understand the concept easily.&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/21284276-114042206259587490?l=calenlegaspi.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://calenlegaspi.blogspot.com/feeds/114042206259587490/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=21284276&amp;postID=114042206259587490' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/21284276/posts/default/114042206259587490'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/21284276/posts/default/114042206259587490'/><link rel='alternate' type='text/html' href='http://calenlegaspi.blogspot.com/2006/02/props-to-doc-team-of-aspectj.html' title='Props to the Doc Team of AspectJ!'/><author><name>Calen Martin D. Legaspi</name><uri>http://www.blogger.com/profile/06661282916270749630</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='21' height='32' src='http://photos1.blogger.com/blogger/5907/2151/1600/calen_pic.jpg'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-21284276.post-114042056524297034</id><published>2006-02-20T15:29:00.000+08:00</published><updated>2006-02-20T15:29:25.293+08:00</updated><title type='text'>AOP Around Advice and Python's Way of Exposing Properties</title><content type='html'>I just read the part of &lt;I&gt;The AspectJ Programming Guide&lt;/I&gt; about the &amp;quot;around&amp;quot; advice.&amp;nbsp; What the around advice does is that every time a method is called that matches your criteria (for example, all methods that begin with &amp;quot;set&amp;quot; in certain classes), it runs the code in the advice &lt;I&gt;instead&lt;/I&gt; of the code in the method.&lt;BR&gt; &lt;BR&gt; This reminds me of what Butch told me about the Python language.&amp;nbsp; In Python, the fields of a class are public by default!&amp;nbsp; This is shocking for Java programmers.&amp;nbsp; I know it was shocking to me - doesn't that make for rigid code?&amp;nbsp; Butch said no, because later on you can redirect the call to the field to instead run a method.&amp;nbsp; This is similar to around advice, only on fields.&lt;BR&gt; &lt;BR&gt; I think that Python's way of exposing properties is a lot better than Java's, where you expose attributes through getters and setters.&amp;nbsp; It's actually such a maintenance bother to manage those methods, even with an IDE.&amp;nbsp; Not to mention the clutter in your code - the idea for the property is already expressed in the attribute, so expressing it doesn't make sense to express each attribute twice more as a getter and setter method.&amp;nbsp;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/21284276-114042056524297034?l=calenlegaspi.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://calenlegaspi.blogspot.com/feeds/114042056524297034/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=21284276&amp;postID=114042056524297034' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/21284276/posts/default/114042056524297034'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/21284276/posts/default/114042056524297034'/><link rel='alternate' type='text/html' href='http://calenlegaspi.blogspot.com/2006/02/aop-around-advice-and-pythons-way-of.html' title='AOP Around Advice and Python&apos;s Way of Exposing Properties'/><author><name>Calen Martin D. Legaspi</name><uri>http://www.blogger.com/profile/06661282916270749630</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='21' height='32' src='http://photos1.blogger.com/blogger/5907/2151/1600/calen_pic.jpg'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-21284276.post-114023476698650072</id><published>2006-02-18T11:52:00.000+08:00</published><updated>2006-02-18T11:52:46.990+08:00</updated><title type='text'>Updated Web Tier Specs for Java EE</title><content type='html'>&gt;From Matt Raible's Blog:&amp;nbsp; &lt;A HREF="http://raibledesigns.com/page/rd?anchor=updated_web_tier_specs_for"&gt;http://raibledesigns.com/page/rd?anchor=updated_web_tier_specs_for&lt;/A&gt;&lt;BR&gt; &lt;BR&gt; &lt;BLOCKQUOTE&gt;     &lt;B&gt;&lt;U&gt;Updated Web Tier Specs for Java EE&lt;/U&gt;&lt;/B&gt; &lt;BR&gt;     &lt;BR&gt;     Ed Burns (JSP Spec Lead) points out there's &lt;A HREF="http://weblogs.java.net/blog/edburns/archive/2006/02/new_drafts_of_j_1.html"&gt;New Drafts of Java EE Web Tier: JSF 1.2, JSP 2.1, Servlet 2.5&lt;/A&gt;&lt;BR&gt;     &lt;BR&gt;     &lt;BLOCKQUOTE&gt;         I'm pleased to announce another revision of the Java EE Web Tier. In &lt;A HREF="http://blogs.sun.com/roller/page/jluehe?entry=implicit_tag_libraries_require_and"&gt;Jan Luehe's blog&lt;/A&gt; you can find out what's new in JSP 2.1 Proposed Final Draft 2 (PFD2). The &lt;A HREF="http://jcp.org/aboutJava/communityprocess/maintenance/jsr154/servlet-2.5_MR2.html"&gt;Change Log for Servlet 2.5&lt;/A&gt; will give you the scoop on the Servlet spec. This blog entry will show what's new in the JSF spec. &lt;BR&gt;         &lt;BR&gt;         In JSF, the most visible new feature since the last draft of the spec is the addition of the &lt;TT&gt;invokeOnComponent()&lt;/TT&gt; method on &lt;TT&gt;UIComponent&lt;/TT&gt;. See below for more details. &lt;BR&gt;         &lt;BR&gt;         This revision of the Java Web Tier is fully implemented in &lt;A HREF="https://glassfish.dev.java.net/downloads/15Feb06.html"&gt;glassfish build 37&lt;/A&gt;, Sun's open source Java EE 5 Application Server, and the basis for the upcoming &lt;A HREF="http://java.sun.com/javaee/"&gt;Java EE SDK&lt;/A&gt;.&lt;BR&gt;     &lt;/BLOCKQUOTE&gt;     &lt;BR&gt;     I changed the link to Jan Luehe's blog because Ed's link seems to be incorrect. My guess is Java EE will be finalized and released before JavaOne. This is how Sun usually does things: work like mad until JavaOne, then take a week or two off to celebrate the release. Other rumors I've heard are that JBoss and Geronimo hope to release Java EE 5 compliant releases by or at JavaOne.&lt;BR&gt;     &lt;BR&gt;     2006 is shaping up to be quite a year for the popular Java web frameworks. Tapestry 4.0, WebWork 2.2, JSF 1.2 and Spring MVC 2.0 (with form tag libraries and smart defaults). The question is, how long will it take for MyFaces to implement JSF 1.2? And when will we see a large-scale site deployed with JSF? &lt;BR&gt;     &lt;BR&gt;     Why isn't Struts or &lt;I&gt;your favorite framework&lt;/I&gt; in this list? Struts is being replaced by WebWork and the rest simply don't have the market share. No one has heard of RIFE or Wicket. However, that didn't stop me from encouraging &lt;A HREF="http://jroller.com/page/sourcebeat?anchor=sourcebeat_and_2006"&gt;SourceBeat to publish a Wicket book&lt;/A&gt;. Having good (published) documentation about a project is the first step to corporate adoption IMO&lt;BR&gt;     &lt;BR&gt; &lt;/BLOCKQUOTE&gt; Regarding Matt's fondness for Wicket... I wonder what it has that WebWork doesn't.&amp;nbsp; Matt, how about an AppFuse version that uses Wicket? ;-)&amp;nbsp; Jared of PinoyJUG seems to be a fan of Wicket as well - maybe he'll shed some light on this framework?&amp;nbsp; Give me a reason to use this instead of WebWork. ;-)&lt;BR&gt; &lt;BLOCKQUOTE&gt;     &lt;BR&gt; &lt;/BLOCKQUOTE&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/21284276-114023476698650072?l=calenlegaspi.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://calenlegaspi.blogspot.com/feeds/114023476698650072/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=21284276&amp;postID=114023476698650072' title='1 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/21284276/posts/default/114023476698650072'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/21284276/posts/default/114023476698650072'/><link rel='alternate' type='text/html' href='http://calenlegaspi.blogspot.com/2006/02/updated-web-tier-specs-for-java-ee.html' title='Updated Web Tier Specs for Java EE'/><author><name>Calen Martin D. Legaspi</name><uri>http://www.blogger.com/profile/06661282916270749630</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='21' height='32' src='http://photos1.blogger.com/blogger/5907/2151/1600/calen_pic.jpg'/></author><thr:total>1</thr:total></entry><entry><id>tag:blogger.com,1999:blog-21284276.post-114023413620223510</id><published>2006-02-18T11:42:00.000+08:00</published><updated>2006-02-18T16:15:42.516+08:00</updated><title type='text'>Re: JUnit Plugin for Eclipse</title><content type='html'>I wrote David Saff, one of the developers working on the Eclipse plugin for JUnit4. Basically, he said don't install it, it's a plugin for Eclipse 3.2. Below is his reply:&lt;br /&gt;&lt;br /&gt;-------- Forwarded Message --------&lt;br /&gt;&lt;b&gt;From&lt;/b&gt;: David Saff &amp;lt;&lt;a href="mailto:David%20Saff%20%3csaff@mit.edu%3e"&gt;saff@mit.edu&lt;/a&gt;&amp;gt;&lt;br /&gt;&lt;b&gt;To&lt;/b&gt;: &lt;a href="mailto:calen@orangeandbronze.com"&gt;calen@orangeandbronze.com&lt;/a&gt;&lt;br /&gt;&lt;b&gt;Subject&lt;/b&gt;: Re: JUnit Plugin for Eclipse&lt;br /&gt;&lt;b&gt;Date&lt;/b&gt;: Fri, 17 Feb 2006 11:14:15 -0500&lt;br /&gt;&lt;br /&gt;Calen,&lt;br /&gt;&lt;br /&gt;Thanks for your interest. I'm working to make sure these plugins get in an upcoming release of Eclipse. In the meantime, the new plugins will not work unless your Eclipse also is built from source patched with the patch files on that bug. Since that's a lot of work for a new developer, I'll soon release an update site that people can use to install the correct plug-ins automatically. Also, the new plug-ins currently only work on Eclipse 3.2M4, and will likely soon only work on 3.2M5.&lt;br /&gt;&lt;br /&gt;Thanks,&lt;br /&gt;&lt;br /&gt;David Saff&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/21284276-114023413620223510?l=calenlegaspi.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://calenlegaspi.blogspot.com/feeds/114023413620223510/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=21284276&amp;postID=114023413620223510' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/21284276/posts/default/114023413620223510'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/21284276/posts/default/114023413620223510'/><link rel='alternate' type='text/html' href='http://calenlegaspi.blogspot.com/2006/02/re-junit-plugin-for-eclipse.html' title='Re: JUnit Plugin for Eclipse'/><author><name>Calen Martin D. Legaspi</name><uri>http://www.blogger.com/profile/06661282916270749630</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='21' height='32' src='http://photos1.blogger.com/blogger/5907/2151/1600/calen_pic.jpg'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-21284276.post-114016228694749397</id><published>2006-02-17T15:44:00.000+08:00</published><updated>2006-02-17T16:08:32.270+08:00</updated><title type='text'>Two possible projects... crossing our fingers.</title><content type='html'>This was a day of exciting news.  We have two possible projects coming up.  One is an interesting workflow application where we can use interesting technologies like AOP, rules engines and JBI.  The other is a Palm application in C, an offshore outsourcing project from the U.S.  Both seem quite intellectually stimulating.  I'm also looking forward to growing the team with top-notch people, to implement these projects.  Butch and I already have some great brains in mind.&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/21284276-114016228694749397?l=calenlegaspi.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://calenlegaspi.blogspot.com/feeds/114016228694749397/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=21284276&amp;postID=114016228694749397' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/21284276/posts/default/114016228694749397'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/21284276/posts/default/114016228694749397'/><link rel='alternate' type='text/html' href='http://calenlegaspi.blogspot.com/2006/02/two-possible-projects-crossing-our.html' title='Two possible projects... crossing our fingers.'/><author><name>Calen Martin D. Legaspi</name><uri>http://www.blogger.com/profile/06661282916270749630</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='21' height='32' src='http://photos1.blogger.com/blogger/5907/2151/1600/calen_pic.jpg'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-21284276.post-114014999393641315</id><published>2006-02-17T12:01:00.000+08:00</published><updated>2006-02-20T14:05:06.113+08:00</updated><title type='text'>Diving into AOP</title><content type='html'>I've finally begun diving into AOP. I downloaded AspectJ 1.5.0 and am now reading the tutorial. I've just started, just finished reading the part on &lt;span style="font-style: italic;"&gt;&lt;span style="font-weight: bold;"&gt;inter-type declarations&lt;/span&gt;&lt;/span&gt;, which is obviously quite powerful and dangerous at the same time. It allows you to add methods and instance variables into a class or set of classes. For example, if you want the &lt;span style="font-style: italic;"&gt;Point&lt;/span&gt;&lt;span style="font-weight: bold;"&gt; &lt;/span&gt;class to have observers &lt;span style="font-style: italic;"&gt;(taken from the AspectJ Programming Guide)&lt;/span&gt;:&lt;br /&gt;&lt;pre&gt;&lt;br /&gt;aspect PointObserving {&lt;br /&gt;   private Vector Point.observers = new Vector();&lt;br /&gt;&lt;br /&gt;   public static void addObserver(Point p, Screen s) {&lt;br /&gt;       p.observers.add(s);&lt;br /&gt;   }&lt;br /&gt;   public static void removeObserver(Point p, Screen s) {&lt;br /&gt;       p.observers.remove(s);&lt;br /&gt;   }&lt;br /&gt;   pointcut changes(Point p): target(p) &amp;&amp;amp; call(void Point.set*(int));&lt;br /&gt;&lt;br /&gt;   after(Point p): changes(p) {&lt;br /&gt;       Iterator iter = p.observers.iterator();&lt;br /&gt;       while ( iter.hasNext() ) {&lt;br /&gt;           updateObserver(p, (Screen)iter.next());&lt;br /&gt;       }&lt;br /&gt;   }&lt;br /&gt;&lt;br /&gt;   static void updateObserver(Point p, Screen s) {&lt;br /&gt;       s.display(p);&lt;br /&gt;   }&lt;br /&gt;}&lt;br /&gt;&lt;/pre&gt;&lt;br /&gt;...it allows you to add similar behavior to a group of unrelated classes without resorting to inheritance. However, this also means that a class has behavior that's not declared in the class's definition. This feature can therfore go either way: It can make code more maintainable by making sure behavior is only declared in one place. Or, if used carelessly, it can make for spaghetti code unlike any spaghetti code the world has ever seen.&lt;br /&gt;&lt;br /&gt;I'm eager to see how Eclipse makes tracing and debugging with AspectJ possible.  Later...&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/21284276-114014999393641315?l=calenlegaspi.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://calenlegaspi.blogspot.com/feeds/114014999393641315/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=21284276&amp;postID=114014999393641315' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/21284276/posts/default/114014999393641315'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/21284276/posts/default/114014999393641315'/><link rel='alternate' type='text/html' href='http://calenlegaspi.blogspot.com/2006/02/diving-into-aop.html' title='Diving into AOP'/><author><name>Calen Martin D. Legaspi</name><uri>http://www.blogger.com/profile/06661282916270749630</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='21' height='32' src='http://photos1.blogger.com/blogger/5907/2151/1600/calen_pic.jpg'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-21284276.post-114010715567187722</id><published>2006-02-17T00:25:00.000+08:00</published><updated>2006-06-15T11:35:12.623+08:00</updated><title type='text'>JUnit4 w/ Eclipse</title><content type='html'>I gave JUnit4 a spin with Eclipse. JUnit4 allows you to create tests simply by tagging a method with @Test. You don't have to create a subclass of TestCase. I was able to get this code to run as a test case on Eclipse:&lt;br /&gt;&lt;br /&gt;&lt;table bg="" style="color: rgb(255, 255, 255);" border="0" cellpadding="3" cellspacing="0"&gt;&lt;br /&gt; &lt;tbody&gt;&lt;tr&gt;&lt;br /&gt;&lt;!-- start source code --&gt;&lt;br /&gt; &lt;td align="left" nowrap="nowrap" valign="top"&gt;&lt;br /&gt;  &lt;code&gt;&lt;br /&gt;&lt;span style="color: rgb(127, 0, 85);"&gt;&lt;b&gt;import static &lt;/b&gt;&lt;/span&gt;&lt;span style="color: rgb(0, 0, 0);"&gt;junit.framework.Assert.assertTrue;&lt;/span&gt;&lt;br /&gt;&lt;span style="color: rgb(127, 0, 85);"&gt;&lt;b&gt;import &lt;/b&gt;&lt;/span&gt;&lt;span style="color: rgb(0, 0, 0);"&gt;junit.framework.JUnit4TestAdapter;&lt;/span&gt;&lt;br /&gt;&lt;span style="color: rgb(127, 0, 85);"&gt;&lt;b&gt;public class &lt;/b&gt;&lt;/span&gt;&lt;span style="color: rgb(0, 0, 0);"&gt;TestTest &lt;/span&gt;&lt;br /&gt;&lt;span style="color: rgb(255, 255, 255);"&gt;  &lt;/span&gt;&lt;span style="color: rgb(100, 100, 100);"&gt;@org.junit.Test &lt;/span&gt;&lt;span style="color: rgb(127, 0, 85);"&gt;&lt;b&gt;public &lt;/b&gt;&lt;/span&gt;&lt;span style="color: rgb(127, 0, 85);"&gt;&lt;b&gt;void &lt;/b&gt;&lt;/span&gt;&lt;span style="color: rgb(0, 0, 0);"&gt;method&lt;/span&gt;&lt;span style="color: rgb(0, 0, 0);"&gt;() {&lt;/span&gt;&lt;br /&gt;&lt;span style="color: rgb(255, 255, 255);"&gt;    &lt;/span&gt;&lt;span style="color: rgb(0, 0, 0);"&gt;System.out.println&lt;/span&gt;&lt;span style="color: rgb(0, 0, 0);"&gt;(&lt;/span&gt;&lt;span style="color: rgb(42, 0, 255);"&gt;"success!"&lt;/span&gt;&lt;span style="color: rgb(0, 0, 0);"&gt;)&lt;/span&gt;&lt;span style="color: rgb(0, 0, 0);"&gt;;&lt;/span&gt;&lt;br /&gt;&lt;span style="color: rgb(255, 255, 255);"&gt;    &lt;/span&gt;&lt;span style="color: rgb(0, 0, 0);"&gt;assertTrue&lt;/span&gt;&lt;span style="color: rgb(0, 0, 0);"&gt;(&lt;/span&gt;&lt;span style="color: rgb(127, 0, 85);"&gt;&lt;b&gt;true&lt;/b&gt;&lt;/span&gt;&lt;span style="color: rgb(0, 0, 0);"&gt;)&lt;/span&gt;&lt;span style="color: rgb(0, 0, 0);"&gt;;&lt;/span&gt;&lt;br /&gt;&lt;span style="color: rgb(255, 255, 255);"&gt;  &lt;/span&gt;&lt;span style="color: rgb(0, 0, 0);"&gt;}&lt;/span&gt;&lt;br /&gt;&lt;span style="color: rgb(255, 255, 255);"&gt;  &lt;/span&gt;&lt;br /&gt;&lt;span style="color: rgb(255, 255, 255);"&gt;  &lt;/span&gt;&lt;span style="color: rgb(127, 0, 85);"&gt;&lt;b&gt;public static &lt;/b&gt;&lt;/span&gt;&lt;span style="color: rgb(0, 0, 0);"&gt;junit.framework.Test suite&lt;/span&gt;&lt;span style="color: rgb(0, 0, 0);"&gt;() { &lt;/span&gt;&lt;br /&gt;&lt;span style="color: rgb(255, 255, 255);"&gt;      &lt;/span&gt;&lt;span style="color: rgb(127, 0, 85);"&gt;&lt;b&gt;return new &lt;/b&gt;&lt;/span&gt;&lt;span style="color: rgb(0, 0, 0);"&gt;JUnit4TestAdapter&lt;/span&gt;&lt;span style="color: rgb(0, 0, 0);"&gt;(&lt;/span&gt;&lt;span style="color: rgb(0, 0, 0);"&gt;TestTest.&lt;/span&gt;&lt;span style="color: rgb(127, 0, 85);"&gt;&lt;b&gt;class&lt;/b&gt;&lt;/span&gt;&lt;span style="color: rgb(0, 0, 0);"&gt;)&lt;/span&gt;&lt;span style="color: rgb(0, 0, 0);"&gt;; &lt;/span&gt;&lt;br /&gt;&lt;span style="color: rgb(255, 255, 255);"&gt;  &lt;/span&gt;&lt;span style="color: rgb(0, 0, 0);"&gt;}&lt;/span&gt;&lt;br /&gt;&lt;span style="color: rgb(0, 0, 0);"&gt;}&lt;/span&gt;&lt;/code&gt;&lt;br /&gt;&lt;br /&gt; &lt;/td&gt;&lt;br /&gt;&lt;!-- end source code --&gt;&lt;br /&gt; &lt;/tr&gt;&lt;br /&gt;&lt;/tbody&gt;&lt;/table&gt;&lt;br /&gt;&lt;br /&gt;&lt;!-- =       END of automatically generated HTML code       = --&gt;&lt;br /&gt;&lt;!-- ======================================================== --&gt;&lt;br /&gt;&lt;br /&gt;It didn't work right out of the box for me. I did a bunch of tweaks. I don't know which ones made it work and which ones didn't. Maybe you can tell me. ;-) Below are the stuff I did.&lt;br /&gt;&lt;blockquote&gt; - I changed the "JUNIT_HOME" variable in Eclipse (Window --&amp;gt; Preferences --&amp;gt; Java --&amp;gt; Build Path --&amp;gt; Classpath Variable) to point to the location of JUnit4&lt;br /&gt;- I downloaded and installed a patch found &lt;a href="https://bugs.eclipse.org/bugs/show_bug.cgi?id=102632"&gt;here&lt;/a&gt;.&lt;br /&gt;- In my "Run" configuration, made sure that the JUnit4 jar was in the classpath.&lt;br /&gt;&lt;/blockquote&gt; Let me know if any of ya'll know a proper howto on setting up JUnit4 w/ Eclipse 3.1.  Thanks!&lt;br /&gt;&lt;br /&gt;UPDATE: The JUnit4 patch won't work with Eclipse 3.1.  It's for Eclipse 3.2. &lt;a href="http://calenlegaspi.blogspot.com/2006/02/re-junit-plugin-for-eclipse.html"&gt;Read this post.&lt;/a&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/21284276-114010715567187722?l=calenlegaspi.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://calenlegaspi.blogspot.com/feeds/114010715567187722/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=21284276&amp;postID=114010715567187722' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/21284276/posts/default/114010715567187722'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/21284276/posts/default/114010715567187722'/><link rel='alternate' type='text/html' href='http://calenlegaspi.blogspot.com/2006/02/junit4-w-eclipse.html' title='JUnit4 w/ Eclipse'/><author><name>Calen Martin D. Legaspi</name><uri>http://www.blogger.com/profile/06661282916270749630</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='21' height='32' src='http://photos1.blogger.com/blogger/5907/2151/1600/calen_pic.jpg'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-21284276.post-113974465524694347</id><published>2006-02-12T19:44:00.000+08:00</published><updated>2006-02-12T19:44:15.250+08:00</updated><title type='text'>Now I know why Middlegen seems mothballed - Hibernate Tools</title><content type='html'>Now I have some idea to why the Middlegen project seems halted.&amp;nbsp; Reverse engineering from a DB schema is now part of the &amp;quot;Hibernate Tools&amp;quot; project.&amp;nbsp; I have some &lt;A HREF="http://orangeandbronze.com/onbwiki/HibernateReverseEngineeringNotes"&gt;notes&lt;/A&gt; on it in our company's wiki.&amp;nbsp; I have yet to give it a spin.&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/21284276-113974465524694347?l=calenlegaspi.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://calenlegaspi.blogspot.com/feeds/113974465524694347/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=21284276&amp;postID=113974465524694347' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/21284276/posts/default/113974465524694347'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/21284276/posts/default/113974465524694347'/><link rel='alternate' type='text/html' href='http://calenlegaspi.blogspot.com/2006/02/now-i-know-why-middlegen-seems.html' title='Now I know why Middlegen seems mothballed - Hibernate Tools'/><author><name>Calen Martin D. Legaspi</name><uri>http://www.blogger.com/profile/06661282916270749630</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='21' height='32' src='http://photos1.blogger.com/blogger/5907/2151/1600/calen_pic.jpg'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-21284276.post-113913295810788260</id><published>2006-02-05T17:39:00.000+08:00</published><updated>2006-02-05T22:40:46.143+08:00</updated><title type='text'>Initial Poking of Middlegen</title><content type='html'>Well, my initial poking around with Middlegen looks promising.  I generated Hibernate files and POJOs using their sample project.&lt;br /&gt;&lt;br /&gt;One issue though is that they haven't had a new release since 2004!  I guess I shouldn't hope for a version of Middlegen that's based on the latest release of Hibernate.&lt;br /&gt;&lt;br /&gt;I wonder if there's a code-generator similar to Middlegen for Python?&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/21284276-113913295810788260?l=calenlegaspi.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://calenlegaspi.blogspot.com/feeds/113913295810788260/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=21284276&amp;postID=113913295810788260' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/21284276/posts/default/113913295810788260'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/21284276/posts/default/113913295810788260'/><link rel='alternate' type='text/html' href='http://calenlegaspi.blogspot.com/2006/02/initial-poking-of-middlegen.html' title='Initial Poking of Middlegen'/><author><name>Calen Martin D. Legaspi</name><uri>http://www.blogger.com/profile/06661282916270749630</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='21' height='32' src='http://photos1.blogger.com/blogger/5907/2151/1600/calen_pic.jpg'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-21284276.post-113903816068353250</id><published>2006-02-04T14:46:00.000+08:00</published><updated>2006-02-05T17:55:23.356+08:00</updated><title type='text'>Reconsidering Pair-Programming</title><content type='html'>I re-read &lt;a href="http://collaboration.csc.ncsu.edu/laurie/Papers/Kindergarten.PDF"&gt;All I Really Need to Know about Pair Programming I Learned In Kindergarten&lt;/a&gt; as well as &lt;a href="http://www.c2.com/cgi/wiki?ProgrammingInPairsTestimonials"&gt;Programming in Pairs Testimonials&lt;/a&gt;. I admit I haven't been a fan of pair-programming because it hasn't worked for me. I like to sit alone following a train of thought, and I can't do that when someone else is there. If find I'm like that for any kind of analytical work, like for some of the cases in my Finance classes - I have trouble thinking when my groupmates are around. Still, I find the arguements for pair programming valid - continuous code review, having someone to discuss your thoughts with, reducing the temptation to be distracted, etc. Particularly the third argument - I tend to wander off (read my mail, read an article, nap...) when I should be working.&lt;br /&gt;&lt;br /&gt;I think the reasons for Pair Programming failing with me are the following:&lt;br /&gt;&lt;ul&gt;   &lt;li&gt;Not being able to develop a working relationship with a programming partner - Prior to being partners in our company, Butch and I did our consulting "on the side". The logistics of this arrangement didn't allow us to meet and code together every day. We tried to remedy this with "code sprints" on weekends, but it still wasn't enough to build an efficient synchronicity between us for pair-programming.&lt;/li&gt;   &lt;li&gt;Not being able to code continuously - My time is currently divided between programming and business tasks - a schedule too disruptive for pair programming. I'm hoping a partner can come on who can take over much of my business tasks so I can spend more time in coding. Part of my plan is to offload marketing to strategic partners so that our team is more focused on our core competence.&lt;/li&gt; &lt;/ul&gt;Here's how I think pair-programming can be most effective:&lt;br /&gt;&lt;ul&gt;   &lt;li&gt;Dedicated, contiguous coding time. - I need to be free from most non-programming tasks for weeks at a time. Hopefully a partner can come on board that can take over much of these for me. If this can't be done, time-box non coding tasks, like replying to emails only in two forty-five minute periods in each day, and reserving only one day a week for client calls and other non-programming related meetings.&lt;br /&gt;&lt;/li&gt;   &lt;li&gt;10%-50% done doing solo work. - The "Kindergarten" article said that some work should still be done solo, such as exploratory work or work involving deep concentration. The way I see it, pair programming should be scheduled, say, two hours in the morning then two hours in the afternoon, and then the rest of the time doing solo work.&lt;/li&gt;&lt;li&gt;Daily planning. - I think a pair should decide on what they aim to accomplish for the day and general design approach before they start to code. My experience in the "ad-h0c" pair programming is I have a particular train of thought and my partner disrupts it with a very different approach. I think some daily planning ensures that the pair pulls in about the same direction.&lt;br /&gt; &lt;/li&gt;    &lt;li&gt;Unit-tests should especially be done in pairs. - According to Butch. I think this is because the unit tests define functionality anyway, so if you get those right, much of the rest of the code becomes trivial to implement.&lt;/li&gt;&lt;li&gt;Bigger monitor! - Butch and I are not small, skinny people. It gets cramped looking at the same screen (usually a 15" or 15.4" laptop screen). I need to get myself at least 19" monitor someday. Heck, even better, a dual-monitor set-up!&lt;/li&gt;  &lt;/ul&gt;If ya'll have any more tips on how to make pair-programming more effective for a lone wolf like me, do post it here.&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/21284276-113903816068353250?l=calenlegaspi.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://calenlegaspi.blogspot.com/feeds/113903816068353250/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=21284276&amp;postID=113903816068353250' title='2 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/21284276/posts/default/113903816068353250'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/21284276/posts/default/113903816068353250'/><link rel='alternate' type='text/html' href='http://calenlegaspi.blogspot.com/2006/02/reconsidering-pair-programming.html' title='Reconsidering Pair-Programming'/><author><name>Calen Martin D. Legaspi</name><uri>http://www.blogger.com/profile/06661282916270749630</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='21' height='32' src='http://photos1.blogger.com/blogger/5907/2151/1600/calen_pic.jpg'/></author><thr:total>2</thr:total></entry><entry><id>tag:blogger.com,1999:blog-21284276.post-113890153003597245</id><published>2006-02-03T01:28:00.000+08:00</published><updated>2006-02-03T01:32:10.043+08:00</updated><title type='text'>Middlegen: Generate Classes from DB Schema</title><content type='html'>Continuing from my &lt;a href="http://calenlegaspi.blogspot.com/2006/01/generating-java-classes-from-database.html"&gt;previous post&lt;/a&gt; on generating Java classes from a DB schema, I found &lt;a href="http://boss.bekk.no/boss/middlegen/"&gt;Middlegen&lt;/a&gt;.  I did a quick google for reviews on it but didn't immediately find any.  Are there any significant projects that have used this?  I wonder why I haven't heard of a project that's using this. &lt;span class="" style="display: block;" id="formatbar_CreateLink" title="Link" onmouseover="ButtonHoverOn(this);" onmouseout="ButtonHoverOff(this);" onmouseup="" onmousedown="CheckFormatting(event);FormatbarButton('richeditorframe', this, 8);ButtonMouseDown(this);"&gt;&lt;/span&gt;&lt;span class="down" style="display: block;" id="formatbar_CreateLink" title="Link" onmouseover="ButtonHoverOn(this);" onmouseout="ButtonHoverOff(this);" onmouseup="" onmousedown="CheckFormatting(event);FormatbarButton('richeditorframe', this, 8);ButtonMouseDown(this);"&gt;&lt;/span&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/21284276-113890153003597245?l=calenlegaspi.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://calenlegaspi.blogspot.com/feeds/113890153003597245/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=21284276&amp;postID=113890153003597245' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/21284276/posts/default/113890153003597245'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/21284276/posts/default/113890153003597245'/><link rel='alternate' type='text/html' href='http://calenlegaspi.blogspot.com/2006/02/middlegen-generate-classes-from-db.html' title='Middlegen: Generate Classes from DB Schema'/><author><name>Calen Martin D. Legaspi</name><uri>http://www.blogger.com/profile/06661282916270749630</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='21' height='32' src='http://photos1.blogger.com/blogger/5907/2151/1600/calen_pic.jpg'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-21284276.post-113867867339719170</id><published>2006-01-31T11:29:00.000+08:00</published><updated>2006-01-31T11:44:28.566+08:00</updated><title type='text'>Domain-Driven RAD Frameworks</title><content type='html'>I'm half done with the tutorial for AppFuse. So far, it's not much different from the way Butch and I did our last application, only there's already some pre-existing code. I haven't gotten to the part that introduces AppGen, however, and I think that AppGen is the key advantage of AppFuse.&lt;br /&gt;&lt;br /&gt;I got distracted, however, by Trails.  Check out &lt;a href="https://trails.dev.java.net/files/documents/2296/13104/trails_withnarration.mov"&gt;this movie&lt;/a&gt;! You can focus on your domain and the app generates everything front and back of it, both UI and persistence. The stack it uses is Spring, Hibernate and Tapestry.&lt;br /&gt;&lt;br /&gt;What I'd like to see is one of these domain-driven RAD frameworks that makes use of the Hibernate-Spring-WebWork-FreeMarker stack, with Java 5 Annotations. And maybe one using Maven instead of ANT?&lt;br /&gt;&lt;br /&gt;And I wonder how hard it would be to create a framework that generates a thick client, such as one built on Swing or SWT/Eclipse-RCP.&lt;br /&gt;&lt;br /&gt;A framework built on the stack we like might be a good project for O&amp;B, and perhaps something we can open-source.  Next on my study queue would be Hibernate Annotations - I found &lt;a href="http://www.developer.com/java/ent/article.php/10933_3577101_1"&gt;this tutorial&lt;/a&gt;.&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/21284276-113867867339719170?l=calenlegaspi.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://calenlegaspi.blogspot.com/feeds/113867867339719170/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=21284276&amp;postID=113867867339719170' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/21284276/posts/default/113867867339719170'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/21284276/posts/default/113867867339719170'/><link rel='alternate' type='text/html' href='http://calenlegaspi.blogspot.com/2006/01/domain-driven-rad-frameworks.html' title='Domain-Driven RAD Frameworks'/><author><name>Calen Martin D. Legaspi</name><uri>http://www.blogger.com/profile/06661282916270749630</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='21' height='32' src='http://photos1.blogger.com/blogger/5907/2151/1600/calen_pic.jpg'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-21284276.post-113863603599191317</id><published>2006-01-30T23:43:00.000+08:00</published><updated>2006-01-30T23:47:15.990+08:00</updated><title type='text'>Squeezing in Some Time to Code Again</title><content type='html'>I'm trying to sqeeze in studying some programming!  I'm staying up to study AppFuse.  It's a welcome break from my months of proposals, meetings, schedules, presentation materials and MBA cases.&lt;br /&gt;&lt;br /&gt;Do you think I can find someone to take over my job as head of this business so I can go back to code?&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/21284276-113863603599191317?l=calenlegaspi.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://calenlegaspi.blogspot.com/feeds/113863603599191317/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=21284276&amp;postID=113863603599191317' title='2 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/21284276/posts/default/113863603599191317'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/21284276/posts/default/113863603599191317'/><link rel='alternate' type='text/html' href='http://calenlegaspi.blogspot.com/2006/01/squeezing-in-some-time-to-code-again.html' title='Squeezing in Some Time to Code Again'/><author><name>Calen Martin D. Legaspi</name><uri>http://www.blogger.com/profile/06661282916270749630</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='21' height='32' src='http://photos1.blogger.com/blogger/5907/2151/1600/calen_pic.jpg'/></author><thr:total>2</thr:total></entry><entry><id>tag:blogger.com,1999:blog-21284276.post-113863577549775505</id><published>2006-01-30T23:37:00.000+08:00</published><updated>2006-01-30T23:42:55.506+08:00</updated><title type='text'>J2EE Health Care Application for 180 Million in Four Months!</title><content type='html'>Whoa, go Brazil!  They were able to pull off a completely open-source J2EE health care system in just 4 months!  180 million users, 1 million lines of code, 60 developers!  Watch the presentation &lt;a href="http://www.javapolis.com/confluence/display/JP05/The+Architecture+of+the+Brazilian+Health"&gt;here&lt;/a&gt;.&lt;span class="down" style="display: block;" id="formatbar_CreateLink" title="Link" onmouseover="ButtonHoverOn(this);" onmouseout="ButtonHoverOff(this);" onmouseup="" onmousedown="CheckFormatting(event);FormatbarButton('richeditorframe', this, 8);ButtonMouseDown(this);"&gt;&lt;/span&gt;&lt;br /&gt;Lessons I learned from this presentation:  Rigorous code conventions and strict code management, code-generation, use of Java 5 Annotations, and continuous integration with Luntbuild.&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/21284276-113863577549775505?l=calenlegaspi.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://calenlegaspi.blogspot.com/feeds/113863577549775505/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=21284276&amp;postID=113863577549775505' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/21284276/posts/default/113863577549775505'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/21284276/posts/default/113863577549775505'/><link rel='alternate' type='text/html' href='http://calenlegaspi.blogspot.com/2006/01/j2ee-health-care-application-for-180.html' title='J2EE Health Care Application for 180 Million in Four Months!'/><author><name>Calen Martin D. Legaspi</name><uri>http://www.blogger.com/profile/06661282916270749630</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='21' height='32' src='http://photos1.blogger.com/blogger/5907/2151/1600/calen_pic.jpg'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-21284276.post-113834137659224292</id><published>2006-01-27T13:53:00.000+08:00</published><updated>2006-01-27T13:56:16.603+08:00</updated><title type='text'>generating Java classes from a database schema</title><content type='html'>What's the best way to generate Java classes from a database schema?  There's this application I've found where the database schema is great but all the Java built on top of it I dislike.  I'm thinking of just reusing the schema to generate a domain model and then build the rest of my application from there.&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/21284276-113834137659224292?l=calenlegaspi.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://calenlegaspi.blogspot.com/feeds/113834137659224292/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=21284276&amp;postID=113834137659224292' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/21284276/posts/default/113834137659224292'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/21284276/posts/default/113834137659224292'/><link rel='alternate' type='text/html' href='http://calenlegaspi.blogspot.com/2006/01/generating-java-classes-from-database.html' title='generating Java classes from a database schema'/><author><name>Calen Martin D. Legaspi</name><uri>http://www.blogger.com/profile/06661282916270749630</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='21' height='32' src='http://photos1.blogger.com/blogger/5907/2151/1600/calen_pic.jpg'/></author><thr:total>0</thr:total></entry></feed>
