{"id":74,"date":"2020-01-13T09:00:49","date_gmt":"2020-01-13T09:00:49","guid":{"rendered":"https:\/\/developer.salesforce.com\/podcast\/2020\/01\/episode-12-salesforce-iot-with-charlie-isaacs\/"},"modified":"2021-02-11T12:54:50","modified_gmt":"2021-02-11T12:54:50","slug":"episode-12-salesforce-iot-with-charlie-isaacs","status":"publish","type":"post","link":"https:\/\/developer.salesforce.com\/podcast\/2020\/01\/episode-12-salesforce-iot-with-charlie-isaacs.html","title":{"rendered":"Episode 12: Salesforce IoT with Charlie Isaacs"},"content":{"rendered":"<p><span style=\"font-weight: 400;\">\n\t\t\t  <span class=\"postimagessection_specify alignleft\" >\n\t\t\t    <img loading=\"lazy\" decoding=\"async\" src=\"https:\/\/d259t2jj6zp7qm.cloudfront.net\/images\/20200108155649\/Screen-Shot-2020-01-08-at-4.53.39-PM-150x150.png\" class=\"postimages\" width=\"246\" height=\"246\" alt=\"\" \/>\n\t\t\t  <\/span>\n\t\t\tThis week Charlie Isaacs, VP and CTO of Customer Connections, joins me on the Salesforce Developer Podcast. Over the last 5 years, he has been evangelizing the Internet of Things (IoT) for Salesforce and has helped incubate dozens of Salesforce customers into the world of IoT.<\/span><\/p>\n<p><span style=\"font-weight: 400;\">Together we talk about Charlie\u2019s experiences with prototyping new features, working with customers, and demonstrating Salesforce IoT. We also delve into the concept of prototyping work with engineers. Charlie likes to say he has the most fun job at Salesforce, and after this episode, you might actually have to agree.\u00a0<\/span><\/p>\n<p><strong>Show Highlights:<\/strong><span style=\"font-weight: 400;\"><br \/>\n<\/span><\/p>\n<ul>\n<li style=\"font-weight: 400;\"><span style=\"font-weight: 400;\">Charlie\u2019s love for the way Salesforce engineers develop new features<\/span><\/li>\n<li style=\"font-weight: 400;\"><span style=\"font-weight: 400;\">Some key aspects of IoT, especially handling and filtering date<\/span><\/li>\n<li style=\"font-weight: 400;\"><span style=\"font-weight: 400;\">The node management app Node-RED<\/span><\/li>\n<li style=\"font-weight: 400;\"><span style=\"font-weight: 400;\">Charlie\u2019s highlight of utilizing IoT and what a hot tub has to do with it<\/span><\/li>\n<\/ul>\n<p><b>Resources:<\/b><b><br \/>\n<\/b><\/p>\n<ul>\n<li><a href=\"https:\/\/twitter.com\/charlieisaacs\"><span style=\"font-weight: 400;\">Charlie on Twitter<\/span><\/a> <span style=\"font-weight: 400;\"><br \/>\n<\/span><\/li>\n<li><a href=\"https:\/\/www.linkedin.com\/in\/charlieisaacs\/\"><span style=\"font-weight: 400;\">Charlie on LinkedIn<\/span><\/a><\/li>\n<li><a href=\"https:\/\/trailhead.salesforce.com\/en\/content\/learn\/modules\/iot_explorer_basics\"><span style=\"font-weight: 400;\">Salesforce IoT on Trailhead<\/span><\/a><\/li>\n<li><a href=\"https:\/\/nodered.org\/\"><span style=\"font-weight: 400;\">Node-RED<\/span><\/a><\/li>\n<\/ul>\n","protected":false},"excerpt":{"rendered":"<p>This week Charlie Isaacs, VP and CTO of Customer Connections, joins me on the Salesforce Developer Podcast. Over the last 5 years, he has been evangelizing the Internet of Things (IoT) for Salesforce and has helped incubate dozens of Salesforce customers into the world of IoT. Together we talk about Charlie\u2019s experiences with prototyping new [&hellip;]<\/p>\n","protected":false},"author":378,"featured_media":75,"comment_status":"open","ping_status":"closed","sticky":false,"template":"","format":"standard","meta":{"_acf_changed":false,"footnotes":""},"categories":[2528,2613],"tags":[],"coauthors":[],"class_list":["post-74","post","type-post","status-publish","format-standard","has-post-thumbnail","hentry","category-integration-apis","category-podcast"],"podcast_audio":{"audio_url":"https:\/\/a.sfdcstatic.com\/developer-website\/podcast\/episodes\/SDP_Ep012_Master.mp3","duration":"00:12:39"},"featured_image":"https:\/\/d259t2jj6zp7qm.cloudfront.net\/images\/sites\/2\/20210210111955\/Screen-Shot-2020-01-08-at-4.53.39-PM.png?w=150&h=150&crop=1","related_posts":[{"post":{"ID":14,"post_author":"378","post_date":"2021-01-04 07:00:14","post_date_gmt":"2021-01-04 07:00:14","post_content":"<span style=\"font-weight: 400;\"><img class=\"size-medium wp-image-15 alignleft\" src=\"https:\/\/developer.salesforce.com\/blogs\/podcast\/wp-content\/uploads\/sites\/2\/2021\/02\/Sliceheadshot-2-1-295x300.png\" alt=\"\" width=\"295\" height=\"300\" \/><\/span>\r\n\r\n&nbsp;\r\n\r\n<span style=\"font-weight: 400;\">Joe Andolina is a Director of Technical Marketing here at Salesforce. Today, I\u2019m sitting down to talk with him about his long history of doing some pretty crazy experiments with the Internet of Things. We also discuss how some of that has dealt back into Work.com and the COVID-19 pandemic.\u00a0<\/span>\r\n\r\n&nbsp;\r\n\r\n<span style=\"font-weight: 400;\">Joe even created his own degree in visual computer science to blend the real world with the digital world. Tune in to hear all about his ingenuity and what he\u2019s doing today with IoT and Work.com.<\/span>\r\n\r\n&nbsp;\r\n\r\n&nbsp;\r\n\r\n&nbsp;\r\n\r\n<b>Show Highlights:<\/b>\r\n<ul>\r\n \t<li style=\"font-weight: 400;\"><span style=\"font-weight: 400;\">Joe\u2019s earliest experiences with computers.<\/span><\/li>\r\n \t<li style=\"font-weight: 400;\"><span style=\"font-weight: 400;\">What his 11 years at Adobe were like.<\/span><\/li>\r\n \t<li style=\"font-weight: 400;\"><span style=\"font-weight: 400;\">How he started getting interested in the hardware side of things.<\/span><\/li>\r\n \t<li style=\"font-weight: 400;\"><span style=\"font-weight: 400;\">The swarm of wireless devices he built that use mesh networking for audience interactivity.<\/span><\/li>\r\n \t<li style=\"font-weight: 400;\"><span style=\"font-weight: 400;\">Some of the hardware that you can use to set up something like a fever-testing kiosk.<\/span><\/li>\r\n \t<li style=\"font-weight: 400;\"><span style=\"font-weight: 400;\">How flow streamlines things to the point of moving away from programmatic code and towards visual code.<\/span><\/li>\r\n \t<li style=\"font-weight: 400;\"><span style=\"font-weight: 400;\">What Density.io is and how it can help with tracking occupancy.<\/span><\/li>\r\n \t<li style=\"font-weight: 400;\"><span style=\"font-weight: 400;\">How Joe structured Salesforce data to be able to track occupancy.<\/span><\/li>\r\n \t<li style=\"font-weight: 400;\"><span style=\"font-weight: 400;\">Tricks for tracking proximity.<\/span><\/li>\r\n \t<li style=\"font-weight: 400;\"><span style=\"font-weight: 400;\">IoT hardware to pick up if you\u2019re interested in trying that architecture out.<\/span><\/li>\r\n<\/ul>\r\n<b>Links:<\/b>\r\n<ol>\r\n \t<li style=\"font-weight: 400;\"><span style=\"font-weight: 400;\">Joe on LinkedIn - <\/span><a href=\"https:\/\/www.linkedin.com\/in\/joeandolina\/\"><span style=\"font-weight: 400;\">https:\/\/www.linkedin.com\/in\/joeandolina<\/span><\/a><\/li>\r\n \t<li style=\"font-weight: 400;\"><span style=\"font-weight: 400;\">Joe on Instructables - <\/span><a href=\"https:\/\/www.instructables.com\/member\/joe.andolina\/\"><span style=\"font-weight: 400;\">https:\/\/www.instructables.com\/member\/joe.andolina<\/span><\/a><\/li>\r\n \t<li style=\"font-weight: 400;\"><span style=\"font-weight: 400;\">Joe on Github - <\/span><a href=\"https:\/\/github.com\/jandolina\"><span style=\"font-weight: 400;\">https:\/\/github.com\/jandolina<\/span><\/a><\/li>\r\n<\/ol>\r\n<b>Joe's Demos:<\/b>\r\n<ol>\r\n \t<li style=\"font-weight: 400;\"><span style=\"font-weight: 400;\">Nissan Connected Car - <\/span><a href=\"https:\/\/salesforce.vidyard.com\/watch\/Natcj6SjW8wxgb4ziz51BY\"><span style=\"font-weight: 400;\">https:\/\/salesforce.vidyard.com\/watch\/Natcj6SjW8wxgb4ziz51BY<\/span><\/a><\/li>\r\n \t<li style=\"font-weight: 400;\"><span style=\"font-weight: 400;\">Touchless Kiosk - <\/span><a href=\"https:\/\/salesforce.vidyard.com\/watch\/wnU9qHTXncgum1Cs1KsYYU\"><span style=\"font-weight: 400;\">https:\/\/salesforce.vidyard.com\/watch\/wnU9qHTXncgum1Cs1KsYYU<\/span><\/a><\/li>\r\n \t<li style=\"font-weight: 400;\"><span style=\"font-weight: 400;\">Compliant Wash Station - <\/span><a href=\"https:\/\/salesforce.vidyard.com\/watch\/YSsDE1t4ntfN64EC1pYxqu\"><span style=\"font-weight: 400;\">https:\/\/salesforce.vidyard.com\/watch\/YSsDE1t4ntfN64EC1pYxqu<\/span><\/a><\/li>\r\n \t<li style=\"font-weight: 400;\"><span style=\"font-weight: 400;\">Room Occupancy - <\/span><a href=\"https:\/\/salesforce.vidyard.com\/watch\/i2dNBepExsptHYoyqGKJDf\"><span style=\"font-weight: 400;\">https:\/\/salesforce.vidyard.com\/watch\/i2dNBepExsptHYoyqGKJDf<\/span><\/a><\/li>\r\n \t<li style=\"font-weight: 400;\"><span style=\"font-weight: 400;\">Manual vs Automated Thermal Scan - <\/span><a href=\"https:\/\/salesforce.vidyard.com\/watch\/CiAQb3aNJvV4RcPpmfL8vV\"><span style=\"font-weight: 400;\">https:\/\/salesforce.vidyard.com\/watch\/CiAQb3aNJvV4RcPpmfL8vV<\/span><\/a><\/li>\r\n \t<li style=\"font-weight: 400;\"><span style=\"font-weight: 400;\">Workspace Crowding - <\/span><a href=\"https:\/\/salesforce.vidyard.com\/watch\/s8DqzxH3AqMnc2wA5nVaww\"><span style=\"font-weight: 400;\">https:\/\/salesforce.vidyard.com\/watch\/s8DqzxH3AqMnc2wA5nVaww<\/span><\/a><\/li>\r\n \t<li style=\"font-weight: 400;\"><span style=\"font-weight: 400;\">Proximity Masks - <\/span><a href=\"https:\/\/salesforce.vidyard.com\/watch\/J7LYjtXCFq5oxwpDGqaWU6\"><span style=\"font-weight: 400;\">https:\/\/salesforce.vidyard.com\/watch\/J7LYjtXCFq5oxwpDGqaWU6<\/span><\/a><\/li>\r\n \t<li style=\"font-weight: 400;\"><span style=\"font-weight: 400;\">Iron Maiden AR - <\/span><a href=\"https:\/\/salesforce.vidyard.com\/watch\/Uzrp2jMBYke33pVsZZwS7s\"><span style=\"font-weight: 400;\">https:\/\/salesforce.vidyard.com\/watch\/Uzrp2jMBYke33pVsZZwS7s<\/span><\/a><\/li>\r\n \t<li style=\"font-weight: 400;\"><span style=\"font-weight: 400;\">Van Build: <\/span><a href=\"http:\/\/www.andomation.com\/van-build\"><span style=\"font-weight: 400;\">http:\/\/www.andomation.com\/van-build<\/span><\/a><\/li>\r\n<\/ol>\r\n&nbsp;\r\n\r\n<strong>Episode Transcript<\/strong>\r\n\r\n&nbsp;\r\n\r\nJoe Andolina:\r\nI was studying computer science at Chico in California. And then a GE class, I took sculpture and I started to love it. So I was wondering how I could blend the real world with also the digital world.\r\n\r\nJosh Birk:\r\nThat is Joe Andolina, director of Technical Marketing here at Salesforce. I'm Josh Birk, your host for the Salesforce Developer Podcast. Here on the podcast, you'll hear stories and insights from developers for developers.\r\n\r\nJosh Birk:\r\nToday, we sit down and talk with Joe about his long history of doing some pretty crazy experiments with IoT, and how some of that has dealt back into Work.com and the pandemic. There, Joe was describing how he created his own degree in visual computer science. To kick things off, we're going to start back there.\r\n\r\nJoe Andolina:\r\nA side note is I took three semesters of trampoline, getting trained by this person who taught NASA astronauts how to navigate 3D space.\r\n\r\nJosh Birk:\r\nNo way.\r\n\r\nJoe Andolina:\r\nSo I took all that subject material and wrote my own major. I took all sorts of 3D graphics courses and graduate courses as an undergrad, and then bounced on the trampoline and visualized it in the computer, and then I made interactive sculptures. It was super fun.\r\n\r\nJosh Birk:\r\nWow, that is pretty cool stuff. Before that, what was your earliest experiences with computers?\r\n\r\nJoe Andolina:\r\nThis is a funny one. Macy's back in the day was very community active, and so they had a build a robot competition. So I took a few cardboard boxes and stacked them up. I've always loved to take things apart, and so I took some radio parts and glued them on the inside of the head. So-\r\n\r\nJosh Birk:\r\nNo way.\r\n\r\nJoe Andolina:\r\n... it had a door on the side and you could see inside. And I won an Atari 400.\r\n\r\nJosh Birk:\r\nOh my God. That is totally awesome. I mean, Atari 400, that's like gold for a kid.\r\n\r\nJoe Andolina:\r\nSo what you would do is... Well, it's not the 1200. So you'd have to play a tape into it and then you'd have to copy pages of code into it, and then you played guess one to a hundred. That's my earliest programming.\r\n\r\nJosh Birk:\r\nNice. And I do like the fact that... When you say tape, that's a proper cassette tape, right?\r\n\r\nJoe Andolina:\r\nYeah, it was just after the eight-track.\r\n\r\nJosh Birk:\r\nNice. Okay, you also spent 11 years at Adobe. What was your job like back then?\r\n\r\nJoe Andolina:\r\nThat was pretty cool too. Macromedia just came out with Flex, which was server-side ActionScript, which is basically server-side Flash. So I got brought in to do that as a consulting role. My first job there was to make Yahoo Maps as a single page interactive thing right as Google Maps was coming out. So we did that. That was fun.\r\n\r\nJoe Andolina:\r\nSo that was the consulting team, and the consulting team kind of got dissolved or it just wasn't doing Flex anymore. That got end of lifed. So then I was one of the few developers in the design department, and they would come to us and say, \"Is this possible?\" And we're like, \"Yeah, that's possible,\" and we'd do proof of concepts. And then several of our products got shipped, specifically the last one. One of the ones I worked on was Adobe Shape. It would use the camera to real-time catch vector images, and it turned out to just be a logo stealer.\r\n\r\nJosh Birk:\r\nNice. Okay, so I have to ask a side question there. I don't know if we've had this conversation before around Flex, because Flex was also how I got into the Salesforce ecosystem, because they needed somebody who developed rich and interactive applications, which was sort of all the rage back then.\r\n\r\nJoe Andolina:\r\nNice.\r\n\r\nJosh Birk:\r\nAnd the guy who got me into Flex was James Ward over at Adobe. Were you compatrIoTs with James?\r\n\r\nJoe Andolina:\r\nI do know James Ward. He and I, we did collaborate on one project together. I cannot tell you what it was right now. But I started out as just like, \"Hey James...\" He was an evangelist, I believe, at the time, so you'd always see his work. And then I'm like, \"Well, I need to know that.\" So I started emailing him and then we became buddies. Yeah. He was at Salesforce for a good time, but I don't think he's there anymore.\r\n\r\nJosh Birk:\r\nI believe he's over at Google now.\r\n\r\nJoe Andolina:\r\nOkay.\r\n\r\nJosh Birk:\r\nYeah.\r\n\r\nJoe Andolina:\r\nYeah, good guy.\r\n\r\nJosh Birk:\r\nGood guy. And I still like to tease him about just how far Flex actually made it.\r\n\r\nJoe Andolina:\r\nYeah. I mean, it was amazing to be able to code something instead of use the GUI, kind of like what SFDX does at Salesforce.\r\n\r\nJosh Birk:\r\nWell, yeah, and also, it was nicely componentized. And I think all jabs aside, at the time, there wasn't much of a competitor to Flex. I remember Microsoft came out with Silverlight and some other stuff like that. But at the time, if you really wanted to create a complicated user interface and you didn't want to code it in Macromedia Flash, Flex was kind of the go-to.\r\n\r\nJoe Andolina:\r\nYeah, and that was pretty cutting edge. That was before we had web apps and node and all that stuff.\r\n\r\nJosh Birk:\r\nRight, right. Okay, then how did you come to work at Salesforce?\r\n\r\nJoe Andolina:\r\nWell, a lot of my friends work at Salesforce. I think it might be a marketing thing, but I'm not a sales guy, so I saw the name and decided, \"That's not for me.\" And then I found out what they do.\r\n\r\nJoe Andolina:\r\nSpecifically, I know Robin Guido. She and I worked together on the consulting team back in Macromedia.\r\n\r\nJosh Birk:\r\nGot it.\r\n\r\nJoe Andolina:\r\nThere's a offsite that Parker does every year called the Innovation Summit. They need a fun element, and so before I worked at Salesforce, Robin brought me in to do a tinkering event with a man called Gever Tulley, who runs a cool school in San Francisco. We put together this thing where you got a box of Popsicle sticks and tape and glue, and your challenge was to get a ball to roll exactly... Build a contraption that would have a pinball like a steel ball bearing roll for exactly two seconds. We had a cup at the bottom with wires sticking out of it. And then we had a solenoid to launch it at the top so you could get good timing.\r\n\r\nJoe Andolina:\r\nSo everyone built their machines. Some of them worked, some of them didn't. And then what we did was they left for the night and when they came back the next day, we had taken and made a waterfall out of all the working machines, because the wires coming out weren't for the timer, they were actually to trigger the next machine.\r\n\r\nJosh Birk:\r\nNice.\r\n\r\nJoe Andolina:\r\nSo that was my first real Salesforce project. And then I got to do that project for the Innovation Summit two more times-\r\n\r\nJosh Birk:\r\nGot it.\r\n\r\nJoe Andolina:\r\n... as an employee, which was super fun.\r\n\r\nJosh Birk:\r\nThat's so jets. I'm having flashbacks to train to drop an egg off of a ceiling and not have it break kind of thing.\r\n\r\nJoe Andolina:\r\nYeah, so we talked about, \"Should we do an egg drop? Should we get a hot air balloon?\" Like all the things.\r\n\r\nJosh Birk:\r\nNice, nice. Well, so then that kind of segues into my next question in that you've got a history of both software and hardware. So how did you start getting interested in the hardware side of things?\r\n\r\nJoe Andolina:\r\nWell, that takes us back to college. Because in sculpture, this... Neil Grimmer, I believe he was at IDEO for awhile. He would drive to Chico several days a week and teach art in technology courses, because he was a sculptor at the time. He introduced me to the basic stamp, so that you write basic into. But you could control the pins and turn stuff on and off and deal with sensors. So from that class, I started loving microcontrollers and just learning hardware on my own. So you get the theme here. I've always made weird things.\r\n\r\nJosh Birk:\r\nRight.\r\n\r\nJoe Andolina:\r\nBut hardware with microcontrollers wasn't paying the bills, whereas software development did. So I-\r\n\r\nJosh Birk:\r\nGot it.\r\n\r\nJoe Andolina:\r\n... doubled down on software development. But any time there was a chance to interact with the real world through microcontrollers or Wiimotes or connects or whatever, I was always super into it.\r\n\r\nJosh Birk:\r\nGot it. Got it.\r\n\r\nJoe Andolina:\r\nSo finally, I've blended all that and made that my job.\r\n\r\nJosh Birk:\r\nNice. And then on your LinkedIn, I noted that you have a bit where you built a swarm of wireless devices that use mesh networking for audience interactivity. I have to know everything about that.\r\n\r\nJoe Andolina:\r\nOkay, so let's go back to the Innovation Summit. What happened was we made our own cloud boards. They're shaped like clouds and they're internet connected, Bluetooth-enabled. They have little LCD screens on them. So what the prompt that year was was everybody, their teams, had to make a percussive instrument. Because they each got a single note off of a xylophone that had a microphone in it, and then they had a ball... This was with wooden balls, and they'd have to drop... There was a ball dropper mechanism that they got. But between the ball and the note, they had to build the whole machine.\r\n\r\nJoe Andolina:\r\nSo what happened was they'd make a machine by pushing a button that would drop the balls on to the note. And behind the scenes, the microcontroller is actually timing the release to the impact, because every single machine would have a different offset. And once people got far enough, there was a mobile app and they could control their machine with this mobile app and do patterns into it. So a shave and a haircut was kind of a halfway through the challenge challenge.\r\n\r\nJosh Birk:\r\nNice.\r\n\r\nJoe Andolina:\r\nAnd then at the very end of this project, what happens or the big reveal was we had the audience pressing their buttons, try to follow a line along and play a song. Like when you saw the yellow note, you'd press your button. And it sounded like crap on purpose. But then I told everyone to load up their machines and we're going to try again, close your eyes. And with their eyes closed, we started and played the machines with all their offsets from our server, and it played the Brandenburg Concerto on this hundred devices. We called the project Distributed Symphony.\r\n\r\nJosh Birk:\r\nNice. Oh my God.\r\n\r\nJoe Andolina:\r\nIt was pretty cool.\r\n\r\nJosh Birk:\r\nThat's pretty cool. That is pretty cool. Okay, so now today, I want to focus on some of the demos you've been working on related to Work.com and the pandemic. Starting with fever testing, can you describe some of the hardware that's out there that you can use to set up something like a simple fever testing kiosk?\r\n\r\nJoe Andolina:\r\nYeah. Once the pandemic came, everyone was like, \"What are we going to do?\" So very quickly it became apparent that we're going to need to be able to deal with fevers, and Salesforce released Work.com. But Salesforce as a policy is not automating Work.com, but a lot of the customer ask was for automated solutions. So we started going down the road of the art of the possible, what is automated Work.com look like?\r\n\r\nJoe Andolina:\r\nSo FLIR, the company, makes a $500 camera that clicks on an iPhone. That camera isn't FDA approved for human scanning, because the error is so large.\r\n\r\nJosh Birk:\r\nGot it.\r\n\r\nJoe Andolina:\r\nIt has like a four degree error, and that's exactly what a fever is. But that was the camera I used for all the demos that I was doing. It was enough to show that, \"Yes, it's possible,\"\r\n\r\nJoe Andolina:\r\nFrom there, I found that Seek, it's thermal.com, they make a scanning kiosk. I believe their API is Windows only. And then there's a whole slew of other companies that are now making integratable stand-alone kiosks for thermal scanning.\r\n\r\nJoe Andolina:\r\nSo if you want to play with thermal cameras, FLIR is a great solution for low end, but not necessarily human scanning. I think their next product that's FDA approved is like $10,000. But the Seek one I mentioned is only $1,500.\r\n\r\nJosh Birk:\r\nGot it. So if you want a prototype but not necessarily use it in production, that's a lot more reasonable.\r\n\r\nJoe Andolina:\r\nRight.\r\n\r\nJosh Birk:\r\nAnd then what's it like on the iPad to communicate with that?\r\n\r\nJoe Andolina:\r\nThere's an Apple API from FLIR. That's pretty super easy. But what happened was as we went down the road of all these COVID related things, we decided that you're not allowed to touch anything. So a side effect of that was we got the new iPad that has the LiDAR, so you can do motion tracking. That new iPad added motion tracking, but it got rid of the lightening port, so the camera didn't work anymore.\r\n\r\nJosh Birk:\r\nNo way.\r\n\r\nJoe Andolina:\r\nYeah. So in the demo video, there's an iPhone running the thermal scanning, and then the iPad had to be Bluetoothed to the phone to ask it what temperature it was seeing. So that is how the communication worked.\r\n\r\nJosh Birk:\r\nGot it. Got it.\r\n\r\nJoe Andolina:\r\nThe rabbit hole goes deep.\r\n\r\nJosh Birk:\r\nRight, right. Exactly. I do like... I can almost hear your eyes light up when you said the word LiDAR though, because that's pretty cool technology, right?\r\n\r\nJoe Andolina:\r\nYeah. Also, I was looking for the word. I was happy to find it and I'm excited about it.\r\n\r\nJosh Birk:\r\nNice. Totally side question. How easy is it to fake a fever for demo purposes?\r\n\r\nJoe Andolina:\r\nI had these little heat packs. You boil them in water. They're really cool. You click a button and it crystallizes.\r\n\r\nJosh Birk:\r\nNice.\r\n\r\nJoe Andolina:\r\nYou hold it on your face for five seconds, and that gets you over the four degrees we talked about.\r\n\r\nJosh Birk:\r\nGot you.\r\n\r\nJoe Andolina:\r\nAnd you're good to go.\r\n\r\nJosh Birk:\r\nNice. Okay, when I first started working with Salesforce and IoT, the solutions were really pretty heavy on the programmatic side. If I wanted to talk to Salesforce, I would wrap together some combination of REST APIs and triggers, maybe a custom REST API. And then if I wanted the device to react to something, it was an HTTP callout or maybe a streaming API push. Walk me through now what it's like to do something like create a case based on that temperature going up on the iPad.\r\n\r\nJoe Andolina:\r\nWell, everything you just said is still true. But yeah, so what we do is depending on which device needs to talk to Salesforce, you can OAuth straight into a connected app, and then triggering flows is how we do it. So you build a flow and pass it several arguments, like user ID, temperature. Whatever data you need for your given use case. But then within Flow Builder, it's just create a case. So you just hit that node in your flow and you're good to go.\r\n\r\nJosh Birk:\r\nWell-\r\n\r\nJoe Andolina:\r\nSo there's... Yeah.\r\n\r\nJosh Birk:\r\nYeah. That's an interesting part, I think, because it was always a... A decision was like, \"Where does the business process live?\" It shouldn't live on the device, right? The device is just... All its job is is to say the temperature is 94, or the temperature is 96, the temperature is 98, right? And then-\r\n\r\nJoe Andolina:\r\nOr even just anomalies.\r\n\r\nJosh Birk:\r\nRight. Everything's fine, everything's fine. No, Joe has a fever. It's 102. And then my business logic was usually wrapped somewhere else. But it sounds like we can put a lot of that logic into flows now.\r\n\r\nJoe Andolina:\r\nYou can. And then, like I said, it depends who's talking to Salesforce. Because another solution that we use a lot is to have a Heroku server with an endpoint, because some of the microcontrollers don't have the memory to negotiate the HTTPS connection and do the OAuth. So in those cases, we'll hit Heroku endpoints and throw the business logic on the Heroku side before it gets to a flow. And then that'll simplify the flow.\r\n\r\nJosh Birk:\r\nGot it, got it.\r\n\r\nJoe Andolina:\r\nBut you're spot on with like, \"Do all the processing as far away as you can, unless it has to do with business logic, and then move it in.\"\r\n\r\nJosh Birk:\r\nRight, right. Well, and I always found that the events of having platform events and things like that also made coding that stuff so much easier, because you can basically just send a message over the wire. Kind of like how the device is supposed to be designed.\r\n\r\nJoe Andolina:\r\nYeah, pretty much. Now I just noticed that there's a new flow type, and it's platform event triggered flow.\r\n\r\nJosh Birk:\r\nNice. So you can even remove a little bit more Apex there.\r\n\r\nJoe Andolina:\r\nYeah. There's zero Apex.\r\n\r\nJosh Birk:\r\nWell, and that was going to be my final question. It was how streamlined are we getting to this where we're almost getting to... I don't want to say no code, because I actually literally just had a conversation about how flow is more visual code, but not necessarily the programmatic code that we're thinking of.\r\n\r\nJoe Andolina:\r\nRight. I've been working since March, so I don't know how long our... So eight months?\r\n\r\nJosh Birk:\r\nYeah.\r\n\r\nJoe Andolina:\r\nAnd there's been not one line of Salesforce code-\r\n\r\nJosh Birk:\r\nNice.\r\n\r\nJoe Andolina:\r\n... for these things.\r\n\r\nJosh Birk:\r\nGot it.\r\n\r\nJoe Andolina:\r\nOnly I need to do some JSON processing, and so that's today. So that's the first time I've done any Apex coding in eight months.\r\n\r\nJosh Birk:\r\nLet's unpack that a little bit. No joke intended. So the flow is doing most of the work, but Apex is going to be doing this very specialized job of decoding that JSON for you.\r\n\r\nJoe Andolina:\r\nYeah. The flow has a way to get out. You do an action, and if you have a... What is the word? I can click on my developer console. Hold on real quick.\r\n\r\nJosh Birk:\r\nOkay.\r\n\r\nJoe Andolina:\r\nIf you have an invocable method on your Apex call, then that'll show up in your flow as an action. So you just call it right there.\r\n\r\nJosh Birk:\r\nNice. Nice.\r\n\r\nJoe Andolina:\r\nSo the integrations is pretty tight, although my current one isn't working yet.\r\n\r\nJosh Birk:\r\nGot it. Okay, so going to a different use case, what is density.io and how can it help with tracking occupancy?\r\n\r\nJoe Andolina:\r\nDensity.io is... Well, let me take a step back. We've been working with all sorts of hardware manufacturers and there's crazy devices out there. It's pretty exciting. They have a camera that can take everybody's temperature in a whole room all at once.\r\n\r\nJosh Birk:\r\nReally?\r\n\r\nJoe Andolina:\r\nYeah. There's some really cool stuff out there. So density.io is another one of those cool objects or cool developers. It's a human sensor that goes over doorways, ideally, and it tracks flow in and out of a room anonymously. So if people had Bluetooth badges, you could add a badge scanner to it to see who's going in and out. But our use case was for restroom occupancy to see if they were too crowded. You don't want to be in small spaces. So it's just anonymously letting you know if a bathroom was full or crowded.\r\n\r\nJosh Birk:\r\nSo is it detecting velocity then? It knows somebody is going in versus somebody is coming out?\r\n\r\nJoe Andolina:\r\nI think it does. It's directional and it's just blob detection, basically. Very low level computer vision.\r\n\r\nJosh Birk:\r\nGot it.\r\n\r\nJoe Andolina:\r\nNot low level, but very simple.\r\n\r\nJosh Birk:\r\nBut low fidelity, because it doesn't care what it looks like, it just cares where it's going.\r\n\r\nJoe Andolina:\r\nRight.\r\n\r\nJosh Birk:\r\nGot it. Talk to me a little bit about the Salesforce side of the setup of that demo. How did you structure the data in order to be able to track that occupancy?\r\n\r\nJoe Andolina:\r\nA lot of what we've been doing is integrating cloud to cloud, not the devices. Because a lot of the developers have their own clouds gathering up all this data.\r\n\r\nJoe Andolina:\r\nMy favorite so far has been SenseAgent. They're an Australian company, and they have these devices. There's four of them over my head right now. But they do light, noise level, volatile chemicals, CO2, all this stuff. In addition, they also have Bluetooth capabilities. So it can track real time people's proximity to one another, and who's in the room, and where they're standing. It does really cool stuff. But all we had to do for them, and the same with density.io, is just write an integration to their cloud into our stuff, and then make custom objects for the portions of the data that we're interested in. Sometimes that's just another Heroku endpoint that they call periodically or once certain thresholds are met.\r\n\r\nJosh Birk:\r\nGot it. Got it. So once again, very kind of low level and just having APIs talking to each other to make sure important data is getting to the right place.\r\n\r\nJoe Andolina:\r\nRight.\r\n\r\nJosh Birk:\r\nNice. Now in that demo, you're using your customized microcontrollers there, right?\r\n\r\nJoe Andolina:\r\nRight. Those are the leftovers from that Distributed Symphony project.\r\n\r\nJosh Birk:\r\nNice. Nice. And then you have that device reacting to the state of things in Salesforce. So that's the opposite route of what we've been kind of talking about. And by the way, this is one of my favorite IoT tricks. It's like seeing Doug's Sparky's arm move, just because some opportunity changed. That's like black magic for some people who haven't seen that kind of reaction before, right?\r\n\r\nJoe Andolina:\r\nYeah.\r\n\r\nJosh Birk:\r\nSo how is that device getting that near real-time response to something that's happening in the cloud?\r\n\r\nJoe Andolina:\r\nYeah. I am there with you. Using Salesforce to control objects outside in the real world is magical, because Salesforce was built to consume data. It's very rarely outputting the data. So what these devices are doing is calling flows directly. So if you use a platform event, you can call a flow, and that's fine. But if you call a flow directly, then you can get a response from it.\r\n\r\nJoe Andolina:\r\nThe device says, \"I'm this room at this location. What's my occupancy?\" And then it sends back what the occupancy is, what color the light should be, and what image to display on your screen.\r\n\r\nJosh Birk:\r\nGot you.\r\n\r\nJoe Andolina:\r\nSo like we said earlier, all that business logic is on server side. This thing's dumb. It's like, \"There's this many people. Turn my light this color.\" It doesn't even have to change its light color based on the number it gets, because all that business logic is handled in the flow.\r\n\r\nJosh Birk:\r\nWhich is going back to that design principle of IoT likes to send only the data it wants and only the data it needs kind of thing. So you're saying that message is as short and simple as possible.\r\n\r\nJoe Andolina:\r\nYeah, no noise.\r\n\r\nJosh Birk:\r\nNo noise. Nice. That's a good way to put it. Are there other tricks about tracking proximity with... I guess is there specific things with Bluetooth and hardware to know you're that employee and you're walking up to that desk?\r\n\r\nJoe Andolina:\r\nYeah, so a lot of the kiosks we've built using the iPad, they use just regular Bluetooth, which has general bands of like, \"I see this many devices. They're near, far, or immediate.\" So that's really cool. And you have those IDs. So if it's somebody's badge...\r\n\r\nJoe Andolina:\r\nThat's another thing. HID Global and a bunch of other companies are now building employee badges that have Bluetooth signatures. So if your building's instrumented correctly, you'll know where everybody is within... Or at least the last sensor they went by. If you have enough sensors, like the SenseAgent stuff where you build a grid, you'll know exactly where people are at all times. Got sidetracked on the question there.\r\n\r\nJosh Birk:\r\nNo, that's-\r\n\r\nJoe Andolina:\r\nI was winding up for the answer and I missed it.\r\n\r\nJosh Birk:\r\nNo, that's kind of where I was going with. I was just kind of curious as to some of the specifics of how that hardware goes one step beyond and says, \"You're this employee and you're in this location,\" kind of thing.\r\n\r\nJoe Andolina:\r\nRight. So that's another place where Salesforce shines is because you've given out these badges that have anonymous IDs, right? And only when you come back, when you take that ID, you can tie it to the user record securely inside of Salesforce. So then it knows what door and where you were at. That's just basically Bluetooth advertising data.\r\n\r\nJosh Birk:\r\nGot you.\r\n\r\nJoe Andolina:\r\nSo your phone is always trying to connect to networks and saying, \"Hey, I'm this person,\" or, \"Hey, I want to connect all the devices around me.\" So even without those batches, you can do anonymous tracking of devices just by listening, which is pretty cool.\r\n\r\nJosh Birk:\r\nNice.\r\n\r\nJoe Andolina:\r\nBluetooth is only accurate to about three to six feet. And then there's NRF, which devices which are... You can get accuracy down to the inch, which is pretty cool.\r\n\r\nJosh Birk:\r\nWow, nice.\r\n\r\nJoe Andolina:\r\nSo if you get a different flavor of radio frequency, then you get your different resolution. Because you can even use wifi for triangulation, but it's not super accurate.\r\n\r\nJosh Birk:\r\nRight, right. Now, walk me through... Let's take the scenario on the Salesforce side of things. So the demo where somebody's at a workstation and somebody gets too close, what's the back and forth on the Salesforce side to kind of like track that data and then end up in a resolution that might require a case?\r\n\r\nJoe Andolina:\r\nIn the scenario where somebody is at a workstation, that workstation is considered occupied, and then somebody else comes and crowds the workstation for a given amount of time?\r\n\r\nJosh Birk:\r\nMm-hmm (affirmative).\r\n\r\nJoe Andolina:\r\nThat'll put it into an alert state. So you'll have records for who's there. You'll know who was there first and who did the crowding. And then you'll also know their durations of how long they were at the workstation, just by their Bluetooth badges and then the occasional polling.\r\n\r\nJoe Andolina:\r\nBut then, again, just to sound like a broken record, we just throw it into a flow. And if your conditions are met that there's more than X number of people at this station for this amount of time, schedule a support ticket to have the station cleaned and also schedule a case to go do follow up with those people and make sure they're not contaminated and stuff.\r\n\r\nJosh Birk:\r\nGot it.\r\n\r\nJoe Andolina:\r\nBut all that comes down to business use cases for the customer, right? If they are okay with people hanging out until somebody has a fever, then they'll use that data to figure... They might incorporate that data into contact tracing or something.\r\n\r\nJosh Birk:\r\nYeah. I guess we keep coming back to this, your architecture can remain 90% the same, and all that's doing is sending the messages that are important across the wire. And then the complicated stuff, the business logic, that can be handled in flow, and that can be customized down to specifically what somebody actually needs.\r\n\r\nJoe Andolina:\r\nRight. Because if employees start working in employee pods or say they're family members, you're going to have to be able to have exceptions where yeah, those people crowded, but they're okay to crowd.\r\n\r\nJosh Birk:\r\nRight. That's the work team that's actually assigned to do that. Got you.\r\n\r\nJosh Birk:\r\nOkay, we promised we were going to give Charlie Issacs a shout-out here, since he was involved in some of these. How's Charlie doing these days?\r\n\r\nJoe Andolina:\r\nCharlie's doing great. I can't thank him enough for this stuff.\r\n\r\nJosh Birk:\r\nNice.\r\n\r\nJoe Andolina:\r\nAnd if we could just rewind the conversation back to the first IoT with the marbles, Charlie was part of that.\r\n\r\nJosh Birk:\r\nNice.\r\n\r\nJoe Andolina:\r\nCharlie has brought me in for all these demos, working with outside clients to show them the art of the possible.\r\n\r\nJosh Birk:\r\nGot it, got it.\r\n\r\nJoe Andolina:\r\nSo he is the IoT master.\r\n\r\nJosh Birk:\r\nHe is very centered to the IoT world of Salesforce. And once again, I love the fact that even though I'm basically stuck at home all the time, I keep running into Charlie.\r\n\r\nJoe Andolina:\r\nHe's like your stalker.\r\n\r\nJosh Birk:\r\nI know. Even in a virtual world, Charlie Issacs is probably there.\r\n\r\nJoe Andolina:\r\nI believe, Josh, that you and I... I know you because of Charlie.\r\n\r\nJosh Birk:\r\nRight. Yes, exactly. And he has been this... He's kind of like the Kevin Bacon of the IoT world in Salesforce, I feel like.\r\n\r\nJoe Andolina:\r\nOuch.\r\n\r\nJosh Birk:\r\nOkay, so I know you've done a lot of cool stuff both in and outside of the Salesforce ecosystem. So what would you consider to be one of your neatest projects, either Salesforce or not Salesforce for-\r\n\r\nJoe Andolina:\r\nOh man. Okay.\r\n\r\nJosh Birk:\r\nYou can take two if it's hard to pick-\r\n\r\nJoe Andolina:\r\nYeah, so I'd like to say-\r\n\r\nJosh Birk:\r\n... the favorite of your children.\r\n\r\nJoe Andolina:\r\n... building custom hardware for that Distributed Symphony. I've never built a circuit board before, so that was for a heavy duty circuit board with surface-mount devices. So that was the coolest Salesforce thing I've done.\r\n\r\nJosh Birk:\r\nGot you.\r\n\r\nJoe Andolina:\r\nAnd then I just finished or we're finishing up a three year camper conversion from a cargo van. So-\r\n\r\nJosh Birk:\r\nWhat?\r\n\r\nJoe Andolina:\r\nIt was absolutely blank when we got it, and now it's got hardwood floors, it has a winch to pull motorcycles in it, unfolding beds, it's got ground effects. Yeah, so that's pretty awesome because... Yeah, and the electrical system that went in there is crazy, because why not?\r\n\r\nJosh Birk:\r\nGround effects like LED lighting on the undercarriage?\r\n\r\nJoe Andolina:\r\nYeah. My friends are into rock crawling. So if you ever get caught out rock crawling at night, they make these kits where it lights your wheel wells so you can see where you're going.\r\n\r\nJosh Birk:\r\nNo way.\r\n\r\nJoe Andolina:\r\nSo then when I was buying it... And then also another thing is if you get to a campsite and you just turn those on, it lights the ground so you can set up faster. So I'm like, \"Yeah, I'll get those.\" And I'm like, \"Wait, they make green ones. They make blue ones.\" And then I'm like, \"Why not RGB?\" I think now it's just a cool factor. Maybe not even cool, but it's just more fun to make the van exciting.\r\n\r\nJosh Birk:\r\nNice. Now, for the people out there who are not Joe and are not creating their own custom microcontrollers and IoT hardware, do you have... And I'm actually kind of asking this for myself because I've been out of the loop for a little bit. Is there IoT hardware that you kind of recommend people pick up if they just kind of wanted to try some of this IoT architecture that we're talking about?\r\n\r\nJoe Andolina:\r\nI mean, there's all sorts of just IoT lights and things like that that you can get off Amazon. And then the easiest way to get into IoT is get something that then ties into if this, then that.\r\n\r\nJosh Birk:\r\nYes, nice.\r\n\r\nJoe Andolina:\r\nSo if you just find any device you want that's if this, then that compatible, you should be good to go. And then-\r\n\r\nJosh Birk:\r\nSorry. Well, I should note, just to kind of bring it full circle, there is a Salesforce if this, then that, which was generated by our beautiful friend James Ward.\r\n\r\nJoe Andolina:\r\nWhoa.\r\n\r\nJosh Birk:\r\nThere you go.\r\n\r\nJoe Andolina:\r\nSo you could extend that to do all the work we've been doing. Maybe I should just have been doing that instead.\r\n\r\nJosh Birk:\r\nOkay. Now, I think this question is actually potentially going to be a little difficult because you have so many technical hobbies, but what is your favorite non-technical hobby?\r\n\r\nJoe Andolina:\r\nThere's skiing or dirt biking.\r\n\r\nJosh Birk:\r\nNice.\r\n\r\nJoe Andolina:\r\nI love adrenaline, and sitting behind a desk is not that exciting.\r\n\r\nJosh Birk:\r\nWell, it doesn't surprise me because you also have a pretty impressive hardware shop at home, right?\r\n\r\nJoe Andolina:\r\nI do. So back to college, that sculpture class ruined me because I had access to TIG welders, MIG welders, a wood shop, a metal shop. That's also when I learned how to weld.\r\n\r\nJosh Birk:\r\nNice.\r\n\r\nJoe Andolina:\r\nSo at home, because I'm a nerd, there's a four axis CNC mill, a laser cutter, a metal lathe, and then... It's pretty outfitted as a metal\/machine shop.\r\n\r\nJosh Birk:\r\nNice, nice.\r\n\r\nJoe Andolina:\r\nWe don't have room to put the wood in, but a wood shop would be great too.\r\n\r\nJosh Birk:\r\nThat's our show. I want to thank Joe for the great conversation and information. And as always, I want to thank you for listening. If you want to learn more about Joe's inventions and demos, head on over to developer.salesforce.com\/podcast, where you can see the show notes, hear old episodes, and have links to your favorite podcast service. Thanks again, and I'll talk to you next week.\r\n\r\n&nbsp;\r\n\r\n&nbsp;","post_title":"Episode 63: IoT and Work.com with Joe Andolina","post_excerpt":"&nbsp; Joe Andolina is a Director of Technical Marketing here at Salesforce. Today, I\u2019m sitting down to talk with him about his long history of doing some pretty crazy experiments with the Internet of Things. We also discuss how some of that has dealt back into Work.com and the COVID-19 pandemic.\u00a0 &nbsp; Joe even created [&hellip;]","post_status":"publish","comment_status":"open","ping_status":"closed","post_password":"","post_name":"episode-63-iot-and-work-com-with-joe-andolina","to_ping":"","pinged":"","post_modified":"2021-02-11 14:00:47","post_modified_gmt":"2021-02-11 14:00:47","post_content_filtered":"","post_parent":0,"guid":"https:\/\/developer.salesforce.com\/podcast\/2021\/01\/episode-63-iot-and-work-com-with-joe-andolina\/","menu_order":0,"post_type":"post","post_mime_type":"","comment_count":"0","filter":"raw","featured_image":"https:\/\/d259t2jj6zp7qm.cloudfront.net\/images\/sites\/2\/20210210110805\/Sliceheadshot-2-1.png?w=150&h=150&crop=1","link":"https:\/\/developer.salesforce.com\/podcast\/2021\/01\/episode-63-iot-and-work-com-with-joe-andolina.html","podcast_audio":{"audio_url":"https:\/\/a.sfdcstatic.com\/developer-website\/podcast\/episodes\/SDP_Ep063_Master.mp3","duration":"00:32:30"},"authors":[{"name":"Josh Birk","image_src":"https:\/\/secure.gravatar.com\/avatar\/f01b1f85cbbcb1208a31ba8bf1d72a21de0440425420042d6f942d3b0e1ee507?s=24&d=mm&r=g"}]}},{"post":{"ID":66,"post_author":"378","post_date":"2020-03-09 07:00:27","post_date_gmt":"2020-03-09 07:00:27","post_content":"<span style=\"font-weight: 400;\"><img class=\"size-medium alignleft\" src=\"https:\/\/d259t2jj6zp7qm.cloudfront.net\/images\/20200305095150\/Screen-Shot-2020-03-05-at-11.51.28-AM.png\" width=\"244\" height=\"235\" \/>Today, we sit down with Daniel Hoechst, a Salesforce Architect at Instructure, to talk about his experiences on the platform, including how he got started and how an MBA has factored into his approach. Plus, we talk about some of his latest projects like the Limits Monitor, an app for monitoring Salesforce org limits and Test Factory, a utility that can be used in unit tests to create test data.<\/span>\r\n\r\n<span style=\"font-weight: 400;\">Show Highlights:<\/span>\r\n<ul>\r\n \t<li style=\"font-weight: 400;\"><span style=\"font-weight: 400;\">How being an MBA has factored into his approach to Salesforce<\/span><\/li>\r\n \t<li style=\"font-weight: 400;\"><span style=\"font-weight: 400;\">The importance of watching for edge cases that can break limits<\/span><\/li>\r\n \t<li style=\"font-weight: 400;\"><span style=\"font-weight: 400;\">Pitfalls that developers get into that can cause troubles for orgs<\/span><\/li>\r\n \t<li style=\"font-weight: 400;\"><span style=\"font-weight: 400;\">Limits Monitor: an application that helps you monitor limits and then send out warnings\u00a0<\/span><\/li>\r\n \t<li style=\"font-weight: 400;\"><span style=\"font-weight: 400;\">Test Factory: A data factory based on an older test factory project called SmartFactory\u00a0<\/span><\/li>\r\n<\/ul>\r\n&nbsp;\r\n\r\n<b>Resources:<\/b>\r\n<ul>\r\n \t<li><a href=\"https:\/\/twitter.com\/dhoechst?lang=en\"><span style=\"font-weight: 400;\">Daniel on Twitter<\/span><\/a><\/li>\r\n \t<li><a href=\"https:\/\/www.linkedin.com\/in\/dhoechst\"><span style=\"font-weight: 400;\">Daniel on LinkedIn<\/span><\/a><\/li>\r\n \t<li><a href=\"https:\/\/github.com\/dhoechst\/\"><span style=\"font-weight: 400;\">Daniel on Github<\/span><\/a><\/li>\r\n \t<li><a href=\"https:\/\/github.com\/dhoechst\/salesforce-limit-monitor\"><span style=\"font-weight: 400;\">Daniel's Limit Monitor<\/span><\/a><\/li>\r\n \t<li><a href=\"https:\/\/github.com\/dhoechst\/Salesforce-Test-Factory\"><span style=\"font-weight: 400;\">Daniel's Test Factory<\/span><\/a><\/li>\r\n \t<li><a href=\"https:\/\/www.snowforce.io\/\"><span style=\"font-weight: 400;\">Snowforce<\/span><\/a><\/li>\r\n<\/ul>\r\n&nbsp;\r\n\r\n<b>Shout out:<\/b>\r\n<ul>\r\n \t<li><a href=\"https:\/\/twitter.com\/botoscloud?lang=en\"><span style=\"font-weight: 400;\">Matthew Botos<\/span><\/a><\/li>\r\n<\/ul>\r\n&nbsp;\r\n\r\n&nbsp;\r\n\r\n<b>Episode Transcript<\/b>\r\n\r\n<span style=\"font-weight: 400;\">\u00a0<\/span>\r\n\r\n<b>Daniel:<\/b><span style=\"font-weight: 400;\"> I could just add an object and boom it was there. Like I could add a field to an object and add it to page layout. I was done. Like I didn't have to do all these crazy things on this record. So I<\/span> <span style=\"font-weight: 400;\">just fell in love with it.<\/span>\r\n\r\n<span style=\"font-weight: 400;\">\u00a0<\/span>\r\n\r\n<b>Josh: <\/b><span style=\"font-weight: 400;\">That is Daniel Hoechst, a Salesforce architect at Instructure. I'm Josh Birk, a Developer Evangelist at Salesforce and here on the Salesforce Developer Podcast, you'll hear stories and insights from developers for developers. Today, we sit down to talk to Daniel about his experiences on the platform, as well as a specific project of his to help monitor limits. That quote was about him first countering Salesforce, a platform he approaches from the perspective of an MBA.<\/span>\r\n\r\n<span style=\"font-weight: 400;\">\u00a0<\/span>\r\n\r\n<span style=\"font-weight: 400;\">\u00a0<\/span>\r\n\r\n<b>Daniel: <\/b><span style=\"font-weight: 400;\">Well, you know, you learn everything at an MBA such as how finances and accounting practices work to how to manage people. So, you know, having that background has really helped me understand what the business is asking for rather than just coming at it from a technical background. So you know, I feel like I have a better idea of like, why they're asking for something, and I can provide a lot more value beyond just giving them a technical solution. You know, I always ask why I say like, why are you trying to build that thing? What are you trying to do? Because often, you know, so many people come to you with a technical solution. They're like, I need an object that has 20 fields, and I need this automation to happen. And you have to back them up a little bit and go, Well wait, why? What are you trying to do? And oftentimes, we find that there's some other solution that's really going to solve the business, the better. It helps them, you know, to get away from these weird technical solutions. So they come up with them themselves.<\/span>\r\n\r\n<span style=\"font-weight: 400;\">\u00a0<\/span>\r\n\r\n<span style=\"font-weight: 400;\">\u00a0<\/span>\r\n\r\n<b>Josh: <\/b><span style=\"font-weight: 400;\">Daniel actually entered the world of software before getting his MBA, and that led to his introduction to Salesforce in a role that's becoming something of a theme on the podcast. He started working customer service.<\/span>\r\n\r\n<span style=\"font-weight: 400;\">\u00a0<\/span>\r\n\r\n<span style=\"font-weight: 400;\">\u00a0<\/span>\r\n\r\n<b>Daniel: <\/b><span style=\"font-weight: 400;\">I actually entered the software world before I got my MBA many many years ago. I've actually lived in Utah now for 20 years. When I first got here, I actually started working in customer service at a outdoor products manufacturer called Pencil. And I was just working customer service have a civil engineering degree, but I didn't really know what I wanted to do with myself. So out of college, I moved out west from Georgia and ended up working customer service. Well, while I was there, they had just implemented a new e RP that was as 400. And nobody knew how it worked. So I started reading the manual and started making suggestions on how we can improve things. And finally, it got annoyed enough that they said come work for us. So I got a job as a developer on the IT team helping support the RP. I spent quite a few years building green screen applications to support that. And eventually we found Salesforce and implemented it for sales.<\/span>\r\n\r\n<span style=\"font-weight: 400;\">\u00a0<\/span>\r\n\r\n<span style=\"font-weight: 400;\">\u00a0<\/span>\r\n\r\n<b>Josh: <\/b><span style=\"font-weight: 400;\">Fast forward to his current role where he's in a large org with a lot of different moving parts. And I think a lot of people listening probably are familiar with what happened - when one of those gears can bring down the entire machine.<\/span>\r\n\r\n<span style=\"font-weight: 400;\">\u00a0<\/span>\r\n\r\n<span style=\"font-weight: 400;\">\u00a0<\/span>\r\n\r\n<b>Daniel: <\/b><span style=\"font-weight: 400;\">Well, so we run a pretty large Salesforce org here. Like I mentioned, we have users across all the clouds pretty much. And we have been around for 10 years on the Salesforce platform. The company has a lot of different admins, a lot of different developers. There's a lot of things going on. We have, I don't know, something like 30 or 40, manage packages. Some of those are big ones like Financial Force, PSA, Salesforce, CPQ, and others. And they all sometimes interact with each other in odd ways. And you know that we have our own code, too. So we actually got hit a few times. Right. When I started my boss, when I came on, he was super gun shy about applications connecting the API, because we had a vendor who had connected to our API and brought the work down, because it used to follow API calls. So that was one example of you know, we had other products that were just causing loops, maybe one managed package or something we wrote was causing the loop to hit and cause Other things to happen. So you know, we were hitting limits. And you know, few occasions, we actually had to frantically call up premier support and ask them to increase some limit, you know, there be our API limit, probably the number of email messages that get sent by apex. That's another limit we've hit. And we hit it a few too many times. And I got frustrated and said, There's gotta be a better way to watch for this. So I kind of sat down and looked at the documentation and said, hey, there's actually an API endpoint to get the limits the org limits, I'm not looking at the transaction limits, you know, the number of x, the execution time and that kind of thing. I'm more interested in 24 hour limits, like the things that if you hit those, your org is in trouble, and said, Hey, you know what, it's possible. I think I can do this.<\/span>\r\n\r\n<span style=\"font-weight: 400;\">\u00a0<\/span>\r\n\r\n<span style=\"font-weight: 400;\">\u00a0<\/span>\r\n\r\n<b>Josh: <\/b><span style=\"font-weight: 400;\">And again, it only really takes one gear to be a bad operator in order to kind of give up the whole works.<\/span>\r\n\r\n<span style=\"font-weight: 400;\">\u00a0<\/span>\r\n\r\n<span style=\"font-weight: 400;\">\u00a0<\/span>\r\n\r\n<b>Daniel:<\/b> <span style=\"font-weight: 400;\">Right. Exactly. Yeah. Like the API is a good example. You know, if people are connecting to traditional API soap API, you can't really put them in a little box and say, Hey, you can only have 10% of our API. And if you go above that, you're just going to stop working, which would be wonderful. But you have instead, one application can run away with your limits, especially with the API calls. Now, fortunately, you know, talking about API calls, because that was my problem has often been, I'm just happy to see in the spring release notes that that's now going to be a soft limit. So if you over at your org can still continue to run. But I still think it's important to watch those limits. Because even if you have something that's going to run away, you know, if you have something that's hitting your API and doing something, something is wrong, and you need to be alerted to it.<\/span>\r\n\r\n<span style=\"font-weight: 400;\">\u00a0<\/span>\r\n\r\n<b>\u00a0<\/b>\r\n\r\n<b>Josh: <\/b><span style=\"font-weight: 400;\">Now, these bad operators, they might not be built with bad intentions, but they might be coming out from the perspective of something that's an easy pitfall for developing with Salesforce and that is not developing to scale.<\/span>\r\n\r\n<span style=\"font-weight: 400;\">\u00a0<\/span>\r\n\r\n<span style=\"font-weight: 400;\">\u00a0<\/span>\r\n\r\n<b>Daniel: <\/b><span style=\"font-weight: 400;\">You know, sometimes I think it kind of has to do with data volume. You know, I think like I said, we have a big Oracle, we have a pretty big database volume. And I think some of the smaller vendors out there that have written stuff apps for Salesforce haven't considered companies with such large volumes of data. And you know, they may have had something that's let's say, they're syncing contacts, you know, from Salesforce to some other application. And they didn't implement it. They're just going in and just grabbing every single time tt connects, it goes, I'm gonna get all your contacts, I'm going to copy them over, I'm not going to look for last modified date or anything like that. So just poor design, like people aren't really thinking about, oh, and I get into a larger scale of data, I need to start thinking about, Well, okay, they'll pull everything, let's use some of the newer features of the platform. I mean, well, you could use the last modified date. But you know, there's even other features now like Change Data Capture. And so these other things that could be used to really identify specific changes without having to go into search through the entire or to look for records that have changed.<\/span>\r\n\r\n<span style=\"font-weight: 400;\">\u00a0<\/span>\r\n\r\n<span style=\"font-weight: 400;\">\u00a0<\/span>\r\n\r\n<b>Josh: <\/b><span style=\"font-weight: 400;\">Okay, so anecdote time. I was once an innocent developer on a project for a very large media company. And we kept asking them for a data set that was representative of their production data so that we could go to scale. And they first gave us a few hundred rows of data, which we didn't believe. And so we kept asking, well, what's something that's more representative and eventually gave us one that was closer to 50,000 rows of data, which we thought was pretty plausible only to go to production find out that it was more like half million rows of data. Needless to say, there was some performance changes that needed to be applied after that. So if you're on a project that has large data volumes, make sure that that is getting flagged correctly to your developer. And moving on from things like API calls and data volume. What are some other pitfalls that we can look for, but also potentially avoid in an application?<\/span>\r\n\r\n<span style=\"font-weight: 400;\">\u00a0<\/span>\r\n\r\n<span style=\"font-weight: 400;\">\u00a0<\/span>\r\n\r\n<b>Daniel: \u2026<\/b><span style=\"font-weight: 400;\">things such as storage usage, and as I mentioned, the email sent from Apex is an odd one, because many of your limits will increase based on the number of users that you have in the system that you know one does not I want to say it's 2000 emails in 24. four hour period, it might be higher, I can't, there's different fit 21 which organization you're on, but it doesn't increase. So you know, if you have 1000 users or you have 100 users, it's same limit. So that's one that you have to really be careful of, because it's one that doesn't scale with the number of users that you have. And we have some code that sends emails from cases. And we have gotten into a situation where there's a loop, we try to avoid sending emails through Apex at all. But there's a few edge cases that we had to do it, we try to send them with workflow rules or process builder because the number of emails you can send with those is astronomical. It's like hundreds of thousands, if not millions. But if you wanted to send an attachment, you can't send an email with an attachment through workflow or process builder. And so if we needed to send an attachment, it's dynamic, we have to use some Apex for that. So we've had a situation where we had basically the case we had a loop where the recipient on the other end, was replying something but was replying with an attachment and then that would come back into sales. worse as an attachment, and then our Apex will be like, Oh, I need to email this attachment to all the case, contacts. And it just was looping. And so that was a bug that we identified in our code through monitoring or limits, because we hate, you know, there's something happening. And we can actually see it and identify the case before it took the tires work down.<\/span>\r\n\r\n<span style=\"font-weight: 400;\">\u00a0<\/span>\r\n\r\n<span style=\"font-weight: 400;\">\u00a0<\/span>\r\n\r\n<b>Josh: <\/b><span style=\"font-weight: 400;\">And let's shift away from problems and over to solutions, because Daniel has a project up on GitHub for an application that runs on the platform that helps you monitor these limits, and then send out warnings if you're getting close to them.<\/span>\r\n\r\n<span style=\"font-weight: 400;\">\u00a0<\/span>\r\n\r\n<b>\u00a0<\/b>\r\n\r\n<b>Daniel: <\/b><span style=\"font-weight: 400;\">So how I've configured it is actually, you know, the nice thing I was surprised as I built this app was that the amount of actual code that I used is maybe about 20 or 30 lines of code that's about it. The rest of it is all using platform stuff, like you know objects and process builder and even have any flow in there but process or so, the idea is you can configure each limit, so I prefer Instructions on my GitHub of how to initialize the app. So basically, you can run a little bit of Apex anonymous where it just goes and does a list of all the limits that are available to be monitored and inserts records. So we have a basically a header level record of your limit. So you'd have a header level of Apex emails, you have a header level of API, data storage, etc. And then we can configure each of those limits to be monitored at increments up lie right now I do up increments up to 15 minutes. So you can do 15 minute intervals. So every 15 minutes, the scheduled job runs and says, You need to pull a snapshot for this limit. And if it does, then it will pull a snapshot and records it as a child object to that limit. So basically, you just have a limit and snapshots and it just runs on that schedule. And then we can configure for each limit, what are my thresholds, so there's several thresholds that you might want to watch when limits are considered one is just a percent of total. So let's say I'll use data storage, let's say your data storage, you're in a Developer Edition. So your data storage is 10 max. So if you are using, let's say you're using eight megs you're at 80% of data storage, that might be the time you want to start showing the limit, you know, telling the admin team that you're getting close to hitting that limit. So I've got it configurable at that limit that says 42 storage, notify me when I'm at 80% of the limit. And so everything will hum along fine until we hit that limit. So that's one way we monitor it. Another way I look at which can also identify problems is if there's a big increase suddenly. So in that case, let's say I'll use data storage again. Let's say you've been humming along and you just got a couple of megs of data and then all of a sudden it pops to nine Meg's or let's say seven so we don't hit go over 80% so if you were humming along at two Meg's and it pops to seven Meg's that's a pretty big increase percentage wise and so we can configure that As well, and I've, by default, I put it as if there's anything that's a 20% increase between snapshots. That's something to be concerned with. And you can configure that per limit to say, you know, for data storage, I might be more concerned if it increases 5%, right, if you have a big org, so we can look at it in a couple of different ways to watch for those problems.<\/span>\r\n\r\n<span style=\"font-weight: 400;\">\u00a0<\/span>\r\n\r\n<b>Josh: <\/b><span style=\"font-weight: 400;\">Now, when Daniel first started tinkering around with this, the optics that we're talking about for the limits were API only. And so he actually put together a quick MVP using Boomi that would like go after the API and then set up the emails and well, it worked more or less<\/span>\r\n\r\n<span style=\"font-weight: 400;\">\u00a0<\/span>\r\n\r\n<b>Daniel: <\/b><span style=\"font-weight: 400;\">\u00a0it can send texts and emails and phone calls and it can wake you up. That's great. We find it we address the limit, but let's say it was we'll get back to the email one because we talked about that a lot. Let's say you you got close. Let's say you're at 1500 out of 2000 emails, and that's perilously close, but we caught the problem and fixed it. We're going to still be at that limit for another 24 hours or so because it's a role in 24 hours. area. And so if I have that threshold of 80%, or whatever, somebody's going to get woken up every time the limit process runs, it goes, Hey, you're still over this threshold, wake up, wake up. And so that was a problem.<\/span>\r\n\r\n<span style=\"font-weight: 400;\">\u00a0<\/span>\r\n\r\n<span style=\"font-weight: 400;\">I had some people not so happy with me.<\/span>\r\n\r\n<span style=\"font-weight: 400;\">\u00a0<\/span>\r\n\r\n<span style=\"font-weight: 400;\">So, you know, I started thinking about it. And also it was kind of a, you know, an MVP product, I had hard coded most of the thresholds and other things and, and I realized I wanted to have, you know, some flexibility. So I wanted to be able to change it per limit to monitor different levels. And I wanted to have some kind of a snooze functionality so that if we do go over a limit, we can snooze it for a certain period of time and say, Alright, we've hit the limit. We know what's happening, we're going to snooze it now. So for next 24 hours instead of 80%. Make it 90%. And that way it can still be monitoring. So if you have another spike that causes a problem, great, but if as long as you stay below 90 for the next eight hours or whatever you set then it will go incidentally alerts again. So those were kind of the things that I said, Now that I have had some experience with this and found the problems and things that I'd like to improve. I said, I can build this on the Salesforce platform.<\/span>\r\n\r\n<span style=\"font-weight: 400;\">\u00a0<\/span>\r\n\r\n<span style=\"font-weight: 400;\">\u00a0<\/span>\r\n\r\n<b>Josh: <\/b><span style=\"font-weight: 400;\">Daniel's code is all up on GitHub, all open source. And it's also a great example of a dependent package because it's also dependent on his own test factory project, which in itself is a great example of open source. Because it's loosely based on an older project\u2026<\/span>\r\n\r\n<span style=\"font-weight: 400;\">\u00a0<\/span>\r\n\r\n<span style=\"font-weight: 400;\">\u00a0<\/span>\r\n\r\n<b>Daniel: <\/b><span style=\"font-weight: 400;\">Matthew Botos, from Mavens consulting, built a another test factory called, I believe, it's called Smart factory. And in a big following, this was, I want to say, eight, seven years ago, and people really liked it. And you know, the nice thing about a test factory is you can have predictable objects, you know, records and that kind of thing. And so what smart factory did was it used describes to look at your data at your object and say, Oh, well, that's a Boolean. I'm going to put a checkbox and I'm going to put a yes in there. That's a text field. I'm gonna throw random text value in it. Basically, you know, that smart factory, just use it, I want an account and it would go look the account object and fill in all of the fields with just random values for the most part. And it worked. And you know, it's nice because for a developer, if you had something that was required field, it would put something in it, you would have to worry about that. But what I didn't like was the randomness, I didn't like that it would just put random data in to all these fields, because I felt like that could give you unpredictable test results, you know, you go run your test once and just something about the random data that gets put it might cause your test to fail the next time you run it, and then nothing happens. So I wanted a little more control over what the values were in there. So I ended up writing my own kind of model a little bit about like his interfaces. So I borrowed from his stuff like how he was generating this object, the interfaces almost the same. But behind the scenes, instead of doing random you provide templates and you say, Okay, my template for account is like account name has value XYZ company, you know, and it's also every time you ask for an account, it always has that value.<\/span>\r\n\r\n<span style=\"font-weight: 400;\">\u00a0<\/span>\r\n\r\n<b>Josh: <\/b><span style=\"font-weight: 400;\">Now, more specifically, these packages aren't just dependent. They're unlocked packages as Daniel has moved them to that particular SFDX format. Now I did ask Daniel about his favorite non technical hobby is. As it turns out, it dovetails right into a community event that occurred just recently.<\/span>\r\n\r\n<span style=\"font-weight: 400;\">\u00a0<\/span>\r\n\r\n<b>Daniel<\/b><span style=\"font-weight: 400;\">: I spend a lot of time out in the snow. One of the reasons well it's not one of the reasons I moved to Utah but it's definitely one of the reasons I stay here. I tell you, I love playing in the outdoors so much we organized snow force here in Salt Lake City. And that was really an excuse for me to go skiing. So that has been fun to see grow and I still get to go skiing so I think this podcast will probably air after SnowForce this year. But yeah, in February will have stuff force again and that's a day of Salesforce community sessions and a day of skiing. So that's what I love doing before. So let me combine the two hobbies so\u2026<\/span>\r\n\r\n<span style=\"font-weight: 400;\">\u00a0<\/span>\r\n\r\n<b>Josh: <\/b><span style=\"font-weight: 400;\">so if you like skiing and salesforce, Head on over to SnowForce. Check it out in 2021. I want to give a thanks to Daniel for the great conversation and some of the great code that he has put out there on GitHub. Thanks to you for listening. If you would like to learn more about the show, head on over to developer.salesforce.com\/podcast where you can see show notes, old episodes and also links to your favorite podcast services. I'll talk to you next week.<\/span>\r\n\r\n&nbsp;","post_title":"Episode 20: Limits Monitoring with Daniel Hoechst","post_excerpt":"Today, we sit down with Daniel Hoechst, a Salesforce Architect at Instructure, to talk about his experiences on the platform, including how he got started and how an MBA has factored into his approach. Plus, we talk about some of his latest projects like the Limits Monitor, an app for monitoring Salesforce org limits and [&hellip;]","post_status":"publish","comment_status":"open","ping_status":"closed","post_password":"","post_name":"episode-20-limits-monitoring-with-daniel-hoechst","to_ping":"","pinged":"","post_modified":"2021-02-11 12:33:11","post_modified_gmt":"2021-02-11 12:33:11","post_content_filtered":"","post_parent":0,"guid":"https:\/\/developer.salesforce.com\/podcast\/2020\/03\/episode-20-limits-monitoring-with-daniel-hoechst\/","menu_order":0,"post_type":"post","post_mime_type":"","comment_count":"0","filter":"raw","featured_image":"https:\/\/d259t2jj6zp7qm.cloudfront.net\/images\/20200305095150\/Screen-Shot-2020-03-05-at-11.51.28-AM.png","link":"https:\/\/developer.salesforce.com\/podcast\/2020\/03\/episode-20-limits-monitoring-with-daniel-hoechst.html","podcast_audio":{"audio_url":"https:\/\/a.sfdcstatic.com\/developer-website\/podcast\/episodes\/SDP_Ep020_Master.mp3","duration":"00:17:33"},"authors":[{"name":"Josh Birk","image_src":"https:\/\/secure.gravatar.com\/avatar\/f01b1f85cbbcb1208a31ba8bf1d72a21de0440425420042d6f942d3b0e1ee507?s=24&d=mm&r=g"}]}}],"unstyled_content":"<p><span>\n\t\t\t  <span >\n\t\t\t    <img loading=\"lazy\" decoding=\"async\" src=\"https:\/\/d259t2jj6zp7qm.cloudfront.net\/images\/20200108155649\/Screen-Shot-2020-01-08-at-4.53.39-PM-150x150.png\" width=\"246\" height=\"246\" alt=\"\" \/>\n\t\t\t  <\/span>\n\t\t\tThis week Charlie Isaacs, VP and CTO of Customer Connections, joins me on the Salesforce Developer Podcast. Over the last 5 years, he has been evangelizing the Internet of Things (IoT) for Salesforce and has helped incubate dozens of Salesforce customers into the world of IoT.<\/span><\/p>\n<p><span>Together we talk about Charlie\u2019s experiences with prototyping new features, working with customers, and demonstrating Salesforce IoT. We also delve into the concept of prototyping work with engineers. Charlie likes to say he has the most fun job at Salesforce, and after this episode, you might actually have to agree.\u00a0<\/span><\/p>\n<p><strong>Show Highlights:<\/strong><span><br \/>\n<\/span><\/p>\n<ul>\n<li><span>Charlie\u2019s love for the way Salesforce engineers develop new features<\/span><\/li>\n<li><span>Some key aspects of IoT, especially handling and filtering date<\/span><\/li>\n<li><span>The node management app Node-RED<\/span><\/li>\n<li><span>Charlie\u2019s highlight of utilizing IoT and what a hot tub has to do with it<\/span><\/li>\n<\/ul>\n<p><b>Resources:<\/b><b><br \/>\n<\/b><\/p>\n<ul>\n<li><a href=\"https:\/\/twitter.com\/charlieisaacs\"><span>Charlie on Twitter<\/span><\/a> <span><br \/>\n<\/span><\/li>\n<li><a href=\"https:\/\/www.linkedin.com\/in\/charlieisaacs\/\"><span>Charlie on LinkedIn<\/span><\/a><\/li>\n<li><a href=\"https:\/\/trailhead.salesforce.com\/en\/content\/learn\/modules\/iot_explorer_basics\"><span>Salesforce IoT on Trailhead<\/span><\/a><\/li>\n<li><a href=\"https:\/\/nodered.org\/\"><span>Node-RED<\/span><\/a><\/li>\n<\/ul>\n","acf":[],"yoast_head":"<!-- This site is optimized with the Yoast SEO Premium plugin v24.3 (Yoast SEO v25.1) - https:\/\/yoast.com\/wordpress\/plugins\/seo\/ -->\n<title>Episode 12: Salesforce IoT with Charlie Isaacs - Salesforce Developers Podcasts<\/title>\n<meta name=\"robots\" content=\"index, follow, max-snippet:-1, max-image-preview:large, max-video-preview:-1\" \/>\n<link rel=\"canonical\" href=\"https:\/\/developer.salesforce.com\/podcast\/2020\/01\/episode-12-salesforce-iot-with-charlie-isaacs.html\" \/>\n<meta property=\"og:locale\" content=\"en_US\" \/>\n<meta property=\"og:type\" content=\"article\" \/>\n<meta property=\"og:title\" content=\"Episode 12: Salesforce IoT with Charlie Isaacs\" \/>\n<meta property=\"og:description\" content=\"This week Charlie Isaacs, VP and CTO of Customer Connections, joins me on the Salesforce Developer Podcast. Over the last 5 years, he has been evangelizing the Internet of Things (IoT) for Salesforce and has helped incubate dozens of Salesforce customers into the world of IoT. Together we talk about Charlie\u2019s experiences with prototyping new [&hellip;]\" \/>\n<meta property=\"og:url\" content=\"https:\/\/developer.salesforce.com\/podcast\/2020\/01\/episode-12-salesforce-iot-with-charlie-isaacs.html\" \/>\n<meta property=\"og:site_name\" content=\"Salesforce Developers Podcasts\" \/>\n<meta property=\"article:published_time\" content=\"2020-01-13T09:00:49+00:00\" \/>\n<meta property=\"article:modified_time\" content=\"2021-02-11T12:54:50+00:00\" \/>\n<meta property=\"og:image\" content=\"https:\/\/d259t2jj6zp7qm.cloudfront.net\/images\/sites\/2\/20210210111955\/Screen-Shot-2020-01-08-at-4.53.39-PM.png\" \/>\n\t<meta property=\"og:image:width\" content=\"242\" \/>\n\t<meta property=\"og:image:height\" content=\"233\" \/>\n\t<meta property=\"og:image:type\" content=\"image\/png\" \/>\n<meta name=\"author\" content=\"Josh Birk\" \/>\n<meta name=\"twitter:card\" content=\"summary_large_image\" \/>\n<meta name=\"twitter:label1\" content=\"Written by\" \/>\n\t<meta name=\"twitter:data1\" content=\"Josh Birk\" \/>\n\t<meta name=\"twitter:label2\" content=\"Est. reading time\" \/>\n\t<meta name=\"twitter:data2\" content=\"1 minute\" \/>\n<script type=\"application\/ld+json\" class=\"yoast-schema-graph\">{\"@context\":\"https:\/\/schema.org\",\"@graph\":[{\"@type\":\"WebPage\",\"@id\":\"https:\/\/developer.salesforce.com\/podcast\/2020\/01\/episode-12-salesforce-iot-with-charlie-isaacs.html\",\"url\":\"https:\/\/developer.salesforce.com\/podcast\/2020\/01\/episode-12-salesforce-iot-with-charlie-isaacs.html\",\"name\":\"Episode 12: Salesforce IoT with Charlie Isaacs - Salesforce Developers Podcasts\",\"isPartOf\":{\"@id\":\"https:\/\/developer.salesforce.com\/blogs\/podcast\/#website\"},\"primaryImageOfPage\":{\"@id\":\"https:\/\/developer.salesforce.com\/podcast\/2020\/01\/episode-12-salesforce-iot-with-charlie-isaacs.html#primaryimage\"},\"image\":{\"@id\":\"https:\/\/developer.salesforce.com\/podcast\/2020\/01\/episode-12-salesforce-iot-with-charlie-isaacs.html#primaryimage\"},\"thumbnailUrl\":\"https:\/\/d259t2jj6zp7qm.cloudfront.net\/images\/sites\/2\/20210210111955\/Screen-Shot-2020-01-08-at-4.53.39-PM.png\",\"datePublished\":\"2020-01-13T09:00:49+00:00\",\"dateModified\":\"2021-02-11T12:54:50+00:00\",\"author\":{\"@id\":\"https:\/\/developer.salesforce.com\/blogs\/podcast\/#\/schema\/person\/3f8ae93de03b23db96291dbb3158e64f\"},\"breadcrumb\":{\"@id\":\"https:\/\/developer.salesforce.com\/podcast\/2020\/01\/episode-12-salesforce-iot-with-charlie-isaacs.html#breadcrumb\"},\"inLanguage\":\"en-US\",\"potentialAction\":[{\"@type\":\"ReadAction\",\"target\":[\"https:\/\/developer.salesforce.com\/podcast\/2020\/01\/episode-12-salesforce-iot-with-charlie-isaacs.html\"]}]},{\"@type\":\"ImageObject\",\"inLanguage\":\"en-US\",\"@id\":\"https:\/\/developer.salesforce.com\/podcast\/2020\/01\/episode-12-salesforce-iot-with-charlie-isaacs.html#primaryimage\",\"url\":\"https:\/\/d259t2jj6zp7qm.cloudfront.net\/images\/sites\/2\/20210210111955\/Screen-Shot-2020-01-08-at-4.53.39-PM.png\",\"contentUrl\":\"https:\/\/d259t2jj6zp7qm.cloudfront.net\/images\/sites\/2\/20210210111955\/Screen-Shot-2020-01-08-at-4.53.39-PM.png\",\"width\":242,\"height\":233},{\"@type\":\"BreadcrumbList\",\"@id\":\"https:\/\/developer.salesforce.com\/podcast\/2020\/01\/episode-12-salesforce-iot-with-charlie-isaacs.html#breadcrumb\",\"itemListElement\":[{\"@type\":\"ListItem\",\"position\":1,\"name\":\"Home\",\"item\":\"https:\/\/developer.salesforce.com\/blogs\/podcast\/\"},{\"@type\":\"ListItem\",\"position\":2,\"name\":\"Episode 12: Salesforce IoT with Charlie Isaacs\"}]},{\"@type\":\"WebSite\",\"@id\":\"https:\/\/developer.salesforce.com\/blogs\/podcast\/#website\",\"url\":\"https:\/\/developer.salesforce.com\/blogs\/podcast\/\",\"name\":\"Salesforce Developers Podcasts\",\"description\":\"Just another Salesforce Developers Sites site\",\"potentialAction\":[{\"@type\":\"SearchAction\",\"target\":{\"@type\":\"EntryPoint\",\"urlTemplate\":\"https:\/\/developer.salesforce.com\/blogs\/podcast\/?s={search_term_string}\"},\"query-input\":{\"@type\":\"PropertyValueSpecification\",\"valueRequired\":true,\"valueName\":\"search_term_string\"}}],\"inLanguage\":\"en-US\"},{\"@type\":\"Person\",\"@id\":\"https:\/\/developer.salesforce.com\/blogs\/podcast\/#\/schema\/person\/3f8ae93de03b23db96291dbb3158e64f\",\"name\":\"Josh Birk\",\"image\":{\"@type\":\"ImageObject\",\"inLanguage\":\"en-US\",\"@id\":\"https:\/\/developer.salesforce.com\/blogs\/podcast\/#\/schema\/person\/image\/4b5e04b758bc1330368b38147f72d243\",\"url\":\"https:\/\/secure.gravatar.com\/avatar\/f01b1f85cbbcb1208a31ba8bf1d72a21de0440425420042d6f942d3b0e1ee507?s=96&d=mm&r=g\",\"contentUrl\":\"https:\/\/secure.gravatar.com\/avatar\/f01b1f85cbbcb1208a31ba8bf1d72a21de0440425420042d6f942d3b0e1ee507?s=96&d=mm&r=g\",\"caption\":\"Josh Birk\"},\"url\":\"https:\/\/developer.salesforce.com\/blogs\/podcast\/author\/josh-birk\"}]}<\/script>\n<!-- \/ Yoast SEO Premium plugin. -->","yoast_head_json":{"title":"Episode 12: Salesforce IoT with Charlie Isaacs - Salesforce Developers Podcasts","robots":{"index":"index","follow":"follow","max-snippet":"max-snippet:-1","max-image-preview":"max-image-preview:large","max-video-preview":"max-video-preview:-1"},"canonical":"https:\/\/developer.salesforce.com\/podcast\/2020\/01\/episode-12-salesforce-iot-with-charlie-isaacs.html","og_locale":"en_US","og_type":"article","og_title":"Episode 12: Salesforce IoT with Charlie Isaacs","og_description":"This week Charlie Isaacs, VP and CTO of Customer Connections, joins me on the Salesforce Developer Podcast. Over the last 5 years, he has been evangelizing the Internet of Things (IoT) for Salesforce and has helped incubate dozens of Salesforce customers into the world of IoT. Together we talk about Charlie\u2019s experiences with prototyping new [&hellip;]","og_url":"https:\/\/developer.salesforce.com\/podcast\/2020\/01\/episode-12-salesforce-iot-with-charlie-isaacs.html","og_site_name":"Salesforce Developers Podcasts","article_published_time":"2020-01-13T09:00:49+00:00","article_modified_time":"2021-02-11T12:54:50+00:00","og_image":[{"width":242,"height":233,"url":"https:\/\/d259t2jj6zp7qm.cloudfront.net\/images\/sites\/2\/20210210111955\/Screen-Shot-2020-01-08-at-4.53.39-PM.png","type":"image\/png"}],"author":"Josh Birk","twitter_card":"summary_large_image","twitter_misc":{"Written by":"Josh Birk","Est. reading time":"1 minute"},"schema":{"@context":"https:\/\/schema.org","@graph":[{"@type":"WebPage","@id":"https:\/\/developer.salesforce.com\/podcast\/2020\/01\/episode-12-salesforce-iot-with-charlie-isaacs.html","url":"https:\/\/developer.salesforce.com\/podcast\/2020\/01\/episode-12-salesforce-iot-with-charlie-isaacs.html","name":"Episode 12: Salesforce IoT with Charlie Isaacs - Salesforce Developers Podcasts","isPartOf":{"@id":"https:\/\/developer.salesforce.com\/blogs\/podcast\/#website"},"primaryImageOfPage":{"@id":"https:\/\/developer.salesforce.com\/podcast\/2020\/01\/episode-12-salesforce-iot-with-charlie-isaacs.html#primaryimage"},"image":{"@id":"https:\/\/developer.salesforce.com\/podcast\/2020\/01\/episode-12-salesforce-iot-with-charlie-isaacs.html#primaryimage"},"thumbnailUrl":"https:\/\/d259t2jj6zp7qm.cloudfront.net\/images\/sites\/2\/20210210111955\/Screen-Shot-2020-01-08-at-4.53.39-PM.png","datePublished":"2020-01-13T09:00:49+00:00","dateModified":"2021-02-11T12:54:50+00:00","author":{"@id":"https:\/\/developer.salesforce.com\/blogs\/podcast\/#\/schema\/person\/3f8ae93de03b23db96291dbb3158e64f"},"breadcrumb":{"@id":"https:\/\/developer.salesforce.com\/podcast\/2020\/01\/episode-12-salesforce-iot-with-charlie-isaacs.html#breadcrumb"},"inLanguage":"en-US","potentialAction":[{"@type":"ReadAction","target":["https:\/\/developer.salesforce.com\/podcast\/2020\/01\/episode-12-salesforce-iot-with-charlie-isaacs.html"]}]},{"@type":"ImageObject","inLanguage":"en-US","@id":"https:\/\/developer.salesforce.com\/podcast\/2020\/01\/episode-12-salesforce-iot-with-charlie-isaacs.html#primaryimage","url":"https:\/\/d259t2jj6zp7qm.cloudfront.net\/images\/sites\/2\/20210210111955\/Screen-Shot-2020-01-08-at-4.53.39-PM.png","contentUrl":"https:\/\/d259t2jj6zp7qm.cloudfront.net\/images\/sites\/2\/20210210111955\/Screen-Shot-2020-01-08-at-4.53.39-PM.png","width":242,"height":233},{"@type":"BreadcrumbList","@id":"https:\/\/developer.salesforce.com\/podcast\/2020\/01\/episode-12-salesforce-iot-with-charlie-isaacs.html#breadcrumb","itemListElement":[{"@type":"ListItem","position":1,"name":"Home","item":"https:\/\/developer.salesforce.com\/blogs\/podcast\/"},{"@type":"ListItem","position":2,"name":"Episode 12: Salesforce IoT with Charlie Isaacs"}]},{"@type":"WebSite","@id":"https:\/\/developer.salesforce.com\/blogs\/podcast\/#website","url":"https:\/\/developer.salesforce.com\/blogs\/podcast\/","name":"Salesforce Developers Podcasts","description":"Just another Salesforce Developers Sites site","potentialAction":[{"@type":"SearchAction","target":{"@type":"EntryPoint","urlTemplate":"https:\/\/developer.salesforce.com\/blogs\/podcast\/?s={search_term_string}"},"query-input":{"@type":"PropertyValueSpecification","valueRequired":true,"valueName":"search_term_string"}}],"inLanguage":"en-US"},{"@type":"Person","@id":"https:\/\/developer.salesforce.com\/blogs\/podcast\/#\/schema\/person\/3f8ae93de03b23db96291dbb3158e64f","name":"Josh Birk","image":{"@type":"ImageObject","inLanguage":"en-US","@id":"https:\/\/developer.salesforce.com\/blogs\/podcast\/#\/schema\/person\/image\/4b5e04b758bc1330368b38147f72d243","url":"https:\/\/secure.gravatar.com\/avatar\/f01b1f85cbbcb1208a31ba8bf1d72a21de0440425420042d6f942d3b0e1ee507?s=96&d=mm&r=g","contentUrl":"https:\/\/secure.gravatar.com\/avatar\/f01b1f85cbbcb1208a31ba8bf1d72a21de0440425420042d6f942d3b0e1ee507?s=96&d=mm&r=g","caption":"Josh Birk"},"url":"https:\/\/developer.salesforce.com\/blogs\/podcast\/author\/josh-birk"}]}},"jetpack_featured_media_url":"https:\/\/d259t2jj6zp7qm.cloudfront.net\/images\/sites\/2\/20210210111955\/Screen-Shot-2020-01-08-at-4.53.39-PM.png","authors":[{"name":"Josh Birk","image_src":"https:\/\/secure.gravatar.com\/avatar\/f01b1f85cbbcb1208a31ba8bf1d72a21de0440425420042d6f942d3b0e1ee507?s=24&d=mm&r=g"}],"_links":{"self":[{"href":"https:\/\/developer.salesforce.com\/blogs\/podcast\/wp-json\/wp\/v2\/posts\/74","targetHints":{"allow":["GET"]}}],"collection":[{"href":"https:\/\/developer.salesforce.com\/blogs\/podcast\/wp-json\/wp\/v2\/posts"}],"about":[{"href":"https:\/\/developer.salesforce.com\/blogs\/podcast\/wp-json\/wp\/v2\/types\/post"}],"author":[{"embeddable":true,"href":"https:\/\/developer.salesforce.com\/blogs\/podcast\/wp-json\/wp\/v2\/users\/378"}],"replies":[{"embeddable":true,"href":"https:\/\/developer.salesforce.com\/blogs\/podcast\/wp-json\/wp\/v2\/comments?post=74"}],"version-history":[{"count":4,"href":"https:\/\/developer.salesforce.com\/blogs\/podcast\/wp-json\/wp\/v2\/posts\/74\/revisions"}],"predecessor-version":[{"id":193,"href":"https:\/\/developer.salesforce.com\/blogs\/podcast\/wp-json\/wp\/v2\/posts\/74\/revisions\/193"}],"wp:featuredmedia":[{"embeddable":true,"href":"https:\/\/developer.salesforce.com\/blogs\/podcast\/wp-json\/wp\/v2\/media\/75"}],"wp:attachment":[{"href":"https:\/\/developer.salesforce.com\/blogs\/podcast\/wp-json\/wp\/v2\/media?parent=74"}],"wp:term":[{"taxonomy":"category","embeddable":true,"href":"https:\/\/developer.salesforce.com\/blogs\/podcast\/wp-json\/wp\/v2\/categories?post=74"},{"taxonomy":"post_tag","embeddable":true,"href":"https:\/\/developer.salesforce.com\/blogs\/podcast\/wp-json\/wp\/v2\/tags?post=74"},{"taxonomy":"author","embeddable":true,"href":"https:\/\/developer.salesforce.com\/blogs\/podcast\/wp-json\/wp\/v2\/coauthors?post=74"}],"curies":[{"name":"wp","href":"https:\/\/api.w.org\/{rel}","templated":true}]}}