Brandon's Notepad

January 30, 2018

Agile: A Conversion Story


This is the story of how I became an Agile convert. After sixteen years of denial, I finally opened my eyes to the benefits of this wonderful framework. Writing this post was a very humbling experience. I was seriously tempted to blatantly rip off Kubrick and title this post How I Learned to Stop Worrying and Love the Scrum.

My first exposure to Agile was sometime in 2001 in the form of XP (Extreme Programming). I was active on several developer discussion forums at the time and XP started coming up as a topic more and more frequently. One of my favorite discussion points was the need for proper traceability from concise, structured requirements to design elements and ultimately to code. XP, with its paper-based story cards strewn about on tables or cork boards and then entombed in boxes or banded stacks when the project was over, seemed to mock the sheer beauty and efficiency of a well-maintained requirements database that could be easily searched and reported upon. And paired programming? What a waste of developer hours! Why dedicate two people to a single programming task? What kind of coder needs someone constantly looking over his shoulder and critiquing every little typo anyway? I conceded that such foolishness may be tolerable for small applications or short-term engagements, but it would never work for real applications, the stuff of corporate I.T. projects that took many months or even years to deliver.

I happily ignored Agile for many years after that. Doing so was easy, as none of my clients or employers used any of the Agile frameworks, that is, until about four years ago when the new CIO at my company started talking about it…a lot…and not as a joke. No one in the department seemed to be taking him seriously, so I dismissed the notion that it would actually take hold, but I also knew that I could no longer flat out ignore Agile. If the CIO was talking about it, then I had to make sure he (and everyone else) knew that adopting it would be a mistake. I didn’t want to look like I wasn’t willing to be a team player, but I also didn’t want to throw away all of the hard work we had invested in creating a very stable and controlled development environment. That CIO left the company within a year. An interim CIO seemed to like the Agile concept, but admitted openly that he had no plans to change the strategic direction of I.T., preferring to “keep the lights on” and let the permanent replacement call the shots. Whew! We were safe. So I thought. The new permanent CIO, though not heavy in development experience, arrived already convinced of the efficacy of Agile.

Any attempt to derail Agile at this point would have been what we call a serious CLM (career-limiting move). It was time to adapt. But how? Our development, test, and release policies and procedures were hardly what you might call Agile-friendly. Frankly, our Project Management policy read like an excerpt from the PMBOK. I had no idea what this was going to look like or where to even start, When one consultant started managing his development team using Scrum, I asked to shadow him so that I could learn more about how Agile was supposed to work. I admit, I would not have been disappointed had I found evidence confirming my previous notions about Agile, but I attended the team’s events with an open mind and tried to leave my skepticism at the door. By the time he left for his next assignment, I still wasn’t convinced that Agile was going to be the right fit for our department, but I had learned enough to understand how it might work if everyone got used to it and agreed to play the game.

My biggest takeaway from this exercise was that, in terms of software development, Agile wasn’t significantly different from traditional development (i.e. the waterfall methodology), in that requirements still had to be gathered, software designed, code written, the product tested, and user documentation produced. What was radically different was that it severely limited the scope of these activities for a specified, short-term period of time; thus, it allowed for course correction at any point should (read: when) requirements change.  I learned that requirements needn’t be quite so formal or design so rigid, and that documentation can be limited to a sane amount that might actually be read again later. I still felt like a lot of useful information — mostly artifacts from the development process useful internally in many ways — was going to be lost in the process.

A few months passed and I continued to monitor the growing use of Agile within the development teams. By this time, most of them had latched onto Scrum terminology in particular. Overall, things didn’t seem to be going well. The teams were struggling with many different things, and it was becoming obvious that most of them were not truly adopting the Agile mindset. Then a golden opportunity arose! I managed to volunteer to be the Scrum Master on one of the teams. “As long as it doesn’t interfere with your regular duties,” my boss said as he gave me permission to fill the role temporarily. The project was failing and the team disjoint, so I figured it was going to be a serious opportunity to experiment and see what Agile could do to improve the situation.

The first sprint was rocky and I spent half of my time figuring out how to produce a proper burndown chart in the task management system we had selected. With the second sprint I began every daily scrum with the burndown chart on the large screen in the conference room. The (positive) impact this made on the team was shocking. Tired of watching me update tasks with hours spent and hours remaining, the team started keeping their own metrics up-to-date sometime in the third sprint. By the fourth sprint, we were “flying by instrument” as I like to put it. It was beautiful! The sprint backlog (in hours) was at about 85% of capacity, leaving a little wiggle-room for error, and we trended downward more-or-less as one might expect. I’d love to report that the project had made a sweeping turn just in time and became a stunning success, but sadly, it did not. Despite the great strides the team had made, it was not happening fast enough, and management pulled the plug on our experiment. The software was eventually released for production use, late, using conventional project management, but I walked away with a completely new perspective. I finally understood why and how Agile worked! I was no longer a critic, but an advocate.

Within two months, half of the department (including myself) had been formally trained and I jumped fast at the chance to be on the Agile transformation team that would be responsible for the formal adoption of Scrum. Half a year later, I earned my certification. Looking back, it amazes me how quickly my view of Agile changed so completely. I have since learnt a great deal beyond what was covered in training, but I will have to write about such things another day.



December 27, 2017

The vi Text Editor

Home > My Lists > Technology > Software Development References > The vi Text Editor

User Guides & Tutorials

Tips & Tricks

  • Insert contents of another file into current file using :r filename
  • Open second file in split window using :sp or :vsp. Use Ctrl+w to switch between window panes.

September 14, 2017

TFS / VSTS Customization


I started working heavily with Microsoft Team Foundation Server (TFS) in the summer of 2016 and may be migrating to Visual Studio Team Servcies (VSTS) in the not-so-distant future. The need to customize TFS operations was almost immediately obvious, and the complexity of the customization only increases in proportion with the use of the tool. This page is a (growing) list of links that I’ve found useful.

Runtime Environment Variables

Environment variables are available for use during both build and release operations. These are my go-to references when I need to figure out how to get to runtime data.

Marketplace Extensions

The Visual Studio Marketplace offers many useful extensions for TFS & VSTS. Some implement or extend features such as dashboards, but the ones I’m most interested in (at least for now) are the build and release tasks. Like apps on a smart phone, these little gems eliminate the need for writing extensive scripts to compile code and deploy products. I’ve found it important to check the Marketplace often for new items as well as for updates to extensions already in use.




  • Hopefully, I won’t have to add any extensions in this section.

Custom Scripts & Extensions

If you can’t find what you need in the Marketplace, you can always write your own deployment scripts and extensions. These can be published or retained for internal use only, your choice. Here is a list of useful resources for beginners.




More to come…


June 5, 2015

m4 Macro Processor

Filed under: Computer Software,Linux — Brandon @ 3:54 am
Tags: , , , , , ,

Home > My Lists > Technical Notes > Linux > m4 Macro Processor

m4 is a macro processor that replaces tokens in a file. It was once used as a FORTRAN preprocessor and is now used by various systems to manage configuration files. I started using it years ago in conjunction with make to automatically generate web pages, but that practice ended when I decided to move this site to a ‘blog platform. Since then, I’ve continued to look for additional ways to leverage it.

Presently, I’m collecting links about m4 and will write more if needed:

GNU m4 Manual
m4 Manpage (
Using m4 Macros in Your Programs
Building text files with m4 macros
Michael Breen’s Notes on the M4 Macro Language
Fractals with SVG and m4
m4 Macros and CSS
Using the m4 macro processor for fun and profit

Here’s a random snippet of a makefile using m4:

.SUFFIXES: .m4 .html
.m4.html: $(Common)
m4 -D_LOCATION=coding -P $*.html


January 20, 2015

Android Applications: Office Suites

Home > My Lists > Technology > Android Applications > Office Suites

Office suite software is another genre where I found little satisfaction on the Android platform. For reading Microsoft Office files, the popular choice has always been Documents To Go (DTG) by DataViz. Other office suites exist (e.g. OfficeSuite 8, Polaris Office), but DTG keeps popping up. I think I’ve even seen it preloaded on several phones now, because I don’t remember installing it, yet there it is.

The need to view Microsoft Office documents is common, but what I really needed was an app for viewing and perhaps even editing (gasp) Open Office (OO) documents. All of the home computers run Linux and we have no Microsoft Office installations whatsoever. I really don’t want to save all of my files in a non-native format either, so for a long time it appeared that document sharing between the OO world and the tablet was limited to PDF. While writing this post, I noticed that there is an app called AndrOpen Office that seems to be oft-downloaded and rated highly, but at this point, I am not inclined to bother trying it.

Why not, you ask? Because all of my “office” work has shifted to either Evernote or Google Drive (formerly Docs). I use Evernote to store reference materials, mostly information that eventually ends up here. Drive is where I type letters and create spreadsheets, which (when finalized) I usually store in PDF format on a local drive at home. I’m still not willing to put all of my data eggs in a single cloud basket.


December 4, 2014

Computer Graphics

Home > My Lists > Technology > Computer Graphics

This page is a listing of user guides and how-to documents for various computer graphics manipulation tools that I have found useful over time.

General Purpose Tool References & Articles

CLIChart. Commandline tool for quick visualization of tabular data.

D3 Data-Driven Documents. JavaScript library for producing advanced visualizations.

eplot. Short for “easy gnuplot”, eplot is a Ruby wrapper for Gnuplot (see below).

Gnuplot. Multi-platform CLI graphing utility used for mathematical functions plotting and data visualization.

Graphviz. Visualization tool for creating diagrams based on structured information using the DOT language. Best used for directional charts (flowcharts, hierarchy charts, PERT/CPM charts, mind maps, etc.

ImageMagick. Command-based art program suite.

Inkscape. Vector graphics package.

Message Sequence Chart generator (Mscgen). Creates sequence diagrams from text files. These diagrams are used in telecommunications, object-oriented software design (e.g. UML), and other applications.

Project-Specific Tools & Tutorials

Web-Based Charting

Project Management.

Map Making

Circuit Diagrams


August 25, 2014

Android Applications: PDF Readers

Filed under: Android,Computer Software — Brandon @ 1:50 pm
Tags: , , , , ,

Home > My Lists > Android Applications > PDF Readers

I rely on the PDF format a lot! Besides the e-books, technical manuals, tax forms, and what not that I download, I also create PDFs for archival of my own documents. Having said that, it’s good to have options!

Evaluation Criteria

PDF Readers are like Web Browsers in that you expect them to render the page properly at a minimum. They can vary on how well that perform even that simple text. Then, there is navigation, how smoothly the page scrolls for example, and whether or not the links in the tables of contents work. The little things matter too, like the ability to perform text searches or jump to a particular page. In the past, I have experienced compatibility problems with PDFs created using non-Adobe software, so I need a reader that can handle them. I’d also love having the ability to annotate PDFs (highlight, write in the margins, etc.).

Selected App Reviews

Adobe Reader. The old standby! Reviews confirm that it works, but can be slow and may not read non-Adobe PDFs. I have not yet had these issues myself. It does support bookmarks, text search, sharing, several page-flow options, and “go to page” via a slider.

PDF To Go. It came loaded with the tablet. Very basic. Cannot even “go to page” with the free version.

ezPDF Reader. Full version ($3) permits annotation, personal bookmarks, and some other neat features. Some reviewers have noted some limitations, including the inability to read from SD card. Haven’t tried it yet.


August 22, 2014

Android Habit Formation Apps

Filed under: Android,Computer Software — Brandon @ 5:02 pm
Tags: ,

Home > My Lists > Android Applications > Habit Formation

There exists a class of apps designed for the sole purpose of helping you build good habits and kick bad ones. Approaches vary by app, but most of them focus on positive formation by allowing you to create a list of habits that you want to form (e.g. jog, drink enough water, get sufficient sleep), and then letting you check them off each day that you do them. A few apps were obviously designed to help you avoid certain habits (e.g. smoking, snacking, etc.), as progress is shown in the number of days since you last slipped.

I started to evaluate several of these offerings, but decided to stop when it became evident that this sort of app was not going to work well for me at all. First, being one who practices GTD, I am more interested in finding creative ways to remind myself to do things rather than to force myself to remember to do them. Second, it seemed like the whole habit-formation process works best when actions are checked off in a timely manner (and indeed, some of the apps pretty much required real-time entry), which may work well with a smartphone, but I couldn’t realistically have my tablet with me all the time, and full data entry every evening was a burden at best.


July 14, 2014

Other Uses For Tripwire

Filed under: Computer Software,Linux — Brandon @ 11:06 am
Tags: , ,

Short URL:
Home > My Lists > Technical Notes > Tripwire > Other Uses For Tripwire

Tripwire was written for security, especially on Unix and Linux systems. It can watch files that contain users and groups definitions, encrypted passwords, and system configuration settings, as well as executable files to verify that they have not been edited or replaced. Here are a few other uses that I’ve come up with. They are listed in no particular order at this point, and some are specific uses that belong to more generic categories.

Event Notification. This is a generic category of uses that need not be security focused. Notification that a periodic report has been generated, for example, may be useful to any number of people for a variety of reasons.

Disk Health Monitor. Unexpected changes to files may be indicative of imminent hard drive failure. Tripwire should reside on a different physical disk than the files monitored. Good candidates to watch include any file that doesn’t change often, including data files.

Change Control. File changes made during software deployment can be reconciled with a list of files stored in a version control tool to verify that only the expected files actually changed. The need to clear scheduled updates should already be a consideration for using Tripwire as an IDS, but this check goes a little deeper, and should be performed by someone who is not a system admin to maintain segregation of duties.

Groupware. This is another generic category that includes any scenario in which a group of people share a common set of working files. Professional, academic, and volunteer/contributor-based efforts could benefit from this usage of the tool, especially when files being developed are prototypical or experimental in nature, or the organization is very small and does not have other controls in place.

Records Management. A company or department may have certain records that must be retained for various reasons, and especially legal ones. Whoever is responsible for controlling changes to these documents can be notified when changes are made. The resulting action will depend on company procedure. For example, reported changes may trigger a review and approval process if a pre-publishing/staging directory is being monitored.

Development. Daily e-mails listing the files changed in a development sandbox could keep developers informed about changes made by peers. This is particularly important for common code, such as shared libraries, interface definitions, database schemas, etc. Other tools (i.e. version control) may have file watch and notification capabilities, but this tool would work in a pinch.


Open Source Tripwire Reference

Filed under: Computer Software,Linux — Brandon @ 10:34 am
Tags: , , , , ,

Home > My Lists > Technical Notes > Tripwire > Open Source Tripwire Reference

There is a lot of reference material on the Web about Open Source Tripwire. This page includes references to the sources I’ve used to understand how the system works.

How-To Guides

Writing Policy Files

Linux Man Pages

Next Page »

Create a free website or blog at