2020-08-26

2020-08-26 Wednesday - Vim Tips

 

Some years ago I adopted a habit of editing text/config/markdown files with the vim editing tool - to force me to develop and maintain some skill with that tool - for when I need to do some work inside a Linux machine.
Reading this article tonight - help reinforce some tips that I have read about - but just hadn't quite memorized. 
https://initialcommit.com/blog/7-versatile-vim-commands

 

I also have a Tips.VIM.md file that I maintain in my Tips repository on github.

 


 

2020-08-25

2020-08-25 Tuesday - Ideas for Architecture Diagram Title Blocks

Photo by Sergey Zolkin on Unsplash
https://unsplash.com/photos/m9qMoh-scfE
 

 I've begun drafting some ideas for what kind of information may be useful to include in "Title Block" for architecture diagrams. 

  • I think that the current state (or, lack thereof) of annotating software design architectural drawings - is abysmal - and much might be gleaned by looking left-and-right - and seeing how other industries annotate their diagrams.

  • Problem Statement:

    • Diagrams that are exported from authoring tools, culled form PowerPoint, Visio, etc. - usually do not have a proper "Title Block" included.
    • These diagrams are then uploaded to various places, emailed, shared, embedded (e.g. in PPT, Word, web sites, etc.).
    • Thus, the thread of context is lost - and they become orphans, once separated - with no clear traceability (i.e. Who, What, When, Where, Why)
  • I've done a brief survey of different Title Block styles - from various construction blueprints and building architecture diagrams - to gather some examples - as input to writing this document.

2020-08-19

2020-08-19 Wednesday - Road Warrior Travel Tips

Writing this post was cathartic for me. It is an expression of hope, of optimism - that COVID-19 is only a temporary condition - and that we will be able to travel safely and freely again - at some point in the future.

Photo by Callum Chapman on Unsplash
https://unsplash.com/photos/R01A9PJQNIM

STATUS OF THIS POST: WORKING DRAFT

The motivation for writing this blog posting arose this evening - when I learned that a family member will soon begin joining the ranks of Road Warriors (as a traveling nurse). This is written to provide her with some tips, suggestions, ideas.

In the last decade, I've had several years in which I spent 46-48 weeks traveling - staying in hotels over the course of most of the year. Over the course of my 30+ year career - my international experience has included frequent travel to work with clients in Australia, Bermuda, Canada, the Caribbean (Antigua, West Indies), China, England, Germany, Lebanon, Pakistan, Poland, and Turkey. In addition, my travels have included spending time in the Czech Republic, Egypt, Indonesia, France, Malaysia, Mexico, Thailand, the Netherlands, and Russia.
 
What follows - are the essential tips that I would give to anyone that was just starting out in their professional career - anticipating frequent domestic / international travel.

1.0 Travel 

1.1. General Travel Strategy Ideas

  1. When I look back over the business travel I've done over the last 30+ years - the one thing that I regret - was not adding a few extra days to some of those trips to far-off/distant places. Even just an extra day - after my business meetings were concluded - would have allowed some time for sight-seeing - and explore so much more of some of those unique destinations. In some cases, a week or two, would have been so very appropriate (my many 3-week trips to Australia, my many trips to London, that far-too-short 2-week trip to Istanbul, that all-too-brief rushed weekend trip via night train to Prague in winter). 
  2. For many years, I was far too frugal to pay the small upgrade fee for a bump to business class. Only in later years did I fully appreciate how much more rested I would be - and the food, wine, and service - made a significant difference - even on flights that were just under 2-hours long.
  3. Only in very recent years - as my body became less resilient to the rigors of frequent travel - have I allowed myself a rare self-indulgent luxury - of checking into a hotel, near the airport, the night before - allowing an opportunity to take advantage of the hotel's reasonable parking rates, and having a good dinner - and breakfast the following morning - before heading to the airport for an early departure. This is primarily due to the 2-hour drive required to get to the main airport, when I am beginning my travel from my sailboat.
  4. Plan Ahead / Do Your Research - Useful Travel Guide Resources
    1. https://www.tripadvisor.com
    2. https://www.lonelyplanet.com/ 
    3. https://www.fodors.com/
    4. https://www.travelfish.org/ 
    5. https://www.planetware.com/
    6. https://www.expatica.com/

1.2 Credit Cards

  1. As you'll be traveling for business - I strongly encourage you to open a business credit card account - it will help make tracking your business expenses so much easier.
  2. Minimally, I would suggest getting three business credit cards.  Here are few examples - several of which have no annual fee:
    1. American Express Business Card
    2. Chase Visa Business Card
    3. Wells Fargo Business Credit Card
    4. CapitalOne Spark Business Card 
    5. Bank of America Business Card (Mastercard)
    6. Why
      1. There was a day, many years ago, when I had flown to the Main Island of Bermuda  (which consisists of 181 islands) for a consulting engagement with the Bank of Butterfield in Hamilton. When I went to check-in, I discovered that all of the credit cards I carried (I think it was five) - had expired dates. Fortunately, I was traveling with a colleague - who was able to put my room on his card - until I could make arrangements with my card providers to expedite delivery of new cards to me...which they did...arriving within ~3 days...after my frantic calls that night. 
      2. I have encountered situations (usually on international trips) - in which one or the other major credit card - was not accepted at a particular establishment. 
  3. As another backup, consider opening a Schwab Checking account:
    1. https://www.schwab.com/checking
      1. No service fees or account minimums 
      2. No foreign transaction fees
      3. Unlimited ATM fee rebates worldwide

1.3 Booking Reservations

My first choice in booking travel reservations is Expedia.com - (and, if you are 50+, and have AARP membership, you can use the AARP Expedia site - which usually will reflect the typical 10% AARP discounted rate)

My rationale:

While booking through a third-party service provider, such as Expedia, means that you will forego earning points with a hotel's own rewards program - I find the peace of mind (in the following points) to be a primary factor in my decision.
  1. When/if you need to cancel a reservation - my decades of experience using Expedia - has been completely painless and stress-free (as long as your reservation does include a cancellation policy).  
  2. The one time that a hotel had overbooked - and could not honor my Expedia-booked reservation - Expedia called - as I drove to the hotel - and advised that they could modify the reservation and book a nearby (and better!) hotel - at no additional cost. Two words: Customer Service
  3. I've found the reviews on Expedia to be very useful - in avoiding marginal/bad hotels - and often there are comments about the safety of the area, and notes on nearby services, restaurants, etc. 
  4. The description of the hotel on Expedia is very helpful in verifying if the room will include an ironing board, microwave, and fridge - or, if those are optional - or, if those are available at a different price tier. The descriptions have also been helpful in identifying hotels that have on-premise, self-service, coin-operated, laundry machines.
  5. AARP also frequently offers great discounts on a number of other services

Additional travel reservation resources that you might consider:

  1. https://www.cheapair.com/
  2. https://www.agoda.com/
  3. https://www.oyster.com/ 
  4. https://www.kayak.com/ 
  5. https://www.priceline.com
  6. https://www.tripit.com/web

 If you will be paying your travel expenses out of your own pocket - then, for convenience, value, quality, and comfort - here are my recommendations for hotels, in order of preference:

  1. Best Western Plus
  2. Comfort Inn 
  3. Wyndham La Quinta

However, If the client will be reimbursing you for your travel costs, here are a few additional hotel recommendations - offering a higher tier of services, quality, comfort, and convenience:

  1. Embassy Suites
  2. Any of the Marriott brands, but in particular, I've enjoyed the Marriott Courtyard and Residence Inn
  3. Crowne Plaza

Of course, there are other alternative strategies for arranging accommodations - particularly if you need to plan for long-duration stays:

  1. Aibnb.com
  2. Craigslist can be a very useful tool for short-term, or long-term rentals - and I've even used it to find just a room to rent, on a month-to-month basis, in the past:
    1. https://www.craigslist.org/about/sites
  3. By the time you factor in the costs for an apartment (usually first and last month rent, renters insurance, cleaning fee, possible additional required security deposits, parking fees, utilities, furnishings - and the possible need to pay an early termination fee - if the gig ends early) - you may find that long-term rates with some hotels - are actually very cost-competitive - on a weekly, or monthly basis. I once kept a hotel room in Olympia, WA for 18 months - instead of renting an apartment - because I wasn't sure how long the engagement was going to last. For example, Extended Stay America offers a few different rate plans for longer-term stays.
    1. https://www.extendedstayamerica.com/about/weekly-rate-hotels.html
    2. https://www.extendedstayamerica.com/monthly-rate-hotels

1.4 Airport Lounges

If you will be flying frequently - and will be starting (or connecting) through major city hubs - it may be beneficial to consider purchasing a membership that grants you access (for a small nominal fee, per use) - to the first/business class lounges.
  1. Priority Pass
    1. Over 1,000 lounges, in over 130 countries
  2. American Express Platinum cardholders have access to the American Express Global Lounge Collection - which includes free membership to Priority Pass, as well as several other lounge programs. 
  3. Escape Lounges

1.5 Air Travel

    1. Print copies of your itinerary (to include your destination hotel address/phone), and a "Contact Me" page (minimum: Phone, Email) - placed on top of the contents - so that if your luggage becomes lost - and someone opens it - they'll see how to contact you - and where it needs to be delivered.
  • Carry-on Luggage:
    1. Photocopies of any important travel documents:
      1. Passport
      2. Visa 
      3. Work Permit
      4. Contract
      5. Drivers License
      6. Insurance Policiies
        1. Auto
        2. Health
        3. Professional/liability

1.6 Communications

  1. Personal Broadband Device
    1. For many years, I have carried an AT&T Broadband device - that is combined with my cell phone plan - which currently provides 45 GB of data per month - which has been more than sufficient for my internet connectivity needs while traveling on business.   
    2. You can also use your smart phone's capability to create your own personal hotspot network connection.
      1. Apple iPhone or iPad
      2. Android
  2. Suggested VPN Services (prompted by Arron Rouse's suggestion at the bottom of this post):  
    1. If your mobile data plan is quite limited (e.g. 2 GB per month, or less) - you may find yourself tempted to leverage the hotel internet, or other public internet access points (e.g. Starbucks). This is fine for most of your internet browsing needs - but when you need to conduct financial transactions - or any thing that involves your personal/sensitive information - you'll want to have an additional layer of security. This is where a Virtual Private Network (VPN) will be beneficial.
    2. <todo: add links>
  3. Staying connected while traveling internationally:
    1. Skype
    2. Zoom 
    3. Google Hangouts
    4. Check with your phone provider - and determine if you can temporarily add your destination country to your current billing plan. This can save you quite a bit of money.
      1. I did this in 2004 and 2007 - when I did two different 5-month sabbaticals on my sailboat in Mexico.
    5. Alternatively, wait until you arrive in-country - and just purchase a disposable phone.
      1. This was a much better strategy - when I spent 6-months in Warsaw Poland.

1.7 Car Rentals

  1. Check with your auto insurance agent - and ask if your policy covers car rentals. If not, ask about adding that as an additional benefit - even for short duration trips - this can save you quite a bit of money. You'll want to print-out several copies of that insurance policy coverage. This strategy is probably best for car rentals in the United States. When I've rented a car in Canada - I paid the car rental agency the additional fee for their additional insurance coverage. My personal auto policy would have been sufficient - but in the event of an accident - I had peace of mind that I was covered - with certainty. 
  2. Your credit card may also include additional benefits for car rental insurance coverage. However, those benefits have been changed on a few of my credit cards in recent years - so double check. Also be certain that the language doesn't exclude certain rental usage classifications (e.g. business vs. personal).

1.8 Using Your Personal Automobile

    • If you will be frequently driving long distances for your commute.
    • If you are driving an older model car - and have any concerns about it possibly having issues - and leaving you stranded somewhere
    • If you will be commuting to geographic regions that may have very cold winter weather - with a greater risk of a dead car battery.

2.0 Additional Support Systems

2.1 Mail Delivery

  1. UPS Mailboxes
    1. For my professional business, I have a UPS Mailbox setup in my home town. They take care of forwarding my mail - where ever I may need to travel - and provide a great peace of mind that mail isn't accumulating on my doorstep - or being stolen out of a mailbox that isn't secured.
    2. Additionally, when working at a client's remote office - spending weeks, or months, on the road - I often setup a local UPS Mailbox in that city as well. This also offers great peace of mind - and avoids worrying about mail sitting unsecured at a hotel front desk, or having it delivered  to rental location - that may change frequently - or periodically.  

2.2. Temporary/Local Office Accommodations

  1. Regus Lounge Membership ($100/month,  or $89/month - annually)  

     

2.3 Concierge Services

  1. <todo: add items here>

3.0 Packing

3.1  General 

  1. Create a packing list - this will help ensure that you have everything packed - both before departing - and before returning - and avoid leaving things behind in hotel rooms.
    1. This creates a repeatable process - and increases the efficiency, quality, and speed of your ability to consistently pack for a trip. 
    2. Because I have put in place the mechanisms, arrangements, the organizational structure, and have invested in the proper preparation and tooling - I can be packed, and on the road - for a multi-week, or multi-month trip - in about 30 minutes.
  2. [2] heavy duty, mesh laundry bags  
  3. Personal, everyday carry
    1. Kershaw Pocket Knife  (suggested: RJ Tactical, or the Kuro)
    2. Pull-Apart Silver Key Ring Easy Detach Double Spring Split Snap Separate Chain 

3.2 Carry-On Luggage

Here are a few suggested options:

3.3  Checked Luggage

There are plenty of options - but here are some important things to look for:
  1. Sturdy
  2. Rolling wheels
  3. Expandable zipper
  4. Make it easy to spot - with brightly colored luggage strap
  5. Make it easy to identify - with Luggage Tags
A few examples:

3.4 Road Warrior Luggage

3.4.1 Folding Luggage Cart

As I often need to travel with a client laptop, my own business laptop, and a backpack - I have found that one of the best travel equipment purchases of my entire career - was a folding luggage cart. 
 

3.4.2 Backpack

I am very particular about my choice of backpack. It must have lots of compartments, be able to accommodate a 17" laptop - and be able to hold most of my "mobile office" accessories.  
 
Some of the best brands (12) include:
  • North Face 
  • Patagonia
  • SwissGear
  • Tortuga 
  • Jansport
  • Targus (Targus backpacks have consistently been one of the most satisfying purchases for me)
One requirement that I will probably add when I need to replace my current backpack - wheels and an extending handle. 

A few examples of backpacks that you might consider:
 

3.5 When Commuting by Car

[image credit: HarborFreight.com] 


4.0 Mobile Office Gear (re: Backpack)

5.0 Comfort

When you are on the road, constantly, small things can make a difference in your comfort level - and help reduce stress. Here are a few ideas:

 

6.0 Sleep 

When you travel enough to qualify for the "Road Warrior" designation - you'll quickly learn to appreciate the impact that frequent travel can have on your sleep patterns. Especially if you are waking-up at 2am to catch a shuttle to an airport that is over 2-hours away - for playing your part in the 2-hour Security Theater that is performed by the TSA, and catching your flight so that you can arrive in your destination city, pick-up your luggage, pick-up your rental car, negotiate the morning rush-hour traffic, and still arrive at the client's office by 9am - ready to put in a full 9-10 hour day. 

These are the "essentials" for getting a good night's sleep. No more tossing and turning - praying for the "sleep elves" to come and sprinkle their magic dust...
  • Gel Eye Mask
    1. Target, Gel Eye Mask Gray, by Design ($9.00)
 

  • Ear plugs
    • https://www.amazon.com/dp/B07RDK9V58/
      • "Reusable Silicone Ear Plugs - ANBOW Waterproof Noise Reduction Earplugs for Sleeping, Swimming, Snoring, Concerts, 32dB Highest NRR, 3 Pairs with Bonus Travel Pouch"
  • Sleeping pills
    1. There may be times, when at least one sleeping pill is essential - to help you get that critical 3-5 hours of deep sleep - that includes some solid REM phase recovery sleep - that you need to operate at minimally optimal performance levels.  
    2. I've used a couple of different brands over the years - some are more effective than others:
      1. Recently I've had good experiences with the Equate Acetaminophen PM brand, sold by Walmart (80 gelcaps, 500 mg Acetaminophen, 25 mg Diphenhyrdamine).
      • Motrin PM (80 coated caplets, 200 mg Ibuprofen, 38 mg Diphenhyrdamine citate) may also be a viable alternative.

7.0 Personal Security  

8.0 International Travel

Photo by Sven Scheuermeier on Unsplash
https://unsplash.com/photos/AXsJBByg4Ic

 

8.1 Foreign Languages

8.2 Passports & Visa Resources

For international travel, this is a nice addition to your travel gear - and adds a professional touch to the impression you make (whether at immigration, or at your hotel check-in):
When traveling to regions that have notorious pick-pocket problems, I use an alternative, like this:

With COVID-19 interrupting many government services - you should check the current status of the U.S. Passport office phased reopening:
 
For express services - when needing to get a new/renewed passport - or to obtain required travel
visas - I've used the following Washington D.C. service in the past:
  • <todo: add details>

Additional passport services that may be useful to know about (however, I suggest checking their latest reviews on Yelp, first):

8.3 International Mail Forwarding/Delivery

  1. DHL.com
  2. Alternate Delivery Destinations
    1. A local American Express office (if you are an Amex card holder) - check with the local office in your foreign-destination city and confirm if they will allow you to have mail delivered to their office. They'll store it in their secure vault - and you'll have one less thing to worry about.
      1. This worked wonderfully when having mail securely arranged for for delivery to Warsaw Poland, over a 6-month consulting engagement (2001-2002).
    2. Your hotel front desk

8.4 Additional Gear

  1. International Universal Plug Adapter Set
    • I strongly suggest that you carefully check the product reviews. This is one purchase - that you do not want to take chances on - and I wold be hesitant to leave a hotel room with something plugged in. 
      • While attending a conference, I happened to be sitting in my hotel room in San Francisco during a break in between sessions - when I noticed my relatively new replacement laptop power supply started smoking. I was lucky that I had not yet left the room - to return downstairs for the next session.
      • While staying in an apartment in Warsaw Poland - all of the bulbs in the bathroom suddenly exploded due to a power surge.
      • While in Istanbul Turkey - I got a severe electrical shock while connecting a computer to an improperly grounded outlet - this was at the offices of a major bank.
    • Some example products:

9.0 Orienting Yourself and Situational Awareness

 Whenever I arrive in a new city for a new client engagement - once I've unpacked - I will usually do a perimeter walk - at a distance of about 2-blocks from where I'm staying. This allows me to identify several things:
  1. Location of cab stands
  2. Location of bus stops
  3. Possible evacuation paths
  4. Nearby conference facilities
  5. Other hotels in the immediate area
  6. Potential "hard shelter" locations (e.g. subways, parking garages, below-ground tunnels, shopping facilities)
  7. Restaurants
  8. Coffee shops 
  9. Convenience shops 
  10. Retail stores
  11. Office supply stores
  12. Barber shops
  13. Shoe repair shops
  14. Mobile phone stores
  15. Health Clubs / Gym Facilities
  16. Urgent Care / Medical facilities
  17. Police stations
  18. Libraries

For any of the  above that I don't find immediately nearby - I'll spend an hour putting together a file in a /Locations directory that I maintain (part of a personal "knowledge management" process I've developed over the years) - that will then be my handy list for organizing information that I discover about that particular area - should I need to find something quickly in the future, or return after some time may have passed.

An additional  goal of my perimeter walk is to assess the vibe of the neighborhood - and assess its relative safety - and identify any potential risks or threats. Noting the safe, and possibly less safe - passages.

Within a week - I will have made a personal connection with a number of people in that immediate neighborhood - including the hotel front desk personnel - establishing a network of potential information resources.

10.0 Building A Network In New Places 

There are a number of ways that you can take advantage of a business trip to expand your personal and professional network of connections. 

A couple of the resources that you may find beneficial:

11.0 Online Resources and References

12.0 Tips From My Global Professional Network, on LinkedIn

With Gratitude!  (and, in order of submissions received)

  1. Terry Brown,  Senior Business Architect at Legal & General
    (Redhill, United Kingdom)
    •  "At least one outfit in hand luggage in case of lost bag. Wear one, wash one. Friend of mine had none for whole family and very little available to buy. Plus always drink the local beer." 
  2. Arron Rouse, Consultant GRC Enterprise Architect and Managing Director at ClassiQ Ltd
    (Chichester, England, United Kingdom)
    • "Buy a second set of everything for your toiletries bag so that you don't have to unpack/pack it every time you go home"
    • "Travel as light as possible. If you can keep it to hand luggage, your life will be happier. "
    • "Travel as light as possible part 2. If you have the chance, only take your laundry home with you."
    • " If you're staying in a hotel, do your ironing there."
    • "Even if you get expenses, do not eat out every night unless you want to get fat. An easy way to achieve this is to have your main meal at lunchtime and a sandwich in the evening."
    • "Subscribe to a VPN service if you're going anywhere remotely dodgy or oppressive." 
    • "While abroad, Skype Out is often much cheaper than making phone calls home if you need to call a landline."

 


2020-08-08

2020-08-08 Saturday - Researching: Azure DevOps Build Pipelines

Photo by JJ Ying on Unsplash
https://unsplash.com/photos/4XvAZN8_WHo
 

This weekend I'm doing a bit of a deep-dive research into the current state of features, capabilities, and limitations - in Azure DevOps Build Pipelines - and researching additional capabilities that are offered by plugins in the Azure DevOps section of the Visual Studio Marketplace.

My corresponding LinkedIn post.


Going forward, I'll continue gathering information on this topic in my Lab.Cloud.Azure github repository, in this file:
https://github.com/intltechventures/Lab.Cloud.Azure/blob/master/Pipelines.md

1.0 Azure DevOps Build Pipelines

1.1 References

- https://azure.microsoft.com/en-us/services/devops/pipelines/

- Azure Pipelines Documentation
  + https://docs.microsoft.com/en-us/azure/devops/pipelines/?view=azure-devops

- What is Azure Pipelines?
  + https://docs.microsoft.com/en-us/azure/devops/pipelines/get-started/what-is-azure-pipelines?view=azure-devops
    * "Azure Pipelines is a cloud service that you can use to automatically build and test your code project and make it available to other users."

- Key Concepts
  + https://docs.microsoft.com/en-us/azure/devops/pipelines/get-started/key-pipelines-concepts?view=azure-devops

- Getting Started
  + https://docs.microsoft.com/en-us/azure/devops/pipelines/get-started/pipelines-get-started?view=azure-devops
    * "You define your pipeline in a YAML file called azure-pipelines.yml with the rest of your app."
    * See "Feature Availability" table

- Task Types & Usage
  + https://docs.microsoft.com/en-us/azure/devops/pipelines/process/tasks?view=azure-devops&tabs=yaml
  + https://docs.microsoft.com/en-us/azure/devops/pipelines/tasks/?view=azure-devops
  + https://docs.microsoft.com/en-us/azure/devops/pipelines/tasks/?view=azure-devops#tool
    * https://github.com/Microsoft/azure-pipelines-tasks

  + Build & Release Tasks:
    * https://docs.microsoft.com/en-us/azure/devops/pipelines/tasks/?view=azure-devops
      * Android Signing Build & Release Task
        * https://docs.microsoft.com/en-us/azure/devops/pipelines/tasks/build/android-signing?view=azure-devops
        
  + Add a Build or Release Task
    * https://docs.microsoft.com/en-us/azure/devops/extend/develop/add-build-task?view=azure-devops

  + Download Pipeline Artifacts task
    * https://docs.microsoft.com/en-us/azure/devops/pipelines/tasks/utility/download-pipeline-artifact?view=azure-devops

  + Download Secure File Task
    * https://docs.microsoft.com/en-us/azure/devops/pipelines/tasks/utility/download-secure-file?view=azure-devops

  + Jenkins Queue Job task
    * https://docs.microsoft.com/en-us/azure/devops/pipelines/tasks/build/jenkins-queue-job?view=azure-devops

  + Jenkins Download Artifacts task
    * https://docs.microsoft.com/en-us/azure/devops/pipelines/tasks/utility/jenkins-download-artifacts?view=azure-devops

  + File Upload Task
    * https://docs.microsoft.com/en-us/azure/devops/pipelines/tasks/utility/ftp-upload?view=azure-devops

  + Copy Files Task
    * https://docs.microsoft.com/en-us/azure/devops/pipelines/tasks/utility/copy-files?view=azure-devops&tabs=yaml
 
  + Publish Pipeline Artifacts task
    * https://docs.microsoft.com/en-us/azure/devops/pipelines/tasks/utility/publish-pipeline-artifact?view=azure-devops

  + Publish Build Artifacts task
    * https://docs.microsoft.com/en-us/azure/devops/pipelines/tasks/utility/publish-build-artifacts?view=azure-devops

  + Install Apple Provisioning Profile task
    * https://docs.microsoft.com/en-us/azure/devops/pipelines/tasks/utility/install-apple-provisioning-profile?view=azure-devops

- Expressions
  + https://docs.microsoft.com/en-us/azure/devops/pipelines/process/expressions?view=azure-devops#functions
    * Re: https://stackoverflow.com/questions/54931739/task-custom-condition-does-a-given-file-exist
      * "There is no built in condition or function that operates off of the presence or absence of a file."
      * "You can write and run a script that sets a variable, then check the contents of the variable."
      * Example:
            $fileExists = Test-Path -Path "$(System.DefaultWorkingDirectory)/file.txt"
            Write-Output "##vso[task.setvariable variable=FileExists]$fileExists"
        See posting for secondary task
      
- Integration Applications
  + https://docs.microsoft.com/en-us/azure/devops/integrate/?view=azure-devops
    * "You can build custom applications or services that integrate with your Azure DevOps and Team Foundation Server (TFS) accounts by using the REST APIs to make direct HTTP calls, or utilize our .NET Client Libraries."

  + Service Hooks in Azure DevOps Services
    * https://docs.microsoft.com/en-us/azure/devops/integrate/concepts/service-hooks?view=azure-devops
      * "Using the Subscriptions REST APIs, you can programmatically create a subscription that performs an action on an external (consumer) service when a specific event occurs in a project."

  + Service hook consumers for Azure DevOps Services
    * https://docs.microsoft.com/en-us/azure/devops/service-hooks/consumers?view=azure-devops
      * "Use service hook consumers to programmatically create a subscription. The subscription specifies the event, the consumer and the action. Select the consumer that you want to use in your subscription from the following consumers:..."
        * Web Hooks, POST via HTTP
          * https://docs.microsoft.com/en-us/azure/devops/service-hooks/consumers?view=azure-devops#webhooks

- Specify events that trigger pipelines
  + https://docs.microsoft.com/en-us/azure/devops/pipelines/build/triggers?view=azure-devops
    * CI Triggers in Github
      * https://docs.microsoft.com/en-us/azure/devops/pipelines/repos/github?view=azure-devops&tabs=yaml#ci-triggers


- Notifications
  + https://docs.microsoft.com/en-us/azure/devops/notifications/about-notifications?view=azure-devops
    * "Notifications help you and your team stay informed about activity that occurs within your Azure DevOps projects. You're notified when changes occur to work items, code reviews, pull requests, source control files, and builds. You can be notified via email."


- File matching patterns reference
  + https://docs.microsoft.com/en-us/azure/devops/pipelines/tasks/file-matching-patterns?view=azure-devops

- YAML schema reference
  + https://docs.microsoft.com/en-us/azure/devops/pipelines/yaml-schema?view=azure-devops&tabs=schema%2Cparameter-schema
    * "This article is a detailed reference guide to Azure Pipelines YAML pipelines. It includes a catalog of all supported YAML capabilities and the available options."

1.2 Visual Studio Marketplace - Azure DevOps

- https://marketplace.visualstudio.com/search?target=AzureDevOps&category=Azure%20Pipelines&sortBy=Installs

- AWS Toolkit for Azure DevOps
  + https://github.com/aws/aws-toolkit-azure-devops
  + https://docs.aws.amazon.com/vsts/latest/userguide/welcome.html
  + https://marketplace.visualstudio.com/items?itemName=AmazonWebServices.aws-vsts-tools
    * "Tasks for Amazon S3, AWS Elastic Beanstalk, AWS CodeDeploy, AWS Lambda and AWS CloudFormation and more, and running commands in the AWS Tools for Windows PowerShell module and the AWS CLI."
    * "AWSCLI - Interact with the AWSCLI (Windows hosts only)"
    * "AWS Powershell Module - Interact with AWS through powershell (Windows hosts only)"
    * "Beanstalk - Deploy ElasticBeanstalk applications"
    * "CodeDeploy - Deploy with CodeDeploy"
    * "CloudFormation - Create/Delete/Update CloudFormation stacks"
    * "ECR - Push an image to an ECR repository"
    * "Lambda - Deploy from S3, .net core applications, or any other language that builds on Azure DevOps"
    * "S3 - Upload/Download to/from S3 buckets"
    * "Secrets Manager - Create and retrieve secrets"
    * "SQS - Send SQS messages"
    * "SNS - Send SNS messages"
    * "Systems manager - Get/set parameters and run commands"

- Publishing to Apple Store
  + https://github.com/microsoft/app-store-vsts-extension
    * "Visual Studio Team Services (VSTS) extension for performing continuous delivery to the App Store store from your automated CI builds"
  + https://marketplace.visualstudio.com/items?itemName=ms-vsclient.app-store
    * "Provides tasks for publishing to Apple's App Store from a TFS/Azure DevOps build or release pipeline"
    * "The tasks install and use fastlane tools. fastlane requires Ruby 2.0.0 or above and recommends having the latest Xcode command line tools installed on the MacOS computer."
  + https://github.com/fastlane/fastlane
    * "The easiest way to automate building and releasing your iOS and Android apps"

- AWS S3 Upload
  + https://marketplace.visualstudio.com/items?itemName=MFelling.AWSS3Upload

- File Utilities Build Tasks
  + https://marketplace.visualstudio.com/items?itemName=richardfennellBM.BM-VSTS-FileCopier-Tasks


- Changed files
  + https://marketplace.visualstudio.com/items?itemName=touchify.vsts-changed-files

- Download a file
  + https://marketplace.visualstudio.com/items?itemName=Fizcko.azure-devops-download-a-file

- File Operations
  + https://marketplace.visualstudio.com/items?itemName=KirKone.fileoperations

1.3 Azure DevOps Feature Requests - and possible workarounds

- Run task if file/directory exists #1877
  + https://github.com/MicrosoftDocs/azure-devops-docs/issues/1877
  + See pseudo code example suggested, using script task

 - bash: |
   if [ -f your-file-here.txt ]; then
    echo "##vso[task.setVariable variable=FILEEXISTS]true"
   fi
- task: Foo@1
condition: eq(variables.FILEEXISTS, 'true')

- Add an exists() on Task Custom Condition
  + https://developercommunity.visualstudio.com/idea/366095/add-an-exists-on-task-custom-condition.html


1.4 Third-Party Solutions

- WinScp
  + SFTP/FTPS file transfers in Microsoft Azure WebJob
    * Re: Azure WebJob
      * https://docs.microsoft.com/en-us/azure/app-service/webjobs-create
    * "Starts immediately when the WebJob is created."
  + https://winscp.net/eng/docs/guide_microsoft_azure_webjob_sftp

1.5 Training Resources

- https://azuredevopslabs.com/

1.6 For Comparison: Jenkins Pipeline Capabilities

- https://www.jenkins.io/doc/book/getting-started/

- https://plugins.jenkins.io/
  + File System Trigger
    * https://github.com/jenkinsci/fstrigger-plugin
    * https://plugins.jenkins.io/fstrigger/
      * "The plug-in makes it possible to monitor changes of a file or a set of files in a folder."

- Pipeline Steps Reference
  + https://www.jenkins.io/doc/pipeline/steps/

1.7 Suggested Books

- Hands-on Azure Pipelines: Understanding Continuous Integration and Deployment in Azure DevOps 1st ed. Edition (July 2020)
  + https://www.amazon.com/Hands-Azure-Pipelines-Understanding-Integration/dp/1484259017/

- Agile Project Management with Azure DevOps: Concepts, Templates, and Metrics Paperback – (April 2019)
  + https://www.amazon.com/Agile-Project-Management-Azure-DevOps/dp/1484244826/
 
- Operations Anti-Patterns, DevOps Solutions, Jeffrey D. Smith, Manning Publications (MEAP, est. Fall 2020)
  + https://www.manning.com/books/operations-anti-patterns-devops-solutions

- Effective DevOps at Scale, Jennifer Davis, Ryan Daniels, O'Reilly Publishing (2016)
  + https://azure.microsoft.com/en-us/resources/effective-devops/
  + Note: 410 pages, *Free Book*
 

1.8 Articles of possible interest

2019

- How I Failed My Way to Success with Azure Pipelines
  + https://toastit.dev/2019/02/06/how-i-failed-my-way-to-success-with-azure-pipelines/
  + https://toastit.dev/2019/02/17/how-i-failed-my-way-to-success-with-azure-pipelines-part-2-release/

Copyright

© 2001-2021 International Technology Ventures, Inc., All Rights Reserved.