Last quarter I rolled out Microsoft Copilot to 4,000 employees.
$30 per seat per month.
$1.4 million annually.
I called it "digital transformation."
The board loved that phrase.
They approved it in eleven minutes.
No one asked what it would actually do.
Including me.
I told everyone it would "10x productivity."
That's not a real number.
But it sounds like one.
HR asked how we'd measure the 10x.
I said we'd "leverage analytics dashboards."
They stopped asking.
Three months later I checked the usage reports.
47 people had opened it.
12 had used it more than once.
One of them was me.
I used it to summarize an email I could have read in 30 seconds.
It took 45 seconds.
Plus the time it took to fix the hallucinations.
But I called it a "pilot success."
Success means the pilot didn't visibly fail.
The CFO asked about ROI.
I showed him a graph.
The graph went up and to the right.
It measured "AI enablement."
I made that metric up.
He nodded approvingly.
We're "AI-enabled" now.
I don't know what that means.
But it's in our investor deck.
A senior developer asked why we didn't use Claude or ChatGPT.
I said we needed "enterprise-grade security."
He asked what that meant.
I said "compliance."
He asked which compliance.
I said "all of them."
He looked skeptical.
I scheduled him for a "career development conversation."
He stopped asking questions.
Microsoft sent a case study team.
They wanted to feature us as a success story.
I told them we "saved 40,000 hours."
I calculated that number by multiplying employees by a number I made up.
They didn't verify it.
They never do.
Now we're on Microsoft's website.
"Global enterprise achieves 40,000 hours of productivity gains with Copilot."
The CEO shared it on LinkedIn.
He got 3,000 likes.
He's never used Copilot.
None of the executives have.
We have an exemption.
"Strategic focus requires minimal digital distraction."
I wrote that policy.
The licenses renew next month.
I'm requesting an expansion.
5,000 more seats.
We haven't used the first 4,000.
But this time we'll "drive adoption."
Adoption means mandatory training.
Training means a 45-minute webinar no one watches.
But completion will be tracked.
Completion is a metric.
Metrics go in dashboards.
Dashboards go in board presentations.
Board presentations get me promoted.
I'll be SVP by Q3.
I still don't know what Copilot does.
But I know what it's for.
It's for showing we're "investing in AI."
Investment means spending.
Spending means commitment.
Commitment means we're serious about the future.
The future is whatever I say it is.
As long as the graph goes up and to the right.
NZ enjoying the outcome of its choices.
The pain will increase until more people do actual valuable work outside of the public sector, and ideally via exports to the world.
Until then, enjoy getting poorer.
🥳 It's an exciting day! 🥳
Thanks to @Webflow GSAP is now 100% FREE - including ALL of the bonus plugins like SplitText, MorphSVG, and all the others that were exclusively available to Club GSAP members.
We can't wait to see what you make!
Interesting observation migrating a deployment via CI between Github Actions vs Azure DevOps. Github Action pushing to App Service takes ~29 minutes using azure/webapps-deploy@v2. Azure DevOps pushing to Azure App Service takes ~7 minutes. Is there a magic flag?
“Open by default” is a great start. From my experience with Silverstripe across the NZ Govt, the challenge now is ensuring agencies have the tools to deliver well-designed, re-usable solutions and frameworks for long term support.
https://t.co/LEhVutVl17
@ohararyan@Jira@linear https://t.co/ULFRxwyL27 has unlimited free 'Observer' roll for read only though if you could get away with the free tier then your guests could have full access.
CSS Tip! 💪
You can create these tab controls with CSS :has() + radio buttons ✨
.tabs:has(input:nth-of-type(3)) { --count: 3; }
.tabs:has(:checked:nth-of-type(3)) { --active: 2; }
.tabs::after { translate: calc(var(--active, 0) * 100%) 0;
width: calc(100% / var(--count));
}
Two CSS :has() tricks here combined with a rendering trick 🤙
The tab control is a container using display: grid. You can use :has() to count the number of tabs in the container:
.tabs:has(input:nth-of-type(3)) { --count: 3; }
.tabs:has(input:nth-of-type(4)) { --count: 4; }
Using the cascade, the last valid :has() gives you the number of tabs 🫶
Once you know the number of tabs, you know how to size the indicator:
.tabs::after {
content: "";
position: absolute;
height: 100%;
width: calc(100% / var(--count));
}
It's a pseudoelement that uses --count to determine its size 📏
The next :has() trick is determining which tab is active or :checked as it's an input [type=radio]
.tabs:has(:checked:nth-of-type(2)) { --active: 1; }
.tabs:has(:checked:nth-of-type(3)) { --active: 2; }
You can use a zero-indexed translation here. If the second input is :checked, set --active: 1, then translate the pseudoelement on the tabs to that position 👉
.tabs::after { translate: calc(var(--active, 0) * 100%) 0; }
The last rendering trick is using mix-blend-mode 👀
The tabs have a black background-color, the pseudoelement is white, and the label text is white. When you use mix-blend-mode: difference on the pseudoelement it will give this effect that the text transitions from white to black sliding across 😎
.tabs::after {
color: hsl(0 0% 100%);
mix-blend-mode: difference;
}
You can totally mix up the colors here though and go with a different effect. The mechanics of how you can use CSS :has() is the main point here 🙏
As always, any questions, suggestions, etc. let me know
@CodePen link below! 👇 (There's even a @tailwindcss play for this one too 👀)
All small things but between those should save nearly $1000 USD a year.
I love all of those products but removing them ultimately won’t have a major impact to the business or daily life. Next up is to go through the $600/mth AWS bill and come up with a plan to bring that down.
New years resolution (on top of removing more mailing lists) is cutting down subscriptions and to keep costs as close to $0 as possible.
For years I’ve thrown cash around (for good reasons) but felt like time to lean it up.
3. Todoist dropped (~$72 / yr) replaced with Github issues, iCloud reminders, Trello as needed.
4. Notion dropped (~$480 / yr) replaced with Github issues + Wiki for my clients that used them.