Lightning Web Components Specialist – Trouble getting the boatMap Component?

During the completion (as if writing I’m on step 8) of the new ​Lightning Web Components Specialist Trailhead superbadge I had some troubles with step 6 as I couldn’t get access to the source of the boatMap component.

It’s installed from an unlocked package, and being a LWC it’s not viewable in the Salesforce developer console. I was also unable to see it in the Org Browser VS Code plugin… but then I went back to my old friend the CLI.

Using this command I was able to bring the source down into my repo.

I hope this saves folk some time as they work through this badge.

TCG App visits the LAUG

Oh my, that was a blast! Last night I was allowed to run a data model design session at the London Admins’ Trailblazer Community group, and I for one think it was a great success. The idea of the session was to give a brief introduction to the TCG (Trailblazer Community Group) App and then chair a group discussion on how a data model might evolve from the requirements (and assumptions), and I can just say it far exceeded my expectations.

We walked through the various factors that go into making decisions around forming a data model, and how in some instances there isn’t one-clear right answer. We spoke about lookup vs master-detail relationships, chatted through reporting restrictions, mulled over standard vs custom objects, and spent quite some time going over the use of junction objects.

I do hope the session brought some value to the attendees, as I for one made many notes on things to read-up on, and not only in terms of the objects, but also regarding some requirements, and the next steps.

Here, in all their rough glory, are the notes I’ve made.

  • Support for Virtual venue
  • Master -> Detail – restrictions on types/number of relationships based upon object (types)
  • Standard Event – has auto archive rules and other things to be aware of
  • Event types
    • Meetup style
    • Conference
  • Look into campaign standard object – where would/could we use this?
  • Look into OppContactRoles
  • Use of Opportunity instead of EventSponsor
  • Use OppContactRoles to assign Sponsor contact / Venue Contact etc
  • Use of parent accounts; Don’t have a venue, use accounts
  • ACRs – know which contact to need for venue/sponsor (could be same or different)
  • Would let us have a Sponsor (Account) contact also related to a Venue Account
  • Log who (people in the ecosystem) knows about about specific stuff, who CGLs have asked to speak, and about X?
  • What replaces tags? (Gemma: in the Architects Club they have an object for skills) – Poss use NPSP, as they have this – or now topics?
  • Assets library (recordings, decks, etc)
  • Communities access – talk submissions/feedback
  • Think about a single instance for all CGLs to use – would mean one org, but more licenses, can we approach SF about this. Would mean a super-admin, some folk running this
    Would mean sharing available of talks / sponsors / contacts
  • What about the Events mngmt app from Salesforce Labs – more aimed towards conferences?
  • Also been approached about Open Commons from .org… very exciting
  • Next Steps
    • Look into NPSP, feedback from other CGLs on chatter / twitter
    • Rework ERD
    • Perhaps an open vid call to have input from other CGLs
    • Prob should write a V2MOM – perhaps use github wiki for this?
    • Think about KPIs, metrics, and designs

As you can see, I have quite a few next steps… and I’ve also been approached by a few folk in the success community to chat too.

Introducing the Trailblazer Community Group Salesforce App

As a long time leader of the London Developers’ Trailblazer group, and co-organiser of London’s Calling – the annual Salesforce Community Conference held in London – I’m only two aware of the features and benefits of the Salesforce platform (and ecosystem), and it therefore leaves a bitter taste in my mouth every time I open up a spreadsheet or other non-Salesforce tool to perform some management task for these events.

On speaking to other CGLs (community group leaders) I know that the London Developer group isn’t the only one to use a plethora of spreadsheets to help organise themselves, and I also know that a few folk/groups have built their own solutions on the Salesforce platform too. This bespoke and non-Salesforce tool-set only strengthens the bitter taste, especially when a platform like Salesforce is an obvious choice if you wanted to answer the requirements that are put forward CGLs.

And it’s the bitter taste that’s started me on the drive to create a Salesforce app targeted at helping community group leaders and community conference organisers alike in running their events.

I’m really looking forward to getting rid of this bitter taste, hopefully by drinking our own champagne

Tell me more

The vision I have for the app is based upon a few fundamental principles, which I hope promote and facilitate an inclusive and valuable project;

  1. Fully Open – Not just in terms of the finished project (code + declarative) but also in terms of how the project moves forward with regards to decision making, features, discussions etc
  2. Embrace the Platform – The project shall look to highlight the OOTB features and functions of the Salesforce platform (and keep up with it, as much as possible)
  3. Ease of Consumption – Distributed via a managed package(s) so as to reduce barriers of installation and support a known upgrade mechanism along with adhering to a strict backwards compatibility methodology
  4. Best Practices – This means testing all the things and following industry and platform specific best practices.

Where’s the project currently at?

Two answers to this… firstly the project has a github repo and the current thinking is that this can be used to also house documentation, issues etc, and maybe even use github’s discussion feature too.

Secondly, in terms of where the project is regards design/development, the answer is very young. As part of the desire to make this a community project I haven’t really started working on it until I get this post out, and get input from the wider community. As you can see there is a brief requirements listing on the git repo that comes from just my own thoughts, and I welcome github issues or PRs to add/edit this. I’m also wondering about creating a quip doc for this, to reduce any friction for folk who aren’t so familiar with github.

I’m absolutely sure that other CGLs have put together apps on dev orgs and the like, so it’d be great to get some input from them too.

How do I get involved?

If you have thoughts on the project please reach out to me on twitter (@toddhalfpenny) or raise an issue on the git repo.

What’s next?

I’m actually presenting the project as a data-model discussion case study at tonight’s London Admin’s Trailblazer group, where I’ll chat through some of the base requirements I’ve already put together and hopefully provoke some thoughtful conversations about how, and why, a data model in Salesforce might be designed in a particular way. RSVPs for this event are still open.

I’m also in the process of sharing the project within the CGL community to gather thoughts and hopefully expand and refine the project’s v0.0.1 requirements and a road-map going forward.

So yeah… I’m really looking forward to getting rid of this bitter taste, hopefully by drinking our own champagne.

SFignore: Visual Studio Code Extension for .forceignore files

Screenshot of the vscode SFignore extension in action

Last week I published another SFDX plugin, sfignore. This plugin is designed to help Salesforce developers with the (ever so slightly pedantic) .forceignore file. And now, to make developers workflow even more seamless I’ve published the SFignore Visual Studio Code extension.

The extension is essentially just a wrapper to the SFDX plugin, and as such installation of SFDX plugin is a pre-requisite.

Screenshot of the vscode SFignore extension in action
vscode SFignore extension

The extension exposes the “Add to forceignore” command to the command palette.

This is my first vscode extension, and I hope you find it useful. It is available in the Visual Studio Code marketplace.

SFignore: The .forceignore Salesforce SFDX Plugin

Salesforce SFDX projects are a great way to build both declaratively and through code for the Salesforce platform. It’s very common to want to ignore particular files from being pushed or pulled between Orgs and your local project, and this is achieved through .forceignore file. The file has some odd (and undocumented) syntax however, and the process is also known to have a few bugs, and getting the right entries in the file can be hard… and that’s where the SFignore SFDX plugin comes in.

The .forceignore file and the process behind it is sprinkled with black magic – Todd Halfpenny, 2020

I’ve created the SFignore plugin initially through an internal need for the work I’ve been doing with the Caddify project at MobileCaddy. A lot of this work has been around using Salesforce 2GP (second generation packaging) tools to create packages for our new product. Our workflow includes pushing, pulling, deploying to many different shape orgs and includes a fair bit of code and metadata that is used solely for non-production scenarios (test setup, demo data, org cleaning, etc) and we want to make sure that nothing accidentally gets put into our managed package releases. The .forceignore file that is used by the SFDX CLI tooling and tracking allows us to do this – or most of it at least… but it’s syntax is nuanced and is lacking in documentation.

The SFignore plugin gives me an easier way to add entries to the .forceignore file, by taking away the guessing of syntax and the need to remember the correct suffixes for the different metadata types. This is useful, as would you know (or remember) if the correct suffix for a SiteDotCom entry should be SiteDotCom, siteDotCom, or site? And what about AppMenu? Would you know whether to use appMenu, AppMenu, Menu, menu? Only one of these is right, and the syntax differs further depending on whether the change is local or remote. Oh you also need to encode (some) special characters too… if you didn’t know that then this could be why your entry for “Custom: Sales Profile.profile” isn’t working as you expected.

The initial release only supports entries for remote changes, and only a subset of metadata types that I’ve had to use so far… but the roadmap for it includes;

  • Support for local syntax
  • Wildcarding – currently only supports specific entries
  • An extension for vscode.

Here’s an example of using the plugin, where we’re wanting to add an entry to ignore pulls for the profile Custom: Sales Profile.

This results in the following entry being added;

The -m flag specifies the metadata type, and the valid values should match those as seen on Salesforce’s metadata coverage report and the output of a sfdx force:source:status command.

It should also be noted that something’s appear to be impossible to achieve with the .forceignore file, including;

  • Adding some tests – yeah, sorry
  • Specifying specific custom fields
  • Specifying specific custom metadata
  • Specifying specific record types

If you know how to achieve the above I’d be very happy to hear about it.

You can find the source for SFignore SFDX plugin on github, and you can download it from the npm registry too

If you use the plugin and need more metadata types added then please raise an issue on github, or even better fork the repo and create a PR.

sf-package-version-checker – SFDX Plugin to notify on completion of Salesforce Package Builds

If you’ve ever built Salesforce packages with the SFDX commands (in fact long before this) you’ll know that the creation of a package can take some time, especially if your package has dependencies.

At MobileCaddy we’ve been adopting the SFDX CLI as much as we can – and in fact embracing the SFDX ethos as a whole – and recently we’ve been working with the Salesforce second-generation packaging (2GP). During this I’ve found that the standard SFDX command to create a package version would continue to give me status updates every 30 seconds for 10 minutes by default, and even though I could set the overall timeout to a longer value (using the –wait flag, and specifying a number of minutes) I often forgot that the task was running and found myself forgetting to watch the terminal window. What I really wanted was something that would notify once the build had completed successfully (or erroneously).

So, during one of the package builds (~25 minutes in this case, if I remember correctly) I put together the basis for a new SFDX plugin that I could run to monitor the latest package build request, and then ping up a desktop notification when it had completed.

I was actually on the line-up for the (now postponed) CzechDreamin’ 2020, with a talk titled “Take your SFDX Plugins to the Next Level”. The talk covers many ways to interact with SFDX plugins other than via the CLI, and one of the topics included was the use of the node-notifier npm module to create native desktop notifications, and so I put this to good use.

You can very easily support basic (and more advanced) notifications with node-notifier for Mac, Linux and Windows environments; here’s some sample code (similar to that used in my plugin);

First import node-notifier (after installing it with npm/yarn)

Then to use it have code similar to this;

This results in this type of experience;

The source code (with little over 100 lines of actual logic) can be found in the github repo, and the plugin can be installed as an SFDX CLI plugin and run with the following commands;

Solved: Opening a new Salesforce scratch org not working

Just a quickie… have you ever created a new Salesforce scratch org then tried to open it from the CLI with sfdx force:org:open only to be routed to login.salesfoce.com? Well I have, and it was really annoying me.

But I have a solution (at least it works for me), just enter the domain of your new scratch org – this is output by the CLI command -straight into your browser. On doing this I’m taken into my org in a logged in state.

The Salesforce Podcasts I listen to

I’m a big fan of podcasts, and although my daily commute is often only a few seconds long (I work from home most days) when I do travel up to London for clients meets, or to attend the many Salesforce Trailblazer groups, it’s a journey upwards of 1.5 hours, so it’s an ideal time to get some listening in.

I’m going to list here a few of the podcasts that I regularly enjoy, and also a couple of new ones that I’ve subscribed to just recently.

8) Salesforce Developer Podcast

Although it was only launched a couple of weeks ago, around Dreamforce ‘19, there are already a handful of episodes available. Josh Birk – Principal Developer Evangelist at Salesforce – interviews folk from the Salesforce ecosystem. The shows are relatively short at 15-30 mins and have covered topics such as porting Aura to LWC, Blockchain, and PMD (Apex static analysis tool), and have included great folk such as Fabien Taillon and Brian Fear.

7) DEVel-UP – A RAD Women Podcast

Another pretty new podcast, and one I’m really enjoying already. The shows, like the Salesforce Developer Podcast, follow an interview format. It’s hosted by Blanca V. Leon-Carter – VP of Community Engagement at RAD Women. Each interview (so far at least) has been with folk who’ve been engaged with the RAD (RAD Apex Developer) Women project,either as grads, coaches (or both), and include really brilliant women such as MVP Bonny Hinners and Ladies be Architect co-lead Susanah Kate St.Germain.

6) The SaaS Revolution Show

OK, so not a true Salesforce podcast,but one I certainly recommend as someone working in the Salesforce and SaaS world. Alex Theuma chats to folk from all roles within the SaaS ecosystem, and covers topics from scaling businesses to business models, and company culture to content marketing.

5) Bet on the Web

Alright, you got me… it’s another non-Salesforce specific podcast. Bet on the Web is hosted by Mike Hartinginton and Matt Netkow from Ionic – a cross platform mobile (and desktop) UI framework. The episodes are released (mostly) monthly and focus on web technologies. This podcast should be of Interest to Salesforce developers since many of the topics discussed are relevant to the lovely new(ish) world of Lightning (specifically LWC). This is a show I’ve been listening to since the first episode, and is hugely relevant to us at MobileCaddy due to the fact we use Ionic in our stack when delivering mobile apps to the Salesforce world.

4) Salesforce Posse

This is a kind-of-regular podcast from two folk I know pretty well, Anup Jadhav (MVP and a former co-lead of the London Developers’ Trailblazer group that I help run) and Francis Pindar (also an MVP and one of my co-organisers of the Salesforce community conference London’s Calling). This podcast covers subjects and news relevant to both developers and architects, and is one that I certainly recommend you put on your list.

3) Code Coverage

This pretty irregular podcast (irregular in release schedule, not format) is hosted by two Salesforce developer superstars in the form of MVP Steven Herod and MVP Matt Lacey. There have only been three episodes this year, and the last one was in July, but when the pair do get together they discuss the latest Salesforce news along with some good deep technical discussions.

2) Two WiT

This podcast just never fails to make me smile… apart from when the ladies took a few months out of their pretty regular monthly release schedule. Hosted by MVP Kristi Campbell and MVP Melinda Smith the show is a brilliant mix of thoughts and mind-farts on everyday life, and views and discussion on Salesforce related topics. Although not specifically a dev-related podcast, I find it hugely valuable to hear from folk who are experts in other parts of the Salesforce world. The latest episode, an interview with Military Trailblazer LaRon Butler was doubly amazing… and if you do nothing else after reading this article please listen to this one. LaRon’s story is incredible, and her story-telling is just brilliant.

1) Good Day, Sir! Podcast

And so we come to my favourite Salesforce podcast… and yes it’s the Good Day,Sir! podcast hosted by MVP Jeremy Ross and MVP John De Santiago (who deliberately isn’t on twitter). Shows are released almost every week, and are usually John & Jeremy’s take on the latest goings-on in the Salesforce (and wider tech) sphere, along with a good amount (IMO) of beer and whiskey chat. They’re both well versed in their craft,but it’s not just their knowledge that’s good to hear, they’re also happy to turn down the Kool-Aid and call a spade a spade.

But you know what? The goodness of the Good Day, Sir! Podcast doesn’t end with the show. Oh No! They also have an incredible community of listeners (and probably some non-listeners) who come together and share and help each other out on their slack channel. Go register to join it right now!

So there you have it, that’s my run-down of podcasts to check out. But do you have others I’ve missed (I’m sure I have), if so please comment and share away.

Recommendations received since publishing the article;

  1. Cloudfocus Weekly Podcast – Suggested by Randi Thompson 
  2. Cloud Force Collective -Suggested by Randi Thompson 
  3. One of These Things -Suggested by Randi Thompson 
  4. WizardCast -Suggested by Randi Thompson 
  5. SalesforceWay -Suggested by Paul Battison

 

Salesforce Meetup – MavensMate

As my final days at EE come around, I’m starting to make some headway in getting to understand more about the architecture and nuances of frontend development and the associated frameworks. Hand in hand with this education also comes an implicit syllabus relating to the development workflow, and in particular the tooling that’s available. I wrote about a JS tooling workshop I attended in this post and this week I attended one of the Salesforce developer meetups and there we also covered tooling, specifically David Helmer talked about MavensMate and how that can be used in Salesforce development.

Like the previous events that I’ve attended the meetup was held at the Make Positive offices and once again they were great hosts and sponsors, supplying beer and pizza, just what the doctor ordered.

Mavensmate is a plugin for several IDEs, most commonly used with sublime but there are plans to also include support for atom.io too in the near future. Essentially it gives developers an open source, apex IDE.

Primarily built and supported by Joe Ferraro it’s a cross platform tool that gives Salesforce developers a tool to match those available to developers who are using other languages such as PHP and JavaScript.

David kicked off his talk by announcing that it’ll take the form of a live demo…. there was the inevitable feeling in the room that we could be in for some good-ol squirming. What followed though was anything but, thanks it seems to the wonderful features of, not only Sublime Text, but also Mavensmate itself.

Demonstrations of many features were presented. Key ones (read those that I made a note of and can remember) were;

  • It’s open source… pull it and contribute
  • Editing and compilation of apex code (via force.com platform)
  • Resource bundle handling and uploading
  • Templating
  • Auto completion of functions and variables
  • Apex Testing – And whilst your tests are running there’s a whole host of games you can play (pacman etc), genius
  • Anonymous apex (exec) – runs ad-hoc code platform.
  • Project meta data can be pulled down viewed
  • Fetching debug logs

See the MavensMate documentation pages for more information.

I had tried previously to get MavensMate running in Sublime Text 3 on Ubuntu, but without luck… but I’ll certainly be trying again and will contact Joe if I’m still having issues.

Sadly I was unable to hang around and chat with the other Salesforcers, they’re a good bunch and it was a shame not to catch  up with them… hopefully next time.