Architecture
Apr 06 2011
Need for an Enterprise Architect
Recently, I was brought in, at a Fortune 500 organization, as an Enterprise Architect by their newly established Enterprise Architecture practice. I was to work on a couple of major initiatives. In the kick-off meeting, a Program Manager for one of those initiatives raised this question - "We already have a couple of architects working on this program. Why do I need a third one?". To be fair, he wasn't resisting my presence. He simply wanted to know the value I was going to add. It was a fair question, especially considering the fact that he was indirectly paying for my role.
I am sure different flavors of this question (why does an organization need
Enterprise Architecture (EA) or what exactly is the role of an Enterprise
Architect etc.) have been asked in several other organizations and answered.
Here is my take on it:
Jul 14 2010
A Persistence Pattern Using ThreadLocal And EJB Interceptors
Preface:
One of the traits of a well-designed application is the efficient handling of crosscutting concerns. By efficient I mean the application architecture/framework to handle bulk of the crosscutting concerns (such as security, transaction management, logging etc.) and let the individual services concentrate on the business logic. In this blog entry, I discuss one such cross cutting concern and a way to handle it at the framework level.
Apr 12 2010
Fulfilling client requirements, not good enough
I have participated over many years as a successful BI Consultant, but still the true nature of consulting seems elusive to me. Simply put, "Consulting" means providing expertise, advice or recommendations to someone else whose responsibility it is to act. Good consultants solve problems for their clients. Good consultants have some sort of expertise that their clients don't have.
Before going any further let me share a joke about consultants - A nuclear power plant was about to blow, so a consultant was called in. The consultant came in, punched a few buttons in the control room and the situation was fixed. When the consultant presented the client with a bill for $10,000, they said, "You were only there for 5 minutes and you're charging $10,000? That's outrageous!" To which the consultant replied, "The 5 minutes of my time only cost $5. Knowing which buttons to push to avoid disaster costs $9,995."
Feb 15 2010
Groupthink and the Agile Architect
Need uber-guru types who are willing to challenge the existing groupthink on design and architecture, especially on TDD and emergent design and pair programming anti-pattern” – job post at Monster.com 2/9/2010
I stumbled upon that quote following links on the role of the architect on an agile project. Maybe one important role of the architect is to help the team avoid groupthink.
Jan 02 2010
On DW federation, whac-a-mole, and integrating business data
Information Management recently sent around their pick of best IM blog articles of 2009. Among them was Forrester’s James Kobelius’s reaction to Bill Inmon’s “incineration of a straw man concept that he refers to as ‘virtual data warehousing (DW).’”
Nov 17 2009
Testing Challenges in Large Scale OBIEE Projects: Lessons Learned and Best Practices
Testing in large scale Business Intelligence (BI) projects face challenges in data quality assurance, metrics / aggregation rules verification, source to target mapping accuracy, the test cases to the requirements traceability, and anomalies in the dimensions to facts relationships.
Oracle Business Intelligence Enterprise Edition (OBIEE) is a BI tool that addresses quite a few of these challenges by the nature of the product's growth strategy. As Gartner puts it, "70 functional and industry-specific packaged BI applications built on the Oracle BI Enterprise Edition Platform attests to Oracle's understanding of how to leverage the market interest in domain-specific and prepackaged solutions as a growth driver for its platform." Customers who buy OBIEE typically also buy a relevant packaged solution.
Nov 11 2009
Hampton Roads .NET User Group November 2009 Presentation
I presented a talk called "Enterprise Data Validation" at the Hampton Road .NET User Group this evening. The premise was simple. Data validation needs to happen in all the tiers of a modern application but the validation rules should be defined only once to avoid synchronization errors. In this talk, I showed how to extend SQL Server using extended properties to store regular expressions for data validation as column metadata. I also showed how to add a regular expression matcher to SQL Server using the SQL CLR and how to add check constraints to invoke the regular expression parser. Then I built a WCF service to query the validation metadata to make it available in other application tiers. I quickly assembled WCF service host and client showed how you could bring all of the elements together to create a working Enterprise Validation solution.
Oct 16 2009
Alfresco WCM or DM: What is the best choice for your enterprise portal?
After being involved with recent Alfresco-based enterprise portals, Iʼve begun reflecting on best practices in regards to integration with the popular open-source CMS. This article describes some learnings on integrating Alfrescoʼs Document Management (DM) and Web Content Management (WCM) repositories with an enterprise portal.
Sep 21 2009
PyTip: Avoid Using range() for Large Sequences
When iterating over a sequence of numbers in Python, the range() function is commonly used. However, the implementation of the range() function in Python 2.x instantiates each element in the sequence before the iteration begins. This is really costly from both memory and CPU perspectives when the desired range of numbers is large. Consider using the xrange() function instead which implements a Python generator to yield each number in the sequence as needed. Using xrange() instead of range() for large iterations can have a big, positive impact on your code. For example, in an application I was working on recently, replacing range() calls with xrange() boosted my performance from ~900,000 transactions per second to over 3,000,000. In Python 3.x, the range() function is supposed to be implemented as a generator but I haven't tested that to be true yet. Let me know if you have.
