Saturday 27 March 2021

Org Documentor - Field Count Badges


With large, mature implementations, it's sometimes difficult to keep track of how close you are getting to the field limits - for example, the total number of fields on an object, which varies from instance to instance, or the total number of relationship fields, which is 40 unless Salesforce are willing to raise it for you. This is compounded when you have multiple development streams working in parallel, as the total number of relationship fields in only known when the various branches are merged ready for cutting a release branch. 

As Peter Drucker said, if you can't measure it you can't improve it, so the Org Documentor is getting into the measurement business.

Field Count Badges

The latest release (3.6.0) of the Org Documentor aims to help with this, by adding Bootstrap badges containing field counts to the object documentation. Right now it's the total number of fields on the object and the total number of relationship fields, as the screen grab below from the sample metadata output shows:

If there are no relationship fields, the badge isn't rendered:

Right now the badges don't change colour to flag up that the count is close to the limit, as there's no way to know if that is the case, as the Documentor is designed to work against object metadata and doesn't have access to any orgs that the metadata is installed into. Flagging the total number of fields as close to the Enterprise Edition limit isn't helpful if it will only be installed into Unlimited Edition, and vice versa is even worse.  It's also possible that there are other fields on the object that aren't version controlled - added by a managed package for example.

So I decided to leave it as the standard Bootstrap secondary badge colour, which will remain the case unless I get feedback from users that they'd like something else. I'm also open to suggestions for additional badges - if you have any strong feelings on either of these topics, please create an issue at the plug-in Github repo.

As always, you can view the latest output for the sample metadata on the public site.

Updated Plug-in

Version 3.6.0 of the plug-in has this new functionality and can be found on NPM

If you already have the plug-in installed, just run sfdx plugins:update to upgrade to 3.6.0 - run sfdx plugins once you have done that to check the version.

The source code for the plug-in can be found in the Github repository.

Related Posts

Thursday 25 March 2021

The Value of Diminishing

I've been reading recently about diminished reality, where hardware devices and/or software remove items or stimuli from your environment. What drew me in was the diminished aspect, which I originally assumed was a joke about a device that would make things worse, but that isn't the case. While we hear a lot about augmented reality, where your experience is improved by additional information about the objects in view, diminished reality is all about improving your experience by hiding things. Not the things you are interested in, but the things that are a distraction, or simply not relevant.

A lot of us already have diminished reality devices and use them a lot - we call them noise cancelling headphones, which remove the external sounds that would distract us to improve our listening experience, although I've never thought of them in that way.

There are plenty of practical applications for diminished reality, for example seeing what rooms look like without the furniture and clutter when viewing real estate. Handle with care though - even though diminished reality removed the coffee table from your view, you'll still bark your shin when you walk into it. I could even use it to remove my lockdown locks when I'm on video calls, as these appear to be a major distraction for anyone I'm talking to!

This got me thinking about improving the user experience by removing rather than adding when working with Salesforce data. The customer 360 view without the clutter from the individual's entire history with your company, just showing the important engagements and key information. In my experience, most of us focus on pushing more information onto a page rather than less, but that isn't always a good thing as eventually it can end up overwhelming. Dividing information up into sections helps a little, but it's still up to the user to sort wheat from chaff.

What constitutes clutter would be quite subjective though, so ideally everyone would be able to define their own version of what matters. Imagine the ability on a per-object basis to provide different lenses on a record - click a button to change the view of the record based on metadata configuration that you define to effortlessly breeze through the Sales, Marketing, Service view, or combinations. 

We can do this to some degree already, with page layouts by switching applications, but it's not real time and all users don't necessarily have access to all layouts. If less is more, then many versions of less is much more!

Subscribe to my Substack

Saturday 20 March 2021

London's Calling 2021

London's Calling 2021 was an all remote affair - the 2020 edition started this trend, but there was a small in person presence as the physical facilities were all in place. A sound decision this year, as we are currently under restrictions that mean we can meet one person for exercise/coffee in a public open space. I guess we could all have our own mini-event where two of us get together and present a talk to each other, but quite hard to scale I feel.

It was a very different day for me - typically I'd be up around 05:30 to walk the dogs before catching the bus to the station for the trip up to London. I still did the walk, but with an extra hour or two in bed. At 07:30 rather than wandering around near The Brewery waiting for it to open, I was sat on the sofa refreshing the Attendify app waiting for it to open! The commute was a lot easier though, and I could spend most of the day barefoot which I'd be reluctant to try in the real city. Lunch was a lot easier to come by as well - hardly any queueing in my kitchen, although the menu wasn't as varied.

The sessions were pre-recorded and replayed as live with the speaker on hand in the chat to answer questions. This is definitely my preferred route for these kind of events - while I like the "anything can happen" excitement of presenting live, home broadband connections just aren't solid enough to rely on for 50+ sessions across a whole day. Mine decided to drop just after I joined the BrightGen sponsor room and it took me a couple of minutes to reconnect via my phone - I suspect I'd have lost most of my audience during that time.  You don't get a lot of questions as the schedule is pretty compressed and most people are jumping on to the next session rather than sticking around to chat, but remember that all of us speakers are contactable via the usual channels after the event. The deck from my talk is available on SlideShare.

The keynote was, as always, thought provoking. The key takeaway for me was that I'm Batman! Or all of us attendees are Batman. Or more accurately, the skill sets that the attendees have will be key to the new normal. A talk will always go down well when the audience are told they are super heroes. 

A common thread between physical and virtual events is not being able to make most of the sessions that look interesting, and this was no exception. Typically half a dozen sessions on at any one time meant that I had to make my decisions based on whether I wanted to ask any questions. The organisers have done a sterling job to make the sessions available immediately after the event, so I'll be catching up over the coming week.

The bit I really missed was the networking - there's an element of this through the Attendify activity feed and the sponsor rooms, but nothing like the in person experience of bumping into someone in a corridor that you haven't seen for ages and hearing about what they've been up to. London's Calling brought this into sharp relief as I've known a lot of the attendees for years but don't catch up with them in person that much, even when there isn't a pandemic.

The other part this is very difficult to replicate is the after party, although if we'd had one of those I might not be sitting here writing this post at 07:00 on Saturday morning!

There's definitely an upside to the all remote approach - no travel means the opportunity to speak for those who don't have the spare funds to jet around the world. Likewise no visas means individuals aren't at the mercy of government departments, and I hope that when things are back to "normal" next year(?) some aspect of this will be retained for a hybrid event - maybe a virtual room or two so the physical audience can listen to virtual speakers, and a virtual ticket so that people who can't get over to London can still get access to the content and join in via the app. I'll be watching what happens with great interest.

The event might have been a little different in its location and execution, but once again it was awesome. Kudos to the organisers, all volunteers let's not forget, for showing some of the bigger events how things should be done. One pure virtual is enough for me though, and I can't wait for next year when we'll (hopefully) be able to get together in person.

Subscribe to my Substack

Thursday 18 March 2021

The Documentor Documented (and Moar Detail)

This week I closed a couple of issues on the Org Documentor, and added some more flexibility around the output.

Moar Detail

The first issue was a request from Andy Ognenoff for some additional fields - relatively straightforward as three came straight from the CustomField metadata and one combined a couple of fields if the first was true. 

This gave rise to the need for a little more flexibility, as the pages started to get pretty wide with the number of columns and the length of the detail rendered. So the latest version of the plug-in allows you to configure the columns that will be displayed - at the group level, for all objects, or you can leave configuration alone and pick up the default of all columns.

Here's the configuration from my sample metadata repo:
"groups": {
    "events": {
        "columns":["Name", "Label", "Type", "Description", "Info", "Page Layouts", "Encrypted"],
        "description": "Objects associated with events",
        "objects": "Book_Signing__c, Author_Reading__c"
    "other": {
       "columns":["Name", "Label", "Type", "Description", "Info", "Page Layouts", "Security", "Compliance", "In Use", "Encrypted"],
       "title":"Uncategorised Objects",
       "description": "Objects that do not fall into any other category"
and the associated output, first for events, which just adds the Encrypted field (which is empty as I don't have Shield enabled!):

and then a new Email_Address__c field on the Author__c custom object, which includes compliance fields:

As always, you can view the output for the sample metadata on the public site.

The Documentor, Documented

The other issue that I finally got around to was documenting the configuration file. I used a Google Site for this, as I find them extremely easy to spin up and fill in. You don't get the same level of control that you would over something like Github pages, but if you want something out there quickly then they are hard to beat. There's not too much in there right now, mostly around setup and configuration, but more will come. If there's something that you particularly want to see, then create an issue in the Github repo and I'll see what I can do.

Updated Plug-in

Version 3.5.1 of the plug-in has this new functionality and can be found on NPM

If you already have the plug-in installed, just run sfdx plugins:update to upgrade to 3.5.1 - run sfdx plugins once you have done that to check the version.

The source code for the plug-in can be found in the Github repository.

Related Posts

Tuesday 16 March 2021

A Year Remote

Today (16th March 2021) marks the one year anniversary of BrightGen pivoting to a fully remote workforce. We knew it was possible, as we'd carried out a trial run the week before, but we didn't know how well it would scale, or indeed how long it would last for. It's pretty safe to say that none of us were expecting it to go on this long! The scaling worked surprisingly well - people's internet connection held up, kitchens and bedrooms were pressed into service as home offices, and we onboarded new joiners pretty seamlessly. Not perfect, and not everyone's first choice, but it was a very smooth transition.

For some, including me, the biggest challenge is stopping working from home turning into residing at your office. When you live and work in the same space, the boundaries become blurred, and if you have few distractions (because you are in the middle of a pandemic lockdown maybe) then it's easy to start working as soon as you get up and not stop until well into the evening. It's also easy to end up in a state of always on, where you check your email and instant messages every waking hour and jump straight into solving problems. This really can't scale, so you have to keep reminding yourself to take breaks and to set a time to switch off. The BrightGen team have done a great job of providing distractions, including virtual coffee breaks to mix us up and get us talking, pub and Kahoot quizzes, Taskmaster and more.

In the UK the vaccine rollout it is going surprisingly well, and confidence is growing that we will be able to open up the country on the government's target timeline including, at some point, our offices. This present us with an opportunity that doesn't come along too often - to redefine how work gets done. We've blown it all up for the last year, so we should spend some time thinking about how we can put it back together for everyone's benefit. The good news (in my opinion) is that simply going back to the way we worked before isn't going to happen. The genie is out of the bottle!

Subscribe to my Substack

Saturday 6 March 2021

The Substack Experiment

What is Substack?

I've been hearing a lot about Substack recently, mostly on technology podcasts and particularly on those that sit at the intersection of media and technology. In some quarters, Substack is seen as a way for writers/journalists to connect directly with their readers and monetise their output, and by all accounts some people are doing well with the top 10 newsletters bringing in $7 million a year.

I'm fairly certain that those writers didn't start from scratch on Substack - most of the stand out successes are well known writers with a large existing following and a great reputation. They brought their existing audience over with them, but have then been able to define their own price for access to their content and keeping around 85% of the money. They are also the first and have no doubt captured quite a bit of the audience that is prepared to pay, and if my experience with the Internet is anything to go by, there will be a limited set of giants and a large number scratching by. 

I suspect there's also going to be a limit to the number of separate subscriptions that anyone is prepared to pay. I don't know the specific numbers, but if I guess at $10/writer/month for the top tier, then subscribing to 10 quickly turns into real money, especially when compared to subscribing to traditional news media where you get access to a whole host of writers. Those that haven't decamped to Substack at any rate. By all accounts Substack expect to offer bundles, but based on writers wishing to bundle rather than pivoting to aggregation themselves.

I'd also have some personal concerns about limiting my reading in this way - it makes it far more likely that I'd descend into an echo-chamber and assume the whole world felt the same why I do about everything. I quite like reading things that I really disagree with, even if they make me angry sometimes, but if that took time away from the content I was paying for, I'd probably cut right down on it.

My Substack

All of this monetisation is very interesting, but in my case highly likely to be theoretical. I can't see myself trying to monetise my audience, particularly as the number of writers I would be prepared to subscribe to is a number pretty close to zero, and if I'm not doing it I can't really expect anyone else to. And, of course, clearly nobody would pay to read my ramblings, especially as I don't really know what I'm going to use it for.

I have signed up for Substack - in keeping with my history of creative names like the Bob Buzzard Blog you are currently reading, I've gone for the Bob Buzzard Stack - you can sign up to join me on the journey.

Right now I don't have a great sense of what I'm going to use it for, but as it's a regular newsletter it seems likely there will be links to things that interest me that I've found since the last issue, probably with some of my thoughts about those things or my opinion about something in the news. And they mystery of why I don't expect to monetise this deepens! 

I'll try to post regularly, but I make no promises about the cadence. Feast or famine seems the most likely outcome, but we'll see.

Why Substack?

Because it's there. Because it's popular. Because it's new and I like learning about new things. And because it's free - you only pay if you charge, and even then it's a cut of what you make rather than a flat fee.

I've tried other regular posting concepts before, like Medium Series, but I didn't really warm to the format and, maybe because of that, I didn't get a lot of interest. Series are deprecated now, so even if I wanted to continue with them I couldn't. I also added a News section to my Toolbox, but then it gets hard to provide easy access to the older links, and I didn't really want to build out a whole front end for it. 

My Substack may well go the same way, but you can't hit the ball if you don't swing, so I'm giving it a go.