Welcome to my blog. In this blog I will write about music, technology, sociology, data, and personal philosophy. Actually, it will probably be a hodge-podge of things. Enjoy!
So it’s the last day of the year. I didn’t think we would be here again, having another COVID winter, but here we are. So below is my year-in-review. It was a really, really great one.
- Turned 30 and had multiple celebrations, as a fire sign would.
- Got my own apartment, living alone for the first time (referenced in my goals from my post from last year!!) in a town that I LOVE!!!
- Finished all but one course in my graduate school program while working full time.
- Note: I really love my Masters program. This year, during both semesters, I did super fulfilling projects focused on the LGBTQIA+ community and social justice.
- Started a new job as a consultant.
- Acquired two additional Salesforce certifications. (Shout out to Sam Shain for inspiring spontaneous exam-taking in)
- Dealing with mixed messages, for instance:
- “Ask for help” v. “Be self-sufficient”
- “Help people” v. “Don’t do for people what they can’t do for yourself”
- “Be assertive” v. “Be gentle”
- Decision fatigue, especially around technical debt at work and personal items when moving.
- Avoidance, and staying motivated to keep good habits
For me, this year was about paying for quality and not being ashamed to get rid of things that straight up don’t work (e.g. old vacuum cleaner). I want to celebrate this, because it feels like a move towards maturity, but I also realize my privilege that I am able to afford these things (even though I bought most on sale or secondhand). I’ve also focused a lot on sustainability this year.
So here’s my list, in case it helps inspire your next round of purchases (Note: These are NOT affiliate links)
- iRobot Roomba Vacuum
- Shark vacuum and steam mop
- Flexispot sit-to-stand desk
- Verilux HappyLight
- Sheertex pantyhose
- Keurig coffee maker
- Vizio Soundbar
- Quip Refillable Floss
- Marley’s Monsters Reusable Paper Towels
- Wake Up Light alarm clock (Shout out to Dee for this idea)
Goals for 2022
Below are my goals for 2022! I’ll be checking this post periodically and also have them written on a whiteboard next to my desk.
- Mess reduction –
- Have a place for everything and put everything in its place
- Invest in storage solutions
- Get rid of stuff I don’t love
- Do small maintenance tasks like sweeping and wiping down surfaces every day
- Digital messes, too – regularly purge emails, phone contacts, photos
- Have a place for everything and put everything in its place
- Movement –
- Move my body most days of the week
- Focus on the way movement makes me feel rather than a strict schedule
- Music –
- Pick up my instrument every day
- Mindfulness –
- Active listening
- Slower eating
- Meditation and yoga
Thanks for reading! See ya in the new year!
Reporting on the user-contact relationship in Salesforce Communities/Experience Cloud is questionable. Today, I’m going to show you a Flow that will help tell you if a Contact has a Community/Experience Cloud user associated.
This is useful for answering questions such as, “Of the beta testers we have invited, who has signed up?”
- First, create a Number field on the Contact object called Number of Experience Cloud Users. Note that in my example the field is called # Community Users.
- Make number of digits = 1, number of decimal places = 0
- Read only to all but admins – so that people can’t change it by accident!
- Next, create a Flow.
- Type = Schedule-Triggered Flow
- Object = User
- Cadence = Daily
- The Flow ‘s actions are as follows:
- First, in the Start node, find all users of a certain profile where a ContactId is present. This will avoid the system going through users without a contact and wasting precious, precious Salesforce juice.
- Next, use Get to find the contact associated with the user.
- Next, use Assign to populate the number 1 into the Number of Experience Cloud Users field you made in step 1.
- Finally, use Update to update the contacts.
- You are now easily able to report on contacts where there is an Experience Cloud/Community User. You can also see which contacts do not have an Experience Cloud user.
See screenshots of the Flow below:
Another way to do this is with Declarative Lookup Rollup Summaries, an open source product I am volunteering on!
Any questions? Hit me up on Twitter @melanietolomeo. Enjoy!
I have been learning to play the bass. I suppose it started when I was 13 and had silly braces and oversized rock t-shirts.
I stopped playing for a while, but I recently picked it up again when I joined the team at Little Kids Rock about 3 1/2 years ago. It felt like a natural fit for my tech role. A support instrument. The untrained ear doesn’t quite know it’s there, but the music feels empty without it. Also the butt of many jokes, reminding me not to take myself too seriously.
At first, I felt guilty calling myself a bassist when I was not practicing nearly “enough.” Not practicing unless I had a performance to practice for (uniquely, at my workplace, there are a few opportunities to play gigs in public with colleagues every year.) Playing for Instagram but not learning my scales and arpeggios. Just feeling like a fraud.
Something shifted in the last few weeks, though. I just started playing songs that I like. I started playing for fun, sometimes for over an hour a day. I decided that I don’t need to master any one song and that I can skip around (#Aries). And slowly, I am learning the fundamentals. Today, I started learning a technique called slapping and even improvised a bass part. I can feel myself getting better, feel my fingers getting faster and stronger and more controlled. And it feels like it’s happening suddenly, while I am just playing songs that I enjoy (like “Watermelon Sugar” by Harry Styles)
A few notes on this process:
- I really have to shut my internal voice off when I’m playing. A lot of thoughts like “I will never be as good as [insert person who literally majored in music in college]” and “I’ll never get this, I’m a failure” come up, and I need to gently shoo them away.
- I am learning to take others’ support seriously. I often assume the people around me are being patronizing, but I have found that people are mostly good and willing to help when asked.
- I am learning to go with the flow when learning a new skill, which can translate to other skills (like technical ones!). Usually, I love structure. I love to have a plan with a beginning, middle, and end for learning things. However, I am finding that learning the concepts of music and common patterns is easier in the context of a song, and sometimes these concepts come up as a surprise. Sometimes I don’t even know what they’re called. The process of learning this instrument is teaching me to let go and be a little curious.
- On the flip side, it’s important for me to document the process of going with the flow. I started collecting my sheet music in one place and may even index it by skill level.
- I don’t feel bad taking a break from a song anymore. Sometimes I’ll be like “okay, I get the gist of this, but it’s a little too advanced for me. I will get back to it later.”
- I also don’t feel bad for not practicing anymore. I want this to be a fun hobby and not feel any pressure.
- Bass is stress relief for me. I pick it up when I want to take a break from work. It’s the perfect tactile activity to enhance my focus and slow my busy brain down.
Finally, this girl has the same bass as me and she’s incredible. I love the joy she shows at the end; it’s inspiring. Enjoy!
I wanted to write about prediction because it’s seemingly everywhere: in marketing emails, in real estate, and even in criminal justice (blah).
An understanding of prediction and modeling can be pretty beneficial in business, however. Think lead scoring for new prospective clients or donors, employee attrition, or revenue forecasting. By understanding the capabilities of prediction, it might help us predict what data to collect in order to make more informed decisions.
Salesforce has released some A.I. products over the last few years under various names: Einstein, Tableau CRM, Wave Analytics. We can also create models ourselves, using different programming languages such as R and Python, or even in Excel.
First, a quote.
“All models are wrong, but some are useful”George E. P. Box
Human nature can be unpredictable. We are also biased and have blind spots. I recently watched the documentary Coded Bias on Netflix, which showed how bad models can affect real people. So handle prediction with care.
So how does prediction work?
A predictive model tells us, based on existing criteria, what outcome is expected. For instance, what is someone’s income based on their race, gender, and profession?
Think of this as a mathematical formula similar to the ones we learn in high school for a straight line or a parabola. The inputs are x and the outputs are y.
To build a predictive model, we use mathematical methods to find a formula that provides an output that is as close as possible to the real output for the greatest number of records (e.g. people, schools, whatever).
We can use both categorical (e.g. picklists) and numeric values in prediction.
So let’s say we want to predict a donor’s 2021 donation amount. We can use a method called regression.
In order to build a model to predict someone’s next donation amount, we need a “training data set” – a report of donors who have made 2021 Donations. We choose fields we think may be relevant (called independent variables, e.g. Age, Gender, Last Donation Amount, and Average Donation Size) and a “target” dependent variable (a field called 2021 Donation Amount.)
Then, we use a tool (Excel, R, Python, or a calculator with a huge memory :P) to create the model. Our goal is to get the most accurate model, so we may remove variables that don’t add that much value.
Our final output might look like this:
ŷ (this is the predicted value of 2021 Donation Amount) = 10 (this is the y-intercept) + 1.4*Age + 1.5*GenderFemale(true=1 or false=0) + 1.02*LastDonationAmount + 0.01*AverageDonationSize
So to predict the next donation amount of a donor who is:
- Age = 45
- Gender = Male
We would calculate the predicted value here:
ŷ = 10 + (1.4*45) + (1.5*0)+(1.02*200)+(.01*250)
ŷ = $279.50
NOTE: This is not a real model, and I am also oversimplifying.
From this result, we can see that the predicted donation amount for 2021 is higher than the donor’s last donation amount and average donation. Perhaps, in our fictional world, donors are very generous in 2021.
Conclusion and Disclaimer
I am passionate about educating people on how different technology works and hopefully saving them some money. However, I am a student and I am writing about what I am learning in class at the current time, and I am not an expert.
If you’re interested in learning more, check out online courses on modeling with R or Python, and then apply these skills to your Salesforce data. Courses will be able to explain some of the road bumps to look out for (e.g. multicollinearity, non-normality) and go more into detail about how to figure out if your model is actually a reliable one.
The example above is what is called linear regression. Logistic regression is another type of model…a way to predict the likelihood of an event. A famous example is whether or not someone died on the Titanic, which, spoiler alert: given a number of variables, is predicted best gender (“women and children” first) and ticket level (a proxy for wealth). I don’t know which method would be quicker for me: watching the 2 1/2 hour Kate Winslet and Leonardo DiCaprio movie or trying to build a model in R, but I digress…
FormAssembly is a go-to tool for many Salesforce partners. It allows people to make forms, both pulling data from Salesforce and also updating Salesforce. I want to quickly review what I think is good about this tool and what can be improved upon.
- I love how customizable it is – it’s so easy to adjust the look and feel of the form with either a theme or CSS.
- Their support is AWESOME – super responsive by email and chat. They have gone above and beyond for me on multiple occasions and the reps are more like partners.
- The prefill connector pulls data from Salesforce in a seamless manner by passing variables such as record IDs into the URL. In Formstack, you have to pass every field you want into the URL; FormAssembly just queries the database and “prefills” fields instead. This also allows for scalability; you can use one form for multiple purposes by conditionally showing or hiding information.
- The repeater option – which allows you to a) pull in data from multiple records and b) create or update multiple records is very clever. We have used this to pull info from child objects on a one-to-many relationship – for instance, dates and times for modules (child) of a virtual event (parent). Or create many records at once (for instance, for guest lists for a benefit). You can even remove the submit button and use it to display information from your database using the pre-fill connector.
- E-checks in FormAssembly/Authorize give us more payment options and flexibility for our donors. We created a form that allows us to collect money from a pledge, passing in the donation ID. Then the form updates fields on the record when the person pays.
- Sub-point: You can save and pass Authorize.net transaction IDs into Salesforce records!! This is something Formstack cannot do.
- The CSV import of picklist items that populates other fields. We used this to load the entire US school database into a form and populate fields like name, district, and address.
- On forms where you accept payment there is no native plugin for discount codes.
- The post submission connector is clunky at times. If I’m making an update, I’d love to be able to reference an existing value in Salesforce and then decide what to do – for instance, if it’s filled out already, don’t overwrite it with the new value. Also, there are some cases when the update/insert option doesn’t work for my use case and I have to do an update/insert in multiple steps instead.
- I wish that FormAssembly had a Google Drive integration; any time I want to save files in a Google Drive I have to use Formstack.
- The e-signature function is very sleek but there’s not a great way to report on signatures that have been “verified” through email; you have to go into each record to do that.
- The WordPress plugin does not allow you to add fields into the URL, so we have had to use iFrames.
What’s the coolest thing you’ve done on FormAssembly? Tweet @ me at @ melanietolomeo!
My “configure NPSP every day without having ever used the product” project is going pretty medicore/okay!
(January 10-17, 2021)
Logistics Moves and Observations
- Made Firefox my dedicated browser for dev org configuration to avoid issues with installing managed packages, logins, etc. The last thing I need is to inadvertently install household accounts into my company’s production org :~)
- Purchased a second monitor. Have had success with writing and reading documentation on one and configuring on another.
- In retrospect, I would have started here instead of going right in and configuring. The slide deck on that site gives a great overview of features.
- I’ve been keeping a Google document of my progress each day, benefits of NPSP, and documentation issues I’ve found.
- It’s important to keep it simple by understanding what the feature does before diving in.
- I decided that the easiest way to do this is to to act as if I am studying for the Nonprofit Cloud certification exam. In fact, I may or may not have signed up for the exam…
Configurations Made and Skills Learned
- Set Up Batch Gift Entry (which I think is still relevant??? But can’t tell because Salesforce deprecates products pretty quickly)
- Set Up Customizable Rollups
- Hard Credit and Soft Credit Automation
- Address Management
- Installed and Configured Program Management Module (holy custom objects :x)
- Accounting Subledger – What is it?! Why should I care?!
This Week’s Focuses
- Engagement plans
- Gift Entry
- Recurring Donations
- Getting through 8 hours of vids for real life consultants
- Campaigns and mailing lists
- Case management
- Reports workbook and common reports
I recently purchased a second monitor. For some reason, this felt like a decadent, hedonistic act to me, like buying Teslas for the police while education budgets get cut. It’s possible that I have just been inside too long, though. :~)
As a result of this purchase, I have started thinking more about ergonomics, productivity, and workflow. Mostly how to use each monitor. I decided it would be super helpful to see my daily calendar in one portion of the screen. Ideally, it would act more like an app than a browser window.
I’ll start by saying that I’m on a Mac and I have an aversion to Outlook. Additionally, I do like Apple’s Calendar app. It is clean-looking (like most Apple products) and it sits right on my dock. It doesn’t get lost in my endless tabs.
But there are downsides of using it, too. I prefer working in Google for a variety of reasons, including the cute graphics they put on my calendar and the ease of adding a Hangout to a meeting.
Today I decided to Google “Add Google Calendar to Dock on a Mac”. Within seconds I found a StackExchange article about how to do this and installed a program called Fluid. Fluid allows users to create an “App” out of any web link and add it to their dock.
I installed the software and, in five minutes, had a new icon on my dock.
Step 1: Install the software
You can install the software here: https://fluidapp.com/
Step 2: Create the App
Note: I used a custom icon because the favicon option didn’t work. The downside of this is that it’s statically saying it’s the 31st, instead of changing with the date like Apple Calendar does.
Step 3: Add to Dock
I added the icon to my dock. It’s not exactly transparent on the edges but good enough.
This Fluid app has some other use cases as well. For instance, I can make “Apps” for my Salesforce CRM homepage or a list of common links I use. I can also have them launch when I turn on my computer.
I find it really valuable to take inventory of things that bother me about my setup at work and at home – whether it’s that I can’t see my little screen or I don’t know how to store a lint roller. I usually spend some time every month trying to fix these issues. I realize that with certain tasks, these small annoyances create a lot of avoidance and stress. Sometimes taking the time to Google something can prevent a lot of pain later.
I remember reading about this in The Happiness Project by Gretchen Rubin a few years ago. She mentions that although it’s common knowledge that spending excessively won’t bring true joy, sometimes spending money on tools to fix (or taking time to troubleshoot) day-to-day issues is extremely gratifying.
Do you have a small annoyance inventory? What small annoyance can you alleviate today?
Happy January / “end of ze world” week!
Wanted to share what I’m working on, outside of feeling existential dread.
My nonprofit org is using Salesforce but we are not on NPSP or Lightning. It is not ideal.
We are currently looking for a partner to do a needs assessment of our org. In order to deepen my understanding of NPSP and also “sell” this project internally, I have decided to make an attempt at setting up NPSP with minimal sample data. I have never used NPSP before so my only points of reference are Trailhead, Salesforce documentation, and being part of the NPSP Videography project.
Day 1 – Setup
Day 2 – The Basics
Today I created some record types that weren’t available in the installation. I also created a new user with a new profile that I can use for testing.
Then I noticed that there is a whole guide on configuration steps that I can draw from. I’m curious as to why this guide includes creation of buttons instead of actions but I assume that there’s a reason for that.
Challenges So Far
Now some observations on challenges so far…
Since I know the core Salesforce product and nonprofit terminology, NPSP is quite intuitive. However, I am having trouble staying focused, especially as I try to write out everything I do.
I started to think about why this type of task – reading instructions, making configurations, and documenting – is so daunting for me. I like printouts of instructions, but that’s not eco-friendly or space-friendly. I like pen and paper, but my handwriting is so bad and the output is something I would have to type later anyway. I have two screens, but that doesn’t feel like enough.
As someone who is (self-diagnosed) neurodivergent, I need some simpler ways of working. Perhaps I can display the documentation on my iPad. Perhaps I need to learn more Mac keyboard shortcuts in order to move from one screen to another.
I think what I’m learning about reducing clicks and being able to seamlessly switch between tasks (reading, writing, configuring) is going to help me in system design in the future.
Happy New Year, readers. Many of you are my personal friends and I am so happy that we are alive at the same time and can spend time together virtually. I am excited for the day when I can meet some of you in real life.
In reflecting, the year 2020 brought a lot of introspection, pain, and growth for me.
Some (unexpected) highlights:
- Started this blog.
- Cut my hair.
- Quit drinking alcohol.
- Went vegetarian.
- Took singing lessons.
- Was gifted a record player and started a record collection.
- Completed 50% of my Masters program.
- Learned to cook and found a few go-to meals.
- Took up knitting again.
This year (2021) is going to be a maintenance year. In addition, I’d like to make the following changes:
- Start making arrangements to live alone, without roommates, for the first time.
- Learn more about technology (keeping this broad on purpose).
- Finish most of the coursework in my program.
- Find fun ways to move my body every day.
I know that the universe/Higher Power has my back.
I wish you all a safe, healthy, joyous, humorous year.