|
|
||||
|
|
||||
|
||||
|
||||
|
|
|
|

|
|
||||
|
|
||||
|
||||
|
||||
|
|
|
|

|

|
|
||||||
|
||||
|
|
||||
|
|
||||
|

|

|

|

Since Thanksgiving last week I've been doing a top-secret experiment.
The early results are promising so I've decided to share them with you!
Here's the experiment:
Here are screenshots of the questions (click to make it larger):


|
The results so far have been fascinating. The AI has helped me:
It's like I hired a coach and advisor with a PhD in every field to known to mankind. The AI never gets tired, angry, or bored. It remembers every detail. It's always trying to help me. It's like a friend with unlimited energy and unlimited intelligence, and committed completely to working with me to have a good day. An excellent friend to have! You can also "flavor" its responses. ChatGPT has a small memory where you can store instructions (called Personalizations) about how to interact with you. I think most people use that for things like "I like reading books." but I've turned it up a notch. Check out this personalization (click to make it larger): |

|

|

And that's as far as I've gotten in a week!
It's been a fun experience and I think I'll extend the experiment out 90-days to see what it's like.
Working on this got me into a real flow state so I was happy to push it pretty far.
I wouldn't say everyone needs to go all-out like I did, but I would definitely encourage you to try a modified version.
The insights are both practical and profound.
Hope this helps!
Best,
Nick
P.S. Here is a quick start guide to doing this yourself:
Setup Phase (10 mins):
Update your memory about me to include exactly the following. Do not change the text in any way.
Please create two trigger phrases for me to start my morning and evening prompt
My morning questions are as follows:
My evening prompt questions are as follows:
When I ask for the morning prompt please only list the morning prompt questions.
When I ask for the evening prompt please only list the evening prompt questions.
I will answer each question individually. Please evaluate my responses, refine my thinking, and help me have a good day.
Daily Practice (5 mins each session):
Pro Tips:

Musicians practice scales to captivate audiences.
Basketball players sharpen their shots with drills.
Chess players master tactics to outthink their opponents.
Actors rehearse to deliver unforgettable performances.
But how do Salesforce developers level up?
The answer might surprise you.
In The Pragmatic Programmer by Andy Hunt and Dave Thomas, the authors take the concept of a "kata" from karate and apply it to writing code.
In martial arts like karate or kendo, katas are sequences of movements practiced repeatedly to perfect form, discipline, and technique.
The idea is not just to memorize the sequence but to internalize the principles behind the movements.
This concept of deliberate, repetitive practice aligns well with the iterative and skill-based nature of coding.
And so, the code kata was born.
Code Kata: A few lines of code that are practiced repeatedly to perfect form, discipline, and technique.
Below is an example I've been working on this week:

This Apex class is a mere 18 lines of code, and only 14 if you take away the line breaks.
Now, look how many concepts are present:
Nine distinct coding concepts by my count. That's a lot!
By simply rewriting this Apex code once a day, you gain repeated exposure to the building blocks of writing Apex.
Why Code Katas Work
Now that you understand the power of code katas, itâs time to take action. Pick a code kata to practiceâwhether itâs the example shared here (available to copy paste from this Github repo) or another small, focused exercise.
Commit to rewriting it daily for a week and notice how your skills sharpen with each iteration. Repetition is the path to mastery.
And if you donât write code but work with Salesforce flows, the principle still applies: find a repetitive practice to internalize flow-building fundamentals.
For instance, take a common automation scenarioâlike updating related records or sending notificationsâand recreate it from scratch daily.
Over time, youâll develop the intuition and skill to tackle even the most complex flows effortlessly.
Practice doesnât just make perfectâit makes you better every day. So, start your kata, and letâs see where deliberate practice takes you.
Best,
Nick

Alex hadn't meant to discover that reality was mutable. It happened during a late-night coding session as he prepared for an upcoming interview, when the lines between Apex triggers and consciousness began to blur.
He'd been visualizing system architectures - a technique he'd developed for tracking complex dependencies. But that night, exhausted and deep in flow state, he noticed something odd: the visualizations were starting to write themselves.
It began with simple patterns. Customer objects linking to opportunities linking to tasks - standard Salesforce relationships. But as he held these structures in his mind, he started seeing them everywhere. The way his neighbor's cat moved through space suddenly looked like an elegantly optimized query. The flow of traffic outside his window resembled a perfectly tuned workflow.
At first, he attributed it to too much caffeine and too little sleep. But the patterns persisted. More importantly, they responded.
When he visualized success paths through his code with perfect clarity, bugs would resolve themselves in unexpected ways. When he held the image of system architecture in his mind while falling asleep, he'd wake to find solutions emerging fully formed.
Then came the stranger observations. During technical discussions, if he maintained a clear visualization of positive outcomes, conversations would flow toward those results almost magnetically. It wasn't forcing or manipulation - just reality optimizing itself along paths he'd compiled in his mind.

|

Hope you enjoyed this story!
Best,
Nick

Quick tip this week!
In the most recent Winter '25 release, Salesforce enabled Conditional Field Formatting.
This is a fun new feature that I think we'll see used more often over time.
In the Lightning App Builder, when working with dynamic forms, you'll notice there is now the ability to apply Conditional Formatting to fields.

Basically, you set up an if/then rule, and when the criteria for your rule is met, an icon appears on the record page next to the field of your choice.
In this example, we show a green happy face when the stage of an opportunity = Closed Won.

Which looks like this on the page:

There are a ton of icons to choose from (more than in the screenshot) so the sky is the limit in terms of how we can use this functionality.

Delighting end users is always our goal, and I think this is one of those low effort / high reward items that let will let us do just that.
Hope this helps!
Best,
Nick

Quick tip this week.
You can pass filter values into the URL of a report in order to dynamically change what the report shows.
Pretend you have an Opportunity report with one filter on the AccountID field.
So all the Opportunities on the report are related to the Account you filter on.
Normally your report URL would look something like:
yoursalesforce.com/lightning/
By adding a â?fv0=â at the end of the URL, you can pass any AccountId into the report for it to filter on dynamically when it loads.
Like this:
yoursalesforce.com/lightning/
When you click this modified URL, the report will load specifically for the AccountID you added to the URL.
You can even pass in values for several filters by using fv0, fv1, fv2, etc. as long as you separate them using the â&â sign.
Like this:
yoursalesforce.com/lightning/
You can use dynamic filtering in hyperlink formulas for list views, flow emails, formula fields on record pages, and more.
Itâs a useful thing to know, and I had to relearn how it worked this week, so I thought Iâd share.
Hope it helps!
Best,
Nick

"Everything should be made as simple as possible, but not simpler."
â Albert Einstein
What is the simplest set of principles for building Salesforce flows?
I was brain storming this week and wanted to come up with an easy system that a beginner could quickly memorize.
Here's where I landed: FRAME your flows (if you're a beginner).
F - first, avoid flows entirely
R - reverse engineer what you want the flow to do
A - add checkpoints
M - make your flow easy to change
E - evaluate: who does this help?
If you're a beginner, FRAME provides a simple structure to help you get started and build effective flows.
Let's take this letter by letter.
F - first, avoid flows entirely
The easiest flow to build is the one that doesn't exist.
This cue is to prevent bad effects from "man with a hammer" syndrome.
It's meant to encourage routinely exploring configuration options like quick actions as solutions before diving into automation.
Now, automation exists for a reason, and if you think flows are the solution you need, then...
R - reverse engineer what you want the flow to do
Begin with the end in mind.
Define the ideal outcome of the flow.
This flow creates a new case when an opportunity is closed won.
This flow guides a user to create a new contact with an email and phone number. It should always be available at the bottom of the screen.
The process of defining what the flow should do guides you on what kind of flow to build.
It also gives you a blueprint for what elements you'll need on the canvas.
Creating a case? Use the create element.
Need information a related contact? Use a get element.
Fires when an opportunity is closed won? Add that to the start criteria.
Once you've thought through the flow backwards, then...
A - add checkpoints
You've listed four or five things you want your flow to do.
Now, pick which one should be first.
Next, pick which one should be last.
Then, try to sequence the other steps in between.
Each of these items is now a "checkpoint".
It can be daunting building an entire flow start to finish when you're still learning.
Breaking the steps down into smaller, more manageable, pieces helps you build momentum.
Get to the first checkpoint, save your work, and then test how the flow works so far.
Did you configure your start criteria and save the flow? Nice! First small win.
Did the flow successfully go from the start criteria to the get element right afterwards? Awesome! Second small win.
Keep stacking small wins, one at each checkpoint, and soon enough the flow is done.
Once your flow is built, double check if it's...
M - make your flow easy to change
Good software architecture is easy to change (because the business always changes its mind).
Therefore, well designed flows are easy to change too.
We follow this philosophy by:
This reduces long-term maintenance, and makes your life easier from the get go. With that done, let's...
E - evaluate: who does this help?
All flows are built to automate or simplify something.
By extension, they should make someone's life easier in some way.
Flows are fun, but we have to remember they're meant to help specific people do specific things.
We must double check our flow simplifies and helps someone - even if it's only one person.
If we've built a flow and it doesn't help anyone at all, let's go back to the drawing board and find a way to make sure our flow fulfills its purpose of being useful to someone.
And that's it! If you're a beginner, remember to FRAME your flows and you'll always be in good shape.
Best,
Nick