Brandon's Notepad

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


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

Short URL:
Home > My Lists > Technical Notes > Tripwire

Tripwire is an intrusion detection system. It monitors file systems and stores various attributes about the files for later comparison. When it detects that a monitored file has changed since the baseline scan, it alerts someone (e.g. system administrator, data security, etc.) via e-mail who can either verify that the change was authorized and update the baseline, or have the change reversed. The Open Source product is based on code provided by Tripwire Inc.. The commercial offering includes a robust reporting and security policy management built around the core product.

Open Source Tripwire Reference
How Tripwire Works In Plain English (future post)
Other Uses For Tripwire

May 20, 2013

Android Applications: Shopping Lists

Home > My Lists > Android Applications > Shopping Lists

I do a lot of the household’s grocery shopping and I’m always running little errands to the grocery, hardware, and big-box department stores. My lists are manifest on paper, in e-mail, and (all too often) in my head. Sometimes I have to consult two or three different lists during a single visit. I needed to find a way to maintain a single, consolidated shopping list, and the tablet seemed like an excellent platform for the job.

[Content last updated on 5/20/2013]

Evaluation Criteria

The basic requirement is that the app reliably maintains a clean list of items that can be crossed off (or at least removed) as necessary. This is simple functionality and there are many Android apps out there that will do the job sufficiently. However, I really didn’t want to retype items that I buy on a regular basis, and it would be great to have a master list that I could use to take inventory around the house before a big shopping trip in the hope of cutting down the number of small errands in the week that follows. Identifying the store for each item is also important.

Here’s a few other considerations:

  • The ability to record an item’s price is of limited value to me for several reasons. First, prices change all the time (even if only by a few cents) and even if I know that one store has the lowest price, I’m not going to make a special trip if it’s the only item I need to buy there. Gas it too expensive these days to care much about a difference of a few cents on a can of green beans. Also, I’m not going to maintain price data for everything I buy across three or four grocery stores. It is nice to know approximately how much something costs and it is helpful to know the sale prices for the current week.
  • Many apps include barcode-scanning functionality, usually for easy lookup of items against a product database. It may be a neat feature, but I’m not going to make it a requirement. In part, I often prefer to be generic. For example, the line item “Shampoo for him” leaves room for choice based on price, availability, and the plain freedom to choose something different once in a while. [Based on my experience after the evaluation was over, this feature worked best with name-brand items and not so well with store-brand items — which happens to include a lot of what we buy!]

Selected App Reviews

OI Shopping List. [v1.6] This app is very simple at first blush but several advanced features make it scale nicely. Multiple shopping lists can be stored. Adding items to a list involves typing the name of the item into a text box at the bottom of the screen and clicking the ‘Add’ button. To check an item off of the list (or cross it off, depending on the theme) just tap it. The app can be configured to hide checked items automatically. The “Clean Up List” function appears to wipe all checked items from the list, but it really only hides them. The “Pick Item” function then lets you add items back to the list as needed. By default, this occurs in a dialogue box; however, there is a setting that allows for the picking of items inline on the list. A “Mark All Items” function allows for quick cleanup so that items can be picked or added anew. Wait, there’s more! Various attributes can be (optionally) set for each item, such as quantity, units, price, tags, priority (numeric), and even notes (requires OI Notepad). If any of the items on the list have a price, then the total is tallied at the bottom. Quantity and unit values precede the name of the item on the list view if they contain values. There are no categories (e.g. Frozen Foods), but tags work well in this capacity (caveat: without autocomplete, the tags would have to be retyped every time). Prices can also the tracked by store. (BUG ALERT! In version 1.6, no matter which item you choose, the Stores dialog box gets stuck on the first item on the list if it is accessed through the Edit Item dialogue box. Long-tapping on the item and choosing “Stores…” works fine.) Here’s the best part! The list can be filtered by store and/or tag! This works even when picking items to add to the list, which means you can set the tag filter while taking inventory around the house and then set the store filter when shopping at a particular store. When the store filter is on, the price for that store is shown! (Unfiltered, it shows the lowest price.) How powerful is that! There is also a barcode scanning function (which requires the Barcode OI Plugin), but I have not tried it.

This app is clearly my favorite because it met my evaluation criteria. It lets me work the way I want to work. I can turn on the inline pick function and go from room to room determining what needs to be purchased (a binary decision). The store filter turns my master list into a store-specific list, and the tag filter limits my choices when taking inventory and allows me to focus aisle by aisle at the store.

Out of Milk. [v3.1.4] This app has one of the best user interfaces in my opinion. Version 1.6 has three functions available: Shopping List, Pantry List, and To-Do List (not reviewed). The Shopping and Pantry lists look very much the same, and multiple lists of each kind can be created; however, these lists are integrated only loosely. In a Shopping List, a line item can include values for quantity, unit, unit price, and category, as well as check boxes for “Tax-Free” and “Coupon”, and a long text field for notes. The list is grouped by category and footed by two price tallies: “Total” and “Remaining Total” (i.e. price total of unchecked items). Setting the tax rate will automatically add tax for all items not marked as “Tax-Free” and prices are adjusted for coupons, either in amount or percentage. (BUG ALERT! I entered an item with quantity of “2” and unit price of $10. On the list it stated in small print, “2 @ $20.00”. This is misleading. “2 @ $10.00 = $20.00 Total” or “Qty: 2 Total: $20.00” would be far less ambiguous.) In a Pantry List, an item still has a unit price, category (with the same values as on the Shopping List), and notes. The quantity and unit values are still available, but not by default. In their stead, a slider control labeled “Amount” ranges continuously from “None” to “Half” to “Full”. The values on the line item are then qualified in small print as “None left”, “Almost empty”, “About half left”, etc. The quantity and unit values take the place of the slider if the “Enter Number Instead” checkbox is checked. The other two checkboxes don’t exist in the Pantry List. Both include a price history (stack array) that is automatically updated when a price is changed. So, it is obvious that the Shopping List function is meant to be used to plan a very specific shopping trip (with the possible side benefit of making you think twice about impulse purchases lest they mess up your perfectly-planned list) and the second function lends itself to keeping a household inventory, either periodic or perpetual (with the downside being that you have to review your entire list as you march through every store and reset the quantities either when items go into the basket or after the purchase is complete). These functions are not mutually exclusive. Use the Pantry List to track items typically kept on hand (like paper towels, soap, etc.) and add non-staple items to the Shopping List (such as steak because it is on sale this week or a bottle of wine for Friday night). This app also has a built-in barcode scanner that found every item I scanned, including desk supplies.

I really like the split Shopping List and Pantry List concept; however, unlike OI, I have to remember what is on each. For example, are bananas on the Pantry List or the Shopping List? Probably the former. Ground beef? Probably the latter.

Grocery IQ. [v2.5.2] This app has a very nice interface and it was going to be my app of choice when I started, but it quickly fell out of favor. For starters, and this was probably a fluke, but the first time I tried to use the app at the grocery store, my list was gone! It reappeared the next day. The barcode scanner would not return any store brand products. In fact, only brand name products could be found in the database. Also, this app is for use with electronic coupons, and I don’t use a lot of coupons anymore, so I moved on to other apps.

To be fair, I just fired up the app before writing this, and was able to find Kroger brand goods. I may revisit it someday, perhaps just for getting the coupons during shopping trips.

Our Groceries. [v2.2.0] This app is very basic. It does support multiple shopping lists and has a large number of generic products in its database (e.g. “eggs” and “milk”).

ZipList. [v2.3] This is a sufficient app that allows multiple lists, and common item attributes, such as quantity, units, size, price, etc. The database includes both generic and name brand items, but I did not try out the barcode scanner. ZipList does have a helpful store feature that lets you search for and maintain a list of favorite stores and customize the aisle order for each. Items can then be categorized by aisle (most have logical defaults) and assigned to particular stores in the list. This automatically sorts store lists to streamline shopping trips and prevent needless walks back and forth across the store.

The weekly ZipList e-mail newsletter includes links to a lot of tasty recipes.

Retail Store Apps

The retail grocers are definitely competing in the mobile arena. I have loaded a few apps, including Kroger, Albertsons, Tom Thumb, Target, and Walmart. They all offer a competitive list of features, including weekly ads, shopping lists, online coupons, store locators, prescriptions, shopper’s club rewards, gift card services, and gift registries.

Again, these apps may be useful for taking advantage of deals and coupon in-store (i.e. pick up an item and scan the barcode to see if there is a coupon), but I’d rather not have to access a half-dozen apps to plan the week’s shopping. Moreover, these apps are going to change more frequently than the generic apps to stay competitive, so I don’t see much value in reviewing them in detail.

Next Page »

Blog at