Posts

Showing posts from 2010

Article: Estimation Toolkit

I chanced upon an article on agile estimation that I read with interest in InfoQ. Many of the techniques are not new with the exception of the WAG generator. I find such estimation techniques to be very useful even if the subject matter is not software-related. Check out InfoQ: Estimation Toolkit

I love this...

Image
Software is hard by Honza

Experience in Creating a Virtual Appliance

Pre-configured Accounts Type Username Password OS super-user jeoser password MySQL administrator root password FTP account joomla password Joomla administrator admin password Basic Unix Commands Command Description apt-get To manage installation, update, upgrade and removal of application packages chown To change the owner of a file or directory chmod To change permission of a file or directory ifconfig To display the network information (e.g. IP address) mount To mount a CD-ROM within the drive for use sudo Allows execution of commands with super-user privileges useradd To add users to the operating system vim My favourite text editor! wget Acts as a faceless browser to retrieve HTML or other files over the network Additional Resources Description URL Give information about installing JeOS as a virtual appliance https://help.ubuntu.com/community/JeOS Gives information about insta

SharePoint Document Locked by Oneself

Have you ever locked a document in SharePoint unknowingly? This happens when one edits a document directly from the site and one of the following happens: Network goes down Office client application crashes SharePoint site goes down When this happens, you will not be able to overwrite the document as the document had been "locked" by you "for editing"! There is no known way of unlocking the document. The solution is to wait-it-out (see http://support.microsoft.com/kb/899709 ). Wait for 10 minutes for the server to auto unlock the document.

Monitoring & Troubleshooting ASP.NET Applications on IIS

Toolbox for the IIS server net start sc query tasklist /svc netstat –ano wfetch/ wget/ curl procmon/ filemon/ regmon eventvwr mmc.exe (reliability & performance monitoring) process time & % .NET CLR ASP.NET Requests Wait Time Requests Current Requests Queued Requests Rejected Toolbox for the browser machine ping telnet/ portcheck wfetch/ wget/ curl When should application pools be turned into web gardens? Web gardens can only be used if the application doesn’t use in-process session variables but rather out-of-process ones (e.g. session state service or database session state). Drivers to using web gardens are: Application makes long-running synchronous requests Application is low in availability and crashes often Application creates high CPU load on work process Non-IIS Settings & Bottlenecks Optimum paging file size setting: 1.5x the RAM for 32-bit OS system-managed for 64-bit OS Disk queue length should always average les

Take-Home Notes from Seminars

Emerging Technologies Cloud – for starters, for for non-business critical functions like CRM, email, collaboration Collaboration User experience Data deluge – what to do with so much data? Top Business Prioritises Business process improvement Reduce enterprise costs Increase use of information & analytics Improve workforce effectiveness Attract & retain new customers Business Intelligence State of Business Intelligence today – 20% of users in an organisation have BI in place; 80% of users do not. BI Solution Architecture Source system ETL processes Data Warehouse solution (ODS, Staging, Analysis cubes) Report presentation Microsoft Business Intelligence Strategy Familiarity – Office integration Collaborative – SharePoint integration Manageability – MS SQL Data Warehouse Trends in Data-Warehouse Increase in volume Reduce cost Adoption of appliances Move into MPP Desire for real-time analytics Realisation of the importance of data quality Microsoft

Making Website Integration More Robust

Take the example of our customer-fronting website that requires integration to a 3rd party payment gateway. We have a situation where there are 2 distinct websites, one dependent on the other to conclude the business process/ flow as well as some form of SLA from the 3rd party. In essence, we do not trust the 3rd party payment gateway with our livelihood. How then do we integrate the websites together? Here are some of the items we desire: the 3rd party payment gateway appears integrated to our website security and regulatory requirements are met customers enjoy the entire website interaction integration failure are monitored or at a minimum, logged customers know what to do in the event of a failure (recovery or mitigation) The current situation is that: it is relatively easy to integrate with the 3rd party payment gateway, but the payment gateway further integrates with other banks’ websites for 3DS Assuming such a web flow: our customer-fronting website (order informatio

Review: Last Minute Manager

Image
A mindmap review of this book. Flash version can be found here

Review: The Secret

Image
A mindmap review of this book. Flash version can be found here

Operational Data Store (ODS)

What is an ODS? An environment: where data from different OLTP databases is integrated which provides a view of enterprise data that addresses operational challenges across more than one business function Characteristics of ODS: subject-oriented - catered to specific function or application (customer-centricity, risk management) integrated - from multiple legacy systems or new and legacy systems timely - data is continuously/ frequently being updated, typically more frequently than daily current - data is typically current with little history detailed - data is sufficiently detailed; not only at a summarized level central version of reference data ODS should be a separate data store from the data warehouse. Difference between ODS and Data Warehouse ODS DW Data Currency Current/ near-current Historical snapshot Data Loading Insert/ Update/ Deletion allowed Only loaded

Review: Agile Practices

Image
A mindmap review of a book on agile practices. Flash version can be found here

Review: Principles of Lean Software Development

Image
The mindmap review of this book. Flash version can be found here

Review: Peter Principle

Image
A mindmap review of this humorous book. Flash version can be found here

Review: Myth of Multitasking

Image
A mindmap review of this book. Flash version can be found here

Review: Leadership is an Art

Image
A mindmap review of this book. Flash version can be found here

Review: Carrot Principle

Image
A mindmap review of this book. Flash version can be found here

Review: Agile Practices

Image
A mindmap review of a book abour Agile Practices. Flash version can be found here

Deciding when to use an Agile or Waterfall methodology

Image
Comparison table: Skill level of developers: Possible hybrid approach for Brownfield projects Site survey Engineering Discovery Re-engineer Generate Test Acceptance Deployment What went wrong with a particular government project? Requirement solicitation happened prior to any development (as part of the tender exercise) Vendor organisation (especially management) isn’t agile enough but customer insisted on unprecedented RAD approach Supposed prototyping team is Overworked – had to develop the prototype during office hours and prepare for presentation after that Not agile enough Not trained to be agile What went wrong with a particular private out-sourced project? Requirement solicitation happened prior to any development (as part of the requirements specification Requirements specification was contractual Customer isn’t agile enough and was not well-prepared for SCRUM (lack of training, knowledge and acceptance) Project started with Wa

asmx .NET Web Service Nuances

When the WSDL specifies that the minimum occurrence of certain elements is zero, the .NET WSDL proxy generator will generate 2 properties for that element (instead of 1). On top of what usually gets generated – a property named according to the XML element – the generator creates another property named Specified of Boolean type. As an example: the WSDL specifies an XML element named policy of type string with minimum occurrence of zero. <xs:element minOccurs=”0” name=”policy” type=”xs:string” /> The generated proxy code will have a read/ write property named policy as expected public string policy {    get { return _policy; }    set { _policy = value; } } Due to the minimum occurrence constraint, another read/ write property named policySpecified will be generated. public bool policySpecified {    get { return _policySpecified; }    set { _policySpecified = value; } } The use of this property is to indicate to the framework that the particular property is in use (or has been s

InfoPath 2007 Tips

To publish InfoPath forms to Sharepoint with time-stamped filenames: concat("Submission as at ", now()) as the filename in the publishing interface To develop using Tools for Office SDK for InfoPath, make use of these: System.Environment.UserName to derive the logged-in username; thisXDocument.Role to derive the roles; thisXDocument.ViewInfos["View Name"] to get to the appropriate view; thisXDocument.DOM.selectSingleNode to select nodes based on the full XML document; docActionEvent.Source.selectSingleNode to select nodes based on the event parameter; Use ActiveX component to derive the domain and username if not using tools for office. Use ActiveXObject("Wscript.Shell") and the process environment. Calling web services from scripting code is not straight-forward and doing the same from the native InfoPath form without code is buggy! Monetary values should be dealt with using String instead of double as multiplication of double yields unexpected

SharePoint 2007 Tips

To display the username in a Title column Choose Default value as Calculated Value; Type in: =REPLACE(Me,1,FIND("\",Me),""); For Team Discussion to work Subject field is used only in the first article within the thread; A web-part would mainly use the Subject and Replies fields for listing; Threaded view – which displays only Threading – is the only useful view; To sort a list by the abbreviated month Create a choice type for month input ([Report Mth]). The values should be the abbreviated month (e.g. Jan, Feb, Mar, etc); Create a calculated column to assign a numeric month to the list; The formulae should be: =MONTH("01-"&[Report Mth]&"-"&1990); To find the difference between 2 dates Use the DATEDIF function on 2 date fields DATEDIF(d1 : Date, d2: Date, “D”) : Number Example: DATEDIF(dateColumn, [Today], “D”) To convert a text value (from InfoPath) to numeric Create a calculated column of numeric type Apply

Database Best Practices

Image
This is summarised from a book titled: Data Modeling Some best practices are described below: Database indexing index foreign keys index on columns with a lot of null values is useless frequently updated columns should not be indexed may not be a bad idea to use table scans for small tables (less than 1K rows) short-rowed tables (few columns) should use index-organised table b-tree index benefits performance if values are selective (distinct). The higher the index selectivity ratio, the better Database views perform better than SQL statements since views are pre-compiled (but Oracle does cache statements) stored procedures perform better than views generally Naming convention Constraint : <TableName> _<Type> _<ColumnName> where may be PK, FK, UQ (unique constraint), CK (check constraint) Index : <TableName>_<Type>_<ColumnName> where may be UX (unique index), IX (non-unique) View : <EntityOrTableName> _VW Code table s

System Architecture and Design Trade-off Document

Image
It is a great idea to write a System Architecture & Design (SAD) Trade-off Document. The format is tabular and will look like the following: Module/ category Issue description Possible alternatives Decision Decision rationale Traded-off attributes Traded-in attributes Consequence/ constraints introduced Some examples of traded attributes are listed in the following table: Category Attribute System Performance Reliability - ability of the system to maintain operating over time (MTTF) Performance - responsiveness of the system to stimuli or events as well as throughput of the system System Control Maintainability - ease with which a system can be modified to correct faults, improve performance, or adapt to changing environment Data timeliness - data latency for information flowing into and out of the system Security - measure of system's ability to resist unauthorised access or DOS Supportability - ease with which a system can be maintained operationally Testa

Deferring Decisions

At times, it is a good idea to deferred decisions until the last responsible moment. In so doing, more information may be made available such that a more informed decision can be made. Deferred Decision - Delay commitment (decision or making a choice) until the last responsible moment (when inaction would results in a potentially irreversible outcome)

Difference between a Report and a Query

Image
Apart from the nomenclature difference, there are some distinctions between a report and a query. This following table summarises the difference:

Unit testing legacy code

What is legacy code? Some define legacy code as code without proper unit tests . Consider these: Did you just write some legacy code yesterday? What happens when you are tasked to take over the maintenance of someone else's code; someone's legacy code? What happens when you need to modify someone's legacy code? Some steps to take when planning to unit test legacy code: identify the area of change build safety net over the area before touching/ changing it refactor the code to ease adding new code write unit test for issue write code for fix/ enhancements Some links to refer to: http://members.pingnet.ch/gamma/junit.htm http://c2.com/cgi/wiki?UnitTestingLegacyCode http://spin.atomicobject.com/2008/12/29/testing-and-legacy-code-a-primer http://www.ibm.com/developerworks/java/library/j-testng/

Using iPad for the Insurance industry?

Some links to using iPad for the enterprise/ insurance http://www.insurancenetworking.com/issues/13_8/ipad-as-insurance-business-platform-ipad-as-an-insurance-business-platform-25560-1.html http://insurance-technology.tmcnet.com/topics/insurance-technology/articles/95402-insurance-provider-geico-announces-android-ipad-mobile-insurance.htm Apple enterprise program: https://developer.apple.com/support/ios/enterprise.html Enterprise provisioning profile deployment: http://developer.apple.com/library/ios/#documentation/NetworkingInternet/Conceptual/iPhoneOTAConfiguration/Introduction/Introduction.html#//apple_ref/doc/uid/TP40009505-CH1-SW1 Enterprise deployment: http://help.apple.com/iosdeployment-apps/ Links to iPad for eSignature http://www.silanis.com/solutions/insurance.html http://www.silanis.com/news/press-releases/2010/apple%E2%80%99s-ipad-to-propel-the-adoption-of-e-signatures-in-insurance-says-silanis.html http://tenonedesign.com/autograph.php http://www.immonline.co

SCM: Use a Branch or a Tag?

When do we use a branch or a tag for source code management? Salient features for each are listed. Tag code snapshot for a short duration of time tag gives more control to developers Branch code development isolated from the main trunk particularly for enhancements work to be done on a historical version major code changes concurrent multi-user development (with the main trunk)

Integration Strategies

Types of integration Data-level Share data; not behaviour Minimal change (if any) to both source and target systems Can be database or file-based ETL File-data transfer Direct database access Bypass business logic (may need to duplicate) Overall data integrity may be compromised If writable, may lead to data corruption and referential integrity violations Capabilities include Data transformation Data validation Data access Schema definition Mapping Schema recognition Application-level Share functionality – business logic Based on API Composite applications Business Process level Share business processes Specified using BPMN Glued together using BPEL(4WS) and BPML Start by defining business processes; then specify logical integration within it Capabilities include: Rules processing Business transaction management Workflow Orchestration Event processing Schedule Presentation Share views Using a portal Non-invasive Application Integration methods Web services - Applicatio