Scott VonSchilling

Experimenting with the Salesforce platform.

For the love of #DeploymentFish

November 23rd, 2015 | Posted by Scott in Opinion


Summer ’14 brought us a new Deployment Status page that gave us a real-time monitoring tool on what happens during a change set deployment. It allowed us to somewhat estimate how long the deployment will take, and it also allows us to cancel the deployment if it encounters an error early on.

But in my opinion, the best “feature” that the new page brought to us was the Deployment Fish.

I unexpectedly spoke at Dreamforce last October. My colleagues at CRM Science had submitted a number of sessions over the summer, and a handful of them were accepted. In order to give all the members of our team an equal chance to speak, we shuffled around our resources. I ended up with the “From Admin to Developer” session with my coworker Matt.

Matt had been a Salesforce admin for years prior to becoming a developer at CRM Science, and for the most part, he was still learning. The session was going to be mostly about him describing the tools and websites he was currently using to become a developer. So what could someone like me – who had never been an admin – offer to the session?

Well, the very first thing that impressed me with Salesforce was the way they had translated fundamental Object Oriented Programming concepts into very easy-to-use declarative tools. I remember having a very hard time understanding objects and properties when I was first introduced to them in high school. So seeing the way the Salesforce team translated these concepts into custom objects and fields without any coding from the end users immediately earned my respect for the platform.

I have also held the controversial stance that only certain people can code, not everyone. Everyone has different skills, but only people who can understand basic mechanics and algebra can actually become developers.

And then it struck me that this was exactly the kind of audience we would be speaking to. Salesforce admins know how to use declarative tools, and those declarative tools were essentially OOP concepts wrapped up in a nice graphical interface. Therefore, these Salesforce admins have the skills needed to become a developer, they just did not know it yet.

That is the angle I went with for my half of the session, and I am very happy with the way it turned out. So click here to see the video of our presentation.

PS – Salesforce announced Trailhead just days after we gave this talk, so now I fully recommend going through that if you are looking to become a developer.

My Favorite Data Structure – The Map of Lists

October 28th, 2014 | Posted by Scott in Tips

Last week, I wrote about Big O Notation in Apex and how having a O(n) was a perfectly acceptable solution for any Apex problem. However, trying to avoid having to go through nested for loops is often a tricky proposition when you have to process so much data in a single SOQL query.

Probably much to the displeasure of my co-workers, I like to utilize those series of for loops to build up complicated data structures. These structures organize the data in a way that is easy to access later on in my code. And the one data structure that I use the most often is the map of lists.

The map of lists comes up whenever I need to have a list of records “grouped by” a particular value. This is very common in Salesforce as it matches up the parent-child data model created by lookup relationships. By establishing a map of lists, you are able to organize a list of child records by their parent records.

Dealing with Big O in Apex

October 21st, 2014 | Posted by Scott in Tips

big o
Big O notation is probably the bane of many Computer Science undergrads’ existence. It most certainly was one of mine back in my college days. When you are young and learning programming for the first time, why would you want to waste your time on boring lectures learning about algorithm theories and optimization?

When you are a student, you wanted to get in front of a computer and start coding! You felt that it did not really matter how you went about coding up a project. As long as it compiled and provided the expected output, you marked it as a success.

I did not understand that Big O notation and those advanced algorithms were actually going to be needed until I entered the job market. They became very important to me during my technical interviews with potential employers. In a world of emerging technologies and multiple programming languages, those lectures and core concepts from your Computer Science classes are a common language we all can speak.

I remember having a technical interview at Amazon about a month before I got into Salesforce. I was in their office in Seattle and working out a programming problem on a white board in one of their conference rooms. I forget what the question was, but I was struggling to find a solution to it that did not involve using a nested for loop.

“Can you do any processing of the data before entering the for loop?” the interviewer suggested.

I thought about this some more and came up with a solution that involved creating another for loop before entering my original loop. But this did not seem right to me. The whole point was that I was trying to avoid looping through all the data a second time, right?

When I expressed my doubts to the interviewer, he asked, “What’s the Big O notation of your solution?”

Well, one loop is going to be n, the second loop is going to be n, so together they will be 2n…


… and you drop the leading 2 from n, so it’s O(n). It’s linear!

“Right,” the interviewer said with a smile. “And linear is a perfectly acceptable solution.”

I obviously did not land that job, otherwise I would have never gotten into Salesforce in the first place. But that realization that multiple for loops still yield an acceptable solution became o core philosophy of mine when it comes to Salesforce development in Apex.

Using Bootstrap in Visualforce

August 1st, 2014 | Posted by Scott in Projects | Step Up | Tips | Visualforce
Bad CSS Screen

During the Summer of Hacks last month, I worked with a pair of coders with no prior Salesforce experience. While I worked on the Apex code, I had them work on the front end because Visualforce could just be straight up HTML if you wanted it to be. So the devs – both of whom had far more experience in modern front-end tools and libraries than I did – decided to use Bootstrap for the front end. But this decision came with a stipulation:

“We had to disable the header and standard style sheets for it to work.”

This was okay to me for the time because we were building a Salesforce1 app and the mobile container did not require any headers. But now that I want the page to function normally in desktop Salesforce just as well as the mobile version, I put the header and standard stylesheet back on.

Bad CSS Screen

Yuck! That’s no good! There is obviously some kind of CSS being overridden from the third-party library to Salesforce. Time to figure out how to use Bootstrap and Salesforce together.


I participated in the Summer of Hacks in NYC this past weekend. I wasn’t expecting to pitch an idea myself, but when they opened the mic for participants to speak to the group, I raised my hand and walked on to the stage.

Photo by @kavindrapatel

“This is a Fitbit,” I declared to the room while holding up the tiny, bluetooth connected device. “It measures the amount of steps you take in a day. It then sends that data to your phone, which then sends it to the cloud. The consulting firm Appirio has said that they were able to save $300,000 in insurance costs by giving all their employees a Fitbit and starting a company-wide fitness program.”

“The app that I’m proposing will be that fitness app for your company. I want to build a Fitbit integration for Salesforce.”

And that is exactly what we did.