$ErrorActionPreference = 'Stop'
# ============================================================
# COLD COFFEES - ONE SHOT UPLOAD
# ============================================================
$repo = 'C:\Users\admin\Desktop\nigelthomas-portfolio'
$page = 'cold-coffees-guide.html'
$url = "https://www.nigelthomas.live/$page"
$src = Join-Path $env:USERPROFILE 'Downloads\cold-coffees-poster.jpg'
$dst = Join-Path $repo 'assets\cold-coffees-poster.jpg'
$utf8 = New-Object System.Text.UTF8Encoding $false
# ============================================================
# IMAGE RESIZE HELPER (System.Drawing)
# ============================================================
Add-Type -AssemblyName System.Drawing
function Resize-Jpeg {
param(
[Parameter(Mandatory)][string]$InPath,
[Parameter(Mandatory)][string]$OutPath,
[int]$MaxWidth = 1200,
[int]$Quality = 82
)
$img = [System.Drawing.Image]::FromFile($InPath)
try {
$ratio = [Math]::Min($MaxWidth / $img.Width, 1.0)
$newW = [int][Math]::Round($img.Width * $ratio)
$newH = [int][Math]::Round($img.Height * $ratio)
$bmp = New-Object System.Drawing.Bitmap $newW, $newH
$gfx = [System.Drawing.Graphics]::FromImage($bmp)
try {
$gfx.InterpolationMode = [System.Drawing.Drawing2D.InterpolationMode]::HighQualityBicubic
$gfx.SmoothingMode = [System.Drawing.Drawing2D.SmoothingMode]::HighQuality
$gfx.PixelOffsetMode = [System.Drawing.Drawing2D.PixelOffsetMode]::HighQuality
$gfx.CompositingQuality = [System.Drawing.Drawing2D.CompositingQuality]::HighQuality
$gfx.DrawImage($img, 0, 0, $newW, $newH)
}
finally { $gfx.Dispose() }
$codec = [System.Drawing.Imaging.ImageCodecInfo]::GetImageEncoders() |
Where-Object { $_.MimeType -eq 'image/jpeg' }
$encParams = New-Object System.Drawing.Imaging.EncoderParameters 1
$encParams.Param[0] = New-Object System.Drawing.Imaging.EncoderParameter(
[System.Drawing.Imaging.Encoder]::Quality, [long]$Quality)
$bmp.Save($OutPath, $codec, $encParams)
$bmp.Dispose()
}
finally { $img.Dispose() }
}
Set-Location $repo
Write-Host ''
Write-Host '=== COLD COFFEES UPLOAD ===' -ForegroundColor Cyan
# ------------------------------------------------------------
# 1. PULL
# ------------------------------------------------------------
git pull --rebase --autostash
if ($LASTEXITCODE -ne 0) {
Write-Host 'Git pull failed.' -ForegroundColor Red
exit 1
}
# ------------------------------------------------------------
# 2. MOVE/COPY POSTER INTO ASSETS FIRST (RESIZED)
# ------------------------------------------------------------
Write-Host ''
Write-Host '=== STEP 1: POSTER ===' -ForegroundColor Yellow
if (-not (Test-Path $src)) {
Write-Host "ERROR: Poster not found: $src" -ForegroundColor Red
exit 1
}
if (-not (Test-Path (Split-Path $dst))) {
New-Item -ItemType Directory -Path (Split-Path $dst) | Out-Null
}
$srcSize = (Get-Item $src).Length
Resize-Jpeg -InPath $src -OutPath $dst -MaxWidth 1200 -Quality 82
$dstSize = (Get-Item $dst).Length
$saved = $srcSize - $dstSize
$pct = if ($srcSize -gt 0) { [Math]::Round(($saved / $srcSize) * 100, 1) } else { 0 }
Write-Host "ASSETS POSTER: $dst" -ForegroundColor Green
Write-Host ("SOURCE SIZE : {0:N0} bytes" -f $srcSize) -ForegroundColor Green
Write-Host ("ASSET SIZE : {0:N0} bytes" -f $dstSize) -ForegroundColor Green
Write-Host ("SAVED : {0:N0} bytes ({1}%)" -f $saved, $pct) -ForegroundColor Green
if ($dstSize -ge $srcSize) {
Write-Host 'WARNING: resized file is not smaller - check source is a real JPG.' -ForegroundColor Yellow
}
# ------------------------------------------------------------
# 3. ARTICLE HTML
# ------------------------------------------------------------
Write-Host ''
Write-Host '=== STEP 2: ARTICLE HTML ===' -ForegroundColor Yellow
$html = @'
5 Signature Cold Coffees — The Barista's Training Guide
By Nigel A. Thomas • Hospitality & F&B Training • October 2026
Cold coffee has developed into a major beverage category for modern
cafés, hotels, resorts and food-and-beverage operations. Guests expect
cold coffee to be properly chilled, balanced, attractive and consistent.
The difference between an average iced beverage and a signature drink is
usually not complicated equipment; it is disciplined preparation.
This guide presents five signature cold beverages from the accompanying
Nigel A. Thomas training poster. The recipes cover espresso, cold brew,
Americano, matcha, caramel, honey, chocolate, cream and cold foam.
Cold Coffee Service Principles
Consistency starts with measurement. Coffee strength, milk quantity,
sweetener, ice and toppings all influence the final drink. When a beverage
is sold as a signature item, the guest should receive the same experience
regardless of which trained barista prepares it.
Keep milk and cold mixers chilled. Use clean ice and a dedicated ice scoop.
Measure syrups and sauces rather than relying on free-pouring when recipe
consistency is required. Keep glassware and equipment clean and ready before
the shift begins.
Barista Training Rule
Measure first. Build consistently. Check the presentation. Serve
immediately.
Recipe cards and training posters are most useful when they become part of
the daily station routine rather than something used only during induction.
The 5 Signature Cold Coffees
01. Iced Honey Caramel Mocha
9 g coffee •
30 ml espresso •
180 ml milk (6 oz) •
15 ml caramel syrup (0.5 oz) •
15 ml honey (0.5 oz) •
15 ml chocolate (0.5 oz) •
ice as needed
Method: Prepare the espresso. Combine the caramel, honey and
chocolate with the coffee and milk. Build over ice and mix thoroughly so
the flavours are evenly distributed. Serve immediately.
Making tips: Use fresh coffee beans, good-quality chocolate sauce
and consistent measurements. Add caramel and honey in the correct order so
the flavour profile remains repeatable from one drink to the next.
02. Honey Caramel Cold Brew Cold Foam
Medium-fine ground coffee •
80 ml cold brew •
15 ml honey •
15 ml caramel •
ice as needed •
cold foam as needed
Method: Prepare chilled cold brew. Add honey and caramel and mix
until evenly distributed. Add ice and finish with a smooth layer of cold
foam.
The combination of cold brew, honey, caramel and cold foam gives the drink
a smooth dessert-style character while retaining the flavour of the coffee.
Making tips: Use fresh coffee beans, consistent cold-brew strength
and properly chilled ingredients. The cold foam should be creamy and stable
enough to provide a clear finishing layer.
03. Iced Chocolate Cream Protein Americano
9 g ground coffee, medium-fine •
30 ml espresso (25–30 sec) •
chocolate syrup as needed •
milk as needed •
chocolate cream topping •
ice as needed
Method: Extract the espresso using a controlled shot. Add the
chocolate element and milk, build over plenty of ice and finish with
chocolate cream.
Service specification: 16 oz cup •
cold 4–10°C •
espresso reference 9–10 bar.
Making tips: Use fresh coffee beans and a medium-fine espresso grind.
A 25–30 second extraction provides the recipe's reference point;
adjust only according to the coffee and equipment standard used by the
operation.
04. Strawberry Iced Matcha Tiramisu Cream
2 g matcha powder •
160 ml milk •
15 ml strawberry purée / syrup •
15 ml tiramisu syrup •
milk cream / tiramisu cream topping •
ice as needed
Method: Prepare the matcha smoothly. Build the strawberry element,
add the milk and matcha, then finish with the tiramisu cream. Keep the
presentation clean and attractive.
The drink combines earthy matcha with strawberry sweetness and a
dessert-style tiramisu finish.
Making tips: Use high-quality matcha powder, make the tiramisu cream
smooth and fluffy, layer the strawberry syrup carefully and serve cold.
05. Vanilla Oreo Matcha Iced Cold Cream
2 g matcha powder •
30 ml espresso •
160 ml milk •
15 ml vanilla syrup •
crushed Oreo topping •
milk cold foam / vanilla Oreo cream
Method: Prepare the matcha and espresso components. Combine with
chilled milk and vanilla syrup. Add ice and finish with cold foam or
vanilla Oreo cream. Complete with crushed Oreo.
This dessert-style cold beverage combines matcha, espresso, vanilla and
cookie flavours. Presentation is part of the guest experience, so keep the
topping clean and consistent.
Making tips: Use quality matcha, smooth vanilla cream and evenly
crushed Oreo. Shake or mix well before adding ice and serving.
Training the Bar Team
The five recipes demonstrate different beverage-building techniques.
The Iced Honey Caramel Mocha focuses on espresso, milk and dessert flavours.
The cold brew recipe teaches batch consistency and cold foam finishing.
The Chocolate Cream Protein Americano reinforces espresso extraction and
iced service. The two matcha beverages introduce modern layered presentation
and the combination of coffee, tea, dairy and dessert-style toppings.
A useful training exercise is to have a trainee prepare the same beverage
three times using measured ingredients. Compare sweetness, coffee strength,
temperature, appearance and topping. The purpose is not simply to memorise
the recipe but to understand the variables that affect consistency.
Cold Coffee Mise en Place
Before service, the bar should have coffee beans, espresso equipment,
cold brew, milk, matcha, syrups, chocolate, honey, cream, cold foam
ingredients, ice, cups and garnishes ready. Every item should have a
defined place at the workstation.
Cold beverages are particularly sensitive to warm ingredients and poor ice
management. Chilled mixers, sufficient ice and fast service help preserve
the intended temperature and texture.
Quality Control Checklist
Before service: Check coffee, espresso equipment, cold brew, milk,
matcha, syrups, chocolate, cream, ice and cups.
During service: Measure ingredients, follow the recipe sequence,
maintain extraction standards and keep cold ingredients chilled.
Before handover: Check cup cleanliness, temperature, topping and
presentation.
After service: Clean equipment and replenish the station for the
next service period.
Free Cold Coffee Training Poster
The black-and-gold infographic brings the five signature beverages together
as a quick-reference training sheet for baristas, café teams, hotels,
resorts and F&B trainers.
INFOMATICS — FREE POSTER DOWNLOAD
5 Signature Cold Coffees — The Barista's Training Guide
FREE POSTER DOWNLOAD
More Beverage & Bar Articles
Nigel A. Thomas
—
Hospitality Executive, F&B Operations Professional and Career Mentor.
Connect on LinkedIn
$url
2026-10-03
monthly
0.8
"@
$pos = $sm.LastIndexOf('')
if ($pos -lt 0) {
Write-Host 'ERROR: not found.' -ForegroundColor Red
exit 1
}
$sm =
$sm.Substring(0,$pos) +
$entry +
"`r`n" +
$sm.Substring($pos)
[System.IO.File]::WriteAllText(
$smPath,
$sm,
$utf8
)
Write-Host 'Sitemap updated.' -ForegroundColor Green
}
# ------------------------------------------------------------
# 6. VERIFY LOCAL FILES
# ------------------------------------------------------------
Write-Host ''
Write-Host '=== STEP 5: LOCAL VERIFICATION ===' -ForegroundColor Yellow
Write-Host "Article exists : $(Test-Path $pagePath)"
Write-Host "Poster exists : $(Test-Path $dst)"
Write-Host "Blog exists : $(Test-Path $blogPath)"
Write-Host "Sitemap exists : $(Test-Path $smPath)"
$checkHtml = [System.IO.File]::ReadAllText($pagePath,$utf8)
Write-Host ''
Write-Host "Poster reference count:" -ForegroundColor Cyan
([regex]::Matches($checkHtml,'/assets/cold-coffees-poster\.jpg')).Count
Write-Host ''
Write-Host "Infomatics count:" -ForegroundColor Cyan
([regex]::Matches($checkHtml,'INFOMATICS')).Count
Write-Host ''
Write-Host "Download button count:" -ForegroundColor Cyan
([regex]::Matches($checkHtml,'FREE POSTER DOWNLOAD')).Count
# ------------------------------------------------------------
# 7. GIT
# ------------------------------------------------------------
Write-Host ''
Write-Host '=== STEP 6: GIT ===' -ForegroundColor Yellow
git status --short
git add $page $dst blog.html sitemap.xml
git commit -m "Add Cold Coffees barista guide, poster, blog card and sitemap"
if ($LASTEXITCODE -ne 0) {
Write-Host 'Commit returned non-zero. Continuing to rebase/push check.' -ForegroundColor Yellow
}
git pull --rebase --autostash
if ($LASTEXITCODE -ne 0) {
Write-Host 'Rebase failed.' -ForegroundColor Red
exit 1
}
git push
if ($LASTEXITCODE -ne 0) {
Write-Host 'Push failed.' -ForegroundColor Red
exit 1
}
# ------------------------------------------------------------
# 8. LIVE VERIFICATION
# ------------------------------------------------------------
Write-Host ''
Write-Host '=== STEP 7: LIVE VERIFICATION ===' -ForegroundColor Yellow
Write-Host 'Waiting 45 seconds for deployment...' -ForegroundColor Yellow
Start-Sleep -Seconds 45
function Test-Live($u,$needle) {
try {
$r = Invoke-WebRequest -Uri $u -UseBasicParsing
$ok = ($r.StatusCode -eq 200)
if ($needle) {
$ok = $ok -and $r.Content.Contains($needle)
}
return $ok
}
catch {
return $false
}
}
$liveChecks = @(
@{
Name='Article'
URL=$url
Needle='5 Signature Cold Coffees'
},
@{
Name='Poster'
URL='https://www.nigelthomas.live/assets/cold-coffees-poster.jpg'
Needle=''
},
@{
Name='Blog'
URL='https://www.nigelthomas.live/blog.html'
Needle=$page
},
@{
Name='Sitemap'
URL='https://www.nigelthomas.live/sitemap.xml'
Needle=$page
}
)
foreach ($c in $liveChecks) {
$ok = Test-Live $c.URL $c.Needle
if (-not $ok) {
Start-Sleep -Seconds 20
$ok = Test-Live $c.URL $c.Needle
}
if ($ok) {
Write-Host "$($c.Name): LIVE OK" -ForegroundColor Green
}
else {
Write-Host "$($c.Name): NOT YET" -ForegroundColor Red
}
}
Write-Host ''
Write-Host '============================================================' -ForegroundColor Green
Write-Host ' COLD COFFEES COMPLETE' -ForegroundColor Green
Write-Host '============================================================' -ForegroundColor Green
Write-Host ''
Write-Host "Article: $url" -ForegroundColor Cyan
Write-Host 'Poster : https://www.nigelthomas.live/assets/cold-coffees-poster.jpg' -ForegroundColor Cyan
Write-Host ''
Write-Host 'Submit the Article URL in Google Search Console.' -ForegroundColor Yellow