<?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-2664824074085857026</id><updated>2011-07-28T13:09:08.693-07:00</updated><category term='Application management'/><category term='SCM'/><category term='Time Management'/><category term='Business Analysis'/><category term='X-Function'/><category term='Performance'/><category term='Project Management'/><category term='Business Process Management'/><category term='Subversion'/><category term='Version Control'/><category term='Release Management'/><category term='Load Test'/><category term='Process'/><category term='Build'/><category term='Deploy'/><category term='Software Architect'/><title type='text'>Intelligent Build Manager</title><subtitle type='html'></subtitle><link rel='http://schemas.google.com/g/2005#feed' type='application/atom+xml' href='http://intelligentbuildmanager.blogspot.com/feeds/posts/default'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/2664824074085857026/posts/default?max-results=100'/><link rel='alternate' type='text/html' href='http://intelligentbuildmanager.blogspot.com/'/><link rel='hub' href='http://pubsubhubbub.appspot.com/'/><author><name>Lang Hsieh</name><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='http://img2.blogblog.com/img/b16-rounded.gif'/></author><generator version='7.00' uri='http://www.blogger.com'>Blogger</generator><openSearch:totalResults>16</openSearch:totalResults><openSearch:startIndex>1</openSearch:startIndex><openSearch:itemsPerPage>100</openSearch:itemsPerPage><entry><id>tag:blogger.com,1999:blog-2664824074085857026.post-2592468601831379277</id><published>2009-11-09T07:24:00.000-08:00</published><updated>2009-11-11T07:57:50.186-08:00</updated><title type='text'>Welcome, New Build Manager!</title><content type='html'>Hardware Environments&lt;br /&gt;&lt;ul&gt;&lt;li&gt;Web Servers (lms7fixws1/lmsenhws1)&lt;/li&gt;&lt;li&gt;File Servers (lmsfixfs/lmsenhfs)&lt;/li&gt;&lt;li&gt;Database Servers (lms7db)&lt;/li&gt;&lt;li&gt;Build Box (lms7build)&lt;/li&gt;&lt;li&gt;Subversion Server (subversion)&lt;/li&gt;&lt;li&gt;Cruise Control Server (vsafe2)&lt;/li&gt;&lt;/ul&gt;&lt;p&gt;&lt;/p&gt;&lt;p&gt;&lt;/p&gt;Application/Product Environments&lt;br /&gt;&lt;br /&gt;&lt;ul&gt;&lt;li&gt;LMS7&lt;/li&gt;&lt;li&gt;LAS (LASII)&lt;/li&gt;&lt;li&gt;LCMS&lt;/li&gt;&lt;li&gt;LUSAC&lt;/li&gt;&lt;li&gt;Ecommerce&lt;/li&gt;&lt;/ul&gt;&lt;p&gt;&lt;/p&gt;&lt;p&gt;&lt;/p&gt;Build Environments&lt;br /&gt;&lt;br /&gt;&lt;ul&gt;&lt;li&gt;lms7build: Automated Build Studio (pullit.bbp), in-house tools (vbs), stage files for each revision&lt;/li&gt;&lt;li&gt;lms7fixfs: Deploy tools, files for all revisions,builds, and pushes....need cleanup &amp;amp; backup&lt;/li&gt;&lt;li&gt;subversion: passwd files to control SVN commit (F:\SVN\REPOS\&lt;xxx&gt;\conf\passwd)&lt;/li&gt;&lt;li&gt;vsafe2: watchout the over-growing log file (C:\build\server\ccnet.log)&lt;/li&gt;&lt;li&gt;krieweae7u: Earl's machine for ClearCase files (LCMS)&lt;/li&gt;&lt;/ul&gt;&lt;br /&gt;Build Process&lt;br /&gt;&lt;br /&gt;&lt;ol&gt;&lt;li&gt;Pull source files from source control server (update &amp;amp; compile locally)&lt;/li&gt;&lt;li&gt;Build package by revision range or cherry pick&lt;/li&gt;&lt;li&gt;Push code to INT by BM or hand them to TIS/DBA to deploy in QA/UAT/PROD&lt;/li&gt;&lt;li&gt;Email notification to related parties&lt;/li&gt;&lt;li&gt;Advance TTS in ClearQuest&lt;/li&gt;&lt;li&gt;Maintenance build environments after monthly builds&lt;/li&gt;&lt;/ol&gt;&lt;br /&gt;Tools&lt;br /&gt;&lt;br /&gt;&lt;ul&gt;&lt;li&gt;BuildManager.hta &lt;ul&gt;&lt;li&gt;Code: hta &lt;li&gt;Main GUI for Build Manager &lt;li&gt;Server: lms7build &lt;li&gt;Location: C:\_LoadBuild\Tools&lt;/li&gt;&lt;li&gt;&lt;/li&gt;&lt;/ul&gt;&lt;li&gt;PullIt.bbp &lt;/li&gt;&lt;ul&gt;&lt;li&gt;Code: Automated Build Studio file - need to be restarted every week to rlease memory &lt;li&gt;Server: lms7build&lt;/li&gt;&lt;li&gt;Location: C:\_LoadBuild\Tools\Auto_Build_Studio&lt;/li&gt;&lt;li&gt;Config file: :\_LoadBuild\Tools\Auto_Build_Studio\PullIt.ini&lt;/li&gt;&lt;/ul&gt;&lt;li&gt;BuildIt.vbs &lt;ul&gt;&lt;li&gt;Code: VBScript stand alone &lt;li&gt;Server: lms7fixfs &lt;li&gt;Location: F:\ACS\_LoadBuild\Tools &lt;li&gt;Config File: F:\ACS\_LoadBuild\Tools\BuildIt.ini&lt;/li&gt;&lt;/ul&gt;&lt;li&gt;PushIt.vbs &lt;/li&gt;&lt;ul&gt;&lt;li&gt;Code: VBScript stand alone &lt;li&gt;Server: lms7fixfs &lt;li&gt;Location: F:\ACS\_LoadBuild\Tools &lt;li&gt;Config File: F:\ACS\_LoadBuild\Tools\PushIt.ini &lt;/li&gt;&lt;/ul&gt;&lt;li&gt;SendCompletedEmail.vbs &lt;/li&gt;&lt;ul&gt;&lt;li&gt;Code: VBScript stand alone &lt;li&gt;Server: lms7fixfs &lt;li&gt;Location: F:\ACS\_LoadBuild\Tools &lt;li&gt;Mailing List: F:\ACS\_LoadBuild\Tools\email.dat&lt;/li&gt;&lt;/ul&gt;&lt;li&gt;CheckBuildProgress.vbs&lt;/li&gt;&lt;ul&gt;&lt;li&gt;Code: hta (with VBScript) file &lt;li&gt;Server: lms7build&lt;/li&gt;&lt;li&gt;Location: C:\Documents and Settings\hsiehla\My Documents\_BuildManager\Bin&lt;/li&gt;&lt;li&gt;Backend: ClearQuest server using lang's login criteria &lt;li&gt;MaintainUserPassword.wsf - to maintain password&lt;/li&gt;&lt;li&gt;CheckBuildProgress.bat - interface for BuildManager.hta&lt;/li&gt;&lt;/ul&gt;&lt;li&gt;Pull_LAS &lt;ul&gt;&lt;li&gt;Server: lms7build &lt;li&gt;Location: C:\Documents and Settings\hsiehla\My Documents\_BuildManager\Bin &lt;li&gt;Code: wsf file &lt;li&gt;New architected build tools &lt;ul&gt;&lt;li&gt;wsf + VBScript: includes common function libraries &lt;ul&gt;&lt;li&gt;CDOEmail &lt;li&gt;ClearQuest &lt;li&gt;Database &lt;li&gt;Encryption &lt;li&gt;INI &lt;li&gt;OAM &lt;li&gt;RegularExpression &lt;li&gt;Subversion &lt;li&gt;XML &lt;li&gt;FileSystem&lt;/li&gt;&lt;/ul&gt;&lt;li&gt;Structured folders &lt;ul&gt;&lt;li&gt;bin &lt;li&gt;conf &lt;li&gt;data &lt;li&gt;lib &lt;li&gt;lock &lt;li&gt;temp &lt;li&gt;work&lt;/li&gt;&lt;/ul&gt;&lt;/li&gt;&lt;li&gt;Central INI file: C:\Documents and Settings\hsiehla\My Documents\_BuildManager\Conf\BuildManager.ini&lt;/li&gt;&lt;li&gt;Seperated xml file for each subsystem &lt;ul&gt;&lt;li&gt;BuildIt.xml &lt;li&gt;FolderStructure.xml &lt;li&gt;SQLDeployment.xml&lt;/li&gt;&lt;/ul&gt;&lt;/li&gt;&lt;/ul&gt;&lt;/li&gt;&lt;/ul&gt;&lt;/li&gt;&lt;li&gt;Pull_HELP &lt;li&gt;Pull_LCMS&lt;/li&gt;&lt;li&gt;Build_LAS&lt;/li&gt;&lt;li&gt;Database Object Dependency &lt;ul&gt;&lt;li&gt;Server: grahavie7u2003 &lt;li&gt;Location: C:\Documents and Settings\hsiehla\My Documents\_LoadBuild\Tools\SSIS\BuildManager\BuildManager.sln &lt;li&gt;Requirement: SQL SQL Server Business Intelligence Development Studio (BIDS-2005 and above) &lt;li&gt;Move to another server: Just Copy/Move over the BuildManager folder under SSIS to another machine with SQL BIDS installed &lt;li&gt;Executions: &lt;ul&gt;&lt;li&gt;Double click on BuildManager.sln to open in BIDS &lt;li&gt;Run ReapplyExistingSP_CPE.dtsx under SSIS packages from Solution Explorer (help to rebuild object relationship in SQL due to we restore DB from PROD once a while) - about 15 min &lt;li&gt;Run ReapplyExistingSP_LMS.dtsx under SSIS packages from Solution Explorer (same as CPE) - about 40 min &lt;li&gt;Run FindDependency.dtsx under SSIS packages from Solution Explorer&lt;/li&gt;&lt;li&gt;Open DependencyResult_&lt;datetime&gt;.txt file in Excel to view the result&lt;/li&gt;&lt;/ul&gt;&lt;/li&gt;&lt;/ul&gt;&lt;/li&gt;&lt;/ul&gt;&lt;br /&gt;&lt;br /&gt;Communications &lt;p&gt;&lt;/p&gt;&lt;ul&gt;&lt;li&gt;Push: DBA + TIS + Tritschler + Mahagan&lt;/li&gt;&lt;li&gt;INT: all Dev + Tritschler + Mahagan&lt;/li&gt;&lt;li&gt;QA: all QA + all SM/PM + Tritschler + Mahagan + McBride + Martha&lt;/li&gt;&lt;li&gt;PROD: all QA + all SM/PM + Tritschler + Mahagan + McBride + Martha&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/2664824074085857026-2592468601831379277?l=intelligentbuildmanager.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://intelligentbuildmanager.blogspot.com/feeds/2592468601831379277/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://intelligentbuildmanager.blogspot.com/2009/11/welcome-new-build-manager.html#comment-form' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/2664824074085857026/posts/default/2592468601831379277'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/2664824074085857026/posts/default/2592468601831379277'/><link rel='alternate' type='text/html' href='http://intelligentbuildmanager.blogspot.com/2009/11/welcome-new-build-manager.html' title='Welcome, New Build Manager!'/><author><name>Lang Hsieh</name><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='http://img2.blogblog.com/img/b16-rounded.gif'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-2664824074085857026.post-451467299126389462</id><published>2009-10-26T07:46:00.000-07:00</published><updated>2009-11-09T07:24:10.444-08:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='Application management'/><category scheme='http://www.blogger.com/atom/ns#' term='Load Test'/><category scheme='http://www.blogger.com/atom/ns#' term='Software Architect'/><title type='text'>Most Impact Areas - Dimensions</title><content type='html'>Accuracy, Consistency, and Effectiveness&lt;br /&gt;&lt;br /&gt;&lt;ul&gt;&lt;li&gt;Load/Release Building &lt;/li&gt;&lt;ul&gt;&lt;li&gt;Update changed files only&lt;/li&gt;&lt;li&gt;Commits trigger the building process &lt;/li&gt;&lt;li&gt;Periodical/Scheduled builds&lt;/li&gt;&lt;li&gt;Deploy - real time or batch, self or hand over&lt;/li&gt;&lt;li&gt;MS Make (xml/response file)&lt;/li&gt;&lt;li&gt;Version the DLL files &lt;/li&gt;&lt;li&gt;Error Handling - Continue, Skip, or Stop&lt;/li&gt;&lt;li&gt;Send notification when failed to compile&lt;/li&gt;&lt;/ul&gt;&lt;br /&gt;&lt;li&gt;Version Control &lt;/li&gt;&lt;ul&gt;&lt;li&gt;Access Control by ID/Branches &lt;/li&gt;&lt;li&gt;Branching by projects/functionality/bug ticket&lt;/li&gt;&lt;li&gt;Merging by dev/build &lt;/li&gt;&lt;li&gt;Repository Management&lt;/li&gt;&lt;/ul&gt;&lt;br /&gt;&lt;li&gt;Automation &lt;ul&gt;&lt;li&gt;Pull code from version control &lt;/li&gt;&lt;li&gt;Make/Compile code &lt;/li&gt;&lt;li&gt;Package &lt;/li&gt;&lt;li&gt;Deploy Code/Data/SQL&lt;/li&gt;&lt;li&gt;Notification &lt;/li&gt;&lt;li&gt;Advance bug-tracking tickes &lt;/li&gt;&lt;li&gt;Routine maintenance/Cleanup &lt;/li&gt;&lt;li&gt;Tools/Data Backup&lt;/li&gt;&lt;/ul&gt;&lt;/li&gt;&lt;br /&gt;&lt;li&gt;Integration &lt;ul&gt;&lt;li&gt;Bug-Tracking Systems &lt;/li&gt;&lt;li&gt;Versioning Control &lt;/li&gt;&lt;li&gt;Deployment Verification &lt;/li&gt;&lt;li&gt;Automatic QA&lt;/li&gt;&lt;li&gt;Code Review&lt;/li&gt;&lt;li&gt;Performance Tuning&lt;/li&gt;&lt;li&gt;Deploy Code &amp;amp; SQL&lt;/li&gt;&lt;li&gt;Central/Single GUI&lt;/li&gt;&lt;li&gt;Push information/processes/work out from main stream to supported/integrated environments&lt;/li&gt;&lt;li&gt;Pull information from data/status/work order files (xml)&lt;/li&gt;&lt;/ul&gt;&lt;/li&gt;&lt;br /&gt;&lt;li&gt;Optimization &lt;ul&gt;&lt;li&gt;Defect/bug-tracking ticke flow &lt;/li&gt;&lt;li&gt;Build/Deploy flow &lt;/li&gt;&lt;li&gt;Best practice for the company situation&lt;/li&gt;&lt;li&gt;Naming convention - Files/Variables&lt;/li&gt;&lt;li&gt;Folder Structures&lt;/li&gt;&lt;/ul&gt;&lt;/li&gt;&lt;br /&gt;&lt;li&gt;Audit &lt;/li&gt;&lt;ul&gt;&lt;li&gt;What's in this Build list &lt;/li&gt;&lt;li&gt;What sliped in this Build list &lt;/li&gt;&lt;li&gt;Manually handled&lt;/li&gt;&lt;li&gt;Reports/Dashboards/Scorecards/Excell/Sharepoint/Powerpoint &lt;/li&gt;&lt;li&gt;Scope/Summary &lt;/li&gt;&lt;li&gt;Snapshot/Status &lt;/li&gt;&lt;li&gt;Alert &lt;/li&gt;&lt;li&gt;RedFlag&lt;/li&gt;&lt;/ul&gt;&lt;br /&gt;&lt;li&gt;Communication &lt;ul&gt;&lt;li&gt;Mailing lists for push/deploy/test events &lt;/li&gt;&lt;li&gt;Content templates for different groups/roles &lt;/li&gt;&lt;li&gt;Feedback &lt;/li&gt;&lt;li&gt;3-way handshaking protocol&lt;/li&gt;&lt;li&gt;Realtime sync up (push) all parties by emails, IM, meetings, calls, dashboard, scorecard&lt;/li&gt;&lt;/ul&gt;&lt;/li&gt;&lt;br /&gt;&lt;li&gt;Intelligence &lt;/li&gt;&lt;ul&gt;&lt;li&gt;Trend&lt;/li&gt;&lt;li&gt;Risk&lt;/li&gt;&lt;li&gt;Resource Management&lt;/li&gt;&lt;li&gt;From use cases to knowledge base and peer review feedback &lt;/li&gt;&lt;/ul&gt;&lt;br /&gt;&lt;li&gt;Backup/Recovery &lt;ul&gt;&lt;li&gt;Backup tools periodically &lt;/li&gt;&lt;li&gt;Dump/backup repositories periodically &lt;/li&gt;&lt;li&gt;Recovery plans/tools for rebuilding the environments in the case of machines/server crashed/moved/upgraded&lt;/li&gt;&lt;li&gt;Recovery plans for all manual build in the case of emergency &lt;/li&gt;&lt;/ul&gt;&lt;/li&gt;&lt;br /&gt;&lt;li&gt;&lt;a href="http://intelligentbuildmanager.blogspot.com/2009/06/loadperformance-test-plan.html"&gt;Load Test&lt;/a&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/2664824074085857026-451467299126389462?l=intelligentbuildmanager.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://intelligentbuildmanager.blogspot.com/feeds/451467299126389462/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://intelligentbuildmanager.blogspot.com/2009/10/most-impact-areas-dimensions.html#comment-form' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/2664824074085857026/posts/default/451467299126389462'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/2664824074085857026/posts/default/451467299126389462'/><link rel='alternate' type='text/html' href='http://intelligentbuildmanager.blogspot.com/2009/10/most-impact-areas-dimensions.html' title='Most Impact Areas - Dimensions'/><author><name>Lang Hsieh</name><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='http://img2.blogblog.com/img/b16-rounded.gif'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-2664824074085857026.post-8816745455388227281</id><published>2009-09-28T14:30:00.000-07:00</published><updated>2009-09-28T14:39:01.388-07:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='Business Process Management'/><category scheme='http://www.blogger.com/atom/ns#' term='Build'/><category scheme='http://www.blogger.com/atom/ns#' term='Business Analysis'/><category scheme='http://www.blogger.com/atom/ns#' term='X-Function'/><title type='text'>Issues are found after the push. Panic!?</title><content type='html'>Few items we can take lessons from this senario:&lt;br /&gt;&lt;ul&gt;&lt;li&gt;Process: What is the standard procedures to follow?&lt;/li&gt;&lt;li&gt;Manage: Who should take ownership and drive the resolution?&lt;/li&gt;&lt;li&gt;Resource: Who should involve?&lt;/li&gt;&lt;li&gt;Documentation: What document is available?&lt;/li&gt;&lt;li&gt;Lessions: What we learned and how to prevent it in the future?&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/2664824074085857026-8816745455388227281?l=intelligentbuildmanager.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://intelligentbuildmanager.blogspot.com/feeds/8816745455388227281/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://intelligentbuildmanager.blogspot.com/2009/09/issues-are-found-after-push-panic.html#comment-form' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/2664824074085857026/posts/default/8816745455388227281'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/2664824074085857026/posts/default/8816745455388227281'/><link rel='alternate' type='text/html' href='http://intelligentbuildmanager.blogspot.com/2009/09/issues-are-found-after-push-panic.html' title='Issues are found after the push. Panic!?'/><author><name>Lang Hsieh</name><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='http://img2.blogblog.com/img/b16-rounded.gif'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-2664824074085857026.post-5827317703298684013</id><published>2009-09-23T14:05:00.000-07:00</published><updated>2009-09-23T14:34:23.575-07:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='Version Control'/><category scheme='http://www.blogger.com/atom/ns#' term='Deploy'/><category scheme='http://www.blogger.com/atom/ns#' term='Build'/><category scheme='http://www.blogger.com/atom/ns#' term='Software Architect'/><title type='text'>SQL Code (SP, UDF, TR) Guidelines</title><content type='html'>&lt;ul&gt;&lt;li&gt;Location&lt;/li&gt;&lt;li&gt;Coding&lt;/li&gt;&lt;li&gt;Naming Convention&lt;/li&gt;&lt;li&gt;Variables&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/2664824074085857026-5827317703298684013?l=intelligentbuildmanager.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://intelligentbuildmanager.blogspot.com/feeds/5827317703298684013/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://intelligentbuildmanager.blogspot.com/2009/09/sql-code-sp-udf-tr-guidelines.html#comment-form' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/2664824074085857026/posts/default/5827317703298684013'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/2664824074085857026/posts/default/5827317703298684013'/><link rel='alternate' type='text/html' href='http://intelligentbuildmanager.blogspot.com/2009/09/sql-code-sp-udf-tr-guidelines.html' title='SQL Code (SP, UDF, TR) Guidelines'/><author><name>Lang Hsieh</name><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='http://img2.blogblog.com/img/b16-rounded.gif'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-2664824074085857026.post-1501809465244295207</id><published>2009-09-21T13:09:00.000-07:00</published><updated>2009-09-21T14:07:02.066-07:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='Project Management'/><category scheme='http://www.blogger.com/atom/ns#' term='Performance'/><title type='text'>Performance/Load Test Work List</title><content type='html'>Challenge:&lt;br /&gt;Load test is a cross function activity even we tend to make it a routine work. Because the Keynote account is maintain by the operation team, test users are controlled by DBA, and profiler capture is executed from the hosting company.&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/2664824074085857026-1501809465244295207?l=intelligentbuildmanager.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://intelligentbuildmanager.blogspot.com/feeds/1501809465244295207/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://intelligentbuildmanager.blogspot.com/2009/09/performanceload-test-work-list.html#comment-form' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/2664824074085857026/posts/default/1501809465244295207'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/2664824074085857026/posts/default/1501809465244295207'/><link rel='alternate' type='text/html' href='http://intelligentbuildmanager.blogspot.com/2009/09/performanceload-test-work-list.html' title='Performance/Load Test Work List'/><author><name>Lang Hsieh</name><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='http://img2.blogblog.com/img/b16-rounded.gif'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-2664824074085857026.post-383062107036043565</id><published>2009-09-21T11:27:00.000-07:00</published><updated>2009-09-21T13:09:11.775-07:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='Build'/><title type='text'>Build Status Audit Dashboard</title><content type='html'>&lt;strong&gt;&lt;span style="color:#000099;"&gt;Challenge:&lt;/span&gt;&lt;/strong&gt;&lt;br /&gt;It is pretty common for QA manager, Project managers, and any upper managements to know the status of the next Build. So they can follow up on the progress, analyze the risk, and communicate to the clients accordingly. However, the scope of the build is dynamic. Not only those defect ticket's status are changing all the time along with the progress in multiple departments, the code and tickets might be pulled and included in the last minutes of everyday.&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/2664824074085857026-383062107036043565?l=intelligentbuildmanager.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://intelligentbuildmanager.blogspot.com/feeds/383062107036043565/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://intelligentbuildmanager.blogspot.com/2009/09/build-status-audit.html#comment-form' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/2664824074085857026/posts/default/383062107036043565'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/2664824074085857026/posts/default/383062107036043565'/><link rel='alternate' type='text/html' href='http://intelligentbuildmanager.blogspot.com/2009/09/build-status-audit.html' title='Build Status Audit Dashboard'/><author><name>Lang Hsieh</name><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='http://img2.blogblog.com/img/b16-rounded.gif'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-2664824074085857026.post-911745501057575788</id><published>2009-09-14T08:54:00.000-07:00</published><updated>2009-09-14T08:55:53.505-07:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='Build'/><category scheme='http://www.blogger.com/atom/ns#' term='Process'/><category scheme='http://www.blogger.com/atom/ns#' term='Performance'/><title type='text'>Load/Performance Test in QA before each Build</title><content type='html'>&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/2664824074085857026-911745501057575788?l=intelligentbuildmanager.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://intelligentbuildmanager.blogspot.com/feeds/911745501057575788/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://intelligentbuildmanager.blogspot.com/2009/09/loadperformance-test-in-qa-before-each.html#comment-form' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/2664824074085857026/posts/default/911745501057575788'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/2664824074085857026/posts/default/911745501057575788'/><link rel='alternate' type='text/html' href='http://intelligentbuildmanager.blogspot.com/2009/09/loadperformance-test-in-qa-before-each.html' title='Load/Performance Test in QA before each Build'/><author><name>Lang Hsieh</name><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='http://img2.blogblog.com/img/b16-rounded.gif'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-2664824074085857026.post-4939563203385604211</id><published>2009-09-14T07:45:00.000-07:00</published><updated>2009-09-14T08:54:06.995-07:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='Project Management'/><category scheme='http://www.blogger.com/atom/ns#' term='Time Management'/><title type='text'>7 highly effective habits</title><content type='html'>&lt;strong&gt;&lt;span style="color:#000099;"&gt;Dependence to Independence &lt;/span&gt;&lt;/strong&gt;&lt;br /&gt;Habit 1: Be Proactive: Principles of Personal Choice&lt;br /&gt;Habit 2: Begin with the End in Mind: Principles of Personal Vision&lt;br /&gt;Habit 3: Put First Things First: Principles of Integrity &amp;amp; Execution&lt;br /&gt;&lt;br /&gt;&lt;strong&gt;&lt;span style="color:#000099;"&gt;Independence to Interdependence&lt;/span&gt;&lt;/strong&gt;&lt;br /&gt;Habit 4: Think Win/Win: Principles of Mutual Benefit&lt;br /&gt;Habit 5: Seek First to Understand, Then to be Understood: Principles of Mutual Understanding&lt;br /&gt;Habit 6: Synergize: Principles of Creative Cooperation&lt;br /&gt;&lt;br /&gt;&lt;strong&gt;&lt;span style="color:#000099;"&gt;Continual Improvement&lt;/span&gt;&lt;/strong&gt;&lt;br /&gt;Habit 7: Sharpen the Saw: Principles of Balanced Self-Renewal&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/2664824074085857026-4939563203385604211?l=intelligentbuildmanager.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://intelligentbuildmanager.blogspot.com/feeds/4939563203385604211/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://intelligentbuildmanager.blogspot.com/2009/09/7-highly-effective-habits.html#comment-form' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/2664824074085857026/posts/default/4939563203385604211'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/2664824074085857026/posts/default/4939563203385604211'/><link rel='alternate' type='text/html' href='http://intelligentbuildmanager.blogspot.com/2009/09/7-highly-effective-habits.html' title='7 highly effective habits'/><author><name>Lang Hsieh</name><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='http://img2.blogblog.com/img/b16-rounded.gif'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-2664824074085857026.post-320532953637558508</id><published>2009-09-14T07:44:00.000-07:00</published><updated>2010-12-10T08:28:35.859-08:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='Software Architect'/><category scheme='http://www.blogger.com/atom/ns#' term='Project Management'/><category scheme='http://www.blogger.com/atom/ns#' term='Time Management'/><title type='text'>BackUp - Quad II Task</title><content type='html'>It is very important to backup your tools and data periodically starting from the very earily stage of the whole system development. Especially when you use Agile methods to expand your automation/integaration tools as they grow everyday. The automatical recovery system can wait but you just don't want to wait for the backup.&lt;br /&gt;&lt;br /&gt;&lt;div&gt;&lt;br /&gt;Here are some guidelines:&lt;br /&gt;&lt;ul&gt;&lt;li&gt;Similar folder structures on different servers and configuarable&lt;/li&gt;&lt;li&gt;PULL them to a central location&lt;/li&gt;&lt;li&gt;Log the backup activities (success &amp;amp; failure)&lt;/li&gt;&lt;li&gt;Backup to external devices (CDs, DVDs, external disks, etc.) periodically&lt;/li&gt;&lt;/ul&gt;&lt;/div&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/2664824074085857026-320532953637558508?l=intelligentbuildmanager.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://intelligentbuildmanager.blogspot.com/feeds/320532953637558508/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://intelligentbuildmanager.blogspot.com/2009/09/backup-quad-ii-task.html#comment-form' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/2664824074085857026/posts/default/320532953637558508'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/2664824074085857026/posts/default/320532953637558508'/><link rel='alternate' type='text/html' href='http://intelligentbuildmanager.blogspot.com/2009/09/backup-quad-ii-task.html' title='BackUp - Quad II Task'/><author><name>Lang Hsieh</name><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='http://img2.blogblog.com/img/b16-rounded.gif'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-2664824074085857026.post-7094048430489573776</id><published>2009-09-14T07:08:00.000-07:00</published><updated>2009-09-14T07:15:58.099-07:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='Software Architect'/><category scheme='http://www.blogger.com/atom/ns#' term='SCM'/><category scheme='http://www.blogger.com/atom/ns#' term='Business Analysis'/><title type='text'>Close to push date, PM wants to take out a bug-track ticket and revert the change</title><content type='html'>Sometimes, PM (Project Manager) or AM (Account Manager) may want to change the scope of the build due to business reasons (i.e., contracts, payments, client budget change, negotiation gambits, etc.) at the last minutes. How can we as a IBM to build in the flexibilty in our system and process to serve business need?&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/2664824074085857026-7094048430489573776?l=intelligentbuildmanager.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://intelligentbuildmanager.blogspot.com/feeds/7094048430489573776/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://intelligentbuildmanager.blogspot.com/2009/09/close-to-push-date-pm-wants-to-take-out.html#comment-form' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/2664824074085857026/posts/default/7094048430489573776'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/2664824074085857026/posts/default/7094048430489573776'/><link rel='alternate' type='text/html' href='http://intelligentbuildmanager.blogspot.com/2009/09/close-to-push-date-pm-wants-to-take-out.html' title='Close to push date, PM wants to take out a bug-track ticket and revert the change'/><author><name>Lang Hsieh</name><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='http://img2.blogblog.com/img/b16-rounded.gif'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-2664824074085857026.post-3466605998700921919</id><published>2009-09-10T07:15:00.000-07:00</published><updated>2009-09-10T13:40:15.090-07:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='Release Management'/><title type='text'>Automation tests report failed result after a code push in QA,. Now what?</title><content type='html'>I am sure you have simlar issues happening like this before. Usually, you can do the following:&lt;br /&gt;&lt;ul&gt;&lt;li&gt;Check what had been pushed and see if they are related to the failure&lt;/li&gt;&lt;li&gt;Check the old logs/results from the last automation test and confirm if they were passed&lt;/li&gt;&lt;li&gt;Manually reproduce the error from the front end and verify you get the same result&lt;/li&gt;&lt;li&gt;Code-wise, find out what was the last time they were modified&lt;/li&gt;&lt;li&gt;Push-wise, find out what is possible being changed in the environment&lt;/li&gt;&lt;li&gt;Data-wise, figure if it is code issue or a data issue&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/2664824074085857026-3466605998700921919?l=intelligentbuildmanager.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://intelligentbuildmanager.blogspot.com/feeds/3466605998700921919/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://intelligentbuildmanager.blogspot.com/2009/09/are-you-worry-about-extra-unexpected.html#comment-form' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/2664824074085857026/posts/default/3466605998700921919'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/2664824074085857026/posts/default/3466605998700921919'/><link rel='alternate' type='text/html' href='http://intelligentbuildmanager.blogspot.com/2009/09/are-you-worry-about-extra-unexpected.html' title='Automation tests report failed result after a code push in QA,. Now what?'/><author><name>Lang Hsieh</name><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='http://img2.blogblog.com/img/b16-rounded.gif'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-2664824074085857026.post-8400948781899649605</id><published>2009-06-26T11:49:00.000-07:00</published><updated>2009-11-02T12:52:34.185-08:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='Application management'/><category scheme='http://www.blogger.com/atom/ns#' term='Load Test'/><category scheme='http://www.blogger.com/atom/ns#' term='Software Architect'/><category scheme='http://www.blogger.com/atom/ns#' term='Performance'/><title type='text'>QA - Load/performance Test Plan</title><content type='html'>The ultimate goal is to use load test to find out the performance bottle neck and eventually improve it. To find out the performance bottle neck, we would like to collect the real performance status on the production site then try to reproduce the issues/activities offline (in QA environment) and find out the root cause. Then we can do a before/after test to measure the performance improvement before push it to production.&lt;br /&gt;&lt;br /&gt;For a web-based application, the performance might be affected by the following factors:&lt;br /&gt;&lt;ul&gt;&lt;li&gt;Network Bandwidth - This includes external (internet, traffic between hosting servers and the end users) and internal (intranet, traffic between file servers, DB servers, and Web servers)&lt;/li&gt;&lt;li&gt;Server Capacity - This includes all the capacity (CPU, memory, extra loads, etc) of Web servers, File servers, and Db servers&lt;/li&gt;&lt;li&gt;Application Efficiency - This includes front end (server side) and back end applications response time&lt;/li&gt;&lt;ul&gt;&lt;li&gt;Front End - This includes the efficiency of all server side pages,  scripts, and pictures, and media files&lt;/li&gt;&lt;li&gt;Back End - This includes the efficiency of Database's SP, functions, and data's quality&lt;/li&gt;&lt;/ul&gt;&lt;/ul&gt;&lt;br /&gt;So, before we spend the effort on any or all areas, let's find out where is the problem first. Like all business owners will like to find out who is their customer, what they want, what they buy, how they buy, and how much they buy, we would also like to find out those things from our customers so we can put those items they want on the most convenient places for them. In our case, if we know what 80% of our customers are doing, searching, and/or listing, then we will be able to improve the performance and improve 80% of the customer's satisfaction.&lt;br /&gt;&lt;br /&gt;To illustrate this "Behavior Analysis", let's look at this commonly seen scenario in our application - Search and list records with multiple pages displayed.&lt;br /&gt;&lt;span style="font-weight: bold;"&gt;Possible implementation:&lt;/span&gt;&lt;br /&gt;&lt;ul&gt;&lt;li&gt;Execute the query and put selected (usually, 10 records per page) records into a cursor. Because the cursor is existing in memory only, thus we need to execute the whole query every time. However, also because it is doing the transaction in memory, it will run faster.&lt;/li&gt;&lt;li&gt;Execute the query and put all selected records into a temp table. Then from here, we have the variance of using a temp table, common table expression, or global temp table.&lt;/li&gt;&lt;/ul&gt;&lt;span style="font-weight: bold;"&gt;Better implementation?&lt;/span&gt;&lt;br /&gt;Rather than decide which one is more efficient, we want to know which one is more match what we need which is what the customer is doing. For example, if 80% of the transaction done by the user are just blindly search and then paging through to look for what they want, then obviously, how we handle the "paging" is more important than just try to optimize the core query they all execute. On the other hand, if most transactions show pretty much the search/list is done at the first 1-3 pages, then the process of getting that result set becomes critical. Additionally, if our database is suffered by "write" already, then we want to take the always-multiple-write from the first implementation into consideration. So again, if our profiler data tell us our SP spend a lot of time on "waiting" to read, then dump all result set to a session-based global temp table and read exclusively from there will give us a better result. And from here, goes on and on until we find a solution for our customer's pattern.&lt;br /&gt;&lt;br /&gt;This technique for analyzing data is called "data mining", from whole bunch of data to find the pattern and then provide solution to business. Especially, we have seen/notified our issues must related by the behavior because it is always happening on the Monday morning. For no particular reasons, we would say our application should not act differently based on the time. It must be how the users using the application. But how? Let's find out.&lt;br /&gt;&lt;br /&gt;First, we want to determine the bottle neck from the data, not just assumption. So we would like to capture and analyze the whole trip traffic from front end (the end user) to back end and then back to front end.&lt;br /&gt;&lt;br /&gt;Second, We want to identify the transaction/activity happening during the peak hour. This is more like the shopping site want to know how far their potential customer go before they left the site. For them, they will then improve the "not-so-attractive" pages. For us, we want to know at which point they will do another activity (register, take courses, enter data, etc.). Once we have the traffic analysis, we can also provide it to our customer as the feedback of the usages/popularity so they can adjust their content, length, and interaction, etc.&lt;br /&gt;&lt;br /&gt;Third, once the pattern is identified, we then can create/capture testing script and reproduce it in our non-production site for verification. When we know the pattern, we can then make business decision on how to implement the most impacted areas. Since our QA capacity is different than production, we can adjust the traffic accordingly but still based on the pattern.&lt;br /&gt;&lt;br /&gt;Forth, once we have the proposed fix, we can test it in our controlable environment. So not only we want to fix the bottle neck caused by the pattern, we also want to prevent another pattern to cause the bottle neck. In this stage, we can increase/decrease the pressure on network traffic, DB response time, extra application occupied system resource on web servers, etc. Basically, after this, we know the fix can really fix the issue (how can we fix an issue without able to reproduce it?).&lt;br /&gt;&lt;br /&gt;Fifth, the behavior/pattern will change. The tools and data we created need to be able to capture and analyze the future data to help us identify the new pattern. In the future, we just need to inject the data we captured from the troubled client within certain time frame. We can either give explanation to the client for the limitation of the application with solid analyzed data or we can tune our application from there.&lt;br /&gt;&lt;br /&gt;Sixth, this technique/tools/methodology is reusable even we move on the next phase of ACS Learning. By being able to analyze "our" application, we can play a more professional role on servicing and retailing other vendor (SumTotal)'s product. Because we know our clients and we know our business.&lt;input id="gwProxy" type="hidden"&gt;&lt;!--Session data--&gt;&lt;input onclick="jsCall();" id="jsProxy" type="hidden"&gt;&lt;div id="refHTML"&gt;&lt;/div&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/2664824074085857026-8400948781899649605?l=intelligentbuildmanager.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://intelligentbuildmanager.blogspot.com/feeds/8400948781899649605/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://intelligentbuildmanager.blogspot.com/2009/06/loadperformance-test-plan.html#comment-form' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/2664824074085857026/posts/default/8400948781899649605'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/2664824074085857026/posts/default/8400948781899649605'/><link rel='alternate' type='text/html' href='http://intelligentbuildmanager.blogspot.com/2009/06/loadperformance-test-plan.html' title='QA - Load/performance Test Plan'/><author><name>Lang Hsieh</name><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='http://img2.blogblog.com/img/b16-rounded.gif'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-2664824074085857026.post-8114730771776007781</id><published>2009-06-25T07:20:00.000-07:00</published><updated>2009-07-24T21:19:32.234-07:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='Version Control'/><category scheme='http://www.blogger.com/atom/ns#' term='Subversion'/><title type='text'>Use Post-Commit Hook in Subversion for Email Notification</title><content type='html'>&lt;ul&gt;&lt;li style="font-weight: bold; color: rgb(51, 51, 255);"&gt;Sector: &lt;span style="color: rgb(0, 0, 0); font-weight: normal;"&gt;Subversion (SVN) Management&lt;/span&gt;&lt;/li&gt;&lt;li style="font-weight: bold; color: rgb(51, 51, 255);"&gt;Challenge:&lt;span style="color: rgb(0, 0, 0); font-weight: normal;"&gt; Instead of react to the request from development team to build and push the code, Intelligent Build Manager would like to monitor the commit activities and be notified by email automatically.&lt;/span&gt;&lt;br /&gt;&lt;/li&gt;&lt;li style="font-weight: bold; color: rgb(51, 51, 255);"&gt;Client: Build manager&lt;br /&gt;&lt;/li&gt;&lt;li style="font-weight: bold; color: rgb(51, 51, 255);"&gt;Solution:&lt;span style="color: rgb(0, 0, 0);"&gt;&lt;span style="font-weight: bold;"&gt; &lt;/span&gt;&lt;/span&gt;&lt;/li&gt;&lt;ul&gt;&lt;li style="color: rgb(0, 0, 0);"&gt;&lt;span&gt;&lt;span style="color: rgb(0, 0, 0);"&gt;Write a Post-Commit hook on Subversion server which will be triggered when a commit happened&lt;br /&gt;&lt;/span&gt;&lt;/span&gt;&lt;/li&gt;&lt;li style="color: rgb(0, 0, 0);"&gt;&lt;span&gt;&lt;span style="color: rgb(0, 0, 0);"&gt;Write a VBScript file to&lt;br /&gt;&lt;/span&gt;&lt;/span&gt;&lt;/li&gt;&lt;ul&gt;&lt;li style="color: rgb(0, 0, 0);"&gt;&lt;span&gt;&lt;span style="color: rgb(0, 0, 0);"&gt;Send email notification&lt;/span&gt;&lt;/span&gt;&lt;/li&gt;&lt;li style="font-weight: bold; color: rgb(0, 0, 0);"&gt;&lt;span style="font-weight: normal; color: rgb(0, 0, 0);"&gt;&lt;span style="color: rgb(0, 0, 0);"&gt;Write a record to the BuildManager Database&lt;/span&gt;&lt;/span&gt;&lt;span style="font-weight: bold;"&gt;&lt;span style="color: rgb(0, 0, 0);"&gt; &lt;/span&gt;&lt;/span&gt;&lt;span style="font-weight: normal;"&gt;&lt;span style="color: rgb(0, 0, 0);"&gt;&lt;span style="color: rgb(0, 0, 0);"&gt;(development environment of our SSAS DW)&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/li&gt;&lt;/ul&gt;&lt;/ul&gt;&lt;li style="font-weight: bold; color: rgb(51, 51, 255);"&gt;SVN Hooks:&lt;/li&gt;&lt;ul&gt;&lt;li style="color: rgb(0, 0, 0);"&gt;The post-commit hook is invoked after a commit.&lt;br /&gt;&lt;/li&gt;&lt;li style="color: rgb(0, 0, 0);"&gt;Subversion runs this hook by invoking a bat file under \SVN\REPOS\&lt;span style="font-style: italic;"&gt;repository name&lt;/span&gt;\hooks\post-commit.bat with the following ordered arguments:&lt;br /&gt;&lt;/li&gt;&lt;ul&gt;&lt;li style="color: rgb(0, 0, 0);"&gt;[1] REPOS-PATH   (the path to this repository)&lt;/li&gt;&lt;li style="color: rgb(0, 0, 0);"&gt;[2] REV          (the number of the revision just committed)&lt;/li&gt;&lt;/ul&gt;&lt;li style="color: rgb(0, 0, 0);"&gt;The default working directory for the invocation is undefined, so the program should set one explicitly if it cares.&lt;/li&gt;&lt;li style="color: rgb(0, 0, 0);"&gt;Because the commit has already completed and cannot be undone, the exit code of the hook program is ignored.&lt;br /&gt;&lt;/li&gt;&lt;li style="color: rgb(0, 0, 0);"&gt;Note that 'post-commit' must be executable by the user(s) who will invoke it (typically the user httpd runs as), and that user must have filesystem-level permission to access the repository.&lt;/li&gt;&lt;li style="font-weight: bold; color: rgb(0, 0, 0);"&gt;&lt;span style="font-weight: normal;"&gt;The hook program does not inherit the environment of its parent process.  For example, a common problem is for the PATH environment variable to not be set to its usual value.&lt;/span&gt;&lt;br /&gt;&lt;/li&gt;&lt;/ul&gt;&lt;li style="font-weight: bold; color: rgb(51, 51, 255);"&gt;VB Scripting:&lt;/li&gt;&lt;ul&gt;&lt;li style="color: rgb(0, 0, 0);"&gt;In post-commit.bat, you can do as simple as the following line to basically pass those 2 parameters:\_BuildManager\Bin\Notification_Commit.vbs "%1" "%2"&lt;/li&gt;&lt;li style="color: rgb(0, 0, 0);"&gt;In Notification_Commit.vbs, use svnlook to get information then send emails through CDO object&lt;br /&gt;&lt;/li&gt;&lt;/ul&gt;&lt;li&gt;&lt;span style="font-weight: bold; color: rgb(51, 51, 255);"&gt;Results&lt;/span&gt;:&lt;/li&gt;&lt;ul&gt;&lt;li&gt;Commit becomes a noticeable and traceable activity&lt;/li&gt;&lt;li&gt;While doing the email notification, this entry point also becomes a wonderful place to inject Subversion data to our BuildManager Data Warehouse. Save another ETL time and resources&lt;/li&gt;&lt;li&gt;Notification from "dev" branch becomes a proactive way to check progress and predict trunk commit and thus the progress of the working tickets.&lt;/li&gt;&lt;li&gt;By monitoring the flow from trunk commit to pull finish can usually help to detect the possible issues with pulling/compiling.&lt;/li&gt;&lt;/ul&gt;&lt;li&gt;&lt;span style="color: rgb(51, 51, 255); font-weight: bold;"&gt;Lessions:&lt;/span&gt; Through multiple dimension approach, Build Manager finally can feel the move of the whole dynamic environment thus becomes a Intelligent Build Manager.&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/2664824074085857026-8114730771776007781?l=intelligentbuildmanager.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://intelligentbuildmanager.blogspot.com/feeds/8114730771776007781/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://intelligentbuildmanager.blogspot.com/2009/06/use-post-commit-hook-in-subversion-for.html#comment-form' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/2664824074085857026/posts/default/8114730771776007781'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/2664824074085857026/posts/default/8114730771776007781'/><link rel='alternate' type='text/html' href='http://intelligentbuildmanager.blogspot.com/2009/06/use-post-commit-hook-in-subversion-for.html' title='Use Post-Commit Hook in Subversion for Email Notification'/><author><name>Lang Hsieh</name><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='http://img2.blogblog.com/img/b16-rounded.gif'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-2664824074085857026.post-3678829581691181277</id><published>2009-06-22T08:30:00.000-07:00</published><updated>2009-06-22T12:30:32.344-07:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='Business Analysis'/><title type='text'>Why you need an Intelligent Build Manager</title><content type='html'>See if this describe your situation:&lt;br /&gt;You have been working hard to concentrate on building and developing your knowledge, product, and team for the past few years. And now it is the time to expand and grow the scale. Only there is a problem; the whole environment became complex and unmanageable.  All of sudden, the multiple builds or deploys per day needs more human's attention, some last-minute fix need to be packaged or stripped out within limited time frame. You feel frustrated and need a dedicated person to take care the chaos and make it back to order.&lt;br /&gt;&lt;br /&gt;However, all experienced technical staffs you have are working on something important. And most worsted, in deep down, they don't want to do this not-that-core-technology type of work. They are afraid to lose their state-of-the-art technical skills by doing this work over time. However, you know you need to find a technical enough and yet detail-oriented person who is willing to take it serious to build, coordinate, and manage the whole process and even develop some tools around it to make it automatic, mistaken-proven, and even traceable and analyzable.&lt;br /&gt;&lt;br /&gt;Then when you look from the outside, you realize the candidates are either not technical enough to understand the technology you are developing and deploying or they are another highly focused technical talent who don't care about other part of business process.&lt;br /&gt;&lt;br /&gt;It is at this moment, you need a partner, an Intelligent Build Manager, on your side to help you regain the control of your software development and management. Here are some challenges the Intelligent Build Manager can help you:&lt;br /&gt;&lt;ul&gt;&lt;li&gt;Understand the main technology and product of the development team and their various deployment needs&lt;br /&gt;&lt;/li&gt;&lt;li&gt;Setup, configuration, and integration of software development tools&lt;/li&gt;&lt;li&gt;Work closely with team leads from various departments to match the teams' styles and needs.  &lt;/li&gt;&lt;li&gt;Automation tools for timely deploy, communication, account management&lt;/li&gt;&lt;li&gt;Define and improve process for developers and PM to follow and benefit from&lt;br /&gt;&lt;/li&gt;&lt;li&gt;Build environment management: accounts, branching, merging, repository, upgrade&lt;/li&gt;&lt;li&gt;Streamline the software development life cycle or Agile loop&lt;br /&gt;&lt;/li&gt;&lt;li&gt;Continuously integrate version control tools with defect/bug tracking tools, dynamic email distribution list, project management status reports, and QA needs&lt;br /&gt;&lt;/li&gt;&lt;li&gt;Develop, maintain, and manage Build related tools/programs for obvious reasons&lt;/li&gt;&lt;li&gt;Generate risk and resource analysis reports for senior management team to review and plan in the future&lt;/li&gt;&lt;/ul&gt;Why an "Intelligent" Build Manager?&lt;br /&gt;You do actually need an intelligent individual to deal with those tasks not only that, but also you need the Business Intelligence (BI) technology to help your Build/Release Management. We want to apply BI's concept and tools to release management so we can do the data mining to find out how we can improve the application management processes. By using dashboard and scorecard, with the graphical KPI illustration, all involved parties can easily find the progress, forecast, and risk through the Web interface. This is the solution to fix the view difference between developers (tree) and project management (forest).&lt;br /&gt;&lt;br /&gt;Please feel free to contact me if you have any questions or in need to resolve any or all of this issues.&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/2664824074085857026-3678829581691181277?l=intelligentbuildmanager.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://intelligentbuildmanager.blogspot.com/feeds/3678829581691181277/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://intelligentbuildmanager.blogspot.com/2009/06/why-you-need-intelligent-build-manager.html#comment-form' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/2664824074085857026/posts/default/3678829581691181277'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/2664824074085857026/posts/default/3678829581691181277'/><link rel='alternate' type='text/html' href='http://intelligentbuildmanager.blogspot.com/2009/06/why-you-need-intelligent-build-manager.html' title='Why you need an Intelligent Build Manager'/><author><name>Lang Hsieh</name><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='http://img2.blogblog.com/img/b16-rounded.gif'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-2664824074085857026.post-8798227789193082607</id><published>2009-06-19T08:55:00.000-07:00</published><updated>2009-06-19T09:01:33.177-07:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='Software Architect'/><title type='text'>Configurable Data</title><content type='html'>Obviously, the more configurable data in your application, the more flexible this application can do for you.I will explain more in detail when talking about the multiple layers of the application&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/2664824074085857026-8798227789193082607?l=intelligentbuildmanager.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://intelligentbuildmanager.blogspot.com/feeds/8798227789193082607/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://intelligentbuildmanager.blogspot.com/2009/06/configurable-data.html#comment-form' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/2664824074085857026/posts/default/8798227789193082607'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/2664824074085857026/posts/default/8798227789193082607'/><link rel='alternate' type='text/html' href='http://intelligentbuildmanager.blogspot.com/2009/06/configurable-data.html' title='Configurable Data'/><author><name>Lang Hsieh</name><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='http://img2.blogblog.com/img/b16-rounded.gif'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-2664824074085857026.post-8946770762293559972</id><published>2009-06-19T07:08:00.000-07:00</published><updated>2009-07-24T21:19:01.854-07:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='Version Control'/><category scheme='http://www.blogger.com/atom/ns#' term='Subversion'/><title type='text'>Manage SVN accounts through an user-friendly GUI</title><content type='html'>&lt;ul&gt;&lt;li&gt;&lt;span style="font-weight: bold; color: rgb(51, 51, 255);"&gt;Sector:&lt;/span&gt;Subversion (SVN) Management&lt;br /&gt;&lt;/li&gt;&lt;li&gt;&lt;span style="font-weight: bold; color: rgb(51, 51, 255);"&gt;Challenge:&lt;/span&gt; A systematic approach to manage, track, and communication of SVN account management.&lt;/li&gt;&lt;ul&gt;&lt;li&gt;Dev manager used to use the "walk-down-the-hall-to-talk" method to ask Build Manager for changes of the SVN account status. It is hard to track and the status is blind to all parties.&lt;br /&gt;&lt;/li&gt;&lt;li&gt;Build Manager used to manually modify the password file on SVN server for the change. It is time consuming. And when Build Manager was busy, sometimes he will even forget to do it or forget to notify. And once that was happening, it caused another round of task/resource spending on it again.&lt;br /&gt;&lt;/li&gt;&lt;li&gt;Developers was notified by either another "walk-to-talk" type of communication or Build Manager/Dev manager needs to manually write separate email to notify the developer of the change.&lt;br /&gt;&lt;/li&gt;&lt;/ul&gt;&lt;li&gt;&lt;span style="font-weight: bold;"&gt;&lt;span style="color: rgb(51, 51, 255);"&gt;Client:&lt;/span&gt; &lt;/span&gt;Development Manager, Developers, VP of Deploy &amp;amp; Quality Control&lt;br /&gt;&lt;/li&gt;&lt;li&gt;&lt;span style="color: rgb(51, 51, 255); font-weight: bold;"&gt;Solution:&lt;/span&gt; A Process and a HTA program was created to streamline the task.&lt;/li&gt;&lt;ul&gt;&lt;li&gt;Developers will send a request email to Dev manager and copy Build manager&lt;/li&gt;&lt;li&gt;Dev manager will approve or reject the request by replying the email so Build Manager is also notified at the same time.&lt;/li&gt;&lt;li&gt;Build Manager then change the account status from the GUI and the tool will do the work behind the scene automatically including modify the password file, write a log, and send emails.&lt;/li&gt;&lt;li&gt;A notification email will be sent to the account owner, developer manager, Build Manager, and VP of Deploy &amp;amp; Quality control. And the email recipient list is &lt;a href="http://intelligentbuildmanager.blogspot.com/2009/06/configurable-data.html"&gt;configurable&lt;/a&gt; and coming from a central source ( See Integrate all ID systems to a central location post for more details).&lt;/li&gt;&lt;/ul&gt;&lt;li&gt;&lt;span style="font-weight: bold; color: rgb(51, 51, 255);"&gt;Agile:&lt;/span&gt; SCRUM&lt;/li&gt;&lt;ul&gt;&lt;li&gt;The development of the software tool is on-the-go when all the status changes kept happening and people walking around with the old fashion way. Developers kept sending emails regarding the status of the account along with other regular and irregular code psuh and questions.&lt;/li&gt;&lt;li&gt;Status changes, GUI, notification, and procedures being scrummed out eventually.&lt;/li&gt;&lt;/ul&gt;&lt;li&gt;&lt;span style="font-weight: bold; color: rgb(0, 0, 153);"&gt;&lt;span style="color: rgb(51, 51, 255);"&gt;Scripting:&lt;/span&gt; &lt;/span&gt;HTA - Select HTA as it has user-friendly GUI and easy to migrate to all web-based interface in the long run.&lt;/li&gt;&lt;li style="color: rgb(51, 51, 255); font-weight: bold;"&gt;VBScript:&lt;/li&gt;&lt;ul&gt;&lt;li&gt;How to check a certain button is On or Off?&lt;/li&gt;&lt;li&gt;Read delimited data from a text file and parse them&lt;br /&gt;&lt;/li&gt;&lt;li&gt;Send email using CDO object&lt;/li&gt;&lt;li&gt;Make re-usable modules in VBScript with WSF file&lt;/li&gt;&lt;li&gt;Connect &amp;amp; retrieve Database through VBScript&lt;br /&gt;&lt;/li&gt;&lt;/ul&gt;&lt;li style="font-weight: bold; color: rgb(51, 51, 255);"&gt;Business Intelligence:&lt;/li&gt;&lt;ul&gt;&lt;li&gt;Account status log will be log into a Database table then eventually deploy to the Build Manager Datawarehouse cube for analysis&lt;/li&gt;&lt;li&gt;KPI:&lt;br /&gt;&lt;/li&gt;&lt;ul&gt;&lt;li&gt;Turnaround time for account status changes&lt;/li&gt;&lt;li&gt;Approval rate&lt;/li&gt;&lt;li&gt;Success rate for each commit/developer...when combine it with other data&lt;/li&gt;&lt;li&gt;Effectiveness of the changes, ie. numbers of TTS advanced by this change&lt;br /&gt;&lt;/li&gt;&lt;/ul&gt;&lt;/ul&gt;&lt;li&gt;&lt;span style="color: rgb(51, 51, 255); font-weight: bold;"&gt;Results:&lt;/span&gt;&lt;br /&gt;&lt;/li&gt;&lt;ul&gt;&lt;li&gt;All parties have a standard procedure to follow. One more step to improve the quality.&lt;br /&gt;&lt;/li&gt;&lt;li&gt;Improve 90% of the efficiency and correctness of SVN account management. Another candidate for cost reduction and revenue generating task.&lt;br /&gt;&lt;/li&gt;&lt;li&gt;Automatic email notification make it possible and easy to track. Prepare for a larger and more complex team and project.&lt;br /&gt;&lt;/li&gt;&lt;/ul&gt;&lt;li&gt;&lt;span style="color: rgb(51, 51, 255); font-weight: bold;"&gt;Lessons:&lt;/span&gt; We are building the empire state building one brick at a time. This is the first step of the whole automation and effectiveness improving plan. Since it saves 90% of the time, I consider it as a quadrant-2 (important-but-not urgent) project. Glad I made the right decision on taking this automation.&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/2664824074085857026-8946770762293559972?l=intelligentbuildmanager.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://intelligentbuildmanager.blogspot.com/feeds/8946770762293559972/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://intelligentbuildmanager.blogspot.com/2009/06/manage-svn-accounts-through-user.html#comment-form' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/2664824074085857026/posts/default/8946770762293559972'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/2664824074085857026/posts/default/8946770762293559972'/><link rel='alternate' type='text/html' href='http://intelligentbuildmanager.blogspot.com/2009/06/manage-svn-accounts-through-user.html' title='Manage SVN accounts through an user-friendly GUI'/><author><name>Lang Hsieh</name><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='http://img2.blogblog.com/img/b16-rounded.gif'/></author><thr:total>0</thr:total></entry></feed>
