POPULARITY
Director: M. Night ShyamalanWriters: M. Night ShyamalanStars: Josh Hartnett, Ariel Donogue, Saleka Shyamalan, Alison Pill, Hayley Mills, and surprise guest star Kid CudiOne recommendation, doesn't have to be related.Annie - Nerdy Prudes Must DieAlicia - Elsbeth, MattlockEmily- Black Roses, Surf Nazis Must DieBen - Beneath the Trees Where Nobody Sees (comic)Jeremy - It's What's Inside Get bonus content on Patreon Hosted on Acast. See acast.com/privacy for more information.
Brandon Liu is an open source developer and creator of the Protomaps basemap project. We talk about how static maps help developers build sites that last, the PMTiles file format, the role of OpenStreetMap, and his experience funding and running an open source project full time. Protomaps Protomaps PMTiles (File format used by Protomaps) Self-hosted slippy maps, for novices (like me) Why Deploy Protomaps on a CDN User examples Flickr Pinball Map Toilet Map Related projects OpenStreetMap (Dataset protomaps is based on) Mapzen (Former company that released details on what to display based on zoom levels) Mapbox GL JS (Mapbox developed source available map rendering library) MapLibre GL JS (Open source fork of Mapbox GL JS) Other links HTTP range requests (MDN) Hilbert curve Transcript You can help correct transcripts on GitHub. Intro [00:00:00] Jeremy: I'm talking to Brandon Liu. He's the creator of Protomaps, which is a way to easily create and host your own maps. Let's get into it. [00:00:09] Brandon: Hey, so thanks for having me on the podcast. So I'm Brandon. I work on an open source project called Protomaps. What it really is, is if you're a front end developer and you ever wanted to put maps on a website or on a mobile app, then Protomaps is sort of an open source solution for doing that that I hope is something that's way easier to use than, um, a lot of other open source projects. Why not just use Google Maps? [00:00:36] Jeremy: A lot of people are gonna be familiar with Google Maps. Why should they worry about whether something's open source? Why shouldn't they just go and use the Google maps API? [00:00:47] Brandon: So Google Maps is like an awesome thing it's an awesome product. Probably one of the best tech products ever right? And just to have a map that tells you what restaurants are open and something that I use like all the time especially like when you're traveling it has all that data. And the most amazing part is that it's free for consumers but it's not necessarily free for developers. Like if you wanted to embed that map onto your website or app, that usually has an API cost which still has a free tier and is affordable. But one motivation, one basic reason to use open source is if you have some project that doesn't really fit into that pricing model. You know like where you have to pay the cost of Google Maps, you have a side project, a nonprofit, that's one reason. But there's lots of other reasons related to flexibility or customization where you might want to use open source instead. Protomaps examples [00:01:49] Jeremy: Can you give some examples where people have used Protomaps and where that made sense for them? [00:01:56] Brandon: I follow a lot of the use cases and I also don't know about a lot of them because I don't have an API where I can track a hundred percent of the users. Some of them use the hosted version, but I would say most of them probably use it on their own infrastructure. One of the cool projects I've been seeing is called Toilet Map. And what toilet map is if you're in the UK and you want find a public restroom then it maps out, sort of crowdsourced all of the public restrooms. And that's important for like a lot of people if they have health issues, they need to find that information. And just a lot of different projects in the same vein. There's another one called Pinball Map which is sort of a hobby project to find all the pinball machines in the world. And they wanted to have a customized map that fit in with their theme of pinball. So these sorts of really cool indie projects are the ones I'm most excited about. Basemaps vs Overlays [00:02:57] Jeremy: And if we talk about, like the pinball map as an example, there's this concept of a basemap and then there's the things that you lay on top of it. What is a basemap and then is the pinball locations is that part of it or is that something separate? [00:03:12] Brandon: It's usually something separate. The example I usually use is if you go to a real estate site, like Zillow, you'll open up the map of Seattle and it has a bunch of pins showing all the houses, and then it has some information beneath it. That information beneath it is like labels telling, this neighborhood is Capitol Hill, or there is a park here. But all that information is common to a lot of use cases and it's not specific to real estate. So I think usually that's the distinction people use in the industry between like a base map versus your overlay. The overlay is like the data for your product or your company while the base map is something you could get from Google or from Protomaps or from Apple or from Mapbox that kind of thing. PMTiles for hosting the basemap and overlays [00:03:58] Jeremy: And so Protomaps in particular is responsible for the base map, and that information includes things like the streets and the locations of landmarks and things like that. Where is all that information coming from? [00:04:12] Brandon: So the base map information comes from a project called OpenStreetMap. And I would also, point out that for Protomaps as sort of an ecosystem. You can also put your overlay data into a format called PMTiles, which is sort of the core of what Protomaps is. So it can really do both. It can transform your data into the PMTiles format which you can host and you can also host the base map. So you kind of have both of those sides of the product in one solution. [00:04:43] Jeremy: And so when you say you have both are you saying that the PMTiles file can have, the base map in one file and then you would have the data you're laying on top in another file? Or what are you describing there? [00:04:57] Brandon: That's usually how I recommend to do it. Oftentimes there'll be sort of like, a really big basemap 'cause it has all of that data about like where the rivers are. Or while, if you want to put your map of toilets or park benches or pickleball courts on top, that's another file. But those are all just like assets you can move around like JSON or CSV files. Statically Hosted [00:05:19] Jeremy: And I think one of the things you mentioned was that your goal was to make Protomaps or the, the use of these PMTiles files easy to use. What does that look like for, for a developer? I wanna host a map. What do I actually need to, to put on my servers? [00:05:38] Brandon: So my usual pitch is that basically if you know how to use S3 or cloud storage, that you know how to deploy a map. And that, I think is the main sort of differentiation from most open source projects. Like a lot of them, they call themselves like, like some sort of self-hosted solution. But I've actually avoided using the term self-hosted because I think in most cases that implies a lot of complexity. Like you have to log into a Linux server or you have to use Kubernetes or some sort of Docker thing. What I really want to emphasize is the idea that, for Protomaps, it's self-hosted in the same way like CSS is self-hosted. So you don't really need a service from Amazon to host the JSON files or CSV files. It's really just a static file. [00:06:32] Jeremy: When you say static file that means you could use any static web host to host your HTML file, your JavaScript that actually renders the map. And then you have your PMTiles files, and you're not running a process or anything, you're just putting your files on a static file host. [00:06:50] Brandon: Right. So I think if you're a developer, you can also argue like a static file server is a server. It's you know, it's the cloud, it's just someone else's computer. It's really just nginx under the hood. But I think static storage is sort of special. If you look at things like static site generators, like Jekyll or Hugo, they're really popular because they're a commodity or like the storage is a commodity. And you can take your blog, make it a Jekyll blog, hosted on S3. One day, Amazon's like, we're charging three times as much so you can move it to a different cloud provider. And that's all vendor neutral. So I think that's really the special thing about static storage as a primitive on the web. Why running servers is a problem for resilience [00:07:36] Jeremy: Was there a prior experience you had? Like you've worked with maps for a very long time. Were there particular difficulties you had where you said I just gotta have something that can be statically hosted? [00:07:50] Brandon: That's sort of exactly why I got into this. I've been working sort of in and around the map space for over a decade, and Protomaps is really like me trying to solve the same problem I've had over and over again in the past, just like once and forever right? Because like once this problem is solved, like I don't need to deal with it again in the future. So I've worked at a couple of different companies before, mostly as a contractor, for like a humanitarian nonprofit for a design company doing things like, web applications to visualize climate change. Or for even like museums, like digital signage for museums. And oftentimes they had some sort of data visualization component, but always sort of the challenge of how to like, store and also distribute like that data was something that there wasn't really great open source solutions. So just for map data, that's really what motivated that design for Protomaps. [00:08:55] Jeremy: And in those, those projects in the past, were those things where you had to run your own server, run your own database, things like that? [00:09:04] Brandon: Yeah. And oftentimes we did, we would spin up an EC2 instance, for maybe one client and then we would have to host this server serving map data forever. Maybe the client goes away, or I guess it's good for business if you can sign some sort of like long-term support for that client saying, Hey, you know, like we're done with a project, but you can pay us to maintain the EC2 server for the next 10 years. And that's attractive. but it's also sort of a pain, because usually what happens is if people are given the choice, like a developer between like either I can manage the server on EC2 or on Rackspace or Hetzner or whatever, or I can go pay a SaaS to do it. In most cases, businesses will choose to pay the SaaS. So that's really like what creates a sort of lock-in is this preference for like, so I have this choice between like running the server or paying the SaaS. Like businesses will almost always go and pay the SaaS. [00:10:05] Jeremy: Yeah. And in this case, you either find some kind of free hosting or low-cost hosting just to host your files and you upload the files and then you're good from there. You don't need to maintain anything. [00:10:18] Brandon: Exactly, and that's really the ideal use case. so I have some users these, climate science consulting agencies, and then they might have like a one-off project where they have to generate the data once, but instead of having to maintain this server for the lifetime of that project, they just have a file on S3 and like, who cares? If that costs a couple dollars a month to run, that's fine, but it's not like S3 is gonna be deprecated, like it's gonna be on an insecure version of Ubuntu or something. So that's really the ideal, set of constraints for using Protomaps. [00:10:58] Jeremy: Yeah. Something this also makes me think about is, is like the resilience of sites like remaining online, because I, interviewed, Kyle Drake, he runs Neocities, which is like a modern version of GeoCities. And if I remember correctly, he was mentioning how a lot of old websites from that time, if they were running a server backend, like they were running PHP or something like that, if you were to try to go to those sites, now they're like pretty much all dead because there needed to be someone dedicated to running a Linux server, making sure things were patched and so on and so forth. But for static sites, like the ones that used to be hosted on GeoCities, you can go to the internet archive or other websites and they were just files, right? You can bring 'em right back up, and if anybody just puts 'em on a web server, then you're good. They're still alive. Case study of news room preferring static hosting [00:11:53] Brandon: Yeah, exactly. One place that's kind of surprising but makes sense where this comes up, is for newspapers actually. Some of the users using Protomaps are the Washington Post. And the reason they use it, is not necessarily because they don't want to pay for a SaaS like Google, but because if they make an interactive story, they have to guarantee that it still works in a couple of years. And that's like a policy decision from like the editorial board, which is like, so you can't write an article if people can't view it in five years. But if your like interactive data story is reliant on a third party, API and that third party API becomes deprecated, or it changes the pricing or it, you know, it gets acquired, then your journalism story is not gonna work anymore. So I have seen really good uptake among local news rooms and even big ones to use things like Protomaps just because it makes sense for the requirements. Working on Protomaps as an open source project for five years [00:12:49] Jeremy: How long have you been working on Protomaps and the parts that it's made up of such as PMTiles? [00:12:58] Brandon: I've been working on it for about five years, maybe a little more than that. It's sort of my pandemic era project. But the PMTiles part, which is really the heart of it only came in about halfway. Why not make a SaaS? [00:13:13] Brandon: So honestly, like when I first started it, I thought it was gonna be another SaaS and then I looked at it and looked at what the environment was around it. And I'm like, uh, so I don't really think I wanna do that. [00:13:24] Jeremy: When, when you say you looked at the environment around it what do you mean? Why did you decide not to make it a SaaS? [00:13:31] Brandon: Because there already is a lot of SaaS out there. And I think the opportunity of making something that is unique in terms of those use cases, like I mentioned like newsrooms, was clear. Like it was clear that there was some other solution, that could be built that would fit these needs better while if it was a SaaS, there are plenty of those out there. And I don't necessarily think that they're well differentiated. A lot of them all use OpenStreetMap data. And it seems like they mainly compete on price. It's like who can build the best three column pricing model. And then once you do that, you need to build like billing and metrics and authentication and like those problems don't really interest me. So I think, although I acknowledge sort of the indie hacker ethos now is to build a SaaS product with a monthly subscription, that's something I very much chose not to do, even though it is for sure like the best way to build a business. [00:14:29] Jeremy: Yeah, I mean, I think a lot of people can appreciate that perspective because it's, it's almost like we have SaaS overload, right? Where you have so many little bills for your project where you're like, another $5 a month, another $10 a month, or if you're a business, right? Those, you add a bunch of zeros and at some point it's just how many of these are we gonna stack on here? [00:14:53] Brandon: Yeah. And honestly. So I really think like as programmers, we're not really like great at choosing how to spend money like a $10 SaaS. That's like nothing. You know? So I can go to Starbucks and I can buy a pumpkin spice latte, and that's like $10 basically now, right? And it's like I'm able to make that consumer choice in like an instant just to spend money on that. But then if you're like, oh, like spend $10 on a SaaS that somebody put a lot of work into, then you're like, oh, that's too expensive. I could just do it myself. So I'm someone that also subscribes to a lot of SaaS products. and I think for a lot of things it's a great fit. Many open source SaaS projects are not easy to self host [00:15:37] Brandon: But there's always this tension between an open source project that you might be able to run yourself and a SaaS. And I think a lot of projects are at different parts of the spectrum. But for Protomaps, it's very much like I'm trying to move maps to being it is something that is so easy to run yourself that anyone can do it. [00:16:00] Jeremy: Yeah, and I think you can really see it with, there's a few SaaS projects that are successful and they're open source, but then you go to look at the self-hosting instructions and it's either really difficult to find and you find it, and then the instructions maybe don't work, or it's really complicated. So I think doing the opposite with Protomaps. As a user, I'm sure we're all appreciative, but I wonder in terms of trying to make money, if that's difficult. [00:16:30] Brandon: No, for sure. It is not like a good way to make money because I think like the ideal situation for an open source project that is open that wants to make money is the product itself is fundamentally complicated to where people are scared to run it themselves. Like a good example I can think of is like Supabase. Supabase is sort of like a platform as a service based on Postgres. And if you wanted to run it yourself, well you need to run Postgres and you need to handle backups and authentication and logging, and that stuff all needs to work and be production ready. So I think a lot of people, like they don't trust themselves to run database backups correctly. 'cause if you get it wrong once, then you're kind of screwed. So I think that fundamental aspect of the product, like a database is something that is very, very ripe for being a SaaS while still being open source because it's fundamentally hard to run. Another one I can think of is like tailscale, which is, like a VPN that works end to end. That's something where, you know, it has this networking complexity where a lot of developers don't wanna deal with that. So they'd happily pay, for tailscale as a service. There is a lot of products or open source projects that eventually end up just changing to becoming like a hosted service. Businesses going from open source to closed or restricted licenses [00:17:58] Brandon: But then in that situation why would they keep it open source, right? Like, if it's easy to run yourself well, doesn't that sort of cannibalize their business model? And I think that's really the tension overall in these open source companies. So you saw it happen to things like Elasticsearch to things like Terraform where they eventually change the license to one that makes it difficult for other companies to compete with them. [00:18:23] Jeremy: Yeah, I mean there's been a number of cases like that. I mean, specifically within the mapping community, one I can think of was Mapbox's. They have Mapbox gl. Which was a JavaScript client to visualize maps and they moved from, I forget which license they picked, but they moved to a much more restrictive license. I wonder what your thoughts are on something that releases as open source, but then becomes something maybe a little more muddy. [00:18:55] Brandon: Yeah, I think it totally makes sense because if you look at their business and their funding, it seems like for Mapbox, I haven't used it in a while, but my understanding is like a lot of their business now is car companies and doing in dash navigation. And that is probably way better of a business than trying to serve like people making maps of toilets. And I think sort of the beauty of it is that, so Mapbox, the story is they had a JavaScript renderer called Mapbox GL JS. And they changed that to a source available license a couple years ago. And there's a fork of it that I'm sort of involved in called MapLibre GL. But I think the cool part is Mapbox paid employees for years, probably millions of dollars in total to work on this thing and just gave it away for free. Right? So everyone can benefit from that work they did. It's not like that code went away, like once they changed the license. Well, the old version has been forked. It's going its own way now. It's quite different than the new version of Mapbox, but I think it's extremely generous that they're able to pay people for years, you know, like a competitive salary and just give that away. [00:20:10] Jeremy: Yeah, so we should maybe look at it as, it was a gift while it was open source, and they've given it to the community and they're on continuing on their own path, but at least the community running Map Libre, they can run with it, right? It's not like it just disappeared. [00:20:29] Brandon: Yeah, exactly. And that is something that I use for Protomaps quite extensively. Like it's the primary way of showing maps on the web and I've been trying to like work on some enhancements to it to have like better internationalization for if you are in like South Asia like not show languages correctly. So I think it is being taken in a new direction. And I think like sort of the combination of Protomaps and MapLibre, it addresses a lot of use cases, like I mentioned earlier with like these like hobby projects, indie projects that are almost certainly not interesting to someone like Mapbox or Google as a business. But I'm happy to support as a small business myself. Financially supporting open source work (GitHub sponsors, closed source, contracts) [00:21:12] Jeremy: In my previous interview with Tom, one of the main things he mentioned was that creating a mapping business is incredibly difficult, and he said he probably wouldn't do it again. So in your case, you're building Protomaps, which you've admitted is easy to self-host. So there's not a whole lot of incentive for people to pay you. How is that working out for you? How are you supporting yourself? [00:21:40] Brandon: There's a couple of strategies that I've tried and oftentimes failed at. Just to go down the list, so I do have GitHub sponsors so I do have a hosted version of Protomaps you can use if you don't want to bother copying a big file around. But the way I do the billing for that is through GitHub sponsors. If you wanted to use this thing I provide, then just be a sponsor. And that definitely pays for itself, like the cost of running it. And that's great. GitHub sponsors is so easy to set up. It just removes you having to deal with Stripe or something. 'cause a lot of people, their credit card information is already in GitHub. GitHub sponsors I think is awesome if you want to like cover costs for a project. But I think very few people are able to make that work. A thing that's like a salary job level. It's sort of like Twitch streaming, you know, there's a handful of people that are full-time streamers and then you look down the list on Twitch and it's like a lot of people that have like 10 viewers. But some of the other things I've tried, I actually started out, publishing the base map as a closed source thing, where I would sell sort of like a data package instead of being a SaaS, I'd be like, here's a one-time download, of the premium data and you can buy it. And quite a few people bought it I just priced it at like $500 for this thing. And I thought that was an interesting experiment. The main reason it's interesting is because the people that it attracts to you in terms of like, they're curious about your products, are all people willing to pay money. While if you start out everything being open source, then the people that are gonna be try to do it are only the people that want to get something for free. So what I discovered is actually like once you transition that thing from closed source to open source, a lot of the people that used to pay you money will still keep paying you money because like, it wasn't necessarily that that closed source thing was why they wanted to pay. They just valued that thought you've put into it your expertise, for example. So I think that is one thing, that I tried at the beginning was just start out, closed source proprietary, then make it open source. That's interesting to people. Like if you release something as open source, if you go the other way, like people are really mad if you start out with something open source and then later on you're like, oh, it's some other license. Then people are like that's so rotten. But I think doing it the other way, I think is quite valuable in terms of being able to find an audience. [00:24:29] Jeremy: And when you said it was closed source and paid to open source, do you still sell those map exports? [00:24:39] Brandon: I don't right now. It's something that I might do in the future, you know, like have small customizations of the data that are available, uh, for a fee. still like the core OpenStreetMap based map that's like a hundred gigs you can just download. And that'll always just be like a free download just because that's already out there. All the source code to build it is open source. So even if I said, oh, you have to pay for it, then someone else can just do it right? So there's no real reason like to make that like some sort of like paywall thing. But I think like overall if the project is gonna survive in the long term it's important that I'd ideally like to be able to like grow like a team like have a small group of people that can dedicate the time to growing the project in the long term. But I'm still like trying to figure that out right now. [00:25:34] Jeremy: And when you mentioned that when you went from closed to open and people were still paying you, you don't sell a product anymore. What were they paying for? [00:25:45] Brandon: So I have some contracts with companies basically, like if they need a feature or they need a customization in this way then I am very open to those. And I sort of set it up to make it clear from the beginning that this is not just a free thing on GitHub, this is something that you could pay for if you need help with it, if you need support, if you wanted it. I'm also a little cagey about the word support because I think like it sounds a little bit too wishy-washy. Pretty much like if you need access to the developers of an open source project, I think that's something that businesses are willing to pay for. And I think like making that clear to potential users is a challenge. But I think that is one way that you might be able to make like a living out of open source. [00:26:35] Jeremy: And I think you said you'd been working on it for about five years. Has that mostly been full time? [00:26:42] Brandon: It's been on and off. it's sort of my pandemic era project. But I've spent a lot of time, most of my time working on the open source project at this point. So I have done some things that were more just like I'm doing a customization or like a private deployment for some client. But that's been a minority of the time. Yeah. [00:27:03] Jeremy: It's still impressive to have an open source project that is easy to self-host and yet is still able to support you working on it full time. I think a lot of people might make the assumption that there's nothing to sell if something is, is easy to use. But this sort of sounds like a counterpoint to that. [00:27:25] Brandon: I think I'd like it to be. So when you come back to the point of like, it being easy to self-host. Well, so again, like I think about it as like a primitive of the web. Like for example, if you wanted to start a business today as like hosted CSS files, you know, like where you upload your CSS and then you get developers to pay you a monthly subscription for how many times they fetched a CSS file. Well, I think most developers would be like, that's stupid because it's just an open specification, you just upload a static file. And really my goal is to make Protomaps the same way where it's obvious that there's not really some sort of lock-in or some sort of secret sauce in the server that does this thing. How PMTiles works and building a primitive of the web [00:28:16] Brandon: If you look at video for example, like a lot of the tech for how Protomaps and PMTiles works is based on parts of the HTTP spec that were made for video. And 20 years ago, if you wanted to host a video on the web, you had to have like a real player license or flash. So you had to go license some server software from real media or from macromedia so you could stream video to a browser plugin. But now in HTML you can just embed a video file. And no one's like, oh well I need to go pay for my video serving license. I mean, there is such a thing, like YouTube doesn't really use that for DRM reasons, but people just have the assumption that video is like a primitive on the web. So if we're able to make maps sort of that same way like a primitive on the web then there isn't really some obvious business or licensing model behind how that works. Just because it's a thing and it helps a lot of people do their jobs and people are happy using it. So why bother? [00:29:26] Jeremy: You mentioned that it a tech that was used for streaming video. What tech specifically is it? [00:29:34] Brandon: So it is byte range serving. So when you open a video file on the web, So let's say it's like a 100 megabyte video. You don't have to download the entire video before it starts playing. It streams parts out of the file based on like what frames... I mean, it's based on the frames in the video. So it can start streaming immediately because it's organized in a way to where the first few frames are at the beginning. And what PMTiles really is, is it's just like a video but in space instead of time. So it's organized in a way where these zoomed out views are at the beginning and the most zoomed in views are at the end. So when you're like panning or zooming in the map all you're really doing is fetching byte ranges out of that file the same way as a video. But it's organized in, this tiled way on a space filling curve. IIt's a little bit complicated how it works internally and I think it's kind of cool but that's sort of an like an implementation detail. [00:30:35] Jeremy: And to the person deploying it, it just looks like a single file. [00:30:40] Brandon: Exactly in the same way like an mp3 audio file is or like a JSON file is. [00:30:47] Jeremy: So with a video, I can sort of see how as someone seeks through the video, they start at the beginning and then they go to the middle if they wanna see the middle. For a map, as somebody scrolls around the map, are you seeking all over the file or is the way it's structured have a little less chaos? [00:31:09] Brandon: It's structured. And that's kind of the main technical challenge behind building PMTiles is you have to be sort of clever so you're not spraying the reads everywhere. So it uses something called a hilbert curve, which is a mathematical concept of a space filling curve. Where it's one continuous curve that essentially lets you break 2D space into 1D space. So if you've seen some maps of IP space, it uses this crazy looking curve that hits all the points in one continuous line. And that's the same concept behind PMTiles is if you're looking at one part of the world, you're sort of guaranteed that all of those parts you're looking at are quite close to each other and the data you have to transfer is quite minimal, compared to if you just had it at random. [00:32:02] Jeremy: How big do the files get? If I have a PMTiles of the entire world, what kind of size am I looking at? [00:32:10] Brandon: Right now, the default one I distribute is 128 gigabytes, so it's quite sizable, although you can slice parts out of it remotely. So if you just wanted. if you just wanted California or just wanted LA or just wanted only a couple of zoom levels, like from zero to 10 instead of zero to 15, there is a command line tool that's also called PMTiles that lets you do that. Issues with CDNs and range queries [00:32:35] Jeremy: And when you're working with files of this size, I mean, let's say I am working with a CDN in front of my application. I'm not typically accustomed to hosting something that's that large and something that's where you're seeking all over the file. is that, ever an issue or is that something that's just taken care of by the browser and, and taken care of by, by the hosts? [00:32:58] Brandon: That is an issue actually, so a lot of CDNs don't deal with it correctly. And my recommendation is there is a kind of proxy server or like a serverless proxy thing that I wrote. That runs on like cloudflare workers or on Docker that lets you proxy those range requests into a normal URL and then that is like a hundred percent CDN compatible. So I would say like a lot of the big commercial installations of this thing, they use that because it makes more practical sense. It's also faster. But the idea is that this solution sort of scales up and scales down. If you wanted to host just your city in like a 10 megabyte file, well you can just put that into GitHub pages and you don't have to worry about it. If you want to have a global map for your website that serves a ton of traffic then you probably want a little bit more sophisticated of a solution. It still does not require you to run a Linux server, but it might require (you) to use like Lambda or Lambda in conjunction with like a CDN. [00:34:09] Jeremy: Yeah. And that sort of ties into what you were saying at the beginning where if you can host on something like CloudFlare Workers or Lambda, there's less time you have to spend keeping these things running. [00:34:26] Brandon: Yeah, exactly. and I think also the Lambda or CloudFlare workers solution is not perfect. It's not as perfect as S3 or as just static files, but in my experience, it still is better at building something that lasts on the time span of years than being like I have a server that is on this Ubuntu version and in four years there's all these like security patches that are not being applied. So it's still sort of serverless, although not totally vendor neutral like S3. Customizing the map [00:35:03] Jeremy: We've mostly been talking about how you host the map itself, but for someone who's not familiar with these kind of tools, how would they be customizing the map? [00:35:15] Brandon: For customizing the map there is front end style customization and there's also data customization. So for the front end if you wanted to change the water from the shade of blue to another shade of blue there is a TypeScript API where you can customize it almost like a text editor color scheme. So if you're able to name a bunch of colors, well you can customize the map in that way you can change the fonts. And that's all done using MapLibre GL using a TypeScript API on top of that for customizing the data. So all the pipeline to generate this data from OpenStreetMap is open source. There is a Java program using a library called PlanetTiler which is awesome, which is this super fast multi-core way of building map tiles. And right now there isn't really great hooks to customize what data goes into that. But that's something that I do wanna work on. And finally, because the data comes from OpenStreetMap if you notice data that's missing or you wanted to correct data in OSM then you can go into osm.org. You can get involved in contributing the data to OSM and the Protomaps build is daily. So if you make a change, then within 24 hours you should see the new base map. Have that change. And of course for OSM your improvements would go into every OSM based project that is ingesting that data. So it's not a protomap specific thing. It's like this big shared data source, almost like Wikipedia. OpenStreetMap is a dataset and not a map [00:37:01] Jeremy: I think you were involved with OpenStreetMap to some extent. Can you speak a little bit to that for people who aren't familiar, what OpenStreetMap is? [00:37:11] Brandon: Right. So I've been using OSM as sort of like a tools developer for over a decade now. And one of the number one questions I get from developers about what is Protomaps is why wouldn't I just use OpenStreetMap? What's the distinction between Protomaps and OpenStreetMap? And it's sort of like this funny thing because even though OSM has map in the name it's not really a map in that you can't... In that it's mostly a data set and not a map. It does have a map that you can see that you can pan around to when you go to the website but the way that thing they show you on the website is built is not really that easily reproducible. It involves a lot of c++ software you have to run. But OpenStreetMap itself, the heart of it is almost like a big XML file that has all the data in the map and global. And it has tagged features for example. So you can go in and edit that. It has a web front end to change the data. It does not directly translate into making a map actually. Protomaps decides what shows at each zoom level [00:38:24] Brandon: So a lot of the pipeline, that Java program I mentioned for building this basemap for protomaps is doing things like you have to choose what data you show when you zoom out. You can't show all the data. For example when you're zoomed out and you're looking at all of a state like Colorado you don't see all the Chipotle when you're zoomed all the way out. That'd be weird, right? So you have to make some sort of decision in logic that says this data only shows up at this zoom level. And that's really what is the challenge in optimizing the size of that for the Protomaps map project. [00:39:03] Jeremy: Oh, so those decisions of what to show at different Zoom levels those are decisions made by you when you're creating the PMTiles file with Protomaps. [00:39:14] Brandon: Exactly. It's part of the base maps build pipeline. and those are honestly very subjective decisions. Who really decides when you're zoomed out should this hospital show up or should this museum show up nowadays in Google, I think it shows you ads. Like if someone pays for their car repair shop to show up when you're zoomed out like that that gets surfaced. But because there is no advertising auction in Protomaps that doesn't happen obviously. So we have to sort of make some reasonable choice. A lot of that right now in Protomaps actually comes from another open source project called Mapzen. So Mapzen was a company that went outta business a couple years ago. They did a lot of this work in designing which data shows up at which Zoom level and open sourced it. And then when they shut down, they transferred that code into the Linux Foundation. So it's this totally open source project, that like, again, sort of like Mapbox gl has this awesome legacy in that this company funded it for years for smart people to work on it and now it's just like a free thing you can use. So the logic in Protomaps is really based on mapzen. [00:40:33] Jeremy: And so the visualization of all this... I think I understand what you mean when people say oh, why not use OpenStreetMaps because it's not really clear it's hard to tell is this the tool that's visualizing the data? Is it the data itself? So in the case of using Protomaps, it sounds like Protomaps itself has all of the data from OpenStreetMap and then it has made all the decisions for you in terms of what to show at different Zoom levels and what things to have on the map at all. And then finally, you have to have a separate, UI layer and in this case, it sounds like the one that you recommend is the Map Libre library. [00:41:18] Brandon: Yeah, that's exactly right. For Protomaps, it has a portion or a subset of OSM data. It doesn't have all of it just because there's too much, like there's data in there. people have mapped out different bushes and I don't include that in Protomaps if you wanted to go in and edit like the Java code to add that you can. But really what Protomaps is positioned at is sort of a solution for developers that want to use OSM data to make a map on their app or their website. because OpenStreetMap itself is mostly a data set, it does not really go all the way to having an end-to-end solution. Financials and the idea of a project being complete [00:41:59] Jeremy: So I think it's great that somebody who wants to make a map, they have these tools available, whether it's from what was originally built by Mapbox, what's built by Open StreetMap now, the work you're doing with Protomaps. But I wonder one of the things that I talked about with Tom was he was saying he was trying to build this mapping business and based on the financials of what was coming in he was stressed, right? He was struggling a bit. And I wonder for you, you've been working on this open source project for five years. Do you have similar stressors or do you feel like I could keep going how things are now and I feel comfortable? [00:42:46] Brandon: So I wouldn't say I'm a hundred percent in one bucket or the other. I'm still seeing it play out. One thing, that I really respect in a lot of open source projects, which I'm not saying I'm gonna do for Protomaps is the idea that a project is like finished. I think that is amazing. If a software project can just be done it's sort of like a painting or a novel once you write, finish the last page, have it seen by the editor. I send it off to the press is you're done with a book. And I think one of the pains of software is so few of us can actually do that. And I don't know obviously people will say oh the map is never finished. That's more true of OSM, but I think like for Protomaps. One thing I'm thinking about is how to limit the scope to something that's quite narrow to where we could be feature complete on the core things in the near term timeframe. That means that it does not address a lot of things that people want. Like search, like if you go to Google Maps and you search for a restaurant, you will get some hits. that's like a geocoding issue. And I've already decided that's totally outta scope for Protomaps. So, in terms of trying to think about the future of this, I'm mostly looking for ways to cut scope if possible. There are some things like better tooling around being able to work with PMTiles that are on the roadmap. but for me, I am still enjoying working on the project. It's definitely growing. So I can see on NPM downloads I can see the growth curve of people using it and that's really cool. So I like hearing about when people are using it for cool projects. So it seems to still be going okay for now. [00:44:44] Jeremy: Yeah, that's an interesting perspective about how you were talking about projects being done. Because I think when people look at GitHub projects and they go like, oh, the last commit was X months ago. They go oh well this is dead right? But maybe that's the wrong framing. Maybe you can get a project to a point where it's like, oh, it's because it doesn't need to be updated. [00:45:07] Brandon: Exactly, yeah. Like I used to do a lot of c++ programming and the best part is when you see some LAPACK matrix math library from like 1995 that still works perfectly in c++ and you're like, this is awesome. This is the one I have to use. But if you're like trying to use some like React component library and it hasn't been updated in like a year, you're like, oh, that's a problem. So again, I think there's some middle ground between those that I'm trying to find. I do like for Protomaps, it's quite dependency light in terms of the number of hard dependencies I have in software. but I do still feel like there is a lot of work to be done in terms of project scope that needs to have stuff added. You mostly only hear about problems instead of people's wins [00:45:54] Jeremy: Having run it for this long. Do you have any thoughts on running an open source project in general? On dealing with issues or managing what to work on things like that? [00:46:07] Brandon: Yeah. So I have a lot. I think one thing people point out a lot is that especially because I don't have a direct relationship with a lot of the people using it a lot of times I don't even know that they're using it. Someone sent me a message saying hey, have you seen flickr.com, like the photo site? And I'm like, no. And I went to flickr.com/map and it has Protomaps for it. And I'm like, I had no idea. But that's cool, if they're able to use Protomaps for this giant photo sharing site that's awesome. But that also means I don't really hear about when people use it successfully because you just don't know, I guess they, NPM installed it and it works perfectly and you never hear about it. You only hear about people's negative experiences. You only hear about people that come and open GitHub issues saying this is totally broken, and why doesn't this thing exist? And I'm like, well, it's because there's an infinite amount of things that I want to do, but I have a finite amount of time and I just haven't gone into that yet. And that's honestly a lot of the things and people are like when is this thing gonna be done? So that's, that's honestly part of why I don't have a public roadmap because I want to avoid that sort of bickering about it. I would say that's one of my biggest frustrations with running an open source project is how it's self-selected to only hear the negative experiences with it. Be careful what PRs you accept [00:47:32] Brandon: 'cause you don't hear about those times where it works. I'd say another thing is it's changed my perspective on contributing to open source because I think when I was younger or before I had become a maintainer I would open a pull request on a project unprompted that has a hundred lines and I'd be like, Hey, just merge this thing. But I didn't realize when I was younger well if I just merge it and I disappear, then the maintainer is stuck with what I did forever. You know if I add some feature then that person that maintains the project has to do that indefinitely. And I think that's very asymmetrical and it's changed my perspective a lot on accepting open source contributions. I wanna have it be open to anyone to contribute. But there is some amount of back and forth where it's almost like the default answer for should I accept a PR is no by default because you're the one maintaining it. And do you understand the shape of that solution completely to where you're going to support it for years because the person that's contributing it is not bound to those same obligations that you are. And I think that's also one of the things where I have a lot of trepidation around open source is I used to think of it as a lot more bazaar-like in terms of anyone can just throw their thing in. But then that creates a lot of problems for the people who are expected out of social obligation to continue this thing indefinitely. [00:49:23] Jeremy: Yeah, I can totally see why that causes burnout with a lot of open source maintainers, because you probably to some extent maybe even feel some guilt right? You're like, well, somebody took the time to make this. But then like you said you have to spend a lot of time trying to figure out is this something I wanna maintain long term? And one wrong move and it's like, well, it's in here now. [00:49:53] Brandon: Exactly. To me, I think that is a very common failure mode for open source projects is they're too liberal in the things they accept. And that's a lot of why I was talking about how that choice of what features show up on the map was inherited from the MapZen projects. If I didn't have that then somebody could come in and say hey, you know, I want to show power lines on the map. And they open a PR for power lines and now everybody who's using Protomaps when they're like zoomed out they see power lines are like I didn't want that. So I think that's part of why a lot of open source projects eventually evolve into a plugin system is because there is this demand as the project grows for more and more features. But there is a limit in the maintainers. It's like the demand for features is exponential while the maintainer amount of time and effort is linear. Plugin systems might reduce need for PRs [00:50:56] Brandon: So maybe the solution to smash that exponential down to quadratic maybe is to add a plugin system. But I think that is one of the biggest tensions that only became obvious to me after working on this for a couple of years. [00:51:14] Jeremy: Is that something you're considering doing now? [00:51:18] Brandon: Is the plugin system? Yeah. I think for the data customization, I eventually wanted to have some sort of programmatic API to where you could declare a config file that says I want ski routes. It totally makes sense. The power lines example is maybe a little bit obscure but for example like a skiing app and you want to be able to show ski slopes when you're zoomed out well you're not gonna be able to get that from Mapbox or from Google because they have a one size fits all map that's not specialized to skiing or to golfing or to outdoors. But if you like, in theory, you could do this with Protomaps if you changed the Java code to show data at different zoom levels. And that is to me what makes the most sense for a plugin system and also makes the most product sense because it enables a lot of things you cannot do with the one size fits all map. [00:52:20] Jeremy: It might also increase the complexity of the implementation though, right? [00:52:25] Brandon: Yeah, exactly. So that's like. That's really where a lot of the terrifying thoughts come in, which is like once you create this like config file surface area, well what does that look like? Is that JSON? Is that TOML, is that some weird like everything eventually evolves into some scripting language right? Where you have logic inside of your templates and I honestly do not really know what that looks like right now. That feels like something in the medium term roadmap. [00:52:58] Jeremy: Yeah and then in terms of bug reports or issues, now it's not just your code it's this exponential combination of whatever people put into these config files. [00:53:09] Brandon: Exactly. Yeah. so again, like I really respect the projects that have done this well or that have done plugins well. I'm trying to think of some, I think obsidian has plugins, for example. And that seems to be one of the few solutions to try and satisfy the infinite desire for features with the limited amount of maintainer time. Time split between code vs triage vs talking to users [00:53:36] Jeremy: How would you say your time is split between working on the code versus issue and PR triage? [00:53:43] Brandon: Oh, it varies really. I think working on the code is like a minority of it. I think something that I actually enjoy is talking to people, talking to users, getting feedback on it. I go to quite a few conferences to talk to developers or people that are interested and figure out how to refine the message, how to make it clearer to people, like what this is for. And I would say maybe a plurality of my time is spent dealing with non-technical things that are neither code or GitHub issues. One thing I've been trying to do recently is talk to people that are not really in the mapping space. For example, people that work for newspapers like a lot of them are front end developers and if you ask them to run a Linux server they're like I have no idea. But that really is like one of the best target audiences for Protomaps. So I'd say a lot of the reality of running an open source project is a lot like a business is it has all the same challenges as a business in terms of you have to figure out what is the thing you're offering. You have to deal with people using it. You have to deal with feedback, you have to deal with managing emails and stuff. I don't think the payoff is anywhere near running a business or a startup that's backed by VC money is but it's definitely not the case that if you just want to code, you should start an open source project because I think a lot of the work for an opensource project has nothing to do with just writing the code. It is in my opinion as someone having done a VC backed business before, it is a lot more similar to running, a tech company than just putting some code on GitHub. Running a startup vs open source project [00:55:43] Jeremy: Well, since you've done both at a high level what did you like about running the company versus maintaining the open source project? [00:55:52] Brandon: So I have done some venture capital accelerator programs before and I think there is an element of hype and energy that you get from that that is self perpetuating. Your co-founder is gungho on like, yeah, we're gonna do this thing. And your investors are like, you guys are geniuses. You guys are gonna make a killing doing this thing. And the way it's framed is sort of obvious to everyone that it's like there's a much more traditional set of motivations behind that, that people understand while it's definitely not the case for running an open source project. Sometimes you just wake up and you're like what the hell is this thing for, it is this thing you spend a lot of time on. You don't even know who's using it. The people that use it and make a bunch of money off of it they know nothing about it. And you know, it's just like cool. And then you only hear from people that are complaining about it. And I think like that's honestly discouraging compared to the more clear energy and clearer motivation and vision behind how most people think about a company. But what I like about the open source project is just the lack of those constraints you know? Where you have a mandate that you need to have this many customers that are paying by this amount of time. There's that sort of pressure on delivering a business result instead of just making something that you're proud of that's simple to use and has like an elegant design. I think that's really a difference in motivation as well. Having control [00:57:50] Jeremy: Do you feel like you have more control? Like you mentioned how you've decided I'm not gonna make a public roadmap. I'm the sole developer. I get to decide what goes in. What doesn't. Do you feel like you have more control in your current position than you did running the startup? [00:58:10] Brandon: Definitely for sure. Like that agency is what I value the most. It is possible to go too far. Like, so I'm very wary of the BDFL title, which I think is how a lot of open source projects succeed. But I think there is some element of for a project to succeed there has to be somebody that makes those decisions. Sometimes those decisions will be wrong and then hopefully they can be rectified. But I think going back to what I was talking about with scope, I think the overall vision and the scope of the project is something that I am very opinionated about in that it should do these things. It shouldn't do these things. It should be easy to use for this audience. Is it gonna be appealing to this other audience? I don't know. And I think that is really one of the most important parts of that leadership role, is having the power to decide we're doing this, we're not doing this. I would hope other developers would be able to get on board if they're able to make good use of the project, if they use it for their company, if they use it for their business, if they just think the project is cool. So there are other contributors at this point and I want to get more involved. But I think being able to make those decisions to what I believe is going to be the best project is something that is very special about open source, that isn't necessarily true about running like a SaaS business. [00:59:50] Jeremy: I think that's a good spot to end it on, so if people want to learn more about Protomaps or they wanna see what you're up to, where should they head? [01:00:00] Brandon: So you can go to Protomaps.com, GitHub, or you can find me or Protomaps on bluesky or Mastodon. [01:00:09] Jeremy: All right, Brandon, thank you so much for chatting today. [01:00:12] Brandon: Great. Thank you very much.
Kacper "prefetcher" Staroń created the PinkSea oekaki BBS on top of the AT Protocol. He also made the online multiplayer game MicroWorks with Noam "noam 2000" Rubin. He's currently studying Computer Science at the Lublin University of Technology. We discuss the appeal of oekaki BBSs, why and how PinkSea was created, web design of the early 2000s, flash animations, and building an application on top of the AT Protocol. Prefetcher Bluesky Github Personal site Microworks (Free multiplayer game) PinkSea and Harbor PinkSea PinkSea Bluesky Account PinkSea repository Harbor image proxy repository Harbor post from bnewbold.net imgproxy (Image proxy used by Bluesky) Early web design Web Design Museum Pixel Art in Web Design Kaliber10000 Eboy Assembler 2advanced epuls.pl (Polish social networking site) Wipeout 3 aesthetic Restorativland (Geocities archive) Flash sites and animations My Flash Archive (Run by prefetcher) dagobah Z0r Juicy Panic - Otarie IOSYS - Marisa Stole the Precious Thing Geocities style web hosts Neocities Nekoweb AT Protocol / Bluesky PDS Relay AppViews PLC directory Decentralized Identifier lexicon Jetstream XRPC ATProto scraping (List of custom PDS and did:web) Tools to view PDS data PDSls atp.tools ATProto browser Posters mentioned vertigris (Artist that promoted PinkSea) Mary (AT Protocol enthusiast) Brian Newbold (Bluesky employee) Oekaki drawing applets Tegaki chickenpaint Group drawing canvas Drawpile Aggie Other links Bringing Geocities back with Kyle Drake (Interview with creator of Neocities) firesky.tv (View all bluesky posts) ATFile (Use PDS as a file store) PinkSky (Instagram clone) front page (Hacker news clone) Smoke Signal (Meetup clone) -- Transcript You can help correct transcripts on GitHub. Intro [00:00:00] Jeremy: Today I am talking to Kacper Staroń. He created an oekaki BBS called PinkSea built on top of the AT protocol, and he's currently studying computer science at the Lublin University of Technology. We are gonna discuss the appeal of oekaki BBS, the web design of the early 2000s, flash animations, and building an application on top of the AT protocol. Kacper, thanks for talking with me today. [00:00:16] Prefetcher: Hello. Thank you for having me on. I'm Kacper Staroń also probably you know me as Prefetcher online. And as Jeremy's mentioned, PinkSea is an oekaki drawing bulletin board. You log in with your Bluesky account and you can draw and post images. It's styled like a mid to late 2000s website to keep it in the spirit. What's an oekaki BBS? [00:00:43] Jeremy: For someone who isn't familiar with oekaki BBSs what is different about them as opposed to say, a photo sharing website? [00:00:53] Prefetcher: The difference is that a photo sharing website you have the image already premade be it a photo or a drawing made in a separate application. And you basically log in and you upload that image. For example on Instagram or pixiv for artists even Flickr. But in the case of an oekaki BBS the thing that sets it apart is that oekaki BBSes already have the drawing tools built in. You cannot upload an already pre-made image with there being some caveats. Some different oekaki boards allow you to upload your already pre-made work. But Pinksea restricts you to a tool called Tegaki. Tegaki being a drawing applet that was built for one of the other BBSes and all of the drawing tools are inside of it. So you draw from within PinkSea and you upload it to the atmosphere. Every image that's on PinkSea is basically drawn right on it by the artists. No one can technically upload any images from elsewhere. How PinkSea got started and grew [00:01:56] Jeremy: You released this to the world. How did people find it and how many people are using it? [00:02:02] Prefetcher: I'll actually begin with how I've made it 'cause it kind of ties into how PinkSea got semi-popular. One day I was just browsing through Bluesky somewhere in the late 2024s. I was really interested in the AT Protocol and while browsing, one of the artists that I follow vertigris posted a post basically saying they'd really want to see something a drawing canvas like Drawpile or Aggie on AT Protocol or something like an oekaki board. And considering that I was really looking forward to make something on the AT Protocol. I'm like, that sounds fun. I used to be a member of some oekaki boards. I don't draw well but it's an activity that I was thinking this sounds like a fun thing to do. I'm absolutely down for it. From like, the initial idea to what I'd say was the first time I was proud to let someone else use it. I think it was like two weeks. I was posting progress on Bluesky and people seemed eager to use it. That kept me motivated. And yeah. Right as I approached the finish I posted about it as a response to vertigris' posts and people seemed to like it. I sent the early version to a bunch of artists. I basically just made a post calling for them. Got really positive feedback, things to fix, and I released it. And thanks to vertigris the post went semi-viral. The launch I got a lot of people which I would also tie to the fact that it was right after one of the user waves that came to Bluesky from other platforms. The website also seemed really popular in Japan. I remember going to sleep, waking up the next day, and I saw like a Japanese post about PinkSea and it had 2000 reposts and 3000 likes and I was just unable to believe it. Within I think the first week we got like 1000 posts overall which to me is just insane. For a week straight I just kept looking at my phone and clicking, refresh, refresh, refresh, just seeing the new posts flow in. There was a bunch of like really insane talented artists just posting their works. And I just could not believe it. PinkSea got I'd say fairly popular as an alternative AppView. People seem to really want oekaki boards back and I saw people going, oh look, it's like one of those 2000s oekaki boards! Oh, that's so cool! I haven't seen them in forever! The art stands out because it's human made [00:04:58] Prefetcher: And it made me so happy every single time seeing it. It's been since November, like four months, give or take. And today alone we got five posts. That doesn't sound seem like a lot but given that every single post is hand drawn it's still insane. People go on there and spend their time to produce their own original artworks. [00:05:26] Jeremy: This is especially relevant now when you have so much image generation stuff and they're making images that look polished but you're kind of like well... did you draw it? [00:05:39] Prefetcher: Yeah. [00:05:40] Jeremy: And when you see people draw with these oekaki boards using the tools that are there I think there's something very human and very nostalgic about oh... This came from you. [00:05:53] Prefetcher: Honestly, yeah. To me seeing even beginner artists 'cause PinkSea has a lot of really, really talented and popular people (and) also beginner artists that do it as a hobby. Ones that haven't been drawing for a long time. And no matter what you look at you just get like that homely feeling that, oh, that's someone that just spent time. That's someone that just wanted to draw for fun. And at least to me, with generative AI like images it really lacks that human aspect to it. You generate an image, you go, oh, that's cool. And it just fades away. But in this case you see people that spent their time drawing it spent their own personal time. And no matter if it's a masterpiece or not it's still incredibly nice to see people just do it for fun. [00:06:54] Jeremy: Yeah. I think whether it's drawing or writing or anything now more than ever people wanna see something that you made yourself right? They wanna know that a human did this. [00:07:09] Prefetcher: Yeah. absolutely. [00:07:11] Jeremy: So it sounds like, in terms of getting the initial users and the ones that are there now, it really all came out of a single Bluesky posts that an existing artist (vertigris) noticed and boosted. And like you said, you were lucky enough to go viral and that carried you all the way to now and then it just keeps going from there, [00:07:36] Prefetcher: Basically if not for vertigris PinkSea (would) just not exist because I honestly did not think about it. My initial idea on making something on ATProto and maybe in the future I'll do something like that would be a platform like StumbleUpon -- Something that would just allow you to go on a website, press a button, and it gets uploaded to your repo and your friends would be able to see oh -- you visited that website and there would be an AppView that would just recommend you sites based on those categories. I really liked that idea and I was dead set on making it but then like I noticed that post (from vertigris) and I'm like, no, that's better. I really wanna make that. And yeah. So right here I want to give a massive shout out to vertigris 'cause they've been incredibly nice to me. They've even contributed the German translation of PinkSea which was just insane to me. And yeah, massive shout out to every single other artist that, Reposted it, liked it, used it because, it's all just snowballed from there and even recently I've had another wave of new users from the PinkSea account. So there are periods where it goes up and it like goes chill -- and then popular again. Old internet and flash [00:08:59] Jeremy: Yeah. And so something that you mentioned is that some people who came across it they mentioned how it was nostalgic or it looked like the old oekaki BBSs from the early internet. And I noticed that that was something that you posted on your own website that you have an interest in that specifically. I wonder what about that part of the internet interests you? [00:09:26] Prefetcher: That is a really good question. Like, to me, even before PinkSea my interests lie in the early internet. I run on Twitter and also on Bluesky now an account called My Flash Archive, which was an archive of very random, like flash animations. And I still do that just not as much anymore 'cause I have a lot of other things to do. I used to on Google just type in Flash and look through the oldest archived random folders just having flash videos. And I would just go over them save all of that or go on like the dagobah or Z0r or swfchan. 'cause the early internet to me, it was really like more explorative. 'cause like now you have, people just concentrated in those big platforms like Twitter, Instagram, Facebook, whatever. And back then at least to me you had more websites that you would just go on, you would find cool stuff. And the designs were like sometimes very minimal, aesthetically pleasing. I'd named here one of my favorite sites, Kaliber10000 which had just fantastic web design. Like, I, I also spend a lot of time on like the web design museum just like looking at old web design and just in awe. My flash archive on Twitter at least got very popular. I kind of abandoned that account, but I think it was sitting at 12,000 followers if not more? And showed that people also yearn for that early internet vibe. And to me it feels really warm. Really different from the internet nowadays. Even with the death of flash you don't really have interactive experiences like it anymore. 'cause flash was supposed to be replaced by HTML5 and JavaScript and whatever but you don't really make interactive experiences that just come packaged in a single file like flash. You need a website and everything. In flash, it just had a single file. It could be shared on multiple sites and just experienced. That kind of propelled my interest. Plus I, I dunno, I just really like the old internet design aesthetics it really warms me (and really close..?) Flash loops [00:12:01] Jeremy: The flash one specifically. Were they animations or games or was there a specific type of a flash project that spoke to you? [00:12:15] Prefetcher: Something we call loops. Basically, it's sometimes animations. 'cause, surprisingly while I like flash games they weren't my main collection. What spoke to me more were loops. Basically someone would take a song, find a gif they liked, and they would just pair it together. Something like YTMND did. At least from loops I found some of my favorite musical artists, some of my favorite songs, a lot of interesting series, be it anime or TV or whatever. And you basically saw people make stuff about their favorite series and they would just share it online. I would go over those. For example, a good website as an example is z0r.de, which is surprisingly still active and updated to this day. And you would see people making loops about members of that community or whatever they like. And you would for example see like 10 posts about the same thing. So you would know someone decided to make 10 loops and just upload them at once. And yeah, to me, loops basically were like, I mean, they weren't always the highest quality or the most unique thing, but you would see someone liked something enough that they decided to make something about it. And I always found that really cool. I would late at night just browse for loops and I'm like, oh, oh, this series, I remember it. I liked it (laughs)! But of course flash games as well. I mean, I used to play a lot when I was younger, but specifically loops, even animations and especially like when someone took like their time to animate something like really in depth. My favorite example is, the music video to a song by the band Juicy Panic called Otari. Someone liked that song enough that they made an entire flash animated music video, which was basically vectorized art of various series like Azumanga Daioh or Neon Genesis Evangelion as well, and other things. And it was so cool, at least to me, like a lot of these loops just basically have an intense, like immense feeling on me (laughs). I just really liked collecting them. [00:14:38] Jeremy: And in that last example, it sounded more like it was a complete music video, not just a brief loop? [00:14:45] Prefetcher: No, it was like a five minute long music video that someone else made. [00:14:48] Jeremy: Five. Oh my gosh. [00:14:49] Prefetcher: Yeah. You would really see people's creativity shine through on just making those weird things that not a lot of people have seen, but you look at it and it's like, wow. It's different than YouTube (Sharable single file, vectorized) [00:15:01] Jeremy: It's interesting because you can technically do and see a lot of these things on, say, YouTube today, but I think it does feel a little different for some reason. [00:15:16] Prefetcher: It really is. Of course I'm not denying on YouTube you see a lot of creative things and whatever. But first and foremost, the fact that Flash is scalable. You don't lose the quality. So be able to open, I don't know, any of the IOSYS flash music videos for like their Touhou songs and the thing would just scale and you would see like in 4K and it's like, wow. And yeah, the fact that on YouTube you have like a central place where you just like put something and it just stays there. Of course not counting reuploads, but with Flash you just had like this one animation file that you would just be able to share everywhere and I don't know, like the aspect of sharing, just like having those massive collections, you would see this flash right here on this website and on that website and also on this website. And also seeing people's personal collections of flash videos and jrandomly online and you would also see this file and this file that you haven't seen it -- it really gives it, it's like explorative to me and that's what I like. You put in the effort to like go over all those websites and you just like find new and new cool stuff. [00:16:32] Jeremy: Yeah, that's a good point too that I hadn't thought about. You can open these files and you have basically the primitives of how it was made and since, like you said, it's vector based, there's no, oh, can you please upload it in 1080 p or 4K? You can make it as big as you want. [00:16:53] Prefetcher: Yeah. Web design differences, pixel art, non-responsive [00:16:55] Jeremy: I think web design as well it was very distinct. Maybe because the tools just weren't there, so a lot of people were building things more from scratch rather than pulling a template or using a framework. A lot of people were just making the design theirs I think rather than putting words on a page and filling into some template. [00:17:21] Prefetcher: Honestly, you raise a good point here that I did not think much about. 'cause like nowadays we have all of this tooling to make web design easier and you have design languages and whatnot. And you see people make really, in my opinion, still pretty websites, very usable websites on top of that. But all of them have like the same vibes to them. All of them have like a unified design language and all of them look very similar. And you kind of lose that creativity that some people had. Of course, you still find pretty websites that were made from scratch. But you don't really get the same vibes that you did get like back then. Like my favorite, for example, trend that used to be back on like the old internet is pixel art in web design. For example, Kaliber10000, or going off the top of my head, you had the Eboy or all the sites and then Poland, for example, ... (polish website) those websites use minimal graphics, like pixel graphics and everything to build really interesting looking websites. They had their own very massive charm to them that, I don't know, I don't see a lot in more modern internet. And it's also because back then you were limited by screen size, so you didn't have to worry about someone being on a Mac with high DPI or on a 32x9 monitor like I am right now. And just having to scale it up. So you would see people go more for images, like UI elements, images instead of just like building everything from scratch and CSS and whatnot. So, yeah, internet design had to accommodate the change. So we couldn't stay how it was forever 'cause technology changed. Design language has changed, but to me it's really lost its charm. Every single website was different, specific, the web design had like this weird form, at least on websites where it was like. I like to call it futuristic minimalism. They looked very modern and also very minimal and sort of dated. And I dunno, I just really like it. I absolutely recommend checking, on the web design museum fantastic website. I love them and the pixel art in web design sub page. Like those websites to me they just look fantastic. [00:19:52] Jeremy: Yeah, and that's a good point you brought up about the screen sizes where now you have to make sure your website looks good on a phone, on a tablet, on any number of monitor sizes. Back then in the late 90s, early 2000s, I think most people were looking at these websites on their 4x3 small CRT monitors. [00:20:20] Prefetcher: My favorite this website is best viewed with an 800 by 600 monitor. It's like ... what? [00:20:28] Jeremy: Exactly. Even if you open your personal site now the design is very reminiscent of those times and it looks really cool but at the same time on a lot of monitors it's a small box in the middle of the monitor, so it's like -- [00:20:49] Prefetcher: I saw that issue, 'cause I was making it on a 1080p monitor and now I have a 32x9 monitor and it does not scale. I've been working on reworking that website, but, also on the topic of my website, I, I wanna shout out a website from the 2000s that still exists today. 'cause, my website was really inspired by a website called Assembler. And Assembler, from what I could gather, was like a net art or like internet design collective. And the website still works to this day. You still had like, all of their projects, including the website that my website was based off of. [00:21:28] Jeremy: Yeah, I mean there, there definitely was an aesthetic to that time. And it's probably, like you said, it's probably people seeing someone else's site in this case, what, what did you call it? Assem? Assembler? [00:21:42] Prefetcher: Assembler. [00:21:42] Jeremy: Yeah. You see someone else's website and then maybe you try to copy some of the design language or you look at the HTML and the CSS and I mean, really at the time, these websites weren't being made with a ton of JavaScript. There weren't the minifiers, so you really could view source and just pull whatever you wanted from there. [00:22:06] Prefetcher: We also had those design studios, design agencies, notably 2advanced which check in now, their website still works, and their website is still in the same aesthetic as it was those 20 so years ago just dictating this futuristic design style that people really like. 'cause a lot of people nowadays also really like this old futurism minimalism for example a lot of people still love the Wipeout 3 aesthetic that was designed by one of my favorite studios overall the designers republic. And yeah, it's just hard for me to explain, but it feels so soulful in a way. [00:22:53] Jeremy: I think there are some trade offs. There's what we were talking about earlier with the flexibility of screen size. But there used to be with a lot of websites that used Flash, there used to be these very elaborate intros where the site is loading and there's these really neat animations. But at the same time, it's sort of like, well, to actually get to the content, it's a bit much, but, everything is a trade off. [00:23:25] Prefetcher: People had flash at their disposal and they just wanted to make, I have the tooling, I'm going to use all of the tooling and all of it. [00:23:33] Jeremy: Yeah. Yeah. but yeah, I definitely get what you're saying where when I went to make my own website I made it very utilitarian and in some ways boring, right? I think we do kind of miss some of what we used to have. [00:23:54] Prefetcher: I mean, in my opinion, utilitarian websites are just as fine. Like in some cases you don't really need a lot of flashy things and a lot of very modern very CPU intensive or whatever animations. Sometimes it is better to go on a website and just like, see, oh, there's the play button and that's it. [00:24:17] Jeremy: Yeah. Well definitely the animations and the intro and all that stuff. I guess more in terms of the aesthetics or the designs. It's tricky because there's definitely people making very cool things now things that weren't even possible back then. But it does feel like maybe the default is I'll pick this existing style sheet or this existing framework and just go with that. [00:24:47] Prefetcher: A lot of modern websites just go for similar aesthetics, similar designs, which they aren't bad, but they are also very just bland. They, they are futuristic, they are very well designed. But when you see the same website. The same -- five websites have the same feel. And this is especially, at least in my opinion, visible with websites built on top of NextJS or other frameworks. And it just feels corporate kind of dead. Like someone just makes a website that they want to sell something to you and not for fun. [00:25:26] Jeremy: With landing pages especially it's like, wow, this looks the same as every other site, but I guess it must work. [00:25:38] Prefetcher: It works. And it really cuts down on development time. You don't need to think much about it. You just already have a lot of well-established design rules that you just follow and you get a cohesive and responsive design system. Designing the PinkSea look and feel [00:25:56] Jeremy: Let's talk about that in connection with PinkSea. What was your thinking when you designed how PinkSea would look and feel? [00:26:06] Prefetcher: Honestly, at first I have to admit I looked at other websites. I looked at Bluesky first and foremost. I looked at, front page. I looked at Smoke Signal, and I thought that I might also build something that's modern and sleek and I sketched it out in an application and I showed it to some friends. One of them suggested I go for more like a 2000 aesthetic. I'm like, yeah, okay. I like that. As the website was built, I just saw more and more of how much I feel this could sit with others. Especially with the fact that it's an oekaki page an oekaki BBS and as you scroll through oekaki has a very distinct style to it. And as you scroll and you see all of those, pixel shaded, all those dithered images, non anti-aliased pens and whatnot. It feels really really cohesive somehow with the design aesthetic. But of course, PinkSea in itself is a modern website. Like if you were to go to my PinkSea repository. It's a modern website built up on top of Vue3, which talks via like XRPC API calls in real time and it's a single page app and whatever. That's kind of the thing I merged the modern way of making sites with a very oldish design language. And I feel, in my opinion, it somehow just really works. And especially it sets PinkSea apart from the other websites. It gives it that really weird aesthetic. You would go on it and you would not be like, oh, this is a modern site that connects with a modern protocol on top of a big decentralized network. This is just someone's weird BBS stuck in the 2000s that they forgot to shut down. (laughs) [00:28:00] Jeremy: Yeah. And I think that's a good reminder too, that when people are intentional about design, the tools we have now are so much better than what we used to have. There's nothing stopping us from making websites that when people go to them they really feel like something's different. I know I did not just land on Instagram. [00:28:27] Prefetcher: Yeah. And making PinkSea taught me that it's really easy to fall into that full string of thought that every site has to look modern. Because I was like, oh yeah, this is a modern protocol, a modern everything, and it has to look the part. It has to look interesting to people and everything. And after talking with a bunch of friends and other people and just going, huh, that's maybe like the 2000s isn't as bad as I thought. And yeah, the website especially it's design people seem to just really like it. Me too. I, I just absolutely love how PinkSea turned out it is really a reminder that you don't need modernness in web design always. And people really appreciate quirky looking pages, so to say, quirky like interesting. [00:29:23] Jeremy: I interviewed the, the creator of Neocities which is like kind of a modern version of GeoCities and yeah, that's really what one of the aspects that I think makes things so interesting to people from that era is, is that it really felt like you're creating your own thing, and not just everything looks the same. The term I think he used is homesteading. You're taking care of your place and it can match your sensibilities, your style, your likes, rather than having to, like you said, try to force everything to be this, this sort of base modern, look. The old spirit of the internet is coming back [00:30:08] Prefetcher: I mean Neocities and by extension also Nekoweb are websites that I often when I don't have much to do -- I like just going through them because you see a bunch of people just make their own places. And you see that even in 2025 when we have those big social media sites. You have platforms where you can get a ton of followers. You can get a ton of attention and everything. People to some extent still want that aspect of self-expression. They want to be able to make something that's uniquely theirs and you see people just make just really amazing websites build insane things on those old Geocities-like platforms using nothing but a code editor. You see them basically just wanting thing to express, oh, that's mine and no one else has it. So to say that's why. Yeah. I feel like to some extent the old school train of thought when it comes to the internet is slowly coming back. Especially with the advent of protocols like ATProto. And you'll experience more websites that just allow people to make their own homes on the internet. Cause in my opinion, one of the biggest problems is that people do not really want to register on a lot of platforms. 'cause you already have this place where you get all of your followers, you have all of your connections, and then you want to move and then you'll lose all of your connections and everything. But with something like ATProto, you can use the social graph of, for example, Bluesky. I want to add followers on PinkSea. So for example, you have an artist that has like 30,000 followers for example, I can just click import my following from Bluesky. And just like that they would already get all of the artists that they follow on Bluesky already added as followers on PinkSea. And for example, someone else joins and they followed that big artist and they instantly followed them on PinkSea as well. I think that we are slowly coming back to the advent of people owning their place online. PinkSea and ATProto (PDS) [00:32:24] Jeremy: Yeah. So let's talk a little bit more about how PinkSea fits into ATProto. For people who aren't super familiar with ATProto, maybe you could talk about how it's split up. You've got the PDS, the relays, the AppView. What are those and how do those fit into what PinkSea is? [00:32:48] Prefetcher: My favorite analogy, ATProto is a massive network, and at least me, when I saw the initial graph I was just very confused. I absolutely did not know what I'm looking at. But let's start with the base building block, something that ATProto wouldn't exist with. And it's the PDS. Think of the PDS as like a filing cabinet. You have a bunch of folders in which you have files, so to say. So you have a filing cabinet with your ID, this is the DID part that sometimes shows up and scares people. It's what we call a decentralized identifier. Basically that identifier is not really tied to the PDS, it just exists somewhere. And the end goal is that every user controls their DID. So for example, if your PDS shuts down, you can always move to somewhere else. Still keep like, for example, that you are prefetcher.miku.place. But in that filing cabinet the PDS going back to it you have your own little zone, your own cabinets, and that has your identifier, it's uniquely yours. Every single application on the AT protocol creates data. They create data and they store the data in a structured format called a record. A record is basically just a bunch of data that explains what that thing is, be it a like, a post on Bluesky an oekaki on PinkSea and an upvote on front page, or even a pixel on place.blue. And all of those records are organized into folders in your cabinet. And that folder is named with something we call a collection id. So for example, a like is, if I remember correctly, it's app.bsky.feed.like, so you see that it belongs to Bluesky. The app.bsky part. it's a feed thing, and the same way, PinkSea, for example, the oekaki and PinkSea uses com.shinolabs.pinksea.oekaki with com.shinolabs being the the collective that I use as a, pen name, so to say. PinkSea being, well, PinkSea and oekaki just being the name. It's an oekaki. If you want to see that there are a lot of tools, for example, PDSls or atp.tools or ATProto browser, if you had to go into one of those and you would type in for example, prefetcher.miku.place, you would see all of your records, the things that, you've created on the AT protocol network. Relay [00:35:19] Prefetcher: So you have a PDS, you have your data, but for example, imagine you have a PDS that you made yourself, you hosted yourself. How will, for example, Bluesky know that you exist? 'cause it won't, it's just a server in the middle of nowhere. That's where we have a relay. A relay is an application that listens to every single server. So every time you create something or you delete something, or for example, you edit a post, you delete an oekaki. You create a new, like -- Your PDS, your filing cabinet generates a record of that. It generates an event, something we call a commit. So, anytime you do something, your PDS goes, Hey, I did that thing. And relays function as big servers that a PDS can connect to. And it's a massive shout box. The PDS goes, Hey, I made this. Then the relay aggregates all of those PDSs into one and creates a massive stream of every single event that's going on the network at once. That's also where the name firehose comes from. 'cause the, the end result, the stream is like a firehose. It just shoots a lot of data directly at anyone who can connect to it. And the thing that makes AT Protocol open and able to be built on is that anyone can just go, I want to connect to jetstream1.west.bluesky.network. They just make a connection to it and boom they just get everything that's happening. You can, for example, see that via firesky.tv. If you go to it, you would open it in your browser. Every single Bluesky post being made in real time right directly in your computer. So you have the PDSs that store data, you have the relay that aggregates every, like, builds a stream of every single event on the network. AppViews [00:37:26] Prefetcher: You just get records. You can't interact with it. You can see that someone made a new record with that name, but to a human, you won't really understand what a cid is or what property something else is. That's why you have what we call AppViews. An AppView, or in full an application view is an application that runs on the AT protocol network. It connects to the relay and it transforms the network into a state that it can be used by people. That's why it's called an application view. 'cause it's a, a specialized view into the whole network. So, for example, PinkSea connects, and then it goes, hey, I want to listen on every single thing that's happening to com.shinolabs.pinksea.oekaki, and it sees all of those, new records coming in and PinkSea understands, oh, I can turn it into this, and then I can take this thing, store it in the database, and then someone can connect with a PinkSea front end. And then it can like, transform those things, those records into something that the front end understands. And then the front end can just display, for example, the timeline, the same way Bluesky, for example -- Bluesky gets every single event, every single new file, new record coming in from the network. And it goes. Okay, so this will translate into one more like on this post. And this post is a reply to that post. So I should chain it together. Oh. And this is a new feed, so I should probably display it to the user if they ask for feeds. And it basically just gets a lot of those disjoint records and it makes sense of them all. The end user has a different API to the Bluesky AppView. And then they can get a more specialized view into Bluesky. PinkSea does not store the original images, the PDS does [00:39:26] Jeremy: And so in that example, the PDSs, they can be hosted by Bluesky the company, or they could be hosted by any person. And so PinkSea itself, when somebody posts a new oekaki, a new image, they're actually telling PinkSea to go create the image in the user's PDS, right? PinkSea is itself not the the source of truth I guess you could say. [00:40:00] Prefetcher: PinkSea in itself. I don't remember which Bluesky team member said it, but I like the analogy that AppViews are like Google. So in Google, when you search something, Google doesn't have those websites. Google just knows that this thing is on that website. In the same vein, PinkSea, when you create a new oekaki, you tell PinkSea, Hey, go to my PDS and create that record for me. And then the person owns the PDS. So for example, let's say that in a year, of course I won't do it, but hypothetically here, I just go rogue and I shut down PinkSea, I delete the database. You still own the things. So for example, if someone else would clone the PinkSea repository and go here, there's PinkSea 2. They can still use all of those images that were already on the network. So, AppViews in a way basically just work as a search engine for the network. PinkSea doesn't store anything. PinkSea just indexes that a user made a thing on that server. And here I can show you how to get to it somehow. Those images aren't stored by PinkSea, but instead, I know that the image itself is stored, for example, on pds.example.com, and of course to reduce the load, we have a proxy. PinkSea asks the proxy to go to pds.example.com and fetch the image, and then it just returns it to the user. [00:41:37] Jeremy: And so what it sounds like then is if someone were to create oekaki on their own PDS completely independently of Pink Sea the fact that they had created that image would be sent to one of the relays, and then PinkSea would receive an event that says oh, this person created a new image then at that point your index could see, oh, somebody created a new image and they didn't even have to go through the PinkSea website or call the PinkSea APIs. Is that right? Sharing PDS records with other applications [00:42:14] Prefetcher: Yep. That is exactly right. For example, someone could now go, Hey, I'm making my own PinkSea-like application. And then they would go, I want to be compatible with PinkSea. So I'm using the same record. Or what we call a lexicon, basically describe how records look like. I forgot to mention that, but every single record has an attached lexicon. And lexicons serve as a blueprint. So a lexicon specifies, oh, this has an image, this has a for example, the tags attached to it, a description of the image. Validate that the record is correct, that you don't get someone just making up random stuff. But yeah, someone could just go, Hey, I'm making another website. Let's call it GreenForest for example. And GreenForest is also an oekaki website, but it uses, for example, chickenpaint instead of tegaki but I want to be able to interoperate with PinkSea. so I'm also gonna use com.shinolabs.pinksea.oekaki the collection, the same record, the same lexicon. And for example, they have their own servers and the servers just create regular oekaki records. So for example, GreenForest gets a new user, they log in, create, draw their beautiful image, and then they click upload it. So GreenForest goes to that person's PDS and tells the PDS, Hey, I want to make a new. com.shinolabs.pinksea.oekaki record. The PDS goes okay, I've done it for you. Let me just inform the relay that I did so, relay gets the notification that someone made that new PinkSea oekaki record. And so the main PinkSea instance, pinksea.art, which is listening in on the relay, gets a notification from the relay going, Hey, there is this new oekaki record. And PinkSea goes, sure, I'll index it. And so PinkSea just gets that GreenForest image directly in itself. And in the same vein, someone at PinkSea could draw something in tegaki -- their own beautiful character. And the same thing would happen with GreenForest. GreenForest would get that PinkSea image, that PinkSea record, and index it locally. So the two platforms, despite being completely different, doing completely different things, they would still be able to share images with each other. Bluesky PDS stores other AppView's data but they could stop at anytime [00:44:38] Jeremy: And these images, since they're stored in the PDS, what that would mean is that anybody building an application on ATProto, they can basically use Bluesky's PDS or the user's PDS as their storage. They could put any number of images in there and they could get into gigabytes of images. And that's the responsibility of the PDS and not yourself to keep track of. [00:45:12] Prefetcher: Yes, that can be the case. Of course, there is a hard limit on how big a single upload can be, which is, if I remember correctly, I don't wanna lie, I think it's 50 megabytes, I don't recall there being a hard cap on how big a single repository can be. I know of some people whose repositories are in the single gigabyte digits but this kind of is a thing scares app developers. 'cause you never know when Bluesky the company -- 'cause most people registering, are registering on Bluesky. We don't really know whether Bluesky, the company will want to keep it for free. Forever allow us to do something like that. You already have projects like, for example, ATFile, which just allow you to upload any arbitrary data just to store it, on their servers and they are paying for you. So we'll never know whether Bluesky will decide, okay, our services are only for Bluesky if you want to use PinkSea you have to deal with it. Or whether they go, okay, if you want to use alternative AppViews you have to pay us in order to host them. So, that also leads me to the fact that decentralization is an important part of AT protocol as Bluesky themselves say that they are a potential adversary. You cannot trust them in the long term. Right now they are benign right now, they're very nice, but, we never know how Bluesky will end up in a year or two. So if you want to be in the full control of your data, you need to sadly host it by yourself. And it's honestly really easy in order to do so. There is a ton of really useful online content blogs and whatever. I think I've set up my PDS in 10 minutes on a break between classes and university. But to a person that's non-technical that doesn't know much I'd say around an hour to two hours The liability and potential abuse from running a PDS [00:47:14] Jeremy: Yeah, I think the scary thing for a lot of people is technical or not, is even if it's easy to set up, you gotta make sure it keeps running. You gotta have backups. And so it could be a lot. [00:47:30] Prefetcher: Yeah. This is to be expected by the fact that you're in control of your data. Keeping it secure the same way, for your personal photos or your documents, for example, your master's diploma or whatever. And it's on you to keep your Bluesky interaction secure. On one hand, it's easier to get someone to do it, and I expect in the future we'll get people that are hosting public PDSes I sometimes thought of doing that for PinkSea, just like allowing people to register by PinkSea. But, doing so as a person, you also have to be constantly on call for abuse. So if someone decides to register via PinkSea and do some illicit activities, you are solely responsible for it. PDS and AppView moderation liability [00:48:17] Jeremy: So if they were to upload content that's illegal, for example, it's hosted on your servers so then it's your problem. [00:48:27] Prefetcher: Yeah, it is my problem. [00:48:29] Jeremy: At least the way that it works now, the majority of the people, their PDS is gonna be hosted by Bluesky. So if they upload content that's breaks the law, then that's the Bluesky company's problem at least currently. [00:48:44] Prefetcher: Yeah. That is something that Bluesky has to deal with. But I do believe that in the future we are going to have, more like independent entities just building infrastructure for ATProto, not even the relay it's just like PDSs for people to be able to join the atmosphere, but not directly via Bluesky. [00:49:06] Jeremy: I'm kind of curious also with the current PDSs, if it's hosted by Bluesky, are they, are they moderating what people upload to their PDSs? [00:49:16] Prefetcher: Good question. Honestly, I don't think they're moderating everything 'cause, it's infeasible for them to, for example, other than moderate Bluesky to also moderate PinkSea and moderate front page and whatnot. So it's the obvious responsibility to moderate itself and to report abuse. I'd say that if someone started uploading illicit material, I do not think, and this is not legal advice, I do not think that they would catch on until some point let's say. [00:49:52] Jeremy: I mean, from what you were describing too, it seems like the AppViews would also, have issues with this because if, let's say someone created a PinkSea record in their PDS directly and the image they put in was not an oekaki image, it's instead something pretty illegal in the country that your AppView is hosted then, Wouldn't that go straight to the PinkSea users viewing the website? [00:50:20] Prefetcher: Yes, sadly, this is something that you have to sign up as you're making an AppView and especially one with images. Sooner or later you are going to get material that you have to moderate and it's entirely on you. That's why, you have to think of moderation while you're working on an AppView. Bluesky has an insanely complicated, at least in my opinion, moderation system, which is composable and everything, which I like. But for smaller AppViews, I think it's too much to build the same level of tooling. So you have to rely more on manual work. Thankfully so far the user base on PinkSea has been nothing but stellar. I didn't have to deal with any law breaking stuff, but I am absolutely ready for one day where I'll have to sadly make some drastic moderation issues. [00:51:18] Jeremy: Yeah. I think to me that's the most terrifying thing about making any application that's open to user content. [00:51:29] Prefetcher: I get it, sadly. I'm no stranger to having issues with people, abusing my websites. Because since 2016, my, first major project was a text board based off of, a text board in a video game called DANGER/U/. It was semi-popular, during the biggest spike in activity in like 2017 and 2016, it had in the tens of thousands of monthly visitors. And sadly, yeah, even though it was only text, I've had to deal with a lot of annoying issues. So to say the worst I think was I remember waking up and people are telling me that DANGER/U/ is down. So I log in the activity logs and someone hit me with two terabytes of traffic in a day. There was a really dedicated person that just hated my website and just either spam me with posts or just with traffic. So, yeah, sadly I have experience with that. I know what to expect that's something that you sadly have to sign up for making a website that allows user content. Pinksea is a single server [00:52:42] Jeremy: To my understanding so far, PinkSea is just a single server. Is that right? [00:52:47] Prefetcher: It is a single server. Yeah. [00:52:48] Jeremy: That's kind of interesting in that, I think a lot of people when they make a project, they worry about scaling and things like that. But, was it a case where you just had a existing VPS and you're like, well hopefully this is, this is good enough? [00:53:03] Prefetcher: I actually ordered a new one even though it's not really powerful, but my train of thought was that I didn't expect it to blow up. I didn't expect it to require more than a single VPS with 8 gigabytes of RAM and whatnot. And so far it's handling it pretty well. I do not expect ever to reach the amounts of traffic that Bluesky does, so I do not really have to worry about insane scalability and whatever. But yeah. I thought of it always as a toy project until the day I released it and realized that it's a bit more than a toy project at this point. To this day, I just kind of think that that website even if it were popular, I would never expect it to have -- And in the best, most amazing case scenario, like a hundred posts a day. I do not have to deal with the amount of traffic that Bluesky does. So one VPS it is. [00:53:59] Jeremy: Yeah, that makes a lot of sense. I mean the application is also mostly reads, right? Most people are coming to see the posts and like you said, you get a few submissions a day, but all the read stuff can probably be cached. Harbor image proxy [00:54:15] Prefetcher: Yeah. The heaviest, thing that PinkSea requires is the image proxy harbor, and that's something that right now only runs on that server. It's in Luxembourg. I think that's where my coprovider hosts it but yeah, that gets the most reads. 'cause in most cases, PinkSea, all it does, all you get is reads from a database, which is just, it's a solved problem. It's really lightweight. But with something like image proxying, you have this whole new problem. 'cause it's a lot of data, and you somehow have to send it -- it's enough for me to just host it locally on that PinkSea server and just direct people to it. But sooner or later, I can always just put it behind something like Bunny CDN or whatnot to have it be worldwide. [00:55:09] Jeremy: So Harbor is something I think you added recently. How did the images work before and what is Harbor doing in its place? [00:55:18] Prefetcher: Before I did what a lot of us currently do and I just freeload atop of Bluesky CDN 'cause Bluesky CDN is just open so far. But it's something that personally irked me. 'cause, I want PinkSea to be completely independent of Bluesky Corporation. I, I wanted to persevere even if Bluesky just decides to randomly, for example, close, the CDN to others or the relay to others or the PLC directory in the worst case scenario. So I wanted to make my own CDN more like proxy. You can't really call it a CDN because it's not worldwide. It's just a single server but let's just say image proxy. So Harbor whenever a person goes to PinkSea, they start loading in all of the images and every single image instead of going to, for example, the PDS or to cdn.bluesky.app. They go to harbor.pinksea.art, you get attached the identifier of the user and what we call a content identifier. Every single, thing uploaded to a PDS has an attached content identifier, which identifies it in a secure way so to say. So Harbor does in reality a really simple set of things. First and foremost, if the user has not seen it, like, not loaded it before first Harbor asks the local cache, do I have this file? If they do, if Harbor does, it just sends the file and it tells the browser, Hey, by the way, please don't ask me about this file for the next day. And in most cases, after one refresh, the user, all of the images load instantly because the web browser just goes, of those files were already sent. And Harbor asked me not to like, ask it more about the same file. So in the case of the image isn't in harbor's local cache, Harbor, first does a lot of those steps to resolve, the users identifier through their PDS, basically resolving that identifier, the DID to a DID document, which is a document basically explaining how that user, what is their, alias, what is their handle and where can we find them, which PDS. So we find the PDS and we then ask the PDS, Hey, send us this file for this user. The PDS sends it or doesn't, in which case we just throw an error and, Harbor just saves it locally and it sends it to the client. It basically just that. But to my knowledge, it's the first non Bluesky image proxy that's deployed for any AppView. Which also caught the attention of Brian Newbold one of the Bluesky employees and made me really happy. DID PLC Lookup [00:58:14] Jeremy: The lookup when you have the user's, DID and you wanna find out where their PDS is that's talking to something called, I think it's the PLC directory? [00:58:25] Prefetcher: Actually there are two different ways. First is PLC directory, PLC originally standed for a placeholder, and then Bluesky realized that it's not a placeholder anymore, and they stealthily changed it to public ledger of credentials. So we have PLC and we have web, the most common version is PLC. The document, the DID document is stored on Bluesky controlled servers under the moniker of PLC directory. They expose a web API that basically just allows you to say, Hey, give me the document for did:plc, whatever. And, the directory goes, have it. And this is the less decentralized version. You can host your own PLC directory and you can basically ask (their) PLC directory to just send you every single document and just you can have your local copy, which some people already do, you kind of sacrifice the fact that you are not in control of the document. It's still on a centralized server, even if you control the keys. 'cause every single DID document also has a key. And that key is used to sign changes to the document. So technically, if you define your own set of keys, you can prevent anyone else from modifying your document, even Bluesky. 'cause every single document is verifiable back and forth. You can see the previous document and its key is used to sign the next document and the chain of trust is visible and no one can just make random changes to your identity, but yeah, it's still on Bluesky to control service and it's a point of contention. Bluesky eventually wants to move it to a nonprofit standards organization, but we have yet to see anything come out of it, sadly. DID WEB lookup The next method is web. And web instead of -- 'cause in did:plc, you have did:plc, and a random string of characters. [01:00:30] Prefetcher: Web relies on domains. So for example, the domain would already like be the sole authority of where the file is. So for example, if I had did:web:example.com, I would parse the DID and I would see it's hosted at example.com. So I go to example.com, I go to /.wellknown/did.json which is the well-known location for the file. And I would have the same DID document as I would have if I used, for example, a PLC DID resolved via the PLC directory. the web method, you are in control of the document entirely. It's on your server under your domain. While it's the more decentralized version, it's just kind of hard for non-technical people to make them. 'cause it relies on a bunch of things. And also the problem is that if you lose your domain, you also lose your identity. [01:01:23] Jeremy: Yeah. So unlike the PLC where it's not really tied to a specific domain, you can change domains. With the web way, you have to always keep the same domain 'cause it's a part of the DID and yeah, like you said, you can't let your renewal lapse or your credit card not work. 'cause then you just lose everything. [01:01:49] Prefetcher: Yeah. You would still be able to change handles, but you would be tied for that domain to forever send your DID otherwise you would just lose it forever. [01:01:57] Jeremy: Yeah, I had mostly only seen the PLC and I wasn't too familiar with the web, form of identification, but yeah that makes sense. [01:02:06] Prefetcher: I think the web if I remember correctly, there is slightly over 300 accounts total on the entire network that use it. Mary who is a person on Bluesky that does a lot of like, ATProto related things, has a GitHub repository that basically gives insight into the network. And on her GitHub repository, you can find the list of every single custom PDS and also how many DID webs there are in existence. And I think it was slightly over 300. [01:02:38] Jeremy: So are you on that list? [01:02:40] Prefetcher: My PDS Yeah. If you were to scroll down. I don't use a web DID 'cause I registered my account before when I was brand new to ATProto, so I didn't know anything. But if you had to scroll down, you would see pds.ata.moe, which is my custom PDS just running. [01:02:55] Jeremy: Cool. [01:02:57] Prefetcher: Yeah. Harbor image proxy can cache any image blob [01:02:58] Jeremy: So something I noticed about harbor, you take the, I believe you take the DID and then you take the CID, the content identifier. I noticed if you take any of those pairs from the ATProto network, like I go find a image somebody posted on Bluesky, I pass that post DID and CID for the image into harbor. Harbor downloads it and caches it. So it's like, does that mean anybody could technically use you as a ATProto CDN? [01:03:38] Prefetcher: Yes, the same way anyone could use like the Bluesky CDN to for example, run PinkSea like I did. cause I do not know if there is a good way to check if a CID of an image or a blob basically. 'cause files on ATProto are called blobs. I do not think there is a nice way to check if that blob is directly tied to a specific record. But that also allows you to make cool, interesting things. Crossposting to Bluesky talks directly to the PDS [01:04:06] Prefetcher: 'cause for example, PinkSea has that, cross post to Bluesky thing. So when you create an image, You already have an option to cross post it to Bluesky, which a lot of people liked. And it was a suggestion from one of the early users of PinkSea. And the way it works is that when we create a PinkSea record, we upload that image, right? And then PinkSea goes, okay, I'm gonna use that same image, the same content identifier, and just create a Bluesky post. So Bluesky and PinkSea all share the same image. I don't upload it twice, I just upload it once. use it in PinkSea and I also use it in Bluesky. And the same way Bluesky its CDN, can just fetch the image. I can also fetch the image from mine, 'cause blobs aren't tied to specific records. They just exist outside of that realm. And you could just query anything. Not even images. You could probably query a video or even a text file. [01:05:04] Jeremy: So when you cross post to Bluesky, you're creating a record directly in the person's PDS, not going through bluesky's API. [01:05:14] Prefetcher: No, I sidestep Bluesky's API completely. And, I basically directly talk to the PDS at all times. I just tell them, Hey, please, for me, create a app.bsky.feed.post record. And you have the image, the text, which also required me to manually parse text into rich text. 'cause like, Bluesky doesn't automatically detect for example, links or tags And you basically get -- like PinkSea creates a record directly with the link to the image. And all of those tags, like the PinkSea tag and whatever, And I completely sidestep. Bluesky's API. If Bluesky, the AppView would cease to exist, PinkSea would still happily create Bluesky crossposts for you. Other applications put metadata into Bluesky posts so they can treat them differently [01:06:02] Jeremy: And since you're creating the records yourself, then you can include additional metadata or fields where you know that this was a PinkSea post, or originally came from PinkSea. [01:06:13] Prefetcher: I could do that. I don't really do that right now 'cause I don't really have much of a reason other than adding a PinkSea hashtag to every single oekaki. But I, noticed, for example, I think it was PinkSky, interesting name, PinkSky, which is like (a) Bluesky Instagram client. Any single time you make a post via PinkSky it uses the Bluesky APIs. It's Bluesky, but it attaches a hidden hashtag like PinkSky underscore some random letters. In its feed building algorithm, it basically detects posts with that hashtag, that specific hashtag, and it builds a PinkSky only timeline. 'cause it's still a Bluesky post, but it has hidden additional metadata that identifies, Hey, it came from PinkSky. [01:07:02] Jeremy: It's pretty interesting how much control you have over what to put in the PDS. So, I'm sure there's a lot of interesting use cases that people are gonna come up with. [01:07:14] Prefetcher: Yeah, of course. You still lose some of the data when you go through the Bluesky API. 'cause of course it stores the record and it's all in formats and whatnot. But you can attach a lot of metadata that can identify posts and build micro networks within Bluesky itself. I see it like that. Bluesky CDN compression [01:07:37] Jeremy: And I think, this might have been a post from you. I think I saw somebody saying that when you view an image from the CDN that the Bluesky CDN specifically, there's some kind of compression going on that that messes with certain types of art. [01:07:55] Prefetcher: It's especially noticeable artists are complaining about it all the time, left and right. Bluesky is very happy with jpeg compression, by default, their CDN, -- like to every single image it applies a really not good amount of jpeg compression which is especially not small. If you compare an image that's uploaded via PinkSea, view an image on PinkSea, and view the same image, which is, it's the same content id. It's the same blob. And you view it on Bluesky, it loses so much fidelity, it loses so much of that aliasing on the pen. You just see everything become really blurry. And on top of that, when you upload an image via Bluesky itself, if I remember correctly, I don't wanna lie here, but they also downscale the image to 1024 pixels by default. So every single image, not only big ones, and artists usually work with really big canvases, they get, downscaled and also additionally they get jpegified. So for example, PinkSea directly uploads PNG files to the PDS. And for example, Harbor gives back the original file. It does no transformations on it, but Bluesky transforms all of them into JPEG compressed images and for photos, it's fine sometimes. 'cause I've also seen people just compare directly, downloaded images of the PDS versus images viewed on Bluesky. But for art it's especially noticible. And people really (do) not like that. [01:09:31] Jeremy: Yeah, that's kind of odd. 'cause if, if I understand correctly, then if you post directly to your PDS and Bluesky pulls it in you'll avoid that, that 1024 resizing. So your images will be higher quality? [01:09:47] Prefetcher: I actually do not know. That's an interesting question. Cause I know that the maybe their CDN also does that 'cause that's what I've heard from others, that on upload the image gets processed and squashed down. So I don't know if doing it via an alternative AppView would change it or would Bluesky just directly reject this post? Because for example, PinkSea, I have built-in which I think I might change in the future -- PinkSea will reject your post if it's bigger than 800x800. 'cause then it'll notice that something is off. This could not have been made with PinkSea. [01:10:26] Jeremy: Yeah, that's a good point I suppose we know at the very least, they have some third party and internal moderation tools that they feed the images through to, so they, they can do some automatic content tagging. But yeah, I, I don't know, like you said, whether, the resizing and all that stuff is at the CDN level [01:10:50] Prefetcher: The jpegification is definitely at the CDN level. 'cause, Bluesky is actually running an open source image proxy. It's called imgproxy. Brian Newbold talked about it a bit on that harbor post. And, yeah, so a lot of the compression, the end user things are done via image proxy, but that, downscaling, I don't know, you'd have to ask someone who's a bit more intimate with Bluesky's internals. [01:11:19] Jeremy: Cool. yeah, I think we've, we've covered a lot. Is there, is there anything else, you wanted to mention or thought we should have talked about? [01:11:26] Prefetcher: Regarding PinkSea I think I've mentioned a ton both the behind the scenes things and, the user things, the design principles. What I'd want to absolutely say, and it will sound cheesy, and, is that I'm eternally grateful to anyone who's actually visited PinkSea. It's definitely grown outta all of my like dreams for the platform, to the point where I'm sitting here just talking about it. I definitely hope that the future will bring us more applications (in) ATProto. I definitely have ideas on how to expand PinkSea, a lot of ideas, a lot of things I want to do, and I'm also a very busy person, so I never get around them. But yeah, think that's it, at least regarding PinkSea. [01:12:15] Jeremy: Cool. Well, if people want to check out PinkSea or see what you're up to, where can they find you? [01:12:22] Prefetcher: So PinkSea is at pinksea.art. That's the website and Bluesky Handle is at pinksea.art and me, well, search prefetcher on Bluesky, you'll probably find me. My tag is at prefetcher.miku.place. all of my socials are probably there. I'm Prefetcher pretty much every single platform except for the platforms that already had someone called Prefetcher. GitHub, github.com/purifetchi because Prefetcher was taken. And, yeah, hit me up. I'm always eager to talk. I don't bite. [01:13:00] Jeremy: Very cool. Well, Kacper thanks. Thanks for taking the time. This was fun. [01:13:04] Prefetcher: Thank you so much, Jeremy, for having me over. It was a pleasure.
Mayra Navarro is an organizer of WNB.rb and Ruby Perú. Mayra shares how the Ruby community helped her get to RubyConf, going from project manager to developer, and the different ways people learn and communicate. This is the final interview recorded at RubyConf 2023 in San Diego. -- Mayra's Github Peruvian Digital Platform Codeable bootcamp Groups Ruby Perú WNB.rb Atlanta Ruby People Cody Norman Stefanni Brasil of hexdevs Dave Kimura of Drifting Ruby Conferences RubyConf RailsConf -- Transcript You can help correct transcripts on GitHub. [00:00:00] Jeremy: I hope you've been enjoying the conversations from RubyConf. Before we get started. I just want to say thank you to everyone. I met at the conference, all the guests who were so generous with their time. And to Irene from RubyConf for arranging a space and helping me connect with guests. [00:00:16] This final interview is with Mayra Navarro. She's an organizer of the Ruby community in Lima, Peru and a member of the women and non-binary Ruby online community. She's going to tell us how the community pulled together. Both friends of hers and strangers she had never met. To get her to RubyConf this year, we start the story in April where she's just finished attending the Ruby on rails conference, RailsConf in Atlanta. Getting to RubyConf [00:00:44] Mayra: So the thing is, in the last RailsConf, the last day that I was in the US, um, the day that I was returning to Peru, I got fired. (laughs) Yes. So I was with all the stress. [00:01:01] All the luggages that I had to pick or maybe overweight or something like that. And then I received that [00:01:08] Jeremy: Oh my gosh. [00:01:09] Mayra: And I, oh my gosh, what I can do? [00:01:13] Jeremy: That's terrible. [00:01:15] Mayra: It was awful. Since that, I think it was May 1st or something like that. And I was looking for job like everybody else who were fired all these times It was a difficult time for me. my plan was just before September I get a job so I have enough money and not using my, my savings for, for going to the RailsConf. Sorry, the RubyConf. but, uh, eventually at the end of September, October, I didn't get anything. [00:01:44] I'm Christian. So I, well, God doesn't want me to come here. [00:01:50] it there must be a reason, but there was something inside me that. I just to have to do something else. and I thank to my mom because she's someone that is always fighting for what she wants. [00:02:02] So I say, okay, I went to sleep that day that I say, okay, maybe I don't want to go. So next day I have the idea. Maybe you didn't use your last card. There is something else. That is something that I have from my mom. I can feel that. I say, what if you ask for money? Well, like a fundraising, I learned about that word later, and I say what, what else could you lose you don't have anything to lose right now. [00:02:30] So I say, okay, I'm going to write something. I asked Cody Norman, that is someone that I really appreciate right now. I asked him about suggestions, if that's a good idea or no, maybe not. He said, yes, you can do it. Uh, and I asked him if he could help me with the speech because I tried to write something and also I'm not good at writing things on Twitter and especially asking for money because I had to be open myself and be vulnerable to do that. [00:03:02] And it was like, uh, the last break for myself [00:03:05] a... I sent the speech to Cody, he helped me to update some things that I have to just improve. And I did it. I, also, I didn't know how to open a GoFundMe campaign because that's only for the US and Mexico. I think it doesn't exist in Peru. [00:03:23] So he said, Oh, there is another page that you can go. [00:03:27] I did it. So I just published that. I didn't open that until three, four hours later, because I was like, no, I don't want to see. And then I, I open it and I started to contact with the people who. [00:03:44] Well, who knows me because I like to be connected with a lot of people. I'm part of the FL RB even being in Peru, I am part of the FL RB. I go attend to the Atlanta Ruby Group. I go, I, I know a lot of people because of the conference. I try to help to the woman and non binary community also. I am organizer of the Ruby Peru, but I didn't want to ask them money for them, but I have some close friends from the conference that I, that I go for all. [00:04:13] All these two years. So they helped me to share that. And in two days, I got the money. [00:04:20] It was like a, I can't believe it. It is what, and I'm not good open myself for things like that. I love helping people, but it's difficult when I, you have to help yourself. So. All these people who I could see their names because it's, it's transferred to PayPal. [00:04:39] So I could see their name is like, uh, I really appreciate the thing that they don't know me. Some people, they don't know me, but, but I know them. I know who you are, if you're listening to this and I thank you appreciate for doing that. I also had the opportunity because I need to talk about this. I got a ticket from HexDev, uh, from Stephanie. [00:05:01] Jeremy: Oh... Hexdevs. Yeah. [00:05:02] Mayra: Yes. And, also I applied for the volunteer positions, just in case But I got the volunteer position. So what I did is, besides all my expense, I mean, that trip and also the hotel, expenses, I don't know, does it work? I, I said, I'm going to give this ticket that I have left to one of the women in the wnb community. [00:05:25] So I did that and say, I have a ticket and also I can share the room. I don't want to say her name because She's trying not to be too connected to social media, but she, she accepted sharing the room with me. [00:05:40] Jeremy: Yeah. [00:05:43] Mayra: So she's already here with me and I feel so happy because People not only helping me, they helping me to help and it feel like, wow. [00:05:53] Yeah. And that is, that is my story. And I still, well, I accepted to come to talk about this today because I received a job offer in the morning that I accepted. [00:06:06] So I wanted to. Send a happy ending for all my story about this. Yeah. And especially because I know that in the next conference I'll be with my own money, I could say, expenses. Asking for help [00:06:20] Jeremy: So was this all this year, the RailsConf? That was this year where you, you went to the conference, you enjoyed the talks and you were employed. And so it was the day that it was over that you, you found out that you got laid off. Wow. it's this, you have this high, right, you've met all your friends and, you know, you're learning all this stuff and you're really excited. [00:06:42] And then you get this notice and it's like, what, what happened? [00:06:47] Mayra: Yeah. That is what's happening. [00:06:50] Jeremy: then you, you kind of, like you said, you opened yourself up but yeah, it takes courage to say like, Hey, I need, you know, I need some help. [00:06:57] Mayra: Yeah, it's, this is something that I learned about this is always asking for help. This is something that I have been I bring into my life is always asking for help. I know as a woman, uh, as a woman, I have the thing that Try to be strong sometimes. I can do it by myself. I don't need help. [00:07:16] I don't need help, but sometimes you need, as human, you can open yourself. It's not something related to [00:07:23] gender it's more like humanity. That's how I feel right now. That is the feeling that I have and that is what is going to keep with me. For the rest of my life, I know. (laughs) [00:07:33] Jeremy: Yeah. Cause I, I think when, when people don't know, they, they might assume because you're so involved, right. With your, your local community and then the community internationally where people just assume that, Hey, Mayra is doing great. Right? She's, she's got no problems, no issues, and, there's just no way for people to know unless, you know, you, you share, and then that way people can help you, [00:07:58] Mayra: Yes. [00:07:59] Jeremy: That's a great story. I'm, I'm, I'm glad that, like, getting laid off is never good, right? That's never fun. But at least... Uh, things positive came out of it in terms of people coming out to support you, but also like you said, being able to support another, you know, another member of our community, [00:08:19] Mayra: And I would do it, and I would do it again. [00:08:21] I know that. Attending conferences [00:08:23] Jeremy: You know, now that you've gotten to come out, how, how has the, the conference been for you? Like, [00:08:29] Mayra: It was really good. I feel less insecure than the last time that I was here. (laughs) Actually, my first RubyConf was RubyConf Mini in Rhode Island. So this is like a, the Ruby real not the real one. It's just my more it's different. [00:08:48] Mayra: But, uh, the same time is. It's closer. That's how I feel it. I mean, this is my fifth conference. My first one was in Colombia. RubyConf Colombia. And I got a ticket as a scholarship. but until now I can say that it's like a, the feeling of the Ruby community, not only Ruby on Rails. Ruby community is like a It's really positive. It has changed my life so much since the first time that I joined to community that it's, I'm so happy to be developer instead of what, you know, everybody switched jobs. [00:09:20] I did too so it's like, uh, I won't regret. From project manager to developer [00:09:24] Jeremy: Hmm. Tell, tell me a little bit about that. How did you get interested in Ruby or, or have been involved with the community? [00:09:31] Mayra: I wasn't, I it was because money. Because it is. [00:09:34] Jeremy: That's a good reason. That's a good reason. [00:09:36] Mayra: Yeah. The thing is, I am graduated, uh, of the university. Uh, in Peru, but I was project manager before, well, I've switched a lot of careers because I was looking what I wanted to do and eventually I was project manager also. but I hated me in that position wasn't really good and it wasn't the company. [00:09:59] I knew it was me. I wasn't satisfied with my job and also I didn't like that, uh, working from nine to six every day in an office or something like that. It wasn't for me. So I remember that someone, one friend on Facebook shared something like a bootcamp that was about to start in Peru, that they were teaching Ruby on Rails. [00:10:21] I didn't know what was Ruby on Rails at the time. And then, and also React and JavaScript because, and you have to pay only if you get your first job. [00:10:32] Jeremy: Oh, this is like a bootcamp. [00:10:34] Mayra: Yeah, it's bootcamp, the first one that I met, I know, but that time there was someone called Laboratoria, but it's only related to JavaScript, but this one's a little bit more complete. So I apply, I didn't know that I could make it. I did it and it was an intensive bootcamp, six months from nine to six, but also I remember I didn't leave. [00:10:59] The place until 11 o'clock PM, because we were all 19 people there. So we really wanted to change our future. When everything ends, there was a moment when I, I could feel that Ruby also, especially Ruby on Rails, it was like, uh, something that I really like, uh, the syntax. Things like that. And also our teachers used to say, I can see who could be backend, who's going to be frontend. [00:11:31] I consider myself full stack, but she, she used to say that. I remember that. [00:11:36] Jeremy: So, which one were you? [00:11:38] Mayra: I was the Ruby side. The backend. [00:11:43] Mayra: Then I got an internship in the same companies who that was promoting the, the bootcamp. After three months, the, the, the internship ended because it was part of the contract but I wanted really to work in a place that they had Ruby on Rails. [00:12:05] So that's what I got. It took me more time than the rest of my friends, it's maybe it was like. four of us got a job in Ruby on Rails, uh, and I got mine. I remember my first job, full time job for Ruby on Rails was for the government of Peru. Actually, they use, they use Ruby on Rails for, CMS that they manage, that is called gov.pe. So I started working there. So it was a nice experience and I love, and I learned a lot about that experience also. So that is my story how it started. [00:12:44] Jeremy: Yeah. So you had talked about your friend and your friend referred you to the bootcamp, had you ever done any programming or anything related? [00:12:54] Mayra: When I was project manager, I had the opportunity to, to manage developers. I have developers in charge. So, but I had the kind of person that even I was. Your product manager, I try to help you to solve some things, like something that I say is a pseudocode. Instead of coding, I tried to give you the pseudocode that the things that you could do. So with that, maybe I can help. Well, my, my goal wanted to help you to unlock if you, you, you got stuck in something. [00:13:30] So with that, I just have a little bit of knowledge of what to do, but I. I felt that I hadn't the tools or I hadn't the skill to do that. That's why I decided to, to study in a bootcamp because they can teach me about the, that kind of tools because I couldn't study by myself. I couldn't. I can understand how the things goes right now, but at that time I, I was, I was lost. [00:13:56] Jeremy: But that's like, the, the skill that you already had as a project manager, being able to write the pseudocode and, and talk to your developers about the type of problem they're, they're trying to solve. That, that's a really important skill already. So I think, like, going into the bootcamp, nothing was totally new. [00:14:15] Right? I, I think that's really great that, that you got to see that beforehand and, and hopefully get a sense for like, that you might. Enjoy this, this sort of thing too, right? [00:14:25] Mayra: I love solving puzzles, so that was puzzle for me. I started with Code Wars. I know everybody started with that, but it's like a resolving puzzles. I need something there. And one of the things I really love I love helping people. I discovered that when I was helpdesk before. eventually all this time, even this time without job, I realized I can bring that. [00:14:47] Oh, I being more. aware about that I can help people just coding. So that's, that's what I've been doing all these months because I try to understand about gems or learning things more, but my focus is always going to be helping people. [00:15:03] Jeremy: I, I think that's really great that that's something that really appeals to you because that's something everybody needs. [00:15:12] Mayra: You know, the word that comes to my mind all the time that I say this is server. If you think about the word server, it's what I do. It receives something and gives you something. It's all the time. It's, you know, I know it's a machine or something like that, but if you think about the word, you are receiving something and giving something. [00:15:36] In all the time you are waiting for a, for a request to give something. So that is the word that it's, is for me, it's kind of helping people. [00:15:45] Jeremy: Hmm. we all serve one another in, in, in one way or another. Yeah. the boot camp, you said it was, uh, six months, and... You were, you were staying till 11 at night. So what, what was that experience like? How different people communicate and learn [00:16:02] Mayra: it's a nightmare, don't do it. (laughs) No, it was fun. that bootcamp changed my life. Before that bootcamp, I would say, I'm not going to say I was lack of some of the skills. The thing is, I didn't know how to, how to communicate. And one of the things that I learned besides that you need English or things like that, it's more about how to communicate with people because, there are multiple ways. [00:16:28] You can't talk in a way, for example, there's something that I'm always going to remember about it is you would prefer. WhatsApp, for example, and I would prefer Slack, or maybe voice, voice records instead of writing, or maybe an email. So, there must be a point between you and me. that might help us to communicate in a good way. [00:16:53] I, me, myself, especially, don't have to be forced people to do it in my way. It's a way of two, for two, you and me, and the best way, and try to do the same for the rest of the team, for example, or the rest of the people. Maybe they don't prefer this in this way, maybe another way. I have to be open to that. [00:17:12] Before the bootcamp I didn't know anything about it, but, and I tried to do it in my way. And then, right, thinking about it, it was a little bit selfish, but I need to learn. I need to be aware about [00:17:25] Jeremy: You're, you're referring to the way people. Communicate, or the ways people learn, or... [00:17:31] Mayra: Communicate actually. If we talk about the people, how the people learn. I am the example of, I am bad at listening book, podcasts. [00:17:41] Jeremy: Uh... Oh (laughs)... [00:17:42] Mayra: I'm sorry, I, I have ADHD. So it's hard for me to follow videos and podcasts because I have to. Pause, uh, Rewind, and Play again. And this is something when I miss so many ideas. So I prefer reading blogs or maybe transcriptions because it helps me just do reading. [00:18:04] And then return and continue reading when I can't understand something. it was difficult for me just to understand also that people prefer videos. Yes, it's not only my way to learn, it's their way to learn. And also we need to be open to that. Even when I used to, I mentor a couple of... people So, I had to be open to that also. [00:18:29] I am the kind of person you can write me at 2 a. m. and if I am awake, I'm going to answer you because maybe you are desperate for an answer at the time, but I can understand there are no people who are not. Who doesn't like, don't like that, so I try to be open to that or maybe improve our communications or maybe give some rules and not to think that everything is personal, right? [00:18:56] It's just, I hope the best of you. And I try that you get the best of me. (laughs) [00:19:03] Jeremy: Yeah, it's understanding their expectations, what they feel comfortable with, so that you know, It's okay if I send Mayra a message at 2 AM, but if I send someone else a message at 2 AM, it, it, maybe their phone dings and, you know, now they're distracted and, yeah, so, that, that makes sense. [00:19:26] Mayra: Yeah. If you, for example, I, I, I'm going to ask you because I learned that, can I send you a message at that time? But I, even I have to think about the time zone. [00:19:36] Jeremy: Yeah, oh, that's true, that's true. [00:19:38] Mayra: For example, because now I, I would have think about just my friends from Peru, but now I have friends all over the world because of the Woman Non-binary community. [00:19:49] So I have to think about things like that when I write. So what, all the things that has been useful for me is, for example, is like when you schedule a message that has been useful for me when I have to ask or sending messages. [00:20:03] Jeremy: It's interesting that you mentioned how with learning you prefer blogs and, and books and things like that because this may be a generalization, but maybe with, newer developers or, or younger people, a lot of them really like the video form Yesterday I was, interviewing, David Copeland, who he, he wrote a book about, sustainable web development with Ruby on Rails, and, yeah, we were talking a little bit about, it's like, so many people want video, is there a, is there still a place for me with my, you know, my, my book? [00:20:39] And stuff like that, and I think it's important to remember that there's people like yourself, and, um, I, I'm partly the same way, like, I like to be able to have the text so that I can read it at my own pace and copy and paste stuff and stuff like that. But you're right that everybody learns differently, so it, it makes sense for there to be the videos, for there to be, podcasts and blog posts. [00:21:05] There's different people who learn different ways [00:21:07] Mayra: And also, some people, including me, needs to pay for something if you want to learn something, because sometimes when it is free, you won't have the value that [00:21:22] Mayra: it has. [00:21:23] Jeremy: I totally understand that, yeah. Accessibility for videos and podcasts [00:21:26] Mayra: And there is something I would like to mention after you talk about this is I open to videos and podcasts, I can't take my time because I have now a lot of friends who, who create this type kind of content, but I like to remember that there are people with other difficult things. [00:21:45] No, it's, it's related to accessibility because when you have deaf people, they need. Transcriptions, they need closed captions. So maybe you are in a place with a lot of noise and it can help you, even if the video has closed captions, so people can read it. So it is something like, it's not me. It's more to be more open to people who are really has a disability. [00:22:12] That's a word that was like, so yeah. Or maybe they, their main language is not English and a lot of the content or the majority of the content about coding is in English. So when you have the transcriptions or you have the blog, you can translate it. And it's easy for that is access to them. [00:22:31] Jeremy: Yeah, that's definitely true. And I think even past people who aren't native speakers or have a disability, if you aren't in either of those categories, there's still a lot of people who they want to have a transcript or outside. Ruby or programming, people who watch movies and TV shows, a lot of them turn on the subtitles and they're native English speakers. [00:22:55] The dialogue is in English. They still want to see the subtitles. [00:22:59] Yeah, I think it's becoming very common. So, to your point when you have video having a way for people to still get the information another way, I think is helpful for everyone. Yeah. [00:23:15] Mayra: And it isn't too difficult nowadays because now you have AI or maybe, programs that can get you the, at least the closest words. [00:23:24] Jeremy: It gets you maybe 90 percent of the way there, so it definitely saves time, but I will say it is still work. [00:23:33] Mayra: Yes. Yes. It still work. Actually, it's because it could be a couple of words that need that maybe the, the program needs to improve. You can improve how the program, uh, translated, but it is something behind the meaning that you still can keep. [00:23:49] Jeremy: It being there and not perfect is kind of better than having nothing, I guess, yeah. What's next [00:23:55] Jeremy: Now that you've spent time at RubyConf, like, what are, like what are your plans next? [00:24:02] Mayra: There is a story behind all this, but I'm going to, the TLDR [00:24:06] Jeremy: Okay. [00:24:08] Mayra: Could be easy because I have a plenty of time without working to make a lot of thoughts in my mind. So it's just like, uh, I would like to explore more about Ruby, Ruby without Rails, something like that. So one of the things that I would like to do after this is just. [00:24:27] I would like to investigate more about the use of Ruby out of what is what application. It is something I was talking like a couple of hours ago, because there I found a blog about how is, how are the conference. The Ruby conference in Japan. So it was really interesting. It was, an article that is really old, but it got my attention because I never thought about it because I came from a boot camp and it was like a. [00:24:59] There is something else. So I could see a couple of talks about talking about, for example, Rack. [00:25:06] Mayra: So I will like how, oh, for example, we have another talk about how to create desktop applications with Ruby. So that is something that I would like to investigate. I would like to try also with the Ruby Peru community. [00:25:20] We decided to choose to investigate more about it and prepare talks about it in Spanish, because that is the mission. Our vision of our community is to create content in Spanish. [00:25:34] And also I was planning to give a lightning talk, but I wasn't ready yet to do it because I was nervous about, because I applied for jobs or things like that, I hadn't the time to prepare that, but actually I would like. I dunno if you heard about Dave Kimura and Drifting Ruby? [00:25:52] Jeremy: Uh, yes. Yes. They, they do the videos, right. [00:25:54] Mayra: He has a, blog on how to implement some kind of, uh, when your test test fails, you saw the light can change to red or green based on that The test that you are running. So it was really interesting. It isn't related to rails, but it, it is based on ruby so it's like, wow, I want to learn how to do that. Woman and non-binary community (WNB-rb.dev) [00:26:17] Jeremy: Anything else you want to mention or think we should have talked about? [00:26:22] Mayra: Yeah, because I am a member of the Women and Non-binary community. So if you are a woman or a non-binary person, you're invited to our community, we are open to, to you and we have meetups monthly. Uh, we have book clubs and we are always open to new ideas to share, to help you to do. that's it, I think. Yes. [00:26:47] Jeremy: And where can they find you if they're interested in that? [00:26:51] Mayra: Uh, we have a webpage, [00:26:53] wnb-rb.dev That is dev in English, I think. [00:27:00] Yes. And there you can find us. And also there's a form, where you can give us your, your info. It won't be shared only. No, it won't be shared only for the organizers. And that's all. We keep your privacy there. [00:27:17] Jeremy: Very cool. So [00:27:19] wnb-rb.dev [00:27:23] Mayra: yes, it is. [00:27:26] Jeremy: Well, Myra thank you so much for spending time to talk with me today. [00:27:30] Mayra: Thank you and sorry for my English. Ha ha ha ha [00:27:34] Jeremy: Your English is good, your English is much better than my Spanish. [00:27:38] Mayra: Okay.
Jeremy Tangren, Director of Media Operations at The Duckbill Group, joins Corey on Screaming in the Cloud to discuss how he went from being a Project Manager in IT to running Media Operations at a cloud costs consultancy. Jeremy provides insight into how his background as a Project Manager has helped him tackle everything that's necessary in a media production environment, as well as what it was like to shift from a career on the IT side to working at a company that is purely cloud-focused. Corey and Jeremy also discuss the coordination of large events like re:Invent, and what attendance is really like when you're producing the highlight reels that other people get to watch from the comfort of their own homes. About JeremyWith over 15 years of experience in big tech, Jeremy brings a unique perspective to The Duckbill Group and its Media Team. Jeremy handles all things Media Operations. From organizing the team and projects to making sure publications go out on time, Jeremy does a bit of everything!Links Referenced: duckbillgroup.com: https://duckbillgroup.com requinnvent.com: https://requinnvent.com TranscriptAnnouncer: Hello, and welcome to Screaming in the Cloud with your host, Chief Cloud Economist at The Duckbill Group, Corey Quinn. This weekly show features conversations with people doing interesting work in the world of cloud, thoughtful commentary on the state of the technical world, and ridiculous titles for which Corey refuses to apologize. This is Screaming in the Cloud.Corey: Welcome to Screaming in the Cloud. I'm Corey Quinn. Today's guest is one of those behind-the-scenes type of people who generally doesn't emerge much into the public eye. Now, that's a weird thing to say about most folks, except in this case, I know for a fact that it's true because that's kind of how his job was designed. Jeremy Tangren is the Director of Media Operations here at The Duckbill Group. Jeremy, thank you for letting me drag you into the spotlight.Jeremy: Of course. I'm happy to be here, Corey.Corey: So, you've been here, what, it feels like we're coming up on the two-year mark or pretty close to it. I know that I had you on as a contractor to assist with a re:Invent a couple years back and it went so well, it's, “How do we get you in here full time? Oh, we can hire you.” And the rest sort of snowballed from there.Jeremy: Yes. January will be two years, in fact.Corey: I think that it's one of the hardest things to do for you professionally has always been to articulate the value that you bring because I've been working with you here for two years and I still do a pretty poor job of doing it, other than to say, once you get brought into a project, all of the weird things that cause a disjoint or friction along the way or cause the wheels to fall off magically go away. But I still struggle to articulate what that is in a context that doesn't just make it sound like I'm pumping up my buddy, so to speak. How do you define what it is that you do? I mean, now Director of Media Operations is one of those titles that can cover an awful lot of ground, and because of a small company, it obviously does. But how do you frame what you do?Jeremy: Well, I am a professional hat juggler, for starters. There are many moving parts and I come from a history of project management, a long, long history of project management. And I've worked with projects from small scale to the large scale spanning globally and I always understand that there are many moving parts that have to be tracked and handled, and there are many people involved in that process. And that's what I bring here to The Duckbill Group is that experience of managing the small details while also understanding the larger picture.Corey: It's one of those hard-to-nail-down type of roles. It's sort of one of those glue positions where, in isolation, it's well, there's not a whole lot that gets done when it is just you. I felt the same thing my entire career as a sysadmin turned other things that are basically fancy titles but still distilled down to systems administrator. And that is, well step one, I need a web property or some site or something that is going to absorb significant traffic and have developers building it. Because, “Oh, I'm going to run some servers.” “Okay, for what purpose?” “I don't know.”I was never good at coming up with the application that rode on top of these things. But give me someone else's application, I could make it scale and a bunch of exciting ways, back when that was trickier to do at smaller scale. These days, the providers out there make it a heck of a lot easier and all I really wind up doing is—these days—making fun of other people's hard work. It keeps things simpler, somehow.Jeremy: There always has to be a voice leading that development and understanding what you're trying to achieve at the end. And that's what a project manager, or in my role as Director of Media Operations, that's what I do is I see our vision to the end and I bring in the people and resources necessary to make it happen.Corey: Your background is kind of interesting. You have done a lot of things that a lot of places, mostly large companies, and mostly on the corporate IT side of the world. But to my understanding, this is the first time you've really gone into anything approaching significant depth with things that are cloud-oriented. What's it been like for you?Jeremy: It's a new experience. As you said, I've had experience all over the industry. I come from traditional data centers and networking. I'm originally trained in Cisco networking from way back in the day, and then I moved on into virtual reality development and other infrastructure management. But getting into the cloud has been something new and it's been a shift from old-school data centers in a way that is complicated to wrap your head around.Whereas in a data center before, it was really clear you had shelves of hardware, you had your racks, you had your disks, you had finite resources, and this is what you did; you built your applications on top of it and that was the end of the conversation. Now, the application is the primary part of the conversation, and scaling is third, fourth, fifth in the conversation. It's barely even mentioned because obviously we're going to put this in the cloud and obviously we're going to scale this out. And that's a power and capability that I had not seen in past companies, past infrastructures. And so, learning about the cloud, learning about the numerous AWS [laugh] services that exist and how they interact, has been a can of worms to understand and slowly take one worm out at a time and work with it and become its friend.Corey: I was recently reminded of a time before cloud where I got to go hang out with the founders at Oxide over in Oakland. I'd forgotten so much of the painful day-to-day minutia of what it took to get servers up and running in a data center, of the cabling nonsense, of slicing your fingers to ribbons on rack nuts, on waiting weeks on end for the server you ordered to show up, ideally in the right configuration, of getting 12 servers and 11 of them provision correctly and the 12th doesn't for whatever godforsaken reason. So, much of that had just sort of slipped my mind. And, “Oh, yeah, that's right. That's what the whole magic of cloud was.”Conversely, I've done a fair bit of IoT stuff at home for the past year or so, just out of basically looking for a hobby, and it feels different, for whatever reason, to be running something that I'm not paying a third party by the hour for. The actual money that we're talking about in either case is nothing, but there's a difference psychologically and I'm wondering how much the current cloud story is really shaping the way that an entire generation is viewing computers.Jeremy: I would believe that it is completely shifted how we view computers. If you know internet and computing history, we're kind of traveling back to the old ways of the centrally managed server and a bunch of nodes hanging off of it, and they basically being dummy nodes that access that central resource. And so, with the centralization of AWS resources and kind of a lot of the internet there, we've turned everyone into just a node that accesses this centralized resource. And with more and more applications moving to the web, like, natively the web, it's changing the need for compute on the consumer side in such a way that we've never seen, ever. We have gone from a standard two-and-a-half, three-foot tall tower sitting in your living room, and this is the family computer to everybody has their own personal computer to everyone has their own laptops to now, people are moving away from even those pieces of hardware to iPads because all of the resources that they use exist on the internet. So, now you get the youngest generation that's growing up and the only thing that they've ever known as far as computers go is an iPad in their hands. When I talk about a tower, what does that mean to them?Corey: It's kind of weird, but I feel like we went through a generation where it felt like the early days of automobiles, where you needed to be pretty close to a mechanic in order to reliably be convinced you could take a car any meaningful distance. And then they became appliances again. And in some cases, because manufacturers don't want people working on cars, you also have to be more or less a hacker of sorts to wind up getting access to your car. I think, on some level, that we've seen computers turn into appliances like that. When I was a kid, I was one of those kids that was deep into computers and would help the teachers get their overhead projector-style thing working and whatnot.And I think we might be backing away from that, on some level, just because it's not necessary to have that level of insight into how a system works to use it effectively. And I'm not trying to hold back the tide of progress. I just find it interesting as far as how we are relating with these things differently. It's a rising tide that absolutely lifts all ships, and that's a positive thing.Jeremy: Well, to carry your analogy further with cars, it used to be, especially in the United States, that in order to drive a car you had to understand a manual transmission, how to shift through all those gears, which gave you some understanding of what a clutch was and how the car moved. You had a basic understanding of how the car functions. And now in the United States, we all have automatic transmissions, and if I ask a regular person, “Do you understand how an engine works?” They'll just tell me straight, “No, I have no idea. My car gets me from A to B.”And computers have very much become that way, especially with this iPad generation that we're talking about, where it's a tool to access resources to get you from A to B, to get you from your fingertips to whatever the tools are that you're trying to access that are probably on the internet. And it changes the focus of what you need to learn as you're growing up and as you get into the industry. Because, say, for me, and you, Corey, we grew up with computers in their infancy and being those kids in the classroom, helping the teachers, helping our family members with whatever tech problem that they may have. Those were us. And we had to learn a lot about the technology and we had to learn a lot of troubleshooting skills in order to fix our family's problems, to help the classroom teacher, whatever it was. So, that's the set of skills that we learned through that generation of computers that the current generation isn't having to deal with as far as the complexity and the systems are concerned. So, they're able to learn different skills. They're able to interact with things more natively than you were I ever imagined.Corey: Well, I'm curious to get your perspective on how that's changed in the ways that you're interacting with teams from a project management perspective. I mean, obviously, we've seen a lot of technological advancement over the course of your career, which is basically the same length as mine, but what have you seen as far as how that affects the interplay of people on various teams? Or has it?Jeremy: It's made them more connected and less connected at the same time. I've found my most effective teams—generally—worked together in the same location and could turn around and poke the other team member in the back. And that facilitated communication all of the time. But that's not how every team can function. You have to lay on project management, you have to lay on tools and communication. And that's where this technology comes in is, how has it improved? How has it changed things?And interestingly, the web has advanced that, I think, to a significant degree because the old school, old project management style was either we're going to start planning this in Excel like so many managers do, or we're going to open up Microsoft Project and we're going to spend hours and hours and hours in this interface that only the project manager can access and show everyone. So, now we're in a point where everybody can access the project plan because it exists on the web—Smartsheets or whatever—we have instant communication via chat—whatever our chat of choice is Slack, Discord, IRC—and it allows us to work anywhere and be asynchronous. So, this team that previously I had to have sitting next to each other to poke each other, they can now be spread all over the world. I had a project a number of years ago working in virtual reality that we did exactly that. We had six teams spanned globally, and because we were able to hand off from each other through technology and through competent project management, the project was able to be built and successful rather than us continuing to point fingers at each other trying to understand what the next step is. So yeah, the technology has definitely helped.Corey: It's wild to me just seeing how… I guess, the techno-optimism has always been, “Oh, technology will heal the world and make things better,” as if it were this panacea that was going to magically take care of everything. And it's sort of a “Mo money, mo problems” type of situation where we've got, okay, great. Well, we found ways to make the old things that were super hard trivial, and all that's done is unlock a new level of problem because people remain people, for whatever it is. You work a lot more with people than you do with technology, despite the fact that if you look at the actual ins and outs of what you do, it's easy to look at that and say, “Oh, clearly, you're a technical person working on technology.” I would say you're a people-facing person.Jeremy: I agree with that, and that's why I refer to the people participating in my projects or on my team or what have you as people and not resources. Because people contribute to these things, not resources.Corey: So, what I'm curious about—since everyone seems to have a very disjointed opinion or perspective on how the sausage gets made over here—can you describe what your job is because I've talked to people who are surprised I have someone running media operations. Like, “How hard is it? You just sit down in front of a microphone and talk, and that's the end of it.” And I don't actually know the answer to that question because all I do is sit down in front of a microphone and talk, and that's the end of it. You have put process around things that used to vex me mightily and now I don't really know exist. So, it's sort of a weird question, but what is it you'd say it is you do exactly?Jeremy: I've actually had to answer this question a lot of times. The really, really simple version is I do everything that Corey doesn't [laugh]. Corey records and creates the content, he's the face of the company—you are the face of the company, Corey—and you do what you do. And that leaves everything else that has to be done. Okay, you record an episode of Screaming in the Cloud. What happens next?Well, it goes off to a team to be edited and then reviewed by the recording guest—to be reviewed by the guest. We have video editing that has to take place every time you go out to a shoot, we coordinate your presence on-site at events, we coordinate the arrival of other people to your events. In its shortest form, everything that is media-related that entails some kind of management or execution that is not creating content, I'm there moving things along or I have one of my teams moving things along.Corey: Before you showed up, there were times where I would record episodes like this and they wouldn't get published for three or four months because I would forget to copy the files from the recording off so that the audio processing team could handle that. And small minor process improvements have meant that I'm no longer the critical path for an awful lot of things, which is awesome. It's one of those invisible things around me that I vaguely know is there most of the time, but don't stop to think about it in quite the same way. Like, think of it as taking an airline trip somewhere: you get on the plane, you talk to the person at the gate, you [unintelligible 00:17:05] the flight attendants help you with your beverages or bags and whatnot, but you don't think about all the other moving parts that has to happen around aircraft maintenance, around scheduling, around logistics, around making sure that the seat is clean before you sit down at cetera, et cetera. There's so much stuff that you're sort of aware of you stopped to think about it, but it's not something that you see on a day-to-day basis, and as a result, it's easy to forget that it's there.Jeremy: That's what happens with people working in the background and making sure that things happen. A good example of this is also re:Quinnvent coming up here in a month, where we'll be at re:Invent—my production team, Corey, et cetera—where Corey will be recording content and we will be producing it in very short order. And this is an operation that has to occur without Corey's involvement. These are things that happen in the background in order to produce the content for the audience. There's always somebody who exists behind the scenes to move things along behind the creator. Because, Corey, you're a very busy person.Corey: People forget that I also have this whole, you know, consulting side thing that I do, too—Jeremy: Yeah.Corey: You know, the primary purpose of our company?Jeremy: Yeah. You are one of the busiest people I've ever met, Corey. Your calendar is constantly full and you're constantly speaking to people. There's no way that you would have the time to go in and edit each of these audio recordings, each of these video recordings, what have you. You have to have force multipliers hiding behind you to make things happen. And that's the job of the Director of Media Operations at Last Week in AWS.Corey: I have to ask since last year was your first exposure to it—that was your first re:Invent in person—what do you think of it?Jeremy: It was a madhouse [laugh]. I had managed re:Quinnvent back in 2021 remotely and I did not have the clear understanding of how far away things are, how convoluted the casinos are, things of that nature. And so, when I was working with you in 2021, Corey, I had to make a lot of assumptions that now I know better now that I've been on site. Like, it can take you 30 or 45 minutes to get across the street to one of the other re:Invent locations. It's really ridiculous.Corey: That was one of the reasons I had you and also I had Mike go out to re:Invent in person the first year that I was working with either of you on a full-time basis, just because otherwise it turned into, “Oh, it's just across the street. Just pop on over and say hi. It'll take you 20 minutes.” No, it'll take 90 by the time you walk through the casinos, find your way out, get over there, have your meeting, and get back. It's not one of those things that's trivial, but it's impossible to describe without sounding like a lunatic until someone has actually been there before.Jeremy: That's absolutely true. The personal experience is absolutely required in order to understand the scale of the situation, the number of people that are there, and the amount of time it's going to take to get to wherever you need to be, even if you're on the expo floor. Last year, I needed to deliver some swag to a vendor and it took me the better part of 15, 20 minutes to find that vendor on the expo floor using AWS's maps. It's a huge space and it's super convoluted. You need all the help that you can get. And being there in person was absolutely critical in order to understand the challenges that you're facing there, Corey.Corey: People think I'm kidding when I say that, “Oh, you're not going to re:Invent. I envy you. You must be so happy.” Like, people sometimes, if they haven't been, think, “Oh, I'm losing out because I don't have the chance to go to this madhouse event.” It's not as great as you might believe and there's no way to convince people of that until they've been there.I'm disheartened to learn that Google Cloud Next is going to be in Las Vegas next year. That means that's twice a year I'm going to have to schlep there instead of once. At least they're doing it in April, which is otherwise kind of a conference deadzone. But ugh, I am not looking forward to spending even more of my life in Las Vegas than I already have to. I'm there for eight nights a year. It's like crappy Cloud Hanukkah.Jeremy: [laugh]. I second that. To be perfectly honest, San Francisco and Moscone Center, I really enjoy them as venues for these kinds of conferences, but Las Vegas is apparently able to handle things better. I don't know, I'm not real happy about the Vegas situation either, and it takes a toll.Corey: Yeah, I tend to book the next week afterwards of just me lying flat on my back not doing anything. Maybe I'll be sick like I was last year with Covid when we all got it. Maybe I will just be breathing into a bag and trying to recuperate after it. But I know that for mostly the rest of the December, I just don't want to think about cloud too heavily or do too much with it, just because even for me, it's been too much and I need some decompression time.Jeremy: I hear that. I mean, you've had three weeks of Amazon just firehosing everyone with new service releases, new updates, just constantly, and re:Invent caps it all off. And then we get back and there's just no news and everybody's exhausted from being at re:Invent. Everyone's probably sick from being in Las Vegas. To add to that Las Vegas point, hey, there's a bunch of casinos and they're cigarette smoke-filled. Like, it's a miserable place to be. Why do they insist on putting these conferences there?Corey: It drives me nuts and it's one of those things where it's—I mostly feel for the people at Amazon who have to put this show on because yeah, I complain that I don't get much of a Thanksgiving because I have this whole looming event happening, but there are large squadrons of people that they send out in advance for weeks at a time to do things like build out the wireless networks, get everything set up, handle logistics, all of it, and those people forget having, [I think 00:23:35], something hanging over their head during Thanksgiving; they're spending Thanksgiving at… you know, a hotel. That's not fun.Jeremy: No, that's not fun at all. And I understand the stresses that they're under and what these event coordinators are having to deal with. This is a huge event and it's super thankless. That networking team, if things don't work absolutely perfectly and everybody has maximum bandwidth at all times, that poor networking team is going to catch hell, and they just spent weeks getting ready for this. That sucks. I don't really envy them, but I do applaud them and their effort.We've spent the last two [laugh] Thanksgivings planning our own event to make sure things happen smoothly. These big events take a lot of planning, a lot of coordination, and a lot of people. And I think that folks always underestimate that. They underestimate the level of involvement, the level of investment, and what it takes to put on a big show like this.Corey: I mean, there is the counterpoint as well, where we still go because it is the epicenter of the AWS universe. Despite all the complaints I have about it, I like the opportunity to talk to people who are doing interesting things who are building stuff that I'm going to be either using or have inflicted upon me over the next year. And even the community folks, just talking to people who are in the trenches as well, figuring out, okay, AWS built this thing and now I've got to work with it. There's really something to be said for having the opportunity to talk to those people face-to-face. I don't have a whole lot of excuses to go to all the places these people are from, but for one week a year, we all find ourselves in Las Vegas. So, that's at least the silver lining for me. Did you find any silver linings last time or was it simply, “I finally got to go home?”Jeremy: [laugh]. No, actually, I did enjoy it. To your point, getting to speak to the service owners, these people who've written the code, is an amazing opportunity. For example, I got to run into the DeepRacer folks last year before they set up for the tournament, and they were super helpful and super encouraging to get into the DeepRacer program. I explained, “I don't know how to code,” and they said, “That's fine. You can still get into it, you can still learn the basics.”And that's super endearing, that's really supportive, and that's really emblematic of the community that's coming to re:Invent. So, this is a great place to be for this experience, to meet these people, and to associate with other users like yourself. In fact, we're hosting the Atomic Liquors Drink-Up on November 29th for our community who's coming to re:Invent, and we want everybody who's able to come so that we can say hi, pay for your drinks and, you know, talk to us.Corey: Yeah, it starts at 7 p.m. We're co-hosting with RedMonk. No badge needed, no one will scan anything or try to sell you anything. It's just if you want to schlep the three miles from the strip out to Atomic Liquors to hang out with people who are like-minded, it's one of my favorite parts of the show every year. Please, if you're hearing this, you're welcome to come.Jeremy: Absolutely. It's open. No tickets required. It's totally free. I'll be there. Corey will be there—Corey is always there—and it'll be a great time, so I look forward to seeing you there.Corey: Indeed. Jeremy, thank you so much for taking the time out of your increasingly busy day as re:Invent looms ever closer to chat with me for about this stuff. If people want to learn more about what we're up to, where should they go to keep up? I lose track of what URL to send people to.Jeremy: [laugh]. Yeah, thank you for having me, Corey. And the best place to learn about what we're doing at re:Invent is actually requinnvent.com. That's R-E-Q-U-I-N-N-V-E-N-T dot com.Corey: And we'll put a link to that in the [show notes 00:27:33] for sure. Or at least your people will. I have nothing to do with it.Jeremy: Yes, I'll make sure they take care of that. Visit the website. That's where we've got our schedule, all the invites, anything you need to know about what we're doing at re:Invent that week is available on requinnvent.com.Corey: Jeremy, thank you for taking the time to speak with me. I really appreciate it.Jeremy: Thank you, Corey.Corey: Jeremy Tangren, Director of Media Operations here at The Duckbill Group. I'm Cloud Economist Corey Quinn and this is Screaming in the Cloud. If you've enjoyed this podcast, please leave a five-star review on your podcast platform of choice, whereas if you've hated this podcast, please leave a five-star review on your podcast platform of choice, along with an angry comment that one of these days someone on Jeremy's team will make it a point to put in front of me. But that day is not today.Corey: If your AWS bill keeps rising and your blood pressure is doing the same, then you need The Duckbill Group. We help companies fix their AWS bill by making it smaller and less horrifying. The Duckbill Group works for you, not AWS. We tailor recommendations to your business and we get to the point. Visit duckbillgroup.com to get started.
Sara is a team lead at thoughtbot. She talks about her experience as a professor at Kanazawa Technical College, giant LAN parties in Rochester, transitioning from Java to Ruby, shining a light on maintainers, and her closing thoughts on RubyConf. Recorded at RubyConf 2023 in San Diego. -- A few topics covered: Being an Assistant Arofessor in Kanazawa Teaching naming, formatting, and style Differences between students in Japan vs US Technical terms and programming resources in Japanese LAN parties at Rochester Transitioning from Java to Ruby Consulting The forgotten maintainer RubyConf Other links Sara's mastodon thoughtbot This Week in Open Source testdouble Ruby Central Scholars and Guides Program City Museum Japan International College of Technology Kanazawa RubyKaigi Applying mruby to World-first Small SAR Satellite (Japanese lightning talk) (mruby in space) Rochester Rochester Institute of Technology Electronic Gaming Society Tora-con Strong National Museum of Play Transcript You can help correct transcripts on GitHub. [00:00:00] Jeremy: I'm here at RubyConf, San Diego, with Sara Jackson, thank you for joining me today. [00:00:05] Sara: Thank you for having me. Happy to be here. [00:00:07] Jeremy: Sara right now you're working at, ThoughtBot, as a, as a Ruby developer, is that right? [00:00:12] Sara: Yes, that is correct. Teaching in Japan [00:00:14] Jeremy: But I think before we kind of talk about that, I mean, we're at a Ruby conference, but something that I, I saw, on your LinkedIn that I thought was really interesting was that you were teaching, I think, programming in. Kanazawa, for a couple years. [00:00:26] Sara: Yeah, that's right. So for those that don't know, Kanazawa is a city on the west coast of Japan. If you draw kind of a horizontal line across Japan from Tokyo, it's, it's pretty much right there on the west coast. I was an associate professor in the Global Information and Management major, which is basically computer science or software development. (laughs) Yep. [00:00:55] Jeremy: Couldn't tell from the title. [00:00:56] Sara: You couldn't. No.. so there I was teaching classes for a bunch of different languages and concepts from Java to Python to Unix and Bash scripting, just kind of all over. [00:01:16] Jeremy: And did you plan the curriculum yourself, or did they have anything for you? [00:01:21] Sara: It depended on the class that I was teaching. So some of them, I was the head teacher. In that case, I would be planning the class myself, the... lectures the assignments and grading them, et cetera. if I was assisting on a class, then usually it would, I would be doing grading and then helping in the class. Most of the classes were, uh, started with a lecture and then. Followed up with a lab immediately after, in person. [00:01:54] Jeremy: And I think you went to, is it University of Rochester? [00:01:58] Sara: Uh, close. Uh, Rochester Institute of Technology. So, same city. Yeah. [00:02:03] Jeremy: And so, you were studying computer science there, is that right? [00:02:07] Sara: I, I studied computer science there, but I got a minor in Japanese language. and that's how, that's kind of my origin story of then teaching in Kanazawa. Because Rochester is actually the sister city with Kanazawa. And RIT has a study abroad program for Japanese learning students to go study at KIT, Kanazawa Institute of Technology, in Kanazawa, do a six week kind of immersive program. And KIT just so happens to be under the same board as the school that I went to teach at. [00:02:46] Jeremy: it's great that you can make that connection and get that opportunity, yeah. [00:02:49] Sara: Absolutely. Networking! [00:02:52] Jeremy: And so, like, as a student in Rochester, you got to see how, I suppose, computer science education was there. How did that compare when you went over to Kanazawa? [00:03:02] Sara: I had a lot of freedom with my curriculum, so I was able to actually lean on some of the things that I learned, some of the, the way that the courses were structured that I took, I remember as a freshman in 2006, one of the first courses that we took, involved, learning Unix, learning the command line, things like that. I was able to look up some of the assignments and some of the information from that course that I took to inform then my curriculum for my course, [00:03:36] Jeremy: That's awesome. Yeah. and I guess you probably also remember how you felt as a student, so you know like what worked and maybe what didn't. [00:03:43] Sara: Absolutely. And I was able to lean on that experience as well as knowing. What's important and what, as a student, I didn't think was important. Naming, formatting, and style [00:03:56] Jeremy: So what were some examples of things that were important and some that weren't? [00:04:01] Sara: Mm hmm. For Java in particular, you don't need any white space between any of your characters, but formatting and following the general Guidelines of style makes your code so much easier to read. It's one of those things that you kind of have to drill into your head through muscle memory. And I also tried to pass that on to my students, in their assignments that it's. It's not just to make it look pretty. It's not just because I'm a mean teacher. It is truly valuable for future developers that will end up reading your code. [00:04:39] Jeremy: Yeah, I remember when I went through school. The intro professor, they would actually, they would print out our code and they would mark it up with red pen, basically like a writing assignment and it would be like a bad variable name and like, white space shouldn't be here, stuff like that. And, it seems kind of funny now, but, it actually makes it makes a lot of sense. [00:04:59] Sara: I did that. [00:04:59] Jeremy: Oh, nice. [00:05:00] Sara: I did that for my students. They were not happy about it. (laughs) [00:05:04] Jeremy: Yeah, at that time they're like, why are you like being so picky, right? [00:05:08] Sara: Exactly. But I, I think back to my student, my experience as a student. in some of the classes I've taken, not even necessarily computer related, the teachers that were the sticklers, those lessons stuck the most for me. I hated it at the time. I learned a lot. [00:05:26] Jeremy: Yeah, yeah. so I guess that's an example of things that, that, that matter. The, the aesthetics or the visual part for understanding. What are some things that they were teaching that you thought like, Oh, maybe this isn't so important. [00:05:40] Sara: Hmm. Pause for effect. (laughs) So I think that there wasn't necessarily Any particular class or topic that I didn't feel was as valuable, but there was some things that I thought were valuable that weren't emphasized very well. One of the things that I feel very strongly about, and I'm sure those of you out there can agree. in RubyWorld, that naming is important. The naming of your variables is valuable. It's useful to have something that's understood. and there were some other teachers that I worked with that didn't care so much in their assignments. And maybe the labs that they assigned had less than useful names for things. And that was kind of a disappointment for me. [00:06:34] Jeremy: Yeah, because I think it's maybe hard to teach, a student because a lot of times you are writing these short term assignments and you have it pass the test or do the thing and then you never look at it again. [00:06:49] Sara: Exactly. [00:06:50] Jeremy: So you don't, you don't feel that pain. Yeah, [00:06:53] Sara: Mm hmm. But it's like when you're learning a new spoken language, getting the foundations correct is super valuable. [00:07:05] Jeremy: Absolutely. Yeah. And so I guess when you were teaching in Kanazawa, was there anything you did in particular to emphasize, you know, these names really matter because otherwise you or other people are not going to understand what you were trying to do here? [00:07:22] Sara: Mm hmm. When I would walk around class during labs, kind of peek over the shoulders of my students, look at what they're doing, it's... Easy to maybe point out at something and be like, well, what is this? I can't tell what this is doing. Can you tell me what this does? Well, maybe that's a better name because somebody else who was looking at this, they won't know, I don't know, you know, it's in your head, but you will not always be working solo. my school, a big portion of the students went on to get technical jobs from after right after graduating. it was when you graduated from the school that I was teaching at, KTC, it was the equivalent of an associate's degree. Maybe 50 percent went off to a tech job. Maybe 50 percent went on to a four year university. And, and so as students, it hadn't. Connected with them always yet that oh, this isn't just about the assignment. This is also about learning how to interact with my co workers in the future. Differences between students [00:08:38] Jeremy: Yeah, I mean, I think It's hard, but, group projects are kind of always, uh, that's kind of where you get to work with other people and, read other people's code, but there's always that potential imbalance of where one person is like, uh, I know how to do this. I'll just do it. Right? So I'm not really sure how to solve that problem. Yeah. [00:09:00] Sara: Mm hmm. That's something that I think probably happens to some degree everywhere, but man, Japan really has groups, group work down. They, that's a super generalization. For my students though, when you would put them in a group, they were, they were usually really organized about who was going to do what and, kept on each other about doing things maybe there were some students that were a little bit more slackers, but it was certainly not the kind of polarized dichotomy you would usually see in an American classroom. [00:09:39] Jeremy: Yeah. I've been on both sides. I've been the person who did the work and the slacker. [00:09:44] Sara: Same. [00:09:46] Jeremy: And, uh, I feel bad about it now, but, uh, [00:09:50] Sara: We did what we had to do. [00:09:52] Jeremy: We all got the degree, so we're good. that is interesting, though. I mean, was there anything else, like, culturally different, you felt, from, you know, the Japanese university? [00:10:04] Sara: Yes. Absolutely. A lot of things. In American university, it's kind of the first time in a young person's life, usually, where they have the freedom to choose what they learn, choose where they live, what they're interested in. And so there's usually a lot of investment in your study and being there, being present, paying attention to the lecture. This is not to say that Japanese college students were the opposite. But the cultural feeling is college is your last time to have fun before you enter the real world of jobs and working too many hours. And so the emphasis on paying Super attention or, being perfect in your assignments. There was, there was a scale. There were some students that were 100 percent there. And then there were some students that were like, I'm here to get a degree and maybe I'm going to sleep in class a little bit. (laughs) That is another major difference, cultural aspect. In America, if you fall asleep in a meeting, you fall asleep in class, super rude. Don't do it. In Japan, if you take a nap at work, you take a nap in class, not rude. It's actually viewed as a sign of you are working really hard. You're usually working maybe late into the night. You're not getting enough sleep. So the fact that you need to take maybe a nap here or two here or there throughout the day means that you have put dedication in. [00:11:50] Jeremy: Even if the reason you're asleep is because you were playing games late at night. [00:11:54] Sara: Yep. [00:11:55] Jeremy: But they don't know that. [00:11:56] Sara: Yeah. But it's usually the case for my students. [00:11:59] Jeremy: Okay. I'm glad they were having fun at least [00:12:02] Sara: Me too. Why she moved back [00:12:04] Jeremy: That sounds like a really interesting experience. You did it for about two years? Three years. [00:12:12] Sara: So I had a three year contract with an option to extend up to five, although I did have a There were other teachers in my same situation who were actually there for like 10 years, so it was flexible. [00:12:27] Jeremy: Yeah. So I guess when you made the decision to, to leave, what was sort of your, your thinking there? [00:12:35] Sara: My fiance was in America [00:12:37] Jeremy: Good. [00:12:37] Sara: he didn't want to move to Japan [00:12:39] Jeremy: Good, reason. [00:12:39] Sara: Yeah, he was waiting three years patiently for me. [00:12:44] Jeremy: Okay. Okay. my heart goes out there . He waited patiently. [00:12:49] Sara: We saw each other. We, we were very lucky enough to see each other every three or four months in person. Either I would visit America or he would come visit me in Kanazawa. [00:12:59] Jeremy: Yeah, yeah. You, you couldn't convince him to, to fall in love with the country. [00:13:03] Sara: I'm getting there [00:13:04] Jeremy: Oh, you're getting Oh, [00:13:05] Sara: it's, We're making, we're making way. [00:13:07] Jeremy: Good, that's good. So are you taking like, like yearly trips or something, or? [00:13:11] Sara: That was, that was always my intention when I moved back so I moved back in the Spring of 2018 to America and I did visit. In 2019, the following year, so I could attend the graduation ceremony for the last group of students that I taught. [00:13:26] Jeremy: That's so sweet. [00:13:27] Sara: And then I had plans to go in 2020. We know what happened in 2020 [00:13:32] Jeremy: Yeah. [00:13:33] Sara: The country did not open to tourism again until the fall of 2022. But I did just make a trip last month. [00:13:40] Jeremy: Nice [00:13:40] Sara: To see some really good friends for the first time in four years. [00:13:43] Jeremy: Amazing, yeah. Where did you go? [00:13:46] Sara: I did a few days in Tokyo. I did a few days in Niigata cause I was with a friend who studied abroad there. And then a few days in Kanazawa. [00:13:56] Jeremy: That's really cool, yeah. yeah, I had a friend who lived there, but they were teaching English, yeah. And, I always have a really good time when I'm out there, yeah. [00:14:08] Sara: Absolutely. If anyone out there visiting wants to go to Japan, this is your push. Go do it. Reach out to me on LinkedIn. I will help you plan. [00:14:17] Jeremy: Nice, nice. Um, yeah, I, I, I would say the same. Like, definitely, if you're thinking about it, go. And, uh, sounds like Sara will hook you up. [00:14:28] Sara: Yep, I'm your travel guide. Technical terms in Japanese [00:14:31] Jeremy: So you, you studied, uh, you, you said you had a minor in Japanese? Yeah. So, so when you were teaching there, were you teaching classes in English or was it in Japanese? [00:14:42] Sara: It was a mix. Uh, when I was hired, the job description was no Japanese needed. It was a very, like, Global, international style college, so there was a huge emphasis on learning English. They wanted us to teach only in English. My thought was, it's hard enough learning computer science in your native language, let alone a foreign language, so my lectures were in English, but I would assist the labs in japanese [00:15:14] Jeremy: Oh, nice. Okay. And then, so you were basically fluent then at the time. Middle. Okay. Yeah. Yeah. Hey, well, I think if you're able to, to help people, you know, in labs and stuff, and it's a technical topic, right? So that's gotta be kind of a, an interesting challenge [00:15:34] Sara: I did learn a lot of new computer vocabulary. Yes. [00:15:39] Jeremy: So the words are, like, a lot of them are not the same? Or, you know, for, for specifically related to programming, I guess. [00:15:46] Sara: Hmm. Yeah, there are Japanese specific words. There's a lot of loan words that we use. We. Excuse me. There's a lot of loan words that Japanese uses for computer terms, but there's plenty that are just in Japanese. For example, uh, an array is hairetsu. [00:16:08] Jeremy: Okay. [00:16:08] Sara: And like a screen or the display that your monitor is a gamen, but a keyboard would be keyboard... Kībōdo, probably. [00:16:20] Jeremy: Yeah. So just, uh, so that, they use that as a loan word, I guess. But I'm not sure why not the other two. [00:16:27] Sara: Yeah, it's a mystery. [00:16:29] Jeremy: So it's just, it's just a total mix. Yeah. I'm just picturing you thinking like, okay, is it the English word or is it the Japanese word? You know, like each time you're thinking of a technical term. Yeah. [00:16:39] Sara: Mm hmm. I mostly, I, I I went to the internet. I searched for Japanese computer term dictionary website, and kind of just studied the terms. I also paid a lot of attention to the Japanese professors when they were teaching, what words they were using. Tried to integrate. Also, I was able to lean on my study abroad, because it was a technical Japanese, like there were classes that we took that was on technical Japanese. Computer usage, and also eco technology, like green technology. So I had learned a bunch of them previously. [00:17:16] Jeremy: Mm. So was that for like a summer or a year or something [00:17:20] Sara: It was six weeks [00:17:21] Jeremy: Six weeks. [00:17:21] Sara: During the summer, [00:17:22] Jeremy: Got it. So that's okay. So like, yeah, that must have been an experience like going to, I'm assuming that's the first time you had been [00:17:30] Sara: It was actually the second time [00:17:31] Jeremy: The second [00:17:32] Sara: Yeah. That was in 2010 that I studied abroad. [00:17:35] Jeremy: And then the classes, they were in Japanese or? Yeah. Yeah. That's, uh, that's, that's full immersion right there. [00:17:42] Sara: It was, it was very funny in the, in the very first lesson of kind of just the general language course, there was a student that was asking, I, how do I say this? I don't know this. And she was like, Nihongo de. [00:17:55] Jeremy: Oh (laughs) ! [00:17:56] Sara: You must, must ask your question only in [00:17:59] Jeremy: Yeah, Programming resources in Japanesez [00:17:59] Jeremy: yeah. yeah. That's awesome. So, so it's like, I guess the, the professors, they spoke English, but they were really, really pushing you, like, speak Japanese. Yeah, that's awesome. and maybe this is my bias because I'm an English native, but when you look up. Resources, like you look up blog posts and Stack Overflow and all this stuff. It's all in English, right? So I'm wondering for your, your students, when, when they would search, like, I got this error, you know, what do I do about it? Are they looking at the English pages or are they, you know, you know what I mean? [00:18:31] Sara: There are Japanese resources that they would use. They love Guguru (Google) sensei. [00:18:36] Jeremy: Ah okay. Okay. [00:18:38] Sara: Um, but yeah, there are plenty of Japanese language stack overflow equivalents. I'm not sure if they have stack overflow specifically in Japanese. But there are sites like that, that they, that they used. Some of the more invested students would also use English resources, but that was a minority. [00:19:00] Jeremy: Interesting. So there's a, there's a big enough community, I suppose, of people posting and answering questions and stuff where it's, you don't feel like, there aren't people doing the same thing as you out there. [00:19:14] Sara: Absolutely. Yeah. There's, a large world of software development in Japan, that we don't get to hear. There are questions and answers over here because of that language barrier. [00:19:26] Jeremy: Yeah. I would be, like, kind of curious to, to see, the, the languages and the types of problems they have, if they were similar or if it's, like, I don't know, just different. [00:19:38] Sara: Yeah, now I'm interested in that too, and I bet you there is a lot of research that we could do on Ruby, since Ruby is Japanese. [00:19:51] Jeremy: Right. cause something I've, I've often heard is that, when somebody says they're working with Ruby, Here in, um, the United States, a lot of times people assume it's like, Oh, you're doing a Rails app, [00:20:02] Sara: Mm hmm. [00:20:03] Jeremy: Almost, almost everybody who's using Ruby, not everyone, but you know, the majority I think are using it because of Rails. And I've heard that in Japan, there's actually a lot more usage that's, that's not tied to Rails. [00:20:16] Sara: I've also heard that, and I get the sense of that from RubyKaigi as well. Which I have never been lucky enough to attend. But, yeah, the talks that come out of RubyKaigi, very technical, low to the metal of Ruby, because there's that community that's using it for things other than Rails, other than web apps. [00:20:36] Jeremy: Yeah, I think, one of the ones, I don't know if it was a talk or not, but, somebody was saying that there is Ruby in space. [00:20:42] Sara: That's awesome. Ruby's everywhere. LAN parties in college [00:20:44] Jeremy: So yeah, I guess like another thing I saw, during your time at Rochester is you were, involved with like, there's like a gaming club I wonder if you could talk a little bit about your experience with that. [00:20:55] Sara: Absolutely, I can. So, at RIT, I was an executive board member for three or four years at the Electronic Gaming Society. EGS for short, uh, we hosted weekly console game nights in, the student alumni union area, where there's open space, kind of like a cafeteria. We also hosted quarterly land parties, and we would actually get people from out of state sometimes who weren't even students to come. Uh, and we would usually host the bigger ones in the field house, which is also where concerts are held. And we would hold the smaller ones in conference rooms. I think when I started in 2006, the, the, the LANs were pretty small, maybe like 50, 50 people bring your, your, your huge CRT monitor tower in. [00:21:57] Jeremy: Oh yeah, [00:21:57] Sara: In And then by the time I left in 2012. we were over 300 people for a weekend LAN party, um, and we were actually drawing more power than concerts do. [00:22:13] Jeremy: Incredible. what were, what were people playing at the time? Like when they would the LANs like, [00:22:18] Sara: Yep. Fortnite, early League of Legends, Call of Duty. Battlegrounds. And then also just like fun indie games like Armagedtron, which is kind of like a racing game in the style of [00:22:37] Jeremy: okay. Oh, okay, [00:22:39] Sara: Um, any, there are some like fun browser games where you could just mess with each other. Jackbox. Yeah. [00:22:49] Jeremy: Yeah, it's, it's interesting that, you know, you're talking about stuff like Fortnite and, um, what is it? Battlegrounds is [00:22:55] Sara: not Fortnite. Team Fortress. [00:22:58] Jeremy: Oh Team Fortress! [00:22:59] Sara: Sorry. Yeah. Oh, yeah, I got my, my names mixed up. Fortnite, I think, did not exist at the time, but Team Fortress was big. [00:23:11] Jeremy: Yeah. that's really cool that you're able to get such a big group there. is there something about Rochester, I guess, that that was able to bring together this many people for like these big LAN events? Because I'm... I mean, I'm not sure how it is elsewhere, but I feel like that's probably not what was happening elsewhere in the country. [00:23:31] Sara: Yeah, I mean, if you've ever been to, um, DreamHack, that's, that's a huge LAN party and game convention, that's fun. so... EGS started in the early 2000s, even before I joined, and was just a committed group of people. RIT was a very largely technical school. The majority of students were there for math, science, engineering, or they were in the computer college, [00:24:01] Jeremy: Oh, okay. [00:24:01] Sara: GCIS, G C C I S, the Gossano College of Computing and Information Sciences. So there was a lot of us there. [00:24:10] Jeremy: That does make sense. I mean, it's, it's sort of this, this bias that when there's people doing, uh, technical stuff like software, um, you know, and just IT, [00:24:21] Sara: Mm hmm. [00:24:23] Jeremy: there's kind of this assumption that's like, oh, maybe they play games. And it seems like that was accurate [00:24:27] Sara: It was absolutely accurate. And there were plenty of people that came from different majors. but when I started, there were 17, 000 students and so that's a lot of students and obviously not everyone came to our weekly meetings, but we had enough dedicated people that were on the eboard driving, You know, marketing and advertising for, for our events and things like that, that we were able to get, the good community going. I, I wasn't part of it, but the anime club at RIT is also huge. They run a convention every year that is huge, ToraCon, um. And I think it's just kind of the confluence of there being a lot of geeks and nerds on campus and Rochester is a college town. There's maybe like 10 other universities in [00:25:17] Jeremy: Well, sounds like it was a good time. [00:25:19] Sara: Absolutely would recommend. Strong Museum of Play [00:25:22] Jeremy: I've never, I've never been, but the one thing I have heard about Rochester is there's the, the Strong Museum of Play. [00:25:29] Sara: Yeah, that place is so much fun, even as an adult. It's kind of like, um, the, the Children's Museum in Indiana for, for those that might know that. it just has all the historical toys and pop culture and interactive exhibits. It's so fun. [00:25:48] Jeremy: it's not quite the same, but it, when you were mentioning the Children's Museum in, um, I think it's in St. Louis, there's, uh, it's called the City Museum and it's like a, it's like a giant playground, you know, indoors, outdoors, and it's not just for kids, right? And actually some of this stuff seems like kind of sketch in terms of like, you could kind of hurt yourself, you know, climbing [00:26:10] Sara: When was this made? [00:26:12] Jeremy: I'm not sure, but, uh, [00:26:14] Sara: before regulations maybe. ha. [00:26:16] Jeremy: Yeah. It's, uh, but it's really cool. So at the, at the Museum of Play, though, is it, There's like a video game component, right? But then there's also, like, other types of things, [00:26:26] Sara: Yeah, they have, like, a whole section of the museum that's really, really old toys on display, like, 1900s, 1800s. Um, they have a whole Sesame Street section, and other things like that. Yeah. From Java to Ruby [00:26:42] Jeremy: Check it out if you're in Rochester. maybe now we could talk a little bit about, so like now you're working at Thoughtbot as a Ruby developer. but before we started recording, you were telling me that you started, working with Java. And there was like a, a long path I suppose, you know, changing languages. So maybe you can talk a little bit about your experience there. [00:27:06] Sara: Yeah. for other folks who have switched languages, this might be a familiar story for you, where once you get a job in one technology or one stack, one language, you kind of get typecast after a while. Your next job is probably going to be in the same language, same stack. Companies, they hire based on technology and So, it might be hard, even if you've been playing around with Ruby in your free time, to break, make that barrier jump from one language to another, one stack to another. I mean, these technologies, they can take a little while to ramp up on. They can be a little bit different, especially if you're going from a non object oriented language to an object oriented, don't. Lose hope. (laughs) If you have an interest in Ruby and you're not a Rubyist right now, there's a good company for you that will give you a chance. That's the key that I learned, is as a software developer, the skills that you have that are the most important are not the language that you know. It's the type of thinking that you do, the problem solving, communication, documentation, knowledge sharing, Supporting each other, and as Saron the keynote speaker on Wednesday said, the, the word is love. [00:28:35] Jeremy: [00:28:35] Sara: So when I was job hunting, it was really valuable for me to include those important aspects in my skill, in my resume, in my CV, in my interviews, that like, I'm newer to this language because I had learned it at a rudimentary level before. Never worked in it really professionally for a long time. Um, when I was applying, it was like, look, I'm good at ramping up in technologies. I have been doing software for a long time, and I'm very comfortable with the idea of planning, documenting, problem solving. Give me a chance, please. I was lucky enough to find my place at a company that would give me a chance. Test Double hired me in 2019 as a remote. Software Consultant, and it changed my life. [00:29:34] Jeremy: What, what was it about, Ruby that I'm assuming that this is something that you maybe did in your spare time where you were playing with Ruby or? [00:29:43] Sara: I am one of those people that don't really code in their spare time, which I think is valuable for people to say. The image of a software developer being, well, if you're not coding in your spare time, then you're not passionate about it. That's a myth. That's not true. Some of us, we have other hobbies. I have lots of hobbies. Coding is not the one that I carry outside of the workplace, usually, but, I worked at a company called Constant Contact in 2014 and 2015. And while I was there, I was able to learn Ruby on Rails. [00:30:23] Jeremy: Oh, okay. So that was sort of, I guess, your experience there, on the job. I guess you enjoyed something about the language or something about Rails and then that's what made you decide, like, I would really love to, to... do more of this [00:30:38] Sara: Absolutely. It was amazing. It's such a fun language. The first time I heard about it was in college, maybe 2008 or 2009. And I remember learning, this looks like such a fun language. This looks like it would be so interesting to learn. And I didn't think about it again until 2014. And then I was programming in it. Coming from a Java mindset and it blew my mind, the Rails magic also, I was like, what is happening? This is so cool. Because of my typecasting sort of situation of Java, I wasn't able to get back to it until 2019. And I don't want to leave. I'm so happy. I love the language. I love the community. It's fun. [00:31:32] Jeremy: I can totally see that. I mean, when I first tried out Rails, yeah, it, like, you mentioned the magic, and I know some people are like, ah, I don't like the magic, but when, I think, once I saw what you could do, And how, sort of, little you needed to write, and the fact that so many projects kind of look the same. Um, yeah, that really clicked for me, and I really appreciated that. think that and the Rails console. I think the console is amazing. [00:32:05] Sara: Being able to just check real quick. Hmm, I wonder if this will work. Wait, no, I can check right now. I [00:32:12] Jeremy: And I think that's an important point you brought up too, about, like, not... the, the stereotype and I, I kind of, you know, showed it here where I assumed like, Oh, you were doing Java and then you moved to Ruby. It must've been because you were doing Ruby on the side and thought like, Oh, this is cool. I want to do it for my job. but I, I thought that's really cool that you were able to, not only that you, you don't do the programming stuff outside of work, but that you were able to, to find an opportunity where you could try something different, you know, in your job where you're still being paid. And I wonder, was there any, was there any specific intention behind, like, when you took that job, it was so that I can try something different, or did it just kind of happen? I'm curious what your... The appeal of consulting [00:32:58] Sara: I was wanting to try something different. I also really wanted to get into consulting. [00:33:04] Jeremy: Hmm. [00:33:05] Sara: I have ADHD. And working at a product company long term, I think, was never really going to work out for me. another thing you might notice in my LinkedIn is that a lot of my stays at companies have been relatively short. Because, I don't know, I, my brain gets bored. The consultancy environment is... Perfect. You can go to different clients, different engagements, meet new people, learn a different stack, learn how other people are doing things, help them be better, and maybe every two weeks, two months, three months, six months, a year, change and do it all over again. For some people, that sounds awful. For me, it's perfect. [00:33:51] Jeremy: Yeah, I hadn't thought about that with, with consulting. cause I, I suppose, so you said it's, it's usually about half a year between projects or is It [00:34:01] Sara: varies [00:34:01] Jeremy: It varies widely. [00:34:02] Sara: Widely. I think we try to hit the sweet spot of 3-6 months. For an individual working on a project, the actual contract engagement might be longer than that, but, yeah. Maintainers don't get enough credit [00:34:13] Jeremy: Yeah. And, and your point about how some people, they like to jump on different things and some people like to, to stick to the same thing. I mean, that, that makes a lot of, sense in terms of, I think maintaining software and like building new software. It's, they're both development, [00:34:32] Sara: Mm hmm. [00:34:32] Jeremy: they're very different. Right. [00:34:35] Sara: It's so funny that you bring that up because I highly gravitate towards maintaining over making. I love going to different projects, but I have very little interest in Greenfield, very little interest in making something new. I want to get into the weeds, into 10 years that nobody wants to deal with because the weeds are so high and there's dragons in there. I want to cut it away. I want to add documentation. I want to make it better. It's so important for us to maintain our software. It doesn't get nearly enough credit. The people that work on open source, the people that are doing maintenance work on, on apps internally, externally, Upgrades, making sure dependencies are all good and safe and secure. love that stuff. [00:35:29] Jeremy: That's awesome. We, we need more of you. (laughs) [00:35:31] Sara: There's plenty of us out there, but we don't get the credit (laughs) [00:35:34] Jeremy: Yeah, because it's like with maintenance, well, I would say probably both in companies and in open source when everything is working. Then Nobody nobody knows. Nobody says anything. They're just like, Oh, that's great. It's working. And then if it breaks, then everyone's upset. [00:35:51] Sara: Exactly. [00:35:53] Jeremy: And so like, yeah, you're just there to get yelled at when something goes wrong. But when everything's going good, it's like, [00:35:59] Sara: A job well done is, I was never here. [00:36:02] Jeremy: Yeah. Yeah. Yeah. I don't know how. To, you know, to fix that, I mean, when you think about open source maintainers, right, like a big thing is, is, is burnout, right? Where you are keeping the internet and all of our applications running and, you know, what you get for it is people yelling at you and the issues, right? [00:36:23] Sara: Yeah, it's hard. And I think I actually. Submitted a talk to RubyConf this year about this topic. It didn't get picked. That's okay. Um, we all make mistakes. I'm going to try to give it somewhere in the future, but I think one of the important things that we as an industry should strive for is giving glory. Giving support and kudos to maintenance work. I've been trying to do that. slash I have been doing that at ThoughtBot by, at some cadence. I have been putting out a blog post to the ThoughtBot blog called. This week in open source, the time period that is covered might be a week or longer in those posts. I give a summary of all of the commits that have been made to our open source projects. And the people that made those contributions with highlighting to new version releases, including patch level. And I do this. The time I, I, I took up the torch of doing this from a co worker, Mike Burns, who used to do it 10 years ago. I do this so that people can get acknowledgement for the work they do, even if it's fixing a broken link, even if it's updating some words that maybe don't make sense. All of it is valuable. [00:37:54] Jeremy: Definitely. Yeah. I mean, I, I think that, um, yeah, what's visible to people is when there's a new feature or an API change and Yeah, it's just, uh, people don't, I think a lot of people don't realize, like, how much work goes into just keeping everything running. [00:38:14] Sara: Mm hmm. Especially in the world of open source and Ruby on Rails, all the gems, there's so many different things coming out, things that suddenly this is not compatible. Suddenly you need to change something in your code because a dependency, however many steps apart has changed and it's hard work. The people that do those things are amazing. [00:38:41] Jeremy: So if anybody listening does that work, we, we appreciate you. [00:38:45] Sara: We salute you. Thank you. And if you're interested in contributing to ThoughtBot open source, we have lots of repos. There's one out there for you. Thoughts on RubyConf [00:38:54] Jeremy: You've been doing programming for quite a while, and, you're here at, at RubyConf. I wonder what kind of brings you to these, these conferences? Like, what do you get out of them? Um, I guess, how was this one? That sort of thing. [00:39:09] Sara: Well, first, this one was sick. This one was awesome. Uh, Ruby central pulled out all the stops and that DJ on Monday. In the event, in the exhibit hall. Wow. Amazing. So he told me that he was going to put his set up on Spotify, on Weedmaps Spotify, so go check it out. Anyway, I come to these conferences for people. I just love connecting with people. Those listening might notice that I'm an extrovert. I work remotely. A lot of us work remotely these days. this is an opportunity to see some of my coworkers. There's seven of us here. It's an opportunity to see people I only see at conferences, of which there are a lot. It's a chance to connect with people I've only met on Mastodon, or LinkedIn, or Stack Overflow. It's a chance to meet wonderful podcasters who are putting out great content, keeping our community alive. That's, that's the key for me. And the talks are wonderful, but honestly, they're just a side effect for me. They just come as a result of being here. [00:40:16] Jeremy: Yeah, it's kind of a unique opportunity, you know, to have so many of your, your colleagues and to just all be in the same place. And you know that anybody you talk to here, like if you talk about Ruby or software, they're not going to look at you and go like, I don't know what you're talking about. Like everybody here has at least that in common. So it's, yeah, it's a really cool experience to, to be able to chat with anybody. And it's like, You're all on the same page, [00:40:42] Sara: Mm hmm. We're all in this boat together. [00:40:45] Jeremy: Yup, that we got to keep, got to keep afloat according to matz [00:40:49] Sara: Gotta keep it afloat, yeah. [00:40:51] Jeremy: Though I was like, I was pretty impressed by like during his, his keynote and he had asked, you know, how many of you here, it's your first RubyConf and it felt like it was over half the room. [00:41:04] Sara: Yeah, I got the same sense. I was very glad to see that, very impressed. My first RubyConf was and it was the same sort of showing of [00:41:14] Jeremy: Nice, yeah. Yeah, actually, that was my first one, too. [00:41:17] Sara: Nice! [00:41:19] Jeremy: Uh, that was Nashville, Yeah, yeah, yeah. So it's, yeah, it's really interesting to see because, the meme online is probably like, Ah, Ruby is dead, or Rails is dead. But like you come to these conferences and yeah, there's, there's so many new people. There's like new people that are learning it and experiencing it and, you know, enjoying it the same way we are. So I, I really hope that the, the community can really, yeah, keep this going. [00:41:49] Sara: Continue, continue to grow and share. I love that we had first timer buttons, buttons where people could self identify as this is my first RubyConf and, and then that opens a conversation immediately. It's like, how are you liking it? What was your favorite talk? [00:42:08] Jeremy: Yeah, that's awesome. okay, I think that's probably a good place to start wrapping it. But is there anything else you wanted to mention or thought we should have talked about? [00:42:18] Sara: Can I do a plug for thoughtbot? [00:42:20] Jeremy: yeah, go for it. [00:42:21] Sara: Alright. For those of you out there that might not know what ThoughtBot does, we are a full software lifecycle or company lifecycle consultancy, so we do everything from market fit and rapid prototyping to MVPs to helping with developed companies, developed teams, maybe do a little bit of a Boost when you have a deadline or doing some tech debt. Pay down. We also have a DevOps team, so if you have an idea or a company or a team, you want a little bit of support, we have been around for 20 years. We are here for you. Reach out to us at thoughtbot.com. [00:43:02] Jeremy: I guess the thing about Thoughtbot is that, within the Ruby community specifically, they've been so involved with sponsorships and, and podcasts. And so, uh, when you hear about consultancies, a lot of times it's kind of like, well, I don't know, are they like any good? Do they know what they're doing? But I, I feel like, ThoughtBot has had enough, like enough of a public record. I feel It's like, okay, if you, if you hire them, um, you should be in good hands. [00:43:30] Sara: Yeah. If you have any questions about our abilities, read the blog. [00:43:35] Jeremy: It is a good blog. Sometimes when I'm, uh, searching for how to do something in Rails, it'll pop up, [00:43:40] Sara: Mm hmm. Me too. Every question I ask, one of the first results is our own blog. I'm like, oh yeah, that makes sense. [00:43:47] Jeremy: Probably the peak is if you've written the blog. [00:43:50] Sara: That has happened to my coworkers They're like, wait, I wrote a blog about this nine years ago. [00:43:55] Jeremy: Yeah, yeah. So maybe, maybe that'll happen to you soon. I, I know definitely people who do, um, Stack Overflow. And it's like, Oh, I like, this is a good answer. Oh, I wrote this. (laughs) yeah. Well, Sara, thank you so much for, for chatting with me today. [00:44:13] Sara: Absolutely, Jeremy. Thank you so much for having me. I was really glad to chat today.
David was the chief software architect and director of engineering at Stitch Fix. He's also the author of a number of books including Sustainable Web Development with Ruby on Rails and most recently Ruby on Rails Background Jobs with Sidekiq. He talks about how he made decisions while working with a medium sized team (~200 developers) at Stitch Fix. The audio quality for the first 19 minutes is not great but the correct microphones turn on right after that. Recorded at RubyConf 2023 in San Diego. A few topics covered: Ruby's origins at Stitch Fix Thoughts on Go Choosing technology and cloud services Moving off heroku Building a platform team Where Ruby and Rails fit in today The role of books and how different people learn Large Language Model's effects on technical content Related Links David's Blog Mastodon Transcript You can help correct transcripts on GitHub. Intro [00:00:00] Jeremy: Today. I want to share another conversation from RubyConf San Diego. This time it's with David Copeland. He was a chief software architect and director of engineering at stitch fix. And at the start of the conversation, you're going to hear about why he decided to write the book, sustainable web development with Ruby on rails. Unfortunately, you're also going to notice the sound quality isn't too good. We had some technical difficulties. But once you hit the 20 minute mark of the recording, the mics are going to kick in. It's going to sound way better. So I hope you stick with it. Enjoy. Ruby at Stitch Fix [00:00:35] David: Stitch Fix was a Rails shop. I had done a lot of Rails and learned a lot of things that worked and didn't work, at least in that situation. And so I started writing them down and I was like, I should probably make this more than just a document that I keep, you know, privately on my computer. Uh, so that's, you know, kind of, kind of where the genesis of that came from and just tried to, write everything down that I thought what worked, what didn't work. Uh, if you're in a situation like me. Working on a product, with a medium sized, uh, team, then I think the lessons in there will be useful, at least some of them. Um, and I've been trying to keep it up over, over the years. I think the first version came out a couple years ago, so I've been trying to make sure it's always up to date with the latest stuff and, and Rails and based on my experience and all that. [00:01:20] Jeremy: So it's interesting that you mention, medium sized team because, during the, the keynote, just a few moments ago, Matz the creator of Ruby was talking about how like, Oh, Rails is really suitable for this, this one person team, right? Small, small team. And, uh, he was like, you're not Google. So like, don't worry about, right. Can you scale to that level? Yeah. Um, and, and I wonder like when you talk about medium size or medium scale, like what are, what are we talking? [00:01:49] David: I think probably under 200 developers, I would say. because when I left Stitch Fix, it was closing in on that number of developers. And so it becomes, you know, hard to... You can kind of know who everybody is, or at least the names sound familiar of everybody. But beyond that, it's just, it's just really hard. But a lot of it was like, I don't have experience at like a thousand developer company. I have no idea what that's like, but I definitely know that Rails can work for like... 200 ish people how you can make it work basically. yeah. [00:02:21] Jeremy: The decision to use Rails, I'm assuming that was made before you joined? [00:02:26] David: Yeah, the, um, the CTO of Stitch Fix, he had come in to clean up a mess made by contractors, as often happens. They had used Django, which is like the Python version of Rails. And he, the CTO, he was more familiar with Rails. So the first two developers he hired, also familiar with Rails. There wasn't a lot to maintain with the Django app, so they were like, let's just start fresh, fresh with Rails. yeah, but it's funny because a lot of the code in that Rails app was, like, transliterated from Python. So you could, it would, it looked like the strangest Ruby code in the world because it was basically, there was no test. So they were like, let's just write the Ruby version of this Python just so we know it works. but obviously that didn't, didn't last forever, so. [00:03:07] Jeremy: So, so what's an example of a, of a tell? Where you're looking at the code and you're like, oh, this is clearly, it came from Python. [00:03:15] David: You'd see like, very, very explicit, right? Like Python, there's a lot of like single line things. very like, this sounds like a dig, but it's very simple looking code. Like, like I don't know Python, but I was able to change this Django app. And I had to, I could look at it and you can figure out immediately how it works. Cause there's. Not much to it. There's nothing fancy. So, like, this, this Ruby code, there was nothing fancy. You'd be like, well, maybe they should have memoized that, or maybe they should have taken that into another class, or you could have done this with a hash or something like that. So there was, like, none of that. It was just, like, really basic, plain code like you would see in any beginning programming language kind of thing. Which is at least nice. You can understand it. but you probably wouldn't have written it that way at first in Ruby. Thoughts on Go [00:04:05] Jeremy: Yeah, that's, that's interesting because, uh, people sometimes talk about the Go programming language and how it looks, I don't know if simple is the right word, but it's something where you look at the code and even if you don't necessarily understand Go, it's relatively straightforward. Yeah. I wonder what your thoughts are on that being a strength versus that being, like, [00:04:25] David: Yeah, so at Stitch Fix at one point we had a pro, we were moving off of Heroku and we were going to, basically build a deployment platform using ECS on AWS. And so the deployment platform was a Rails app and we built a command line tool using Ruby. And it was fine, but it was a very complicated command line tool and it was very slow. And so one of the developers was like, I'm going to rewrite it in Go. I was like, ugh, you know, because I just was not a big fan. So he rewrote it in Go. It was a bazillion times faster. And then I was like, okay, I'm going to add, I'll add a feature to it. It was extremely easy. Like, it's just like what you said. I looked at it, like, I don't know anything about Go. I know what is happening here. I can copy and paste this and change things and make it work for what I want to do. And it did work. And it was, it was pretty easy. so there's that, I mean, aesthetically it's pretty ugly and it's, I, I. I can't really defend that as a real reason to not use it, but it is kind of gross. I did do Go, I did a small project in Go after Stitch Fix, and there's this vibe in Go about like, don't create abstractions. I don't know where I got that from, but every Go I look at, I'm like we should make an abstraction for this, but it's just not the vibe. They just don't like doing that. They like it all written out. And I see the value because you can look at the code and know what it does and you don't have to chase abstractions anywhere. But. I felt like I was copying and pasting a lot of, a lot of things. Um, so I don't know. I mean, the, the team at Stitch Fix that did this like command line app in go, they're the platform team. And so their job isn't to write like web apps all day, every day. There's kind of in and out of all kinds of things. They have to try to figure out something that they don't understand quickly to debug a problem. And so I can see the value of something like go if that's your job, right? You want to go in and see what the issue is. Figure it out and be done and you're not going to necessarily develop deep expertise and whatever that thing is that you're kind of jumping into. Day to day though, I don't know. I think it would make me kind of sad. (laughs) [00:06:18] Jeremy: So, so when you say it would make you kind of sad, I mean, what, what about it? Is it, I mean, you mentioned that there's a lot of copy and pasting, so maybe there's code duplication, but are there specific things where you're like, oh, I just don't? [00:06:31] David: Yeah, so I had done a lot of Java in my past life and it felt very much like that. Where like, like the Go library for making an HTTP call for like, I want to call some web service. It's got every feature you could ever want. Everything is tweakable. You can really, you can see why it's designed that way. To dial in some performance issue or solve some really esoteric thing. It's there. But the problem is if you just want to get an JSON, it's just like huge production. And I felt like that's all I really want to do and it's just not making it very easy. And it just felt very, very cumbersome. I think that having to declare types also is a little bit of a weird mindset because, I mean, I like to make types in Ruby, I like to make classes, but I also like to just use hashes and stuff to figure it out. And then maybe I'll make a class if I figure it out, but Go, you can't. You have to have a class, you have to have a type, you have to think all that ahead of time, and it just, I'm not used to working that way, so it felt, I mean, I guess I could get used to it, but I just didn't warm up to that sort of style of working, so it just felt like I was just kind of fighting with the vibe of the language, kind of. Yeah, [00:07:40] Jeremy: so it's more of the vibe or the feel where you're writing it and you're like this seems a little too... Explicit. I feel like I have to be too verbose. It just doesn't feel natural for me to write this. [00:07:53] David: Right, it's not optimized for what in my mind is the obvious case. And maybe that's not the obvious case for the people that write Go programs. But for me, like, I just want to like get this endpoint and get the JSON back as a map. Not any easier than any other case, right? Whereas like in Ruby, right? And you can, I think if you include net HTTP, you can just type get. And it will just return whatever that is. Like, that's amazing. It's optimized for what I think is a very common use case. So it makes me feel really productive. It makes me feel pretty good. And if that doesn't work out long term, I can always use something more complicated. But I'm not required to dig into the NetHttp library just to do what in my mind is something very simple. [00:08:37] Jeremy: Yeah, I think that's something I've noticed myself in working with Ruby. I mean, you have the standard library that's very... Comprehensive and the API surface is such that, like you said there, when you're trying to do common tasks, a lot of times they have a call you make and it kind of does the thing you expected or hoped for. [00:08:56] David: Yeah, yeah. It's kind of, I mean, it's that whole optimized for programmer happiness thing. Like it does. That is the vibe of Ruby and it seems like that is still the way things are. And, you know, I, I suppose if I had a different mindset, I mean, because I work with developers who did not like using Ruby or Rails. They loved using Go or Java. And I, I guess there's probably some psychological analysis we could do about their background and history and mindset that makes that make sense. But, to me, I don't know. It's, it's nice when it's pleasant. And Ruby seems pleasant. (laughs) Choosing Technology [00:09:27] Jeremy: as a... Software Architect, or as a CTO, when, when you're choosing technology, what are some of the things you look at in terms of, you know? [00:09:38] David: Yeah, I mean, I think, like, it's a weird criteria, but I think what is something that the team is capable of executing with? Because, like, most, right, most programming languages all kind of do the same thing. Like, you can kind of get most stuff done in most common popular programming languages. So, it's probably not... It's not true that if you pick the wrong language, you can't build the app. Like, that's probably not really the case. At least for like a web app or something. so it's more like, what is the team that's here to do it? What are they comfortable and capable of doing? I worked on a project with... It was a mix of like junior engineers who knew JavaScript, and then some senior engineers from Google. And for whatever reason someone had chosen a Rails app and none of them were comfortable or really yet competent with doing Ruby on Rails and they just all hated it and like it didn't work very well. Um, and so even though, yes, Rails is a good choice for doing stuff for that team at that moment. Not a good choice. Right. So I think you have to go in and like, what, what are we going to be able to execute on so that when the business wants us to do something, we just do it. And we don't complain and we don't say, Oh, well we can't because this technology that we chose, blah, blah, blah. Like you don't ever want to say that if possible. So I think that's. That's kind of the, the top thing. I think second would be how widely supported is it? Like you don't want to be the cutting edge user that's finding all the bugs in something really. Like you want to use something that's stable. Postgres, MySQL, like those work, those are fine. The bugs have been sorted out for most common use cases. Some super fancy edge database, I don't know if I'd want to be doing, doing that you know? Choosing cloud services [00:11:15] Jeremy: How do you feel about the cloud specific services and databases? Like are you comfortable saying like, oh, I'm going to use... Google Cloud, BigQuery. Yeah. [00:11:27] David: That sort of thing. I think it would kind of fall under the same criteria that I was just, just saying like, so with AWS it's interesting 'cause when we moved from Heroku to AWS by EC2 RDS, their database thing, uh, S3, those have been around for years, probably those are gonna work, but they always introduce new things. Like we, we use RabbitMQ and AWS came out with. Some, I forget what it was, it was a queuing service similar to Rabbit. We were like, Oh, maybe we should switch to that. But it was clear that they weren't really ready to support it. So. Yeah, so we didn't, we didn't switch to that. So I, you gotta try to read the tea leaves of the provider to see are they committed to, to supporting this thing or is this there to get some enterprise client to move into the cloud. And then the idea is to move off of that transitional thing into what they do support. And it's hard to get a clear answer from them too. So it takes a little bit of research to figure out, Are they going to support this or not? Because that's what you don't want. To move everything into some very proprietary cloud system and have them sunset it and say, Oh yeah, now you've got to switch again. Uh, that kind of sucks. So, it's a little trickier. [00:12:41] Jeremy: And what kind of questions or research do you do? Is it purely a function of this thing has existed for X number of years so I feel okay? [00:12:52] David: I mean, it's kind of similar to looking at like some gem you're going to add to your project, right? So you'll, you'll look at how often does it change? Is it being updated? Uh, what is the documentation? Does it look like someone really cared about the documentation? Does the documentation look updated? Are there issues with it that are being addressed or, or not? Um, so those are good signals. I think, talking to other practitioners too can be good. Like if you've got someone who's experienced. You can say, hey, do you know anybody back channeling through, like, everybody knows somebody that works at AWS, you can probably try to get something there. at Stitch Fix, we had an enterprise support contract, and so your account manager will sometimes give you good information if you ask. Again, it's a, they're not going to come out and say, don't use this product that we have, but they might communicate that in a subtle way. So you have to triangulate from all these sources to try to. to try to figure out what, what you want to do. [00:13:50] Jeremy: Yeah, it kind of makes me wish that there was a, a site like, maybe not quite like, can I use, right? Can I use, you can see like, oh, can I use this in my browser? Is there, uh, like an AWS or a Google Cloud? Can I trust this? Can I trust this? Yeah. Is this, is this solid or not? [00:14:04] David: Right, totally. It's like, there's that, that site where you, it has all the Apple products and it says whether or not you should buy it because one may or may not be coming out or they may be getting rid of it. Like, yeah, that would... For cloud services, that would be, that would be nice. [00:14:16] Jeremy: Yeah, yeah. That's like the Mac Buyer's Guide. And then we, we need the, uh, the technology. Yeah. Maybe not buyers. Cloud Provider Buyer's Guide, yeah. I guess we are buyers. [00:14:25] David: Yeah, yeah, totally, totally. [00:14:27] Jeremy: it's interesting that you, you mentioned how you want to see that, okay, this thing is mature. I think it's going to stick around because, I, interviewed, someone who worked on, I believe it was the CloudWatch team. Okay. Daniel Vassalo, yeah. so he left AWS, uh, after I think about 10 years, and then he wrote a book called, uh, The Good Parts of AWS. Oh! And, if you read his book, most of the services he says to use are the ones that are, like, old. Yeah. He's, he's basically saying, like, S3, you know you're good. Yeah. Right? but then all these, if you look at the AWS webpage, they have who knows, I don't know how many hundreds of services. Yeah. He's, he's kind of like I worked there and I would not use, you know, all these new services. 'cause I myself, I don't trust [00:15:14] David: it yet. Right. And so, and they're working there? Yeah, they're working there. Yeah. No. One of the VPs at Stitch Fix had worked on Google Cloud and so when we were doing this transition from Heroku, he was like, we are not using Google Cloud. I was like, really? He's like AWS is far ahead of the game. Do not use Google Cloud. I was like, all right, I don't need any more info. You work there. You said don't. I'm gonna believe you. So [00:15:36] Jeremy: what, what was his did he have like a core point? [00:15:39] David: Um, so he never really had anything bad to say about Google per se. Like I think he enjoyed his time there and I think he thought highly of who he worked with and what he worked on and that sort of thing. But his, where he was coming from was like AWS was so far ahead. of Google on anything that we would use, he was like, there's, there's really no advantage to, to doing it. AWS is a known quantity, right? it's probably still the case. It's like, you know, you've heard the nobody ever got fired for using IBM or using Microsoft or whatever the thing is. Like, I think that's, that was kind of the vibe. And he was like, moving all of our infrastructure right before we're going to go public. This is a serious business. We should just use something that we know will work. And he was like, I know this will work. I'm not confident about. Google, uh, for our use case. So we shouldn't, we shouldn't risk it. So I was like, okay, I trust you because I didn't know anything about any of that stuff at the time. I knew Heroku and that was it. So, yeah. [00:16:34] Jeremy: I don't know if it's good or bad, but like you said, AWS seems to be the default choice. Yeah. And I mean, there's people who use Azure. I assume it's mostly primarily Microsoft. Yeah. And then there's Google Cloud. It's not really clear why you would pick it, unless there was a specific service or something that only they had. [00:16:55] David: Yeah, yeah. Or you're invested in Google, you know, you want to keep everything there. I mean, I don't know. I haven't really been at that level to make that kind of decision, and I would probably choose AWS for the reasons discussed, but, yeah. Moving off Heroku [00:17:10] Jeremy: And then, so at Stitch Fix, you said you moved off of Heroku [00:17:16] David: yeah. Yeah, so we were heavy into Heroku. I think that we were told that at one point we had the biggest Heroku Postgres database on their platform. Not a good place to be, right? You never want to be the biggest customer person, usually. but the problem we were facing was essentially we were going to go public. And to do that, you're under all the scrutiny. about many things, including the IT systems and the security around there. So, like, by default, a Postgres, a Heroku Postgres database is, like, on the internet. It's only secured by the password. all their services are on the internet. So, not, not ideal. they were developing their private cloud service at that time. And so that would have given us, in theory, on paper, it would have solved all of our problems. And we liked Heroku and we liked the developer experience. It was great. but... Heroku private spaces, it was still early. There's a lot of limitations that when they explained why those limitations, they were reasonable. And if we had. started from scratch on Heroku Private Spaces. It probably would have worked great, but we hadn't. So we just couldn't make it work. So we were like, okay, we're going to have to move to AWS so that everything can be basically off the internet. Like our public website needs to be on the internet and that's kind of it. So we need to, so that's basically was the, was the impetus for that. but it's too bad because I love Heroku. It was great. I mean, they were, they were a great partner. They were great. I think if Stitch Fix had started life a year later, Private Spaces. Now it's, it's, it's way different than it was then. Cause it's been, it's a mature product now, so we could have easily done that, but you know, the timing didn't work out, unfortunately. [00:18:50] Jeremy: And that was a compliance thing to, [00:18:53] David: Yeah. And compliance is weird cause they don't tell you what to do, but they give you some parameters that you need to meet. And so one of them is like how you control access. So, so going public, the compliance is around the financial data and. Ensuring that the financial data is accurate. So a lot of the systems at Stichfix were storing the financial data. We, you know, the warehouse management system was custom made. Uh, all the credit card processing was all done, like it was all in some databases that we had running in Heroku. And so those needed to be subject to stricter security than we could achieve with just a single password that we just had to remember to rotate when someone like left the team. So that was, you know, the kind of, the kind of impetus for, for all of that. [00:19:35] Jeremy: when you were using Heroku, Salesforce would have already owned it then. Did you, did you get any sense that you weren't really sure about the future of the platform while you're on it or, [00:19:45] David: At that time, no, it seemed like they were still innovating. So like, Heroku has a Redis product now. They didn't at the time we wish that they did. They told us they're working on it, but it wasn't ready. We didn't like using the third parties. Kafka was not a thing. We very much were interested in that. We would have totally used it if it was there. So they were still. Like doing bigger innovations then, then it seems like they are now. I don't know. It's weird. Like they're still there. They still make money, I assume for Salesforce. So it doesn't feel like they're going away, but they're not innovating at the pace that they were kind of back in the day. [00:20:20] Jeremy: it used to feel like when somebody's asking, I want to host a Rails app. Then you would say like, well, use Heroku because it's basically the easiest to get started. It's a known quantity and it's, it's expensive, but, it seemed for, for most people, it was worth it. and then now if I talk to people, it's like. Not what people suggest anymore. [00:20:40] David: Yeah, because there's, there's actual competitors. It's crazy to me that there was no competitors for years, and now there's like, Render and Fly. io seem to be the two popular alternatives. Um, I doubt they're any cheaper, honestly, but... You get a sense, right, that they're still innovating, still building those platforms, and they can build with, you know, all of the knowledge of what has come before them, and do things differently that might, that might help. So, I still use Heroku for personal things just because I know it, and I, you know, sometimes you don't feel like learning a new thing when you just want to get something done, but, yeah, I, I don't know if we were starting again, I don't know, maybe I'd look into those things. They, they seem like they're getting pretty mature and. Heroku's resting on its laurels, still. [00:21:26] Jeremy: I guess I never quite the mindset, right? Where you You have a platform that's doing really well and people really like it and you acquire it and then it just It seems like you would want to keep it rolling, right? (laughs) [00:21:38] David: Yeah, it's, it is wild, I mean, I guess... Why did you, what was Salesforce thinking they were going to get? Uh, who knows maybe the person at Salesforce that really wanted to purchase it isn't there. And so no one at Salesforce cares about it. I mean, there's all these weird company politics that like, who knows what's going on and you could speculate. all day. What's interesting is like, there's definitely some people in the Ruby community who work there and still are working there. And that's like a little bit of a canary for me. I'm like, all right, well, if that person's still working there, that person seems like they're on the level and, and, and, and seems pretty good. They're still working there. It, it's gotta be still a cool place to be or still doing something, something good. But, yeah, I don't know. I would, I would love to know what was going on in all the Salesforce meetings about acquiring that, how to manage it. What are their plans for it? I would love to know that stuff. [00:22:29] Jeremy: maybe you had some experience with this at Stitch Fix But I've heard with Heroku some of their support staff at least in the past they would, to some extent, actually help you troubleshoot, like, what's going on with your app. Like, if your app is, like, using a whole bunch of memory, and you're out of memory, um, they would actually kind of look into that, for you, which is interesting, because it's like, that's almost like a services thing than it is just a platform. [00:22:50] David: Yeah. I mean, they, their support, you would get, you would get escalated to like an engineer sometimes, like who worked on that stuff and they would help figure out what the problem was. Like you got the sense that everybody there really wanted the platform to be good and that they were all sort of motivated to make sure that everybody. You know, did well and used the platform. And they also were good at, like a thing that trips everybody up about Heroku is that your app restarts every day. And if you don't know anything about anything, you might think that is stupid. Why, why would I want that? That's annoying. And I definitely went through that and I complained to them a lot. And I'm like, if you only could not restart. And they very patiently and politely explained to me why that it needed to do that, they weren't going to remove that, and how to think about my app given that reality, right? Which is great because like, what company does that, right? From the engineers that are working on it, like No, nobody does that. So, yeah, no, I haven't escalated anything to support at Heroku in quite some time, so I don't know if it's still like that. I hope it is, but I'm not really, not really sure. Building a platform team [00:23:55] Jeremy: Yeah, that, uh, that reminds me a little bit of, I think it's Rackspace? There's, there's, like, another hosting provider that was pretty popular before, and they... Used to be famous for that type of support, where like your, your app's having issues and somebody's actually, uh, SSHing into your box and trying to figure out like, okay, what's going on? which if, if that's happening, then I, I can totally see where the, the price is justified. But if the support is kind of like dropping off to where it's just, they don't do that kind of thing, then yeah, I can see why it's not so much of a, yeah, [00:24:27] David: We used to think of Heroku as like they were the platform team before we had our own platform team and they, they acted like it, which was great. [00:24:35] Jeremy: Yeah, I don't have, um, experience with, render, but I, I, I did, talk to someone from there, and it does seem like they're, they're trying to fill that role, um, so, yeah, hopefully, they and, and other companies, I guess like Vercel and things like that, um, they're, they're all trying to fill that space, [00:24:55] David: Yeah, cause, cause building our own internal platform, I mean it was the right thing to do, but it's, it's a, you can't just, you have to have a team on it, it's complicated, getting all the stuff in AWS to work the way you want it to work, to have it be kind of like Heroku, like it's not trivial. if I'm a one person company, I don't want to be messing around with that particularly. I want to just have it, you know, push it up and have it go and I'm willing to pay for that. So it seems logical that there would be competitors in that space. I'm glad there are. Hopefully that'll light a fire under, under everybody. [00:25:26] Jeremy: so in your case, it sounds like you moved to having your own platform team and stuff like that, uh, partly because of the compliance thing where you're like, we need our, we need to be isolated from the internet. We're going to go to AWS. If you didn't have that requirement, do you still think like that would have been the time to, to have your own platform team and manage that all yourself? [00:25:46] David: I don't know. We, we were thinking an issue that we were running into when we got bigger, um, was that, I mean, Heroku, it, It's obviously not as flexible as AWS, but it is still very flexible. And so we had a lot of internal documentation about this is how you use Heroku to do X, Y, and Z. This is how you set up a Stitch Fix app for Heroku. Like there was just the way that we wanted it to be used to sort of. Just make it all manageable. And so we were considering having a team spun up to sort of add some tooling around that to sort of make that a little bit easier for everybody. So I think there may have been something around there. I don't know if it would have been called a platform team. Maybe we call, we thought about calling it like developer happiness or because you got developer experience or something. We, we probably would have had something there, but. I do wonder how easy it would have been to fund that team with developers if we hadn't had these sort of business constraints around there. yeah, um, I don't know. You get to a certain size, you need some kind of manageability and consistency no matter what you're using underneath. So you've got to have, somebody has to own it to make sure that it's, that it's happening. [00:26:50] Jeremy: So even at your, your architect level, you still think it would have been a challenge to, to. Come to the executive team and go like, I need funding to build this team. [00:27:00] David: You know, certainly it's a challenge because everybody, you know, right? Nobody wants to put developers in anything, right? There are, there are a commodity and I mean, that is kind of the job of like, you know, the staff engineer or the architect at a company is you don't have, you don't have the power to put anybody on anything you, you have the power to Schedule a meeting with a VP or the CTO and they will listen to you. And that's basically, you've got to use that power to convince them of what you want done. And they're all reasonable people, but they're balancing 20 other priorities. So it would, I would have had to, it would have been a harder case to make that, Hey, I want to take three engineers. And have them write tooling to make Heroku easier to use. What? Heroku is not easy to use. Why aren't, you know, so you really, I would, it would be a little bit more of a stretch to walk them through it. I think a case could be made, but, definitely would take some more, more convincing than, than what was needed in our case. [00:27:53] Jeremy: Yeah. And I guess if you're able to contrast that with, you were saying, Oh, I need three people to help me make Heroku easier. Your actual platform team on AWS, I imagine was much larger, right? [00:28:03] David: Initially it was, there was, it was three people did the initial move over. And so by the time we went public, we'd been on this new system for, I don't know, six to nine months. I can't remember exactly. And so at that time the platform team was four or five people, and I, I mean, so percentage wise, right, the engineering team was maybe almost 200, 150, 200. So percentage wise, maybe a little small, I don't know. but it kind of gets back to the power of like the rails and the one person framework. Like everything we did was very much the same And so the Rails app that managed the deployment was very simple. The, the command line app, even the Go one with all of its verbosity was very, very simple. so it was pretty easy for that small team to manage. but, Yeah, so it was sort of like for redundancy, we probably needed more than three or four people because you know, somebody goes out sick or takes a vacation. That's a significant part of the team. But in terms of like just managing the complexity and building it and maintaining it, like it worked pretty well with, you know, four or five people. Where Rails fits in vs other technology [00:29:09] Jeremy: So during the Keynote today, they were talking about how companies like GitHub and Shopify and so on, they're, they're using Rails and they're, they're successful and they're fairly large. but I think the thing that was sort of unsaid was the fact that. These companies, while they use Rails, they use a lot of other, technology as well. And, and, and kind of increasing amounts as well. So, I wonder from your perspective, either from your experience at StitchFix or maybe going forward, what is the role that, that Ruby and Rails plays? Like, where does it make sense for that to be used versus like, Okay, we need to go and build something in Java or, you know, or Go, that sort of thing? [00:29:51] David: right. I mean, I think for like your standard database backed web app, it's obviously great. especially if your sort of mindset bought into server side rendering, it's going to be great at that. so like internal tools, like the customer service dashboard or... You know, something for like somebody who works at a company to use. Like, it's really great because you can go super fast. You're not going to be under a lot of performance constraints. So you kind of don't even have to think about it. Don't even have to solve it. You can, but you don't have to, where it wouldn't work, I guess, you know, if you have really strict performance. Requirements, you know, like a, a Go version of some API server is going to use like percentages of what, of what Rails would use. If that's meaningful, if what you're spending on memory or compute is, is meaningful, then, then yeah. That, that becomes worthy of consideration. I guess if you're, you know, if you're making a mobile app, you probably need to make a mobile app and use those platforms. I mean, I guess you can wrap a Rails app sort of, but you're still making, you still need to make a mobile app, that does something. yeah. And then, you know, interestingly, the data science part of Stitch Fix was not part of the engineering team. They were kind of a separate org. I think Ruby and Rails was probably the only thing they didn't use over there. Like all the ML stuff, everything is either Java or Scala or Python. They use all that stuff. And so, yeah, if you want to do AI and ML with Ruby, you, it's, it's hard cause there's just not a lot there. You really probably should use Python. It'll make your life easier. so yeah, those would be some of the considerations, I guess. [00:31:31] Jeremy: Yeah, so I guess in the case of, ML, Python, certainly, just because of the, the ecosystem, for maybe making a command line application, maybe Go, um, Go or Rust, perhaps, [00:31:44] David: Right. Cause you just get a single binary. Like the problem, I mean, I wrote this book on Ruby command line apps and the biggest problem is like, how do I get the Ruby VM to be anywhere so that it can then run my like awesome scripts? Like that's kind of a huge pain. (laughs) So [00:31:59] Jeremy: and then you said, like, if it's Very performance sensitive, which I am kind of curious in, in your experience with the companies you've worked at, when you're taking on a project like that, do you know up front where you're like, Oh, the CPU and memory usage is going to be a problem, or is it's like you build it and you're like, Oh, this isn't working. So now I know. [00:32:18] David: yeah, I mean, I, I don't have a ton of great experience there at Stitch Fix. The biggest expense the company had was the inventory. So like the, the cost of AWS was just de minimis compared to all that. So nobody ever came and said, Hey, you've got to like really save costs on, on that stuff. Cause it just didn't really matter. at the, the mental health startup I was at, it was too early. But again, the labor costs were just far, far exceeded the amount of money I was spending on, on, um, you know, compute and infrastructure and stuff like that. So, Not knowing anything, I would probably just sort of wait and see if it's a problem. But I suppose you always take into account, like, what am I actually building? And like, what does this business have to scale to, to make it worthwhile? And therefore you can kind of do a little bit of planning ahead there. But, I dunno, I think it would kind of have to depend. [00:33:07] Jeremy: There's a sort of, I guess you could call it a meme, where people say like, Oh, it's, it's not, it's not Rails that's slow, it's the, the database that's slow. And, uh, I wonder, is that, is that accurate in your experience, or, [00:33:20] David: I mean, most of the stuff that we had that was slow was the database, because like, it's really easy to write a crappy query in Rails if you're not, if you're not careful, and then it's really easy to design a database that doesn't have any indexes if you're not careful. Like, you, you kind of need to know that, But of course, those are easy to fix too, because you just add the index, especially if it's before the database gets too big where we're adding indexes is problematic. But, I think those are just easy performance mistakes to make. Uh, especially with Rails because you're not, I mean, a lot of the Rails developers at Citrix did not know SQL at all. I mean, they had to learn it eventually, but they didn't know it at all. So they're not even knowing that what they're writing could possibly be problematic. It's just, you're writing it the Rails way and it just kind of works. And at a small scale, it does. And it doesn't matter until, until one day it does. [00:34:06] Jeremy: And then in, in the context of, let's say, using ActiveRecord and instantiating the objects, or, uh, the time it takes to render templates, that kinds of things, to, at least in your experience, that wasn't such of an issue. [00:34:20] David: No, and it was always, I mean, whenever we looked at why something was slow, it was always the database and like, you know, you're iterating over some active records and then, and then, you know, you're going into there and you're just following this object graph. I've got a lot of the, a lot of the software at Stitch Fix was like internal stuff and it was visualizing complicated data out of the database. And so if you didn't think about it, you would just start dereferencing and following those relationships and you have this just massive view and like the HTML is fine. It's just that to render this div, you're. Digging into some active record super deep. and so, you know, that was usually the, the, the problems that we would see and they're usually easy enough to fix by making an index or. Sometimes you do some caching or something like that. and that solved most of the, most of the issues [00:35:09] Jeremy: The different ways people learn [00:35:09] Jeremy: so you're also the author of the book, Sustainable Web Development with Ruby on Rails. And when you talk to people about like how they learn things, a lot of them are going on YouTube, they're going on, uh, you know, looking for blogs and things like that. And so as an author, what do you think the role is of, of books now? Yeah, [00:35:29] David: I have thought about this a lot, because I, when I first got started, I'm pretty old, so books were all you had, really. Um, so they seem very normal and natural to me, but... does someone want to sit down and read a 400 page technical book? I don't know. so Dave Thomas who runs Pragmatic Bookshelf, he was on a podcast and was asked the same question and basically his answer, which is my answer, is like a long form book is where you can really lay out your thinking, really clarify what you mean, really take the time to develop sometimes nuanced, examples or nuanced takes on something that are Pretty hard to do in a short form video or in a blog post. Because the expectation is, you know, someone sends you an hour long YouTube video, you're probably not going to watch that. Two minute YouTube video is sure, but you can't, you can't get into so much, kind of nuanced detail. And so I thought that was, was right. And that was kind of my motivation for writing. I've got some thoughts. They're too detailed. It's, it's too much set up for a blog post. There's too much of a nuanced element to like, really get across. So I need to like, write more. And that means that someone's going to have to read more to kind of get to it. But hopefully it'll be, it'll be valuable. one of the sessions that we're doing later today is Ruby content creators, where it's going to be me and Noel Rappin and Dave Thomas representing the old school dudes that write books and probably a bunch of other people that do, you know, podcasts videos. It'd be interesting to see, I really want to know how do people learn stuff? Because if no one reads books to learn things, then there's not a lot of point in doing it. But if there is value, then, you know. It should be good and should be accessible to people. So, that's why I do it. But I definitely recognize maybe I'm too old and, uh, I'm not hip with the kids or, or whatever, whatever the case is. I don't know. [00:37:20] Jeremy: it's tricky because, I think it depends on where you are in the process of learning that thing. Because, let's say, you know a fair amount about the technology already. And you look at a book, in a lot of cases it's, it's sort of like taking you from nothing to something. And so you're like, well, maybe half of this isn't relevant to me, but then if I don't read it, then I'm probably missing a lot still. And so you're in this weird in be in between zone. Another thing is that a lot of times when people are trying to learn something, they have a specific problem. And, um, I guess with, with books, it's, you kind of don't know for sure if the thing you're looking for is going to be in the book. [00:38:13] David: I mean, so my, so my book, I would not say as a beginner, it's not a book to learn how to do Rails. It's like you already kind of know Rails and you want to like learn some comprehensive practices. That's what my book is for. And so sometimes people will ask me, I don't know Rails, should I get your book? And I'm like, no, you should not. but then you have the opposite thing where like the agile web development with Rails is like the beginner version. And some people are like, Oh, it's being updated for Rails 7. Should I get it? I'm like, probably not because How to go from zero to rails hasn't changed a lot in years. There's not that much that's going to be new. but, how do you know that, right? Hopefully the Table of Contents tells you. I mean, the first book I wrote with Pragmatic, they basically were like, The Table of Contents is the only thing the reader, potential reader is going to have to have any idea what's in the book. So, You need to write the table of contents with that in mind, which may not be how you'd write the subsections of a book, but since you know that it's going to serve these dual purposes of organizing the book, but also being promotional material that people can read, you've got to keep that in mind, because otherwise, how does anybody, like you said, how does anybody know what's, what's going to be in there? And they're not cheap, I mean, these books are 50 bucks sometimes, and That's a lot of money for people in the U. S. People outside the U. S. That's a ton of money. So you want to make sure that they know what they're getting and don't feel ripped off. [00:39:33] Jeremy: Yeah, I think the other challenge is, at least what I've heard, is that... When people see a video course, for whatever reason, they, they set, like, a higher value to it. They go, like, oh, this video course is, 200 dollars and it's, like, seems like a lot of money, but for some people it's, like, okay, I can do that. But then if you say, like, oh, this, this book I've been researching for five years, uh, I want to sell it for a hundred bucks, people are going to be, like no. No way., [00:40:00] David: Yeah. Right. A hundred bucks for a book. There's no way. That's a, that's a lot. Yeah. I mean, producing video, I've thought about doing video content, but it seems so labor intensive. Um, and it's kind of like, It's sort of like a performance. Like I was mentioning before we started that I used to play in bands and like, there's a lot to go into making an even mediocre performance. And so I feel like, you know, video content is the same way. So I get that it like, it does cost more to produce, but, are you getting more information out of it? I, that, I don't know, like maybe not, but who knows? I mean, people learn things in different ways. So, [00:40:35] Jeremy: It's just like this perception thing, I think. And, uh, I'm not sure why that is. Um, [00:40:40] David: Yeah, maybe it's newer, right? Maybe books feel older so they're easier to make and video seems newer. I mean, I don't know. I would love to talk to engineers who are like... young out of college, a few years into their career to see what their perception of this stuff is. Cause I mean, there was no, I mean, like I said, I read books cause that's all there was. There was no, no videos. You, you go to a conference and you read a book and that was, that was all you had. so I get it. It seems a whole video. It's fancier. It's newer. yeah, I don't know. I would love to hear a wide variety of takes on it to see what's actually the, the future, you know? [00:41:15] Jeremy: sure, yeah. I mean, I think it probably can't just be one or the other, right? Like, I think there are... Benefits of each way. Like, if you have the book, you can read it at your own pace without having to, like, scroll through the video, and you can easily copy and paste the, the code segments, [00:41:35] David: Search it. Go back and forth. [00:41:36] Jeremy: yeah, search it. So, I think there's a place for it, but yeah, I think it would be very interesting, like you said, to, to see, like, how are people learning, [00:41:45] David: Right. Right. Yeah. Well, it's the same with blogs and podcasts. Like I, a lot of podcasters I think used to be bloggers and they realized that like they can get out what they need by doing a podcast. And it's way easier because it's more conversational. You don't have to do a bunch of research. You don't have to do a bunch of editing. As long as you're semi coherent, you can just have a conversation with somebody and sort of get at some sort of thing that you want to talk about or have an opinion about. And. So you, you, you see a lot more podcasts and a lot less blogs out there because of that. So it's, that's kind of like the creators I think are kind of driving that a little bit. yeah. So I don't know. [00:42:22] Jeremy: Yeah, I mean, I can, I can say for myself, the thing about podcasts is that it's something that I can listen to while I'm doing something else. And so you sort of passively can hopefully pick something up out of that conversation, but... Like, I think it's maybe not so good at the details, right? Like, if you're talking code, you can talk about it over voice, but can you really visualize it? Yeah, yeah, yeah. I think if you sit down and you try to implement something somebody talked about, you're gonna be like, I don't know what's happening. [00:42:51] David: Yeah. [00:42:52] Jeremy: So, uh, so, so I think there's like these, these different roles I think almost for so like maybe you know the podcast is for you to Maybe get some ideas or get some familiarity with a thing and then when you're ready to go deeper You can go look at a blog post or read a book I think video kind of straddles those two where sometimes video is good if you want to just see, the general concept of a thing, and have somebody explain it to you, maybe do some visuals. that's really good. but then it can also be kind of detailed, where, especially like the people who stream their process, right, you can see them, Oh, let's, let's build this thing together. You can ask me questions, you can see how I think. I think that can be really powerful. at the same time, like you said, it can be hard to say, like, you know, I look at some of the streams and it's like, oh, this is a three hour stream and like, well, I mean, I'm interested. I'm interested, but yeah, it's hard enough for me to sit through a, uh, a three hour movie, [00:43:52] David: Well, then that, and that gets into like, I mean, we're, you know, we're at a conference and they, they're doing something a little, like, there are conference talks at this conference, but there's also like. sort of less defined activities that aren't a conference talk. And I think that could be a reaction to some of this too. It's like I could watch a conference talk on, on video. How different is that going to be than being there in person? maybe it's not that different. Maybe, maybe I don't need to like travel across the country to go. Do something that I could see on video. So there's gotta be something here that, that, that meets that need that I can't meet any other way. So it's all these different, like, I would like to think that's how it is, right? All this media all is a part to play and it's all going to kind of continue and thrive and it's not going to be like, Oh, remember books? Like maybe, but hopefully not. Hopefully it's like, like what you're saying. Like it's all kind of serving different purposes that all kind of work together. Yeah. [00:44:43] Jeremy: I hope that's the case, because, um, I don't want to have to scroll through too many videos. [00:44:48] David: Yeah. The video's not for me. Large Language Models [00:44:50] Jeremy: I, I like, I actually do find it helpful, like, like I said, for the high level thing, or just to see someone's thought process, but it's like, if you want to know a thing, and you have a short amount of time, maybe not the best, um, of course, now you have all the large language model stuff where you like, you feed the video in like, Hey, tell, tell, tell me, uh, what this video is about and give me the code snippets and all that stuff. I don't know how well it works, but it seems [00:45:14] David: It's gotta get better. Cause you go to a support site and they're like, here's how to fix your problem, and it's a video. And I'm like, can you just tell me? But I'd never thought about asking the AI to just look at the video and tell me. So yeah, it's not bad. [00:45:25] Jeremy: I think, that's probably where we're going. So it's, uh, it's a little weird to think about, but, [00:45:29] David: yeah, yeah. I was just updating, uh, you know, like I said, I try to keep the book updated when new versions of Rails come out, so I'm getting ready to update it for Rails 7. 1 and in Amazon's, Kindle Direct Publishing as their sort of backend for where you, you know, publish like a Kindle book and stuff, and so they added a new question, was AI used in the production of this thing or not? And if you answer yes, they want you to say how much, And I don't know what they're gonna do with that exactly, but I thought it was pretty interesting, cause I would be very disappointed to pay 50 for a book that the AI wrote, right? So it's good that they're asking that? Yeah. [00:46:02] Jeremy: I think the problem Amazon is facing is where people wholesale have the AI write the book, and the person either doesn't review it at all, or maybe looks at a little, a little bit. And, I mean, the, the large language model stuff is very impressive, but If you have it generate a technical book for you, it's not going to be good. [00:46:22] David: yeah. And I guess, cause cause like Amazon, I mean, think about like Amazon scale, like they're not looking at the book at all. Like I, I can go click a button and have my book available and no person's going to look at it. they might scan it or something maybe with looking for bad words. I don't know, but there's no curation process there. So I could, yeah. I could see where they could have that, that kind of problem. And like you as the, as the buyer, you don't necessarily, if you want to book on something really esoteric, there are a lot of topics I wish there was a book on that there isn't. And as someone generally want to put it on Amazon, I could see a lot of people buying it, not realizing what they're getting and feeling ripped off when it was not good. [00:47:00] Jeremy: Yeah, I mean, I, I don't know, if it's an issue with the, the technical stuff. It probably is. But I, I know they've definitely had problems where, fiction, they have people just generating hundreds, thousands of books, submitting them all, just flooding it. [00:47:13] David: Seeing what happens. [00:47:14] Jeremy: And, um, I think that's probably... That's probably the main reason why they ask you, cause they want you to say like, uh, yeah, you said it wasn't. And so now we can remove your book. [00:47:24] David: right. Right. Yeah. Yeah. [00:47:26] Jeremy: I mean, it's, it's not quite the same, but it's similar to, I don't know what Stack Overflow's policy is now, but, when the large language model stuff started getting big, they had a lot of people answering the questions that were just. Pasting the question into the model [00:47:41] David: Which because they got it from [00:47:42] Jeremy: and then [00:47:43] David: The Got model got it from Stack Overflow. [00:47:45] Jeremy: and then pasting the answer into Stack Overflow and the person is not checking it. Right. So it's like, could be right, could not be right. Um, cause, cause to me, it's like, if, if you generate it, if you generate the answer and the answer is right, and you checked it, I'm okay with that. [00:48:00] David: Yeah. Yeah. [00:48:01] Jeremy: but if you're just like, I, I need some karma, so I'm gonna, I'm gonna answer these questions with, with this bot, I mean, then maybe [00:48:08] David: I could have done that. You're not adding anything. Yeah, yeah. [00:48:11] Jeremy: it's gonna be a weird, weird world, I think. [00:48:12] David: Yeah, no kidding. No kidding. [00:48:15] Jeremy: that's a, a good place to end it on, but is there anything else you want to mention, [00:48:19] David: No, I think we covered it all just yeah, you could find me online. I'm Davetron5000 on Ruby. social Mastodon, I occasionally post on Twitter, but not that much anymore. So Mastodon's a place to go. [00:48:31] Jeremy: David, thank you so much [00:48:32] David: All right. Well, thanks for having me.
Episode Notes Rachael Wright-Munn (ChaelCodes) talks about her love of programming games (games with programming elements in them, not how to make games!), starting her streaming career with regex crosswords, and how streaming games and open source every week led her to a voice acting role in one of her favorite programming games. Recorded at RubyConf 2023 in San Diego. mastodon twitch Personal website Programming Games mentioned: Regex Crossword SHENZHEN I/O EXAPUNKS 7 Billion Humans One Dreamer Code Rom@ntic Bitburner Transcript You can help edit this transcript on GitHub. Jeremy: I'm here at RubyConf San Diego with Rachel Wright-Munn, and she goes by Chaelcodes online. Thanks for joining me today. Rachael: Hi, everyone. Hi, Jeremy. Really excited to be here. Jeremy: So probably the first thing I'll ask about is on your web page, and I've noticed you have streams, you say you have an interest in not just regular games, but programming games, so. Rachael: Oh my gosh, I'm so glad you asked about this. Okay, so I absolutely love programming games. When I first started streaming, I did it with Regex Crossword. What I really like about it is the fact that you have this joyful environment where you can solve puzzles and work with programming, and it's really focused on the experience and the joy. Are you familiar with Zach Barth of Zachtronics? Jeremy: Yeah. So, I've tried, what was it? There's TIS-100. And then there's the, what was the other one? He had one that's... Rachael: Opus Magnum? Shenzhen I/O? Jeremy: Yeah, Shenzhen I/O. Rachael: Oh, my gosh. Shenzhen I/O is fantastic. I absolutely love that. The whole conceit of it, which is basically that you're this electronics engineer who's just moved to Shenzhen because you can't find a job in the States. And you're trying to like build different solutions for these like little puzzles and everything. It was literally one of the, I think that was the first programming game that really took off just because of the visuals and everything. And it's one of my absolute favorites. I really like what he says about it in terms of like testing environments and the developer experience. Cause it's built based on assembly, right? He's made a couple of modifications. Like he's talked about it before where it's like The memory allocation is different than what it would actually look like in assembly and the way the registers are handled I believe is different, I wouldn't think of assembly as something that's like fun to write, but somehow in this game it is. How far did you get in it? Jeremy: Uh, so I didn't get too far. So, because like, I really like the vibe and sort of the environment and the whole concept, right, of you being like, oh, you've been shipped off to China because that's the only place that these types of jobs are, and you're working on these problems with bad documentation and stuff like that. And I like the whole concept, but then the actual writing of the software, I was like, I don't know. Rachael: And it's so hard, one of the interesting things about that game is you have components that you drop on the board and you have to connect them together and wire them, but then each component only has a specific number of lines. So like half the time I would be like, oh, I have this solution, but I don't have enough lines to actually run it or I can't fit enough components, then you have to go in and refactor it and everything. And it's just such a, I don't know, it's so much fun for me. I managed to get through all of the bonus levels and actually finish it. Some of them are just real, interesting from both a story perspective and interesting from a puzzle perspective. I don't wanna spoil it too much. You end up outside Shenzhen, I'll just say that. Jeremy: OK. That's some good world building there. Rachael: Yeah. Jeremy: Because in your professional life, you do software development work. So I wonder, what is it about being in a game format where you're like, I'm in it. I can do it more. And this time, I'm not even being paid. I'm just doing it for fun. Rachael: I think for me, software development in general is a very joyful experience. I love it. It's a very human thing. If you think about it like math, language, all these things are human concepts and we built upon that in order to build software in our programs and then on top of that, like the entire purpose of everything that we're building is for humans, right? Like they don't have rats running programs, you know what I mean? So when I think about human expression and when I think about programming, these two concepts are really closely linked for me and I do see it as joyful, But there are a lot of things that don't spark joy in our development processes, right? Like lengthy test suites, or this exhausting back and forth, or sometimes the designs, and I just, I don't know how to describe it, but sometimes you're dealing with ugly code, sometimes you're dealing with code smells, and in your professional developer life, sometimes you have to put up with that in order to ship features. But when you're working in a programming game, It's just about the experience. And also there is a correct solution, not necessarily a correct solution, but like there's at least one correct solution. You know for a fact that there's, that it's a solvable problem. And for me, that's really fun. But also the environment and the story and the world building is fun as well, right? So one of my favorite ones, we mentioned Shenzhen, but Zachtronics also has Exapunks. And that one's really fun because you have been infected by a disease. And like a rogue AI is the only one that can provide you with the medicine you need to prevent it. And what this disease is doing is it is converting parts of your body into like mechanical components, like wires and everything. So what you have to do as an engineer is you have to write the code to keep your body running. Like at one point, you were literally programming your heart to beat. I don't have problems like that in my day job. In my day job, it's like, hey, can we like charge our customers more? Like, can we put some banners on these pages? Like, I'm not hacking anybody's hearts to keep them alive. Jeremy: The stakes are a little more interesting. Yeah, yeah. Rachael: Yeah, and in general, I'm a gamer. So like having the opportunity to mix two of my passions is really fun. Jeremy: That's awesome. Yeah, because that makes sense where you were saying that there's a lot of things in professional work where it's you do it because you have to do it. Whereas if it's in the context of a game, they can go like, OK, we can take the fun problem solving part. We can bring in the stories. And you don't have to worry about how we're going to wrangle up issue tickets. Rachael: Yeah, there are no Jira tickets in programming games. Jeremy: Yeah, yeah. Rachael: I love what you said there about the problem solving part of it, because I do think that that's an itch that a lot of us as engineers have. It's like we see a problem, and we want to solve it, and we want to play with it, and we want to try and find a way to fix it. And programming games are like this really small, compact way of getting that dopamine hit. Jeremy: For sure. Yeah, it's like. Sometimes when you're doing software for work or for an actual purpose, there may be a feeling where you want to optimize something or make it look really nice or perform really well. And sometimes it just doesn't matter, right? It's just like we need to just put it out and it's good enough. Whereas if it's in the context of a game, you can really focus on like, I want to make this thing look pretty. I want to feel good about this thing I'm making. Rachael: You can make it look good, or you can make it look ugly. You don't have to maintain it. After it runs, it's done. Right, right, right. There's this one game. It's 7 Billion Humans. And it's built by the creators of World of Goo. And it's like this drag and drop programming solution. And what you do is you program each worker. And they go solve a puzzle. And they pick up blocks and whatever. But they have these shredders, right? And the thing is, you need to give to the shredder if you have like a, they have these like little data blocks that you're handing them. If you're not holding a data block and you give to the shredder, the worker gives themself to the shredder. Now that's not ideal inside a typical corporate workplace, right? Like we don't want employees shredding themselves. We don't want our workers terminating early or like anything like that. But inside the context of a game, in order to get the most optimal solution, They have like a lines of code versus fastest execution and sometimes in order to win the end like Lines of code. You just kind of have to shred all your workers at the, When I'm on stream and I do that when I'm always like, okay everybody close your eyes That's pretty good it's Yeah, I mean cuz like in the context of the game. Jeremy: I think I've seen where they're like little They're like little gray people with big eyes Yes, yes, yes, yes. Yeah, so it's like, sorry, people. It's for the good of the company, right? Rachael: It's for my optimal lines of code solution. I always draw like a, I always write a humane solution before I shred them. Jeremy: Oh, OK. So it's, you know, I could save you all, but I don't have to. Rachael: I could save you all, but I would really like the trophy for it. There's like a dot that's going to show up in the elevator bay if I shred you. Jeremy: It's always good to know what's important. But so at the start, you mentioned there was a regular expression crossword or something like that. Is that how you got started with all this? Rachael: My first programming game was Regex Crossword. I absolutely loved it. That's how I learned Regex. Rachael: I love it a lot. I will say one thing that's been kind of interesting is I learned Regex through Regex Crossword, which means there's actually these really interesting gaps in my knowledge. What was it? at Link Tech Retreat, they had like a little Regex puzzle, and it was like forward slash T and then a plus, right? And I was like, I have no idea what that character is, right? Like, I know all the rest of them. But the problem is that forward slash T is tab, and Regex crossword is a browser game. So you can't have a solution that has tab in it. And have that be easy for users. Also, the idea of like greedy evaluation versus lazy evaluation doesn't apply, because you're trying to find a word that satisfies the regex. So it's not necessarily about what the regex is going to take. So it's been interesting finding those gaps, but I really think that some of the value there was around how regex operates and the rules underlying it and building enough experience that I can now use the documentation to fill in any gaps. Jeremy: So the crossword, is it where you know the word and you have to write a regular expression to match it? Or what's the? Rachael: They give you regex. And there's a couple of different versions, right? The first one, you have two regex patterns. There's one going up and down, and there's one going left and right. And you have to fill the crossword block with something that matches both regular expressions. Rachael: Then we get into hexagonal ones. Yeah, where you have angles and a hexagon, and you end up with like three regular expressions. What's kind of interesting about that one is I actually think that the hexagonal regex crosswords are a little bit easier because you have more rules and constraints, which are more hints about what goes in that box. Jeremy: Interesting. OK, so it's the opposite of what I was thinking. They give you the regex rules, and then you put in a word that's going to satisfy all the regex you see. Rachael: Exactly. When I originally did it, they didn't have any sort of hints or anything like that. It was just empty. Now it's like you click a box, and then they've got a suggestion of five possible letters that could go in there. And it just breaks my heart. I liked the old version that was plainer, and didn't have any hints, and was harder. But I acknowledge that the new version is prettier, and probably easier, and more friendly. But I feel like part of the joy that comes from games, that comes from puzzles, It comes from the challenge, and I miss the challenge. Jeremy: I guess someone, it would be interesting to see people who are new to it, if they had tried the old way, if they would have bounced off of it. Rachael: I think you're probably right. I just want them to give me a toggle somewhere. Jeremy: Yeah, oh, so they don't even let you turn off the hints, they're just like, this is how it is. Rachael: Yep. Jeremy: Okay. Well, we know all about feature flags. Rachael: And how difficult they are to maintain in perpetuity. Jeremy: Yeah, but no, that sounds really cool because I think some things, like you can look up a lot of stuff, right? You can look up things about regex or look up how to use them. But I think without the repetition and without the forcing yourself to actually go through the motion, without that it's really hard to like learn and pick it up. Rachael: I completely agree with you. I think the repetition, the practice, and learning the paradigm and patterns is huge. Because like even though I didn't know what forward slash t plus was, I knew that forward slash t was going to be some sort of character type. Jeremy: Yeah, it kind of reminds me of, there was, I'm not sure if you've heard of Vim Adventures, but... Rachael: I did! I went through the free levels. I had a streamerversary and my chat had completed a challenge where I had to go learn Vim. So I played a little bit of Vim Adventures. Jeremy: So I guess it didn't sell you. Rachael: Nope, I got Vim Extensions turned on. Jeremy: Oh, you did? Rachael: Yeah, I have the Vim extension turned on in VS Code. So I play with a little bit of sprinkling of Vim in my everyday. Jeremy: It's kind of funny, because I am not a Vim user in the sense that I don't use it as my daily editor or anything like that. But I do the same thing with the extensions in the browser. I like being able to navigate with the keyboard and all that stuff. Rachael: Oh, that is interesting. That's interesting. You have a point like memorizing all of the different patterns when it comes to like Keyboard navigation and things like that is very similar to navigating in Vim. I often describe writing code in Vim is kind of like solving a puzzle in order to write your code So I think that goes back to that Puzzle feeling that puzzle solving feeling we were having we were talking about before. Jeremy: Yeah, I personally can't remember, but whenever I watch somebody who's, really good at using Vim, it is interesting to see them go, oh, yes, I will go to the fifth word, and I will swap out just this part. And it's all just a few keystrokes, yeah. Rachael: Very impressive. Can be done just as well with backspace and, like, keyboard, like, little arrows and everything. But there is something fun about it and it is... Faster-ish. Jeremy: Yeah, I think it's like I guess it depends on the person, but for some people it's like they, they can think and do things at the speed that they type, you know, and so for them, I guess the the flow of, I'm doing stuff super fast using all these shortcuts is probably helpful to them. Rachael: I was talking to someone last night who was saying that they don't even think about it in Vim anymore. They just do it. I'm not there yet. (laughs) Jeremy: Yeah, I'll probably never be there (laughs) But yeah, it is something to see when you've got someone who's really good at it. Rachael: Definitely. I'm kind of glad that my chat encouraged and pressured me to work with Vim. One of the really cool things is when I'm working on stuff, I'll sometimes be like, oh, I want to do this. Is there a command in Vim for that? And then I'll get multiple suggestions or what people think, and ideas for how I can handle things better. Someone recently told me that if you want to delete to the end of a line, you can use capital D. And this whole time I was doing lowercase d dollar sign. Jeremy: Oh, right, right, right. Yeah. Yeah, it's like there's so many things there that, I mean, we should probably talk about your experiences streaming. But that seems like a really great benefit that you can be working through a problem or just doing anything, really. And then there's people who they're watching, and they're like, I know how to do it better. And they'll actually tell you, yeah. Rachael: I think that being open to that is one of the things that's most important as a streamer. A lot of people get into this cycle where they're very defensive and where they feel like they have to be the expert. But one of the things that I love about my chat is the fact that they do come to me with these suggestions. And then I can be open to them, and I can learn from them. And what I can do is I can take those learnings from one person and pass it on to the other people in chat. I can become a conduit for all of us to learn. Jeremy: So when you first decided to start streaming, I guess what inspired you to give it a shot? Like, what were you thinking? Rachael: That's a great question. It's also kind of a painful question. So the company that I was working for, I found out that there were some pay issues with regards to me being a senior, promotion track, things like that. And it wasn't the first time this had happened, right? Like, I often find that I'm swapping careers every two to three years because of some miserable experience at the company. Like you start and the first year is great. It's fantastic. It's awesome. But at the end of it, you're starting to see the skeletons and that two to three years later you're burnt out. And what I found was that every two to three years I was losing everything, right? Like all of my library of examples, the code that I would reference, like that's in their private repo. When it came to my professional network, the co -workers that liked and respected me, we had always communicated through the workplace Slack. So it's really hard to get people to move from the workplace Slack to like Instagram or Twitter or one of those other places if that's not where, if that's not a place where you're already used to talking to them. And then the other thing is your accomplishments get wiped out, right? Like when you start at the next company and you start talking about promotion and things like that, the work that you did at previous companies doesn't matter. They want you to be a team lead at that company. They want you to lead a massive project at that company and that takes time. It takes opportunities and Eventually, I decided that I wanted to exist outside my company. Like I wanted to have a reputation that went beyond that and that's what originally inspired me to stream And it's pretty hard to jump from like oh. I got really frustrated and burnt out at my company to I've got it I'm gonna do some regex crossword on stream, but honestly, that's what it was right was I just wanted to slowly build this reputation in this community outside of of my company and it's been enormously valuable in terms of my confidence, in terms of my opportunities. I've been able to pick up some really interesting jobs and I'm able to leverage some of those experiences in really clear professional ways and it's really driven me to contribute more to open source. I mentioned that I have a lot of people like giving me advice and suggestions and feedback. That's enormously helpful when you're going out there and you're trying to like get started in open source and you're trying to build that confidence and you're trying to build that reputation. I often talk about having a library of examples, right? Like your best code that you reference again and again and again. If I'm streaming on Twitch, everything that I write has to be open source because I'm literally showing it on video, right? So it's really encouraged me to build that out. And now when I'm talking to my coworkers and companies, I can be like, oh, we need to talk about single table inheritance. I did that in Hunter's Keepers. Why don't we go pull that up and we'll take a look at it. Or are we building a Docker image? I did that in Hunter's Keepers and Conf Buddies. Why don't we look at these, compare them, and see if we can get something working here, right? Like I have all of these examples, and I even have examples from other apps as well. Like I added Twitch Clips to 4M. So when I want to look at how to build a liquid tag, because Jekyll uses liquid tags as well. So when I'm looking at that, I can hop to those examples and hop between them, and I'm never going to lose access to them. Jeremy: Yeah, I mean, that's a really good point where I think a lot of people, they do their work at their job and it's never going to be seen by anyone and you can sort of talk about it, but you can't actually show anybody what you did. So it's like, and I think to that point too, is that there's some knowledge that is very domain specific or specific to that company. And so when you're actually doing open source work, it's something that anybody can pick up and use and has utility way beyond just your company. And the whole point of creating this record, that makes a lot of sense too, because if I wanna know if you know how to code, I can just see like, wow, she streams every Thursday. She's clearly she knows what she's doing and you know, you have these also these open source contributions as well So it's it's sort of like it's not this question of if I interview you It's it's not I'm just going off of your word that and I believe what you're saying. But rather it's kind of the proof is all it's all out there. Rachael: Oh, definitely if I were to think about my goals and aspirations for the future I've been doing this for four years still continuing But I think I would like to get to the point where I don't really have to interview. Where an interview is more of a conversation between me and somebody who already knows they want to hire me. Jeremy: Have you already started seeing a difference? Like you've been streaming for about four years I think Rachael: I had a really interesting job for about eight months doing developer relations with New Relic. That was a really interesting experience. And I think it really pushed the boundaries of what I understood myself to be capable of because I was able to spend 40 hours a week really focused on content creation, on blogging, on podcasting, on YouTube videos and things like that. Obviously there was a lot of event organization and things like that as well. But a lot of the stuff that came out of that time is some of my best work. Like I, I'm trying to remember exactly what I did while I was at New Relic, but I saw a clear decrease afterwards. But yeah, I think that was probably close to the tipping point. I don't for sure know if I'm there yet, right? Like you never know if you're at the point where you don't have to interview anymore until you don't have to interview. But the last two jobs, no, I haven't had to interview. Jeremy: So, doing it full -time, how did you feel about that versus having a more traditional lead or software developer role? Rachael: It was definitely a trade-off. So I spent a lot less time coding and a lot more time with content, and I think a little bit of it was me trying to balance the needs and desires of my audience against the needs and desires of my company. For me, and this is probably going to hurt my chances of getting one of those jobs where I don't have to interview in the future, but my community comes first, right? They're the people who are gonna stick with me when I swap between jobs, but that was definitely something that I constantly had to think about is like, how do I balance what my company wants from me with the responsibility that I have to my community? But also like my first talk, your first open source contribution, which was at RubyConf Denver, Like, that was written while I was at New Relic. Like, would I have had the time to work on a talk in addition to the streaming schedule and everything else? Um, for a period of time, I was hosting Ruby Galaxy, which was a virtual meetup. It didn't last very long, and we have deprecated it. Um, I deprecated it before I left the company because I wanted to give it, like, a good, clean ending versus, um, necessarily having it, like, linger on and be a responsibility for other people. but... I don't think I would have done those if I was trying to balance it with my day job. So, I think that that was an incredible experience. That said, I'm very glad it's over. I'm very glad that the only people I'm beholden to are my community now. Jeremy: So, is it the sheer amount that you had to do that was the main issue? Or is it more that that tension between, like you said, serving your audience and your community versus serving your employer? Rachael: Oh, a lot of it was tension. A lot of it was hectic, event management in general. I think if you're like planning and organizing events, that's a very challenging thing to do. And it's something that kind of like goes down to the deadline, right? And it's something where everybody's trying to like scramble and pull things together and keep things organized. And that was something that I don't think I really enjoyed. I like to have everything like nice and planned out and organized and all that sort of stuff, and I don't think that that's Something that happens very often in event management at least not from my experience So these were like in -person events or what types of events like I actually skipped out before the in -person events. They would have been in -person events. We had future stack at New Relic, which is basically like this big gathering where you talk about things you can do with New Relic and that sort of stuff. We all put together talks for that. We put together an entire like. Oh gosh, I'm trying to remember the tool that we use, but it was something similar to gather round where you like interact with people. And there's just a lot that goes into that from marketing to event planning to coordinating with everyone. I'm grateful for my time at New Relic and I made some incredible friends and some incredible connections and I did a lot, but yeah, I'm very glad I'm not in DevRel anymore. I don't, if you ask any DevRel, They'll tell you it's hectic, they'll tell you it's chaotic, and they'll tell you it's a lot of work. Jeremy: Yeah. So it sounds like maybe the streaming and podcasting or recording videos, talks, that part you enjoy, but it's the I'm responsible for planning this event for all these people to, you know. That's the part where you're like, OK, maybe not for me. Rachael: Yeah, kind of. I describe myself as like a content creator because I like to just like dabble and make things, right? Like I like to think about like, what is the best possible way to craft this tweet or this post or like to sit there and be like, okay, how can I structure this blog post to really communicate what I want people to understand? When it comes to my streams, what I actually do is I start with the hero's journey as a concept. So every single stream, we start with an issue in the normal world, right? And then what we do is we get drawn into the chaos realm as we're like debugging and trying to build things and going Back and forth and there's code flying everywhere and the tests are red and then they're green and then they're red and then they're green and then finally at the end we come back to the normal world as we create this PR and, Submit it neither merge it or wait for maintainer feedback. And for me that Story arc is really key and I like I'm a little bit of an artist. I like the artistry of it. I like the artistry of the code, and I like the artistry of creating the content. I think I've had guests on the show before, and sometimes it's hard to explain to them, like, no, no, no, this is a code show. We can write code, and that's great, but that's not what it's about. It's not just about the end product. It's about bringing people along with us on the journey. And sometimes it's been three hours, and I'm not doing a great job of bringing people along on the journey so like you know I'm tooting my own horn a little bit here but like that is important to me. Jeremy: So when you're working through a problem, When you're doing it on stream versus you're doing it by yourself, what are the key differences in how you approach the problem or how you work through it? Rachael: I think it's largely the same. It's like almost exactly the same. What I always do is, when I'm on stream, I pause, I describe the problem, I build a test for it, and then I start working on trying to fix what's wrong. I'm a huge fan of test -driven development. The way I see it, you want that bug to be reproducible, and a test gives you the easiest way to reproduce it. For me, it's about being easy as much as it is about it being the right way or not. But yeah, I would say that I approach it largely in the same way. I was in the content creator open space a little bit earlier, and I had to give them a bit of a confession. There is one small difference when I'm doing something on stream versus when I'm doing something alone. Sometimes, I have a lot of incredible senior staff, smart, incredible people in my chat. I'll describe the problem in vivid detail, and then I'll take my time writing the test, and by the time I'm done writing the test, somebody will have figured out what the problem is, and talk back to me about it. I very rarely do that. It's more often when it's an ops or an infrastructure or something like that. A great example of this is like the other day I was having an issue, I mentioned the Vim extensions. If I do command P on the code section, Vim extensions was capturing that, and so it wasn't opening the file. So one of my chatters was like, oh, you know, you can fix that if you Google it. I was like, oh, I don't know. I mean, I could Google it, but it will take so long and distract from the stream. Literally less than 15 minutes later a chatter had replied with like, here's exactly what to add to your VS Code extension, and I knew that was gonna happen. So that's my little secret confession. That's the only difference when I'm debugging things on stream is sometimes I'll let chat do it for me. Jeremy: Yeah, that's a superpower right there. Rachael: It is, and I think that happens because I am open to feedback and I want people to engage with me and I support that and encourage that in my community. I think a lot of people sometimes get defensive when it comes to code, right? Like when it comes to the languages or the frameworks that we use, right? There's a little bit of insecurity because you dive so deep and you gain so much knowledge that you're kind of scared that there might be something that's just as good because it means you might not have made the right decision. And I think that affects us when it comes to code reviews. I think it affects us when we're like writing in public. And I think, yeah, and I think it affects a lot of people when they're streaming, where they're like, if I'm not the smartest person in the room, and why am I the one with a camera and a microphone? But I try to set that aside and be like, we're all learning here. Jeremy: And when people give that feedback, and it's good feedback, I think it's really helpful when people are really respectful about it and kind about it. Have you had any issues like having to moderate that or make sure it stays positive in the context of the stream? Rachael: I have had moderation issues before, right? Like, I'm a woman on the internet, I'm going to have moderation issues. But for me, when it comes to feedback and suggestions, I try to be generous with my interpretation and my understanding of what they're going with. Like people pop in and they'll say things like, Ruby is dead, Rails is dead. And I have commands for that to like remind them, no, actually Twitch is a Rails app. So like, no, it's definitely not dead. You just used it to send a message. But like, I try to be understanding of where people are coming from and to meet them where they are, even if they're not being the most respectful. And I think what I've actually noticed is that when I do that, their tone tends to change. So I have two honorary trolls in my chat, Kego and John Sugar, and they show up and they troll me pretty frequently. But I think that that openness, that honesty, like that conversation back and forth it tends to defuse any sort of aggressive tension or anything. Jeremy: Yeah, and it's probably partly a function of how you respond, and then maybe the vibe of your stream in general probably brings people that are. Rachael: No, I definitely agree. I think so. Jeremy: Yeah. Rachael: It's the energy, you get a lot of the energy that you put out. Jeremy: And you've been doing this for about four years, and I'm having trouble picturing what it's even like, you know, you've never done a stream and you decide I'm gonna turn on the camera and I'm gonna code live and, you know, like, what was kind of going through your mind? How did you prepare? And like, what did, like, what was that like? Rachael: Thank you so much. That's a great question. So, actually, I started with Regex Crossword because it was structured, right? Like, I didn't necessarily know what I wanted to do and what I wanted to work on, but with Regex Crossword, you have a problem and you're solving it. It felt very structured and like a very controlled environment, and that gave me the confidence to get comfortable with, like, I'm here, I have a moderator, right? Like we're talking back and forth, I'm interacting with chatters, and that allowed me to kind of build up some skills. I'm actually a big fan of Hacktoberfest. I know a lot of people don't like it. I know a lot of people are like, oh, there are all these terrible spam PRs that show up during Hacktoberfest and open source repositories. But I'm a really big fan because I've always used it to push my boundaries, right? Like every single year, I've tried to take a new approach on it. So the first year that I did it, I decided that what I wanted to do to push my boundaries was to actually work on an application. So this one was called Hunter's Keepers. It was an app for managing characters in Monster of the Week and it was a Reels app because that's what I do professionally and that's what I like to work on. So I started just building that for Hacktoberfest and people loved it. It got a ton of engagement, way more than Regex Crossword and a little bit, like those open source streams continue to do better than the programming games, but I love the programming games so much that I don't wanna lose them, but that's where it kind of started, right? Was me sitting there and saying like, oh, I wanna work on these Rails apps. The Hacktoberfest after that one, And I was like, OK, I worked on my own app in the open, and I've been doing that for basically a year. I want to work on somebody else's app. So I pushed myself to contribute to four different open source repositories. One of the ones I pushed myself to work on was 4M. They did not have Twitch clips as embeds. They had YouTube videos and everything else. And I looked into how to do it, and I found out how liquids tags work, and I had a ton of other examples. I feel like extensions like that are really great contributions to open source because it's an easy way with a ton of examples that you can provide value to the project, and it's the sort of thing where, like, if you need it, other people probably need it as well. So I went and I worked on that, and I made some Twitch clips. And that was like one of my first like external open source project contributions. And that kind of snowballed, right? Because I now knew how to make a liquid tag. So when I started working on my Jekyll site, and I found out that they had liquid tags that were wrapped in gems, I used that as an opportunity to learn how to build a gem. And like how to create a gem that's wrapped around a liquid tag. And that exists now and is a thing that I've done. And so it's all of these little changes and moments that have stacked on top of each other, right? Like it's me going in and saying, OK, today I'd like to customize my alerts. Or like, today I'd like to buy a better microphone and set it up and do these changes. It's not something that changed all at once, right? It's just this small putting in the time day by day, improving. I say like the content gears are always grinding. You always need something new to do, right? And that's basically how my stream has gone for the last four years, is I'm just always looking for something new to do. We haven't talked about this yet, but I'm a voice actress in the programming video game, One Dreamer. And I actually collaborated with the creator of another one, Compressor, who like reached out to me about that Steam key. But the reason that I was able to talk to these people and I was able to reach out to them is rooted in Regex Crossword, right? Cause I finished Regex Crossword and Thursday night was like my programming game stream. And I loved them, so I kept doing them. And I kept picking up new games to play, and I kept exploring new things. So at the end of it, I ended up in this place where I had this like backlog in knowledge and history around programming games. So when Compressor was developed, I think he's like the creator, Charlie Bridge is like a VP at Arm or something. And okay, I should back up a little bit. Compressor is this game where you build CPUs with Steam. So it's like Steam Punk, like, electrical engineering components. Ah, it's so much fun. And like, the characters are all cool, because it's like you're talking to Nikola Tesla, and like Charles Babbage, and Ada Lovelace, and all this sort of stuff. It's just super fun. But the reason he reached out to me was because of that reputation, that backlog, that feedback. Like, when you think about how you became a developer, right, it's day by day, right? when you develop your experience. There's a moment where you look back and you're like, I just have all of these tools in my toolkit. I have all of these experiences. I've done all these things, and they just stack to become something meaningful. And that's kind of how it's gone with my stream, is just every single day I was trying to push, do something new. Well, not every day. Sometimes I have a lazy day, but like, but like I am continuously trying to find new ground to tread. Jeremy: Yeah, I mean that's really awesome thinking about how it went from streaming you solving these regex crosswords to all the way to ending up in one of these games that you play. Yeah, that's pretty pretty cool. Rachael: By the way, that is my absolute favorite game. So the whole reason that I'm in the game is because I played the demo on stream. Jeremy: Oh, nice. Rachael: And I loved it. Like I immediately was like, I'm going to go join the creators discord. This is going to be my game of the year. I can't wait to like make a video on this game. What's really cool about this one is that it uses programming as a mechanic and the story is the real driver. It's got this emotional impact and story. The colors are gorgeous and the way you interact with the world, like it is a genuine puzzle game where the puzzles are small, little, simple programming puzzles. And not like I walk up to this and like I solve a puzzle and the door opens. No, it's like you're interacting with different components in the world and wiring them together in order to get the code working. The whole premise is that there's an indie game developer who's gone through this really traumatic experience with his game, and now he's got the broken game, and he's trying to fix it in time for a really important game demo. I think it's like, it's like Vig something. Video game indie gaming. But what happened is I started following the creator, and I was super interested in them. And then he actually reached out to me about like the Steve workshop and then he was looking for people to voice act and I was like me please yes so yeah that's how I got involved with it yeah that's awesome it's like everything came full circle I guess it's like where you started and yeah no absolutely it's amazing. Jeremy: And so what was that experience like the voice acting bit? I'm assuming you didn't have professional experience with that before. Rachael: No, no, no, no. I had to do a lot of research into like how to voice act. My original ones were tossed out. I just, OK, so there's one line in it. This is going to this is so embarrassing. I can't believe I'm saying this on a podcast. There's one line that's like, it's a beautiful day to code. It's like a, because I'm an NPC, right? So like you can keep interacting with me and one of the like cycling ones is like, it's a beautiful day to code. Well, I tried to deliver it wistfully. Like I was staring out a window and I was like, it's a beautiful day to code. And every single person who heard it told me that it sounded like somewhat sensual, sexy. And I was dying because I had just sent this to this like indie game developer that like I appreciated and he replies back and he's like, I'm not sure if there was an audio issue with some of these, but could you like rerecord some of these? So I was very inexperienced. I did a lot of practicing, a lot of vocal exercises, but I think that it turned out well. Jeremy: That's awesome. So you kind of just kept trying and sending samples, or did they have anybody like try and coach you? Rachael: No, I just kept sending samples. I did watch some YouTube videos from like real voice actors. To try and like figure out what the vocal exercises were. One of the things that I did at first was I sent him like one audio, like the best one in my opinion. And he replied back being like, no, just record this like 10, 20 times. Send it to me and I'll chop the one I want. Jeremy: So the, anytime you did that, the one they picked, was it ever the one you thought was the best one? Rachael: Oh gosh, I don't think I actually like, Wow, I don't think I've gone back over the recordings to figure out which one I thought was the best one. Or like checked which one he picked out of the ones that I recorded. Oh, that's interesting. I'm going to have to do that after this. Jeremy: You're going to listen to all the, it's a beautiful day to code. Rachael: The final version is like a nice, neutral like, it's a beautiful day to code. One of the really cool things about that, though, is my character actually triggers the end of game scene, which is really fun. You know how you get a little hint that's like, oh, this is where the end of the game is, my character gets to do that. Jeremy: That's a big responsibility. Rachael: It is. I was so excited when I found out. Jeremy: That's awesome. Cool. Well, I think that's probably a good place to wrap it up on. But is there anything else you want to mention, or any games you want to recommend? Rachael: Oh, I think I mentioned all of them. I think if you look at Code Romantic, AXA Punks, Bitburner, is an idle JavaScript game that can be played in the browser where you write the custom files and build it and you're going off and hacking servers and stuff like that. It's a little light on story. One Dreamer, yeah. I think if you look at those four to five games, you will find one you like. Oh, it's 7 Billion Humans. Jeremy: Oh, right, yeah. Rachael: I haven't written the blog post yet, but that's my five programming video games that you should try if you've never done one before. 7 million humans is on mobile, so if you've got a long flight back from RubyConf, it might be a great choice. Jeremy: Oh, there you go. Rachael: Yeah. Other than that, it can be found at chael.codes, chael.codes/links for the socials, chael.codes/about for more information about me. And yeah, thank you so much for having me. This has been so much fun. Jeremy: Awesome. Well, Rachel, thank you so much for taking the time. Rachael: Thank you.
Thanks to the over 17,000 people who have joined the first AI Engineer Summit! A full recap is coming. Last call to fill out the State of AI Engineering survey! See our Community page for upcoming meetups in SF, Paris and NYC.This episode had good interest on Twitter.Fast.ai's “Practical Deep Learning” courses been watched by over >6,000,000 people, and the fastai library has over 25,000 stars on Github. Jeremy Howard, one of the creators of Fast, is now one of the most prominent and respected voices in the machine learning industry; but that wasn't always the case. Being non-consensus and right In 2018, Jeremy and Sebastian Ruder published a paper on ULMFiT (Universal Language Model Fine-tuning), a 3-step transfer learning technique for NLP tasks: The paper demonstrated that pre-trained language models could be fine-tuned on a specific task with a relatively small amount of data to achieve state-of-the-art results. They trained a 24M parameters model on WikiText-103 which was beat most benchmarks.While the paper had great results, the methods behind weren't taken seriously by the community: “Everybody hated fine tuning. Everybody hated transfer learning. I literally did tours trying to get people to start doing transfer learning and nobody was interested, particularly after GPT showed such good results with zero shot and few shot learning […] which I was convinced was not the right direction, but who's going to listen to me, cause as you said, I don't have a PhD, not at a university… I don't have a big set of computers to fine tune huge transformer models.”Five years later, fine-tuning is at the center of most major discussion topics in AI (we covered some like fine tuning vs RAG and small models fine tuning), and we might have gotten here earlier if Jeremy had OpenAI-level access to compute and distribution. At heart, Jeremy has always been “GPU poor”:“I've always been somebody who does not want to build stuff on lots of big computers because most people don't have lots of big computers and I hate creating stuff that most people can't use.”This story is a good reminder of how some of the best ideas are hiding in plain sight; we recently covered RWKV and will continue to highlight the most interesting research that isn't being done in the large labs. Replacing fine-tuning with continued pre-trainingEven though fine-tuning is now mainstream, we still have a lot to learn. The issue of “catastrophic forgetting” and potential solutions have been brought up in many papers: at the fine-tuning stage, the model can forget tasks it previously knew how to solve in favor of new ones. The other issue is apparent memorization of the dataset even after a single epoch, which Jeremy covered Can LLMs learn from a single example? but we still don't have the answer to. Despite being the creator of ULMFiT, Jeremy still professes that there are a lot of open questions on finetuning:“So I still don't know how to fine tune language models properly and I haven't found anybody who feels like they do.”He now advocates for "continued pre-training" - maintaining a diversity of data throughout the training process rather than separate pre-training and fine-tuning stages. Mixing instructional data, exercises, code, and other modalities while gradually curating higher quality data can avoid catastrophic forgetting and lead to more robust capabilities (something we covered in Datasets 101).“Even though I originally created three-step approach that everybody now does, my view is it's actually wrong and we shouldn't use it… the right way to do this is to fine-tune language models, is to actually throw away the idea of fine-tuning. There's no such thing. There's only continued pre-training. And pre-training is something where from the very start, you try to include all the kinds of data that you care about, all the kinds of problems that you care about, instructions, exercises, code, general purpose document completion, whatever. And then as you train, you gradually curate that, you know, you gradually make that higher and higher quality and more and more specific to the kinds of tasks you want it to do. But you never throw away any data….So yeah, that's now my view, is I think ULMFiT is the wrong approach. And that's why we're seeing a lot of these so-called alignment tax… I think it's actually because people are training them wrong.An example of this phenomena is CodeLlama, a LLaMA2 model finetuned on 500B tokens of code: while the model is much better at code, it's worse on generic tasks that LLaMA2 knew how to solve well before the fine-tuning. In the episode we also dive into all the places where open source model development and research is happening (academia vs Discords - tracked on our Communities list and on our survey), and how Jeremy recommends getting the most out of these diffuse, pseudonymous communities (similar to the Eleuther AI Mafia).Show Notes* Jeremy's Background* FastMail* Optimal Decisions* Kaggle* Enlitic* fast.ai* Rachel Thomas* Practical Deep Learning* fastai for PyTorch* nbdev* fastec2 (the underrated library we describe)* Can LLMs learn from a single example?* the Kaggle LLM Science Exam competition, which “challenges participants to answer difficult science-based questions written by a Large Language Model”.* Sebastian Ruder* Alec Radford* Sylvain Gugger* Stephen Merity* Chris Lattner* Modular.ai / Mojo* Jono Whittaker* Zeiler and Fergus paper* ULM Fit* DAWNBench* Phi-1* Code Llama* AlexNetTimestamps* [00:00:00] Intros and Jeremy's background* [00:05:28] Creating ULM Fit - a breakthrough in NLP using transfer learning* [00:06:32] The rise of GPT and the appeal of few-shot learning over fine-tuning* [00:10:00] Starting Fast.ai to distribute AI capabilities beyond elite academics* [00:14:30] How modern LMs like ChatGPT still follow the ULM Fit 3-step approach* [00:17:23] Meeting with Chris Lattner on Swift for TensorFlow at Google* [00:20:00] Continued pre-training as a fine-tuning alternative* [00:22:16] Fast.ai and looking for impact vs profit maximization* [00:26:39] Using Fast.ai to create an "army" of AI experts to improve their domains* [00:29:32] Fast.ai's 3 focus areas - research, software, and courses* [00:38:42] Fine-tuning memorization and training curve "clunks" before each epoch* [00:46:47] Poor training and fine-tuning practices may be causing alignment failures* [00:48:38] Academia vs Discords* [00:53:41] Jeremy's high hopes for Chris Lattner's Mojo and its potential* [01:05:00] Adding capabilities like SQL generation through quick fine-tuning* [01:10:12] Rethinking Fast.ai courses for the AI-assisted coding era* [01:14:53] Rapid model development has created major technical debt* [01:17:08] Lightning RoundAI Summary (beta)This is the first episode we're trying this. Here's an overview of the main topics before you dive in the transcript. * Jeremy's background and philosophies on AI* Studied philosophy and cognitive science in college* Focused on ethics and thinking about AI even 30 years ago* Believes AI should be accessible to more people, not just elite academics/programmers* Created fast.ai to make deep learning more accessible* Development of transfer learning and ULMFit* Idea of transfer learning critical for making deep learning accessible* ULMFit pioneered transfer learning for NLP* Proposed training general language models on large corpora then fine-tuning - this became standard practice* Faced skepticism that this approach would work from NLP community* Showed state-of-the-art results on text classification soon after trying it* Current open questions around fine-tuning LLMs* Models appear to memorize training data extremely quickly (after 1 epoch)* This may hurt training dynamics and cause catastrophic forgetting* Unclear how best to fine-tune models to incorporate new information/capabilities* Need more research on model training dynamics and ideal data mixing* Exciting new developments* Mojo and new programming languages like Swift could enable faster model innovation* Still lots of room for improvements in computer vision-like innovations in transformers* Small models with fine-tuning may be surprisingly capable for many real-world tasks* Prompting strategies enable models like GPT-3 to achieve new skills like playing chess at superhuman levels* LLMs are like computer vision in 2013 - on the cusp of huge new breakthroughs in capabilities* Access to AI research* Many key convos happen in private Discord channels and forums* Becoming part of these communities can provide great learning opportunities* Being willing to do real work, not just talk about ideas, is key to gaining access* The future of practical AI* Coding becoming more accessible to non-programmers through AI assistance* Pre-requisite programming experience for learning AI may no longer be needed* Huge open questions remain about how to best train, fine-tune, and prompt LLMsTranscriptAlessio: Hey everyone, welcome to the Latent Space Podcast. This is Alessio, partner and CTO at Residence at Decibel Partners, and I'm joined by my co-host Swyx, founder of Smol AI. [00:00:21]Swyx: Hey, and today we have in the remote studio, Jeremy Howard all the way from Australia. Good morning. [00:00:27]Jeremy: The remote studio, also known as my house. Good morning. Nice to see you. [00:00:32]Swyx: Nice to see you too. I'm actually very used to seeing you in your mask as a message to people, but today we're mostly audio. But thank you for doing the very important public service of COVID awareness. It was a pleasure. [00:00:46]Jeremy: It was all very annoying and frustrating and tedious, but somebody had to do it. [00:00:52]Swyx: Somebody had to do it, especially somebody with your profile. I think it really drives home the message. So we tend to introduce people for them and then ask people to fill in the blanks on the personal side. Something I did not know about you was that you graduated with a BA in philosophy from the University of Melbourne. I assumed you had a PhD. [00:01:14]Jeremy: No, I mean, I barely got through my BA because I was working 80 to 100 hour weeks at McKinsey and Company from 19 years old onwards. So I actually didn't attend any lectures in second and third year university. [00:01:35]Swyx: Well, I guess you didn't need it or you're very sort of self-driven and self-motivated. [00:01:39]Jeremy: I took two weeks off before each exam period when I was working at McKinsey. And then, I mean, I can't believe I got away with this in hindsight, I would go to all my professors and say, oh, I was meant to be in your class this semester and I didn't quite turn up. Were there any assignments I was meant to have done, whatever. I can't believe all of them let me basically have it. They basically always would say like, okay, well, if you can have this written by tomorrow, I'll accept it. So yeah, stressful way to get through university, but. [00:02:12]Swyx: Well, it shows that, I guess, you min-maxed the opportunities. That definitely was a precursor. [00:02:18]Jeremy: I mean, funnily, like in as much as I, you know, in philosophy, the things I found interesting and focused on in the little bit of time I did spend on it was ethics and cognitive science. And it's kind of really amazing that it's now come back around and those are actually genuinely useful things to know about, which I never thought would happen. [00:02:38]Swyx: A lot of, yeah, a lot of relevant conversations there. So you were a consultant for a while and then in the magical month of June 1989, you founded both Optimal Decisions and Fastmeal, which I also briefly used. So thank you for that. [00:02:53]Jeremy: Oh, good for you. Yeah. Cause I had read the statistics, which is that like 90% or something of small businesses fail. So I thought if I start two businesses, I have a higher chance. In hindsight, I was thinking of it as some kind of stochastic thing I didn't have control over, but it's a bit odd, but anyway. [00:03:10]Swyx: And then you were president and chief scientist at Kaggle, which obviously is the sort of composition platform of machine learning. And then Enlitic, where you were working on using deep learning to improve medical diagnostics and clinical decisions. Yeah. [00:03:28]Jeremy: I was actually the first company to use deep learning in medicine, so I kind of founded the field. [00:03:33]Swyx: And even now that's still like a pretty early phase. And I actually heard you on your new podcast with Tanish, where you went very, very deep into the stuff, the kind of work that he's doing, such a young prodigy at his age. [00:03:47]Jeremy: Maybe he's too old to be called a prodigy now, ex-prodigy. No, no. [00:03:51]Swyx: I think he still counts. And anyway, just to round out the bio, you have a lot more other credentials, obviously, but most recently you started Fast.ai, which is still, I guess, your primary identity with Rachel Thomas. So welcome. [00:04:05]Jeremy: Yep. [00:04:06]Swyx: Thanks to my wife. Thank you. Yeah. Doing a lot of public service there with getting people involved in AI, and I can't imagine a better way to describe it than fast, fast.ai. You teach people from nothing to stable diffusion in seven weeks or something, and that's amazing. Yeah, yeah. [00:04:22]Jeremy: I mean, it's funny, you know, when we started that, what was that, like 2016 or something, the idea that deep learning was something that you could make more accessible was generally considered stupid. Everybody knew that deep learning was a thing that you got a math or a computer science PhD, you know, there was one of five labs that could give you the appropriate skills and that you would join, yeah, basically from one of those labs, you might be able to write some papers. So yeah, the idea that normal people could use that technology to do good work was considered kind of ridiculous when we started it. And we weren't sure if it was possible either, but we kind of felt like we had to give it a go because the alternative was we were pretty sure that deep learning was on its way to becoming, you know, the most or one of the most, you know, important technologies in human history. And if the only people that could use it were a handful of computer science PhDs, that seemed like A, a big waste and B, kind of dangerous. [00:05:28]Swyx: Yeah. [00:05:29]Alessio: And, you know, well, I just wanted to know one thing on your bio that at Kaggle, you were also the top rank participant in both 2010 and 2011. So sometimes you see a lot of founders running companies that are not really in touch with the problem, but you were clearly building something that you knew a lot about, which is awesome. Talking about deep learning, you created, published a paper on ULM fit, which was kind of the predecessor to multitask learning and a lot of the groundwork that then went to into Transformers. I've read back on the paper and you turned this model, AWD LSTM, which I did the math and it was like 24 to 33 million parameters, depending on what training data set you use today. That's kind of like not even small, it's like super small. What were some of the kind of like contrarian takes that you had at the time and maybe set the stage a little bit for the rest of the audience on what was kind of like the state of the art, so to speak, at the time and what people were working towards? [00:06:32]Jeremy: Yeah, the whole thing was a contrarian take, you know. So okay, so we started Fast.ai, my wife and I, and we thought, yeah, so we're trying to think, okay, how do we make it more accessible? So when we started thinking about it, it was probably 2015 and then 2016, we started doing something about it. Why is it inaccessible? Okay, well, A, no one knows how to do it other than a few number of people. And then when we asked those few number of people, well, how do you actually get good results? They would say like, oh, it's like, you know, a box of tricks that aren't published. So you have to join one of the labs and learn the tricks. So a bunch of unpublished tricks, not much software around, but thankfully there was Theano and rappers and particularly Lasagna, the rapper, but yeah, not much software around, not much in the way of data sets, you know, very hard to get started in terms of the compute. Like how do you get that set up? So yeah, no, everything was kind of inaccessible. And you know, as we started looking into it, we had a key insight, which was like, you know what, most of the compute and data for image recognition, for example, we don't need to do it. You know, there's this thing which nobody knows about, nobody talks about called transfer learning, where you take somebody else's model, where they already figured out like how to detect edges and gradients and corners and text and whatever else, and then you can fine tune it to do the thing you want to do. And we thought that's the key. That's the key to becoming more accessible in terms of compute and data requirements. So when we started Fast.ai, we focused from day one on transfer learning. Lesson one, in fact, was transfer learning, literally lesson one, something not normally even mentioned in, I mean, there wasn't much in the way of courses, you know, the courses out there were PhD programs that had happened to have recorded their lessons and they would rarely mention it at all. We wanted to show how to do four things that seemed really useful. You know, work with vision, work with tables of data, work with kind of recommendation systems and collaborative filtering and work with text, because we felt like those four kind of modalities covered a lot of the stuff that, you know, are useful in real life. And no one was doing anything much useful with text. Everybody was talking about word2vec, you know, like king plus queen minus woman and blah, blah, blah. It was like cool experiments, but nobody's doing anything like useful with it. NLP was all like lemmatization and stop words and topic models and bigrams and SPMs. And it was really academic and not practical. But I mean, to be honest, I've been thinking about this crazy idea for nearly 30 years since I had done cognitive science at university, where we talked a lot about the CELS Chinese room experiment. This idea of like, what if there was somebody that could kind of like, knew all of the symbolic manipulations required to answer questions in Chinese, but they didn't speak Chinese and they were kind of inside a room with no other way to talk to the outside world other than taking in slips of paper with Chinese written on them and then they do all their rules and then they pass back a piece of paper with Chinese back. And this room with a person in is actually fantastically good at answering any question you give them written in Chinese. You know, do they understand Chinese? And is this, you know, something that's intelligently working with Chinese? Ever since that time, I'd say the most thought, to me, the most thoughtful and compelling philosophical response is yes. You know, intuitively it feels like no, because that's just because we can't imagine such a large kind of system. But you know, if it looks like a duck and acts like a duck, it's a duck, you know, or to all intents and purposes. And so I always kind of thought, you know, so this is basically a kind of analysis of the limits of text. And I kind of felt like, yeah, if something could ingest enough text and could use the patterns it saw to then generate text in response to text, it could appear to be intelligent, you know. And whether that means it is intelligent or not is a different discussion and not one I find very interesting. Yeah. And then when I came across neural nets when I was about 20, you know, what I learned about the universal approximation theorem and stuff, and I started thinking like, oh, I wonder if like a neural net could ever get big enough and take in enough data to be a Chinese room experiment. You know, with that background and this kind of like interest in transfer learning, you know, I'd been thinking about this thing for kind of 30 years and I thought like, oh, I wonder if we're there yet, you know, because we have a lot of text. Like I can literally download Wikipedia, which is a lot of text. And I thought, you know, how would something learn to kind of answer questions or, you know, respond to text? And I thought, well, what if we used a language model? So language models are already a thing, you know, they were not a popular or well-known thing, but they were a thing. But language models exist to this idea that you could train a model to fill in the gaps. Or actually in those days it wasn't fill in the gaps, it was finish a string. And in fact, Andrej Karpathy did his fantastic RNN demonstration from this at a similar time where he showed like you can have it ingest Shakespeare and it will generate something that looks a bit like Shakespeare. I thought, okay, so if I do this at a much bigger scale, using all of Wikipedia, what would it need to be able to do to finish a sentence in Wikipedia effectively, to do it quite accurately quite often? I thought, geez, it would actually have to know a lot about the world, you know, it'd have to know that there is a world and that there are objects and that objects relate to each other through time and cause each other to react in ways and that causes proceed effects and that, you know, when there are animals and there are people and that people can be in certain positions during certain timeframes and then you could, you know, all that together, you can then finish a sentence like this was signed into law in 2016 by US President X and it would fill in the gap, you know. So that's why I tried to create what in those days was considered a big language model trained on the entirety on Wikipedia, which is that was, you know, a bit unheard of. And my interest was not in, you know, just having a language model. My interest was in like, what latent capabilities would such a system have that would allow it to finish those kind of sentences? Because I was pretty sure, based on our work with transfer learning and vision, that I could then suck out those latent capabilities by transfer learning, you know, by fine-tuning it on a task data set or whatever. So we generated this three-step system. So step one was train a language model on a big corpus. Step two was fine-tune a language model on a more curated corpus. And step three was further fine-tune that model on a task. And of course, that's what everybody still does today, right? That's what ChatGPT is. And so the first time I tried it within hours, I had a new state-of-the-art academic result on IMDB. And I was like, holy s**t, it does work. And so you asked, to what degree was this kind of like pushing against the established wisdom? You know, every way. Like the reason it took me so long to try it was because I asked all my friends in NLP if this could work. And everybody said, no, it definitely won't work. It wasn't like, oh, maybe. Everybody was like, it definitely won't work. NLP is much more complicated than vision. Language is a much more vastly complicated domain. You know, and you've got problems like the grounding problem. We know from like philosophy and theory of mind that it's actually impossible for it to work. So yeah, so don't waste your time. [00:15:10]Alessio: Jeremy, had people not tried because it was like too complicated to actually get the data and like set up the training? Or like, were people just lazy and kind of like, hey, this is just not going to work? [00:15:20]Jeremy: No, everybody wasn't lazy. So like, so the person I thought at that time who, you know, there were two people I thought at that time, actually, who were the strongest at language models were Stephen Merity and Alec Radford. And at the time I didn't know Alec, but I, after we had both, after I'd released ULM Fit and he had released GPT, I organized a chat for both of us with Kate Metz in the New York Times. And Kate Metz answered, sorry, and Alec answered this question for Kate. And Kate was like, so how did, you know, GPT come about? And he said, well, I was pretty sure that pre-training on a general large corpus wouldn't work. So I hadn't tried it. And then I read ULM Fit and turns out it did work. And so I did it, you know, bigger and it worked even better. And similar with, with Stephen, you know, I asked Stephen Merity, like, why don't we just find, you know, take your AWD-ASTLM and like train it on all of Wikipedia and fine tune it? And he's kind of like, well, I don't think that's going to really lie. Like two years before I did a very popular talk at KDD, the conference where everybody in NLP was in the audience. I recognized half the faces, you know, and I told them all this, I'm sure transfer learning is the key. I'm sure ImageNet, you know, is going to be an NLP thing as well. And, you know, everybody was interested and people asked me questions afterwards and, but not just, yeah, nobody followed up because everybody knew that it didn't work. I mean, even like, so we were scooped a little bit by Dai and Lee, Kwok Lee at Google. They had, they had, I already, I didn't even realize this, which is a bit embarrassing. They had already done a large language model and fine tuned it. But again, they didn't create a general purpose, large language model on a general purpose corpus. They only ever tested a domain specific corpus. And I haven't spoken to Kwok actually about that, but I assume that the reason was the same. It probably just didn't occur to them that the general approach could work. So maybe it was that kind of 30 years of mulling over the, the cell Chinese room experiment that had convinced me that it probably would work. I don't know. Yeah. [00:17:48]Alessio: Interesting. I just dug up Alec announcement tweet from 2018. He said, inspired by Cobe, Elmo, and Yola, I'm fit. We should have a single transformer language model can be fine tuned to a wide variety. It's interesting because, you know, today people think of AI as the leader, kind of kind of like the research lab pushing forward the field. What was that at the time? You know, like kind of like going back five years, people think of it as an overnight success, but obviously it took a while. [00:18:16]Swyx: Yeah. Yeah. [00:18:17]Jeremy: No, I mean, absolutely. And I'll say like, you know, it's interesting that it mentioned Elmo because in some ways that was kind of diametrically opposed to, to ULM fit. You know, there was these kind of like, so there was a lot of, there was a lot of activity at the same time as ULM fits released. So there was, um, so before it, as Brian McCann, I think at Salesforce had come out with this neat model that did a kind of multitask learning, but again, they didn't create a general fine tune language model first. There was Elmo, um, which I think was a lip, you know, actually quite a few months after the first ULM fit example, I think. Um, but yeah, there was a bit of this stuff going on. And the problem was everybody was doing, and particularly after GPT came out, then everybody wanted to focus on zero shot and few shot learning. You know, everybody hated fine tuning. Everybody hated transfer learning. And like, I literally did tours trying to get people to start doing transfer learning and people, you know, nobody was interested, particularly after GPT showed such good results with zero shot and few shot learning. And so I actually feel like we kind of went backwards for years and, and not to be honest, I mean, I'm a bit sad about this now, but I kind of got so disappointed and dissuaded by like, it felt like these bigger lab, much bigger labs, you know, like fast AI had only ever been just me and Rachel were getting all of this attention for an approach I thought was the wrong way to do it. You know, I was convinced was the wrong way to do it. And so, yeah, for years people were really focused on getting better at zero shot and few shots and it wasn't until, you know, this key idea of like, well, let's take the ULM fit approach, but for step two, rather than fine tuning on a kind of a domain corpus, let's fine tune on an instruction corpus. And then in step three, rather than fine tuning on a reasonably specific task classification, let's fine tune on a, on a RLHF task classification. And so that was really, that was really key, you know, so I was kind of like out of the NLP field for a few years there because yeah, it just felt like, I don't know, pushing uphill against this vast tide, which I was convinced was not the right direction, but who's going to listen to me, you know, cause I, as you said, I don't have a PhD, not at a university, or at least I wasn't then. I don't have a big set of computers to fine tune huge transformer models. So yeah, it was definitely difficult. It's always been hard. You know, it's always been hard. Like I've always been somebody who does not want to build stuff on lots of big computers because most people don't have lots of big computers and I hate creating stuff that most people can't use, you know, and also stuff that's created on lots of big computers has always been like much more media friendly. So like, it might seem like a recent thing, but actually throughout my 30 years in data science, the attention's always been on, you know, the big iron results. So when I first started, everybody was talking about data warehouses and it was all about Teradata and it'd be like, oh, this big bank has this huge room full of computers and they have like terabytes of data available, you know, at the press of a button. And yeah, that's always what people want to talk about, what people want to write about. And then of course, students coming out of their PhDs and stuff, that's where they want to go work because that's where they read about. And to me, it's a huge distraction, you know, because like I say, most people don't have unlimited compute and I want to help most people, not the small subset of the most well-off people. [00:22:16]Alessio: That's awesome. And it's great to hear, you do such a great job educating that a lot of times you're not telling your own story, you know? So I love this conversation. And the other thing before we jump into Fast.AI, actually, a lot of people that I know, they run across a new architecture and whatnot, they're like, I got to start a company and raise a bunch of money and do all of this stuff. And say, you were like, I want everybody to have access to this. Why was that the case for you? Was it because you already had a successful venture in like FastMail and you were more interested in that? What was the reasoning? [00:22:52]Jeremy: It's a really good question. So I guess the answer is yes, that's the reason why. So when I was a teenager, I thought it would be really cool to like have my own company. You know, I didn't know the word startup. I didn't know the word entrepreneur. I didn't know the word VC. And I didn't really know what any of those things were really until after we started Kaggle, to be honest. Even the way it started to what we now call startups. I just thought they were just small businesses. You know, they were just companies. So yeah, so those two companies were FastMail and Optimal Decisions. FastMail was the first kind of synchronized email provider for non-businesses. So something you can get your same email at home, on your laptop, at work, on your phone, whatever. And then Optimal Decisions invented a new approach to insurance pricing. Something called profit-optimized insurance pricing. So I saw both of those companies, you know, after 10 years. And at that point, I had achieved the thing that as a teenager I had wanted to do. You know, it took a lot longer than it should have because I spent way longer in management consulting than I should have because I got caught up in that stupid rat race. But, you know, eventually I got there and I remember my mom saying to me, you must be so proud. You know, because she remembered my dream. She's like, you've done it. And I kind of reflected and I was like, I'm not proud at all. You know, like people quite liked FastMail. You know, it's quite nice to have synchronized email. It probably would have happened anyway. Yeah, I'm certainly not proud that I've helped some insurance companies suck more money out of their customers. Yeah, no, I'm not proud. You know, it's actually, I haven't really helped the world very much. You know, maybe in the insurance case I've made it a little bit worse. I don't know. So, yeah, I was determined to not waste more years of my life doing things, working hard to do things which I could not be reasonably sure would have a lot of value. So, you know, I took some time off. I wasn't sure if I'd ever work again, actually. I didn't particularly want to, because it felt like, yeah, it felt like such a disappointment. And, but, you know, and I didn't need to. I had enough money. Like, I wasn't super rich, but I had enough money. I didn't need to work. And I certainly recognized that amongst the other people I knew who had enough money that they didn't need to work, they all worked ridiculously hard, you know, and constantly put themselves in extremely stressful situations. And I thought, I don't want to be one of those idiots who's tied to, you know, buying a bigger plane than the next guy or whatever. You know, Kaggle came along and I mainly kind of did that just because it was fun and interesting to hang out with interesting people. But, you know, with Fast.ai in particular, you know, Rachel and I had a very explicit, you know, long series of conversations over a long period of time about like, well, how can we be the most helpful to society as a whole, and particularly to those people who maybe need more help, you know? And so we definitely saw the world going in a potentially pretty dystopian direction if the world's most powerful technology was controlled by a small group of elites. So we thought, yeah, we should focus on trying to help that not happen. You know, sadly, it looks like it still is likely to happen. But I mean, I feel like we've helped make it a little bit less likely. So we've done our bit. [00:26:39]Swyx: You've shown that it's possible. And I think your constant advocacy, your courses, your research that you publish, you know, just the other day you published a finding on, you know, learning that I think is still something that people are still talking about quite a lot. I think that that is the origin story of a lot of people who are going to be, you know, little Jeremy Howards, furthering your mission with, you know, you don't have to do everything by yourself is what I'm saying. No, definitely. Definitely. [00:27:10]Jeremy: You know, that was a big takeaway from like, analytic was analytic. It definitely felt like we had to do everything ourselves. And I kind of, I wanted to solve medicine. I'll say, yeah, okay, solving medicine is actually quite difficult. And I can't do it on my own. And there's a lot of other things I'd like to solve, and I can't do those either. So that was definitely the other piece was like, yeah, you know, can we create an army of passionate domain experts who can change their little part of the world? And that's definitely happened. Like I find nowadays, at least half the time, probably quite a bit more that I get in contact with somebody who's done really interesting work in some domain. Most of the time I'd say, they say, yeah, I got my start with fast.ai. So it's definitely, I can see that. And I also know from talking to folks at places like Amazon and Adobe and stuff, which, you know, there's lots of alumni there. And they say, oh my God, I got here. And like half of the people are fast.ai alumni. So it's fantastic. [00:28:13]Swyx: Yeah. [00:28:14]Jeremy: Actually, Andre Kapathy grabbed me when I saw him at NeurIPS a few years ago. And he was like, I have to tell you, thanks for the fast.ai courses. When people come to Tesla and they need to know more about deep learning, we always send them to your course. And the OpenAI Scholars Program was doing the same thing. So it's kind of like, yeah, it's had a surprising impact, you know, that's just one of like three things we do is the course, you know. [00:28:40]Swyx: Yes. [00:28:40]Jeremy: And it's only ever been at most two people, either me and Rachel or me and Sylvia nowadays, it's just me. So yeah, I think it shows you don't necessarily need a huge amount of money and a huge team of people to make an impact. [00:28:56]Swyx: Yeah. So just to reintroduce fast.ai for people who may not have dived into it much, there is the courses that you do. There is the library that is very well loved. And I kind of think of it as a nicer layer on top of PyTorch that people should start with by default and use it as the basis for a lot of your courses. And then you have like NBDev, which I don't know, is that the third one? [00:29:27]Jeremy: Oh, so the three areas were research, software, and courses. [00:29:32]Swyx: Oh, sorry. [00:29:32]Jeremy: So then in software, you know, fast.ai is the main thing, but NBDev is not far behind. But then there's also things like FastCore, GHAPI, I mean, dozens of open source projects that I've created and some of them have been pretty popular and some of them are still a little bit hidden, actually. Some of them I should try to do a better job of telling people about. [00:30:01]Swyx: What are you thinking about? Yeah, what's on the course of my way? Oh, I don't know, just like little things. [00:30:04]Jeremy: Like, for example, for working with EC2 and AWS, I created a FastEC2 library, which I think is like way more convenient and nice to use than anything else out there. And it's literally got a whole autocomplete, dynamic autocomplete that works both on the command line and in notebooks that'll like auto-complete your instance names and everything like that. You know, just little things like that. I try to make like, when I work with some domain, I try to make it like, I want to make it as enjoyable as possible for me to do that. So I always try to kind of like, like with GHAPI, for example, I think that GitHub API is incredibly powerful, but I didn't find it good to work with because I didn't particularly like the libraries that are out there. So like GHAPI, like FastEC2, it like autocompletes both at the command line or in a notebook or whatever, like literally the entire GitHub API. The entire thing is like, I think it's like less than 100K of code because it actually, as far as I know, the only one that grabs it directly from the official open API spec that GitHub produces. And like if you're in GitHub and you just type an API, you know, autocomplete API method and hit enter, it prints out the docs with brief docs and then gives you a link to the actual documentation page. You know, GitHub Actions, I can write now in Python, which is just so much easier than writing them in TypeScript and stuff. So, you know, just little things like that. [00:31:40]Swyx: I think that's an approach which more developers took to publish some of their work along the way. You described the third arm of FastAI as research. It's not something I see often. Obviously, you do do some research. And how do you run your research? What are your research interests? [00:31:59]Jeremy: Yeah, so research is what I spend the vast majority of my time on. And the artifacts that come out of that are largely software and courses. You know, so to me, the main artifact shouldn't be papers because papers are things read by a small exclusive group of people. You know, to me, the main artifacts should be like something teaching people, here's how to use this insight and here's software you can use that builds it in. So I think I've only ever done three first-person papers in my life, you know, and none of those are ones I wanted to do. You know, they were all ones that, like, so one was ULM Fit, where Sebastian Ruder reached out to me after seeing the course and said, like, you have to publish this as a paper, you know. And he said, I'll write it. He said, I want to write it because if I do, I can put it on my PhD and that would be great. And it's like, okay, well, I want to help you with your PhD. And that sounds great. So like, you know, one was the masks paper, which just had to exist and nobody else was writing it. And then the third was the Fast.ai library paper, which again, somebody reached out and said, please, please write this. We will waive the fee for the journal and everything and actually help you get it through publishing and stuff. So yeah, so I don't, other than that, I've never written a first author paper. So the research is like, well, so for example, you know, Dawn Bench was a competition, which Stanford ran a few years ago. It was kind of the first big competition of like, who can train neural nets the fastest rather than the most accurate. And specifically it was who can train ImageNet the fastest. And again, this was like one of these things where it was created by necessity. So Google had just released their TPUs. And so I heard from my friends at Google that they had put together this big team to smash Dawn Bench so that they could prove to people that they had to use Google Cloud and use their TPUs and show how good their TPUs were. And we kind of thought, oh s**t, this would be a disaster if they do that, because then everybody's going to be like, oh, deep learning is not accessible. [00:34:20]Swyx: You know, to actually be good at it, [00:34:21]Jeremy: you have to be Google and you have to use special silicon. And so, you know, we only found out about this 10 days before the competition finished. But, you know, we basically got together an emergency bunch of our students and Rachel and I and sat for the next 10 days and just tried to crunch through and try to use all of our best ideas that had come from our research. And so particularly progressive resizing, just basically train mainly on small things, train on non-square things, you know, stuff like that. And so, yeah, we ended up winning, thank God. And so, you know, we turned it around from being like, like, oh s**t, you know, this is going to show that you have to be Google and have TPUs to being like, oh my God, even the little guy can do deep learning. So that's an example of the kind of like research artifacts we do. And yeah, so all of my research is always, how do we do more with less, you know? So how do we get better results with less data, with less compute, with less complexity, with less education, you know, stuff like that. So ULM fits obviously a good example of that. [00:35:37]Swyx: And most recently you published, can LLMs learn from a single example? Maybe could you tell the story a little bit behind that? And maybe that goes a little bit too far into the learning of very low resource, the literature. [00:35:52]Jeremy: Yeah, yeah. So me and my friend, Jono Whittaker, basically had been playing around with this fun Kaggle competition, which is actually still running as we speak, which is, can you create a model which can answer multiple choice questions about anything that's in Wikipedia? And the thing that makes it interesting is that your model has to run on Kaggle within nine hours. And Kaggle's very, very limited. So you've only got 14 gig RAM, only two CPUs, and a small, very old GPU. So this is cool, you know, if you can do well at this, then this is a good example of like, oh, you can do more with less. So yeah, Jono and I were playing around with fine tuning, of course, transfer learning, pre-trained language models. And we saw this, like, so we always, you know, plot our losses as we go. So here's another thing we created. Actually, Sylvain Guuger, when he worked with us, created called fast progress, which is kind of like TQEDM, but we think a lot better. So we look at our fast progress curves, and they kind of go down, down, down, down, down, down, down, a little bit, little bit, little bit. And then suddenly go clunk, and they drop. And then down, down, down, down, down a little bit, and then suddenly clunk, they drop. We're like, what the hell? These clunks are occurring at the end of each epoch. So normally in deep learning, this would be, this is, you know, I've seen this before. It's always been a bug. It's always turned out that like, oh, we accidentally forgot to turn on eval mode during the validation set. So I was actually learning then, or, oh, we accidentally were calculating moving average statistics throughout the epoch. So, you know, so it's recently moving average or whatever. And so we were using Hugging Face Trainer. So, you know, I did not give my friends at Hugging Face the benefit of the doubt. I thought, oh, they've fucked up Hugging Face Trainer, you know, idiots. Well, you'll use the Fast AI Trainer instead. So we switched over to Learner. We still saw the clunks and, you know, that's, yeah, it shouldn't really happen because semantically speaking in the epoch, isn't like, it's not a thing, you know, like nothing happens. Well, nothing's meant to happen when you go from ending one epoch to starting the next one. So there shouldn't be a clunk, you know. So I kind of asked around on the open source discords. That's like, what's going on here? And everybody was just like, oh, that's just what, that's just what these training curves look like. Those all look like that. Don't worry about it. And I was like, oh, are you all using Trainer? Yes. Oh, well, there must be some bug with Trainer. And I was like, well, we also saw it in Learner [00:38:42]Swyx: and somebody else is like, [00:38:42]Jeremy: no, we've got our own Trainer. We get it as well. They're just like, don't worry about it. It's just something we see. It's just normal. [00:38:48]Swyx: I can't do that. [00:38:49]Jeremy: I can't just be like, here's something that's like in the previous 30 years of neural networks, nobody ever saw it. And now suddenly we see it. [00:38:57]Swyx: So don't worry about it. [00:38:59]Jeremy: I just, I have to know why. [00:39:01]Swyx: Can I clarify? This is, was everyone that you're talking to, were they all seeing it for the same dataset or in different datasets? [00:39:08]Jeremy: Different datasets, different Trainers. They're just like, no, this is just, this is just what it looks like when you fine tune language models. Don't worry about it. You know, I hadn't seen it before, but I'd been kind of like, as I say, I, you know, I kept working on them for a couple of years after ULM fit. And then I kind of moved on to other things, partly out of frustration. So I hadn't been fine tuning, you know, I mean, Lama's only been out for a few months, right? But I wasn't one of those people who jumped straight into it, you know? So I was relatively new to the kind of Lama fine tuning world, where else these guys had been, you know, doing it since day one. [00:39:49]Swyx: It was only a few months ago, [00:39:51]Jeremy: but it's still quite a bit of time. So, so yeah, they're just like, no, this is all what we see. [00:39:56]Swyx: Don't worry about it. [00:39:56]Jeremy: So yeah, I, I've got a very kind of like, I don't know, I've just got this brain where I have to know why things are. And so I kind of, I ask people like, well, why, why do you think it's happening? And they'd be like, oh, it would pretty obviously, cause it's like memorize the data set. It's just like, that can't be right. It's only seen it once. Like, look at this, the loss has dropped by 0.3, 0.3, which is like, basically it knows the answer. And like, no, no, it's just, it is, it's just memorize the data set. So yeah. So look, Jono and I did not discover this and Jono and I did not come up with a hypothesis. You know, I guess we were just the ones, I guess, who had been around for long enough to recognize that like, this, this isn't how it's meant to work. And so we, we, you know, and so we went back and like, okay, let's just run some experiments, you know, cause nobody seems to have actually published anything about this. [00:40:51]Well, not quite true.Some people had published things, but nobody ever actually stepped back and said like, what the hell, you know, how can this be possible? Is it possible? Is this what's happening? And so, yeah, we created a bunch of experiments where we basically predicted ahead of time. It's like, okay, if this hypothesis is correct, that it's memorized in the training set, then we ought to see blah, under conditions, blah, but not under these conditions. And so we ran a bunch of experiments and all of them supported the hypothesis that it was memorizing the data set in a single thing at once. And it's a pretty big data set, you know, which in hindsight, it's not totally surprising because the theory, remember, of the ULMFiT theory was like, well, it's kind of creating all these latent capabilities to make it easier for it to predict the next token. So if it's got all this kind of latent capability, it ought to also be really good at compressing new tokens because it can immediately recognize it as like, oh, that's just a version of this. So it's not so crazy, you know, but it is, it requires us to rethink everything because like, and nobody knows like, okay, so how do we fine tune these things? Because like, it doesn't even matter. Like maybe it's fine. Like maybe it's fine that it's memorized the data set after one go and you do a second go and okay, the validation loss is terrible because it's now really overconfident. [00:42:20]Swyx: That's fine. [00:42:22]Jeremy: Don't, you know, don't, I keep telling people, don't track validation loss, track validation accuracy because at least that will still be useful. Just another thing that's got lost since ULMFiT, nobody tracks accuracy of language models anymore. But you know, it'll still keep learning and it does, it does keep improving. But is it worse? You know, like, is it like, now that it's kind of memorized it, it's probably getting a less strong signal, you know, I don't know. So I still don't know how to fine tune language models properly and I haven't found anybody who feels like they do, like nobody really knows whether this memorization thing is, it's probably a feature in some ways. It's probably some things that you can do usefully with it. It's probably, yeah, I have a feeling it's messing up training dynamics as well. [00:43:13]Swyx: And does it come at the cost of catastrophic forgetting as well, right? Like, which is the other side of the coin. [00:43:18]Jeremy: It does to some extent, like we know it does, like look at Code Llama, for example. So Code Llama was a, I think it was like a 500 billion token fine tuning of Llama 2 using code. And also pros about code that Meta did. And honestly, they kind of blew it because Code Llama is good at coding, but it's bad at everything else, you know, and it used to be good. Yeah, I was pretty sure it was like, before they released it, me and lots of people in the open source discords were like, oh my God, you know, we know this is coming, Jan Lukinsk saying it's coming. I hope they kept at least like 50% non-code data because otherwise it's going to forget everything else. And they didn't, only like 0.3% of their epochs were non-code data. So it did, it forgot everything else. So now it's good at code and it's bad at everything else. So we definitely have catastrophic forgetting. It's fixable, just somebody has to do, you know, somebody has to spend their time training a model on a good mix of data. Like, so, okay, so here's the thing. Even though I originally created three-step approach that everybody now does, my view is it's actually wrong and we shouldn't use it. [00:44:36]Jeremy: And that's because people are using it in a way different to why I created it. You know, I created it thinking the task-specific models would be more specific. You know, it's like, oh, this is like a sentiment classifier as an example of a task, you know, but the tasks now are like a, you know, RLHF, which is basically like answer questions that make people feel happy about your answer. So that's a much more general task and it's a really cool approach. And so we see, for example, RLHF also breaks models like, you know, like GPT-4, RLHDEFT, we know from kind of the work that Microsoft did, you know, the pre, the earlier, less aligned version was better. And these are all kind of examples of catastrophic forgetting. And so to me, the right way to do this is to fine-tune language models, is to actually throw away the idea of fine-tuning. There's no such thing. There's only continued pre-training. And pre-training is something where from the very start, you try to include all the kinds of data that you care about, all the kinds of problems that you care about, instructions, exercises, code, general purpose document completion, whatever. And then as you train, you gradually curate that, you know, you gradually make that higher and higher quality and more and more specific to the kinds of tasks you want it to do. But you never throw away any data. You always keep all of the data types there in reasonably high quantities. You know, maybe the quality filter, you stop training on low quality data, because that's probably fine to forget how to write badly, maybe. So yeah, that's now my view, is I think ULM fit is the wrong approach. And that's why we're seeing a lot of these, you know, so-called alignment tacks and this view of like, oh, a model can't both code and do other things. And, you know, I think it's actually because people are training them wrong. [00:46:47]Swyx: Yeah, well, I think you have a clear [00:46:51]Alessio: anti-laziness approach. I think other people are not as good hearted, you know, they're like, [00:46:57]Swyx: hey, they told me this thing works. [00:46:59]Alessio: And if I release a model this way, people will appreciate it, I'll get promoted and I'll kind of make more money. [00:47:06]Jeremy: Yeah, and it's not just money. It's like, this is how citations work most badly, you know, so if you want to get cited, you need to write a paper that people in your field recognize as an advancement on things that we know are good. And so we've seen this happen again and again. So like I say, like zero shot and few shot learning, everybody was writing about that. Or, you know, with image generation, everybody just was writing about GANs, you know, and I was trying to say like, no, GANs are not the right approach. You know, and I showed again through research that we demonstrated in our videos that you can do better than GANs, much faster and with much less data. And nobody cared because again, like if you want to get published, you write a GAN paper that slightly improves this part of GANs and this tiny field, you'll get published, you know. So it's, yeah, it's not set up for real innovation. It's, you know, again, it's really helpful for me, you know, I have my own research lab with nobody telling me what to do and I don't even publish. So it doesn't matter if I get citations. And so I just write what I think actually matters. I wish there was, and, you know, and actually places like OpenAI, you know, the researchers there can do that as well. It's a shame, you know, I wish there was more academic, open venues in which people can focus on like genuine innovation. [00:48:38]Swyx: Twitter, which is unironically has become a little bit of that forum. I wanted to follow up on one thing that you mentioned, which is that you checked around the open source discords. I don't know if it's too, I don't know if it's a pusher to ask like what discords are lively or useful right now. I think that something I definitely felt like I missed out on was the early days of Luther AI, which is a very hard bit. And, you know, like what is the new Luther? And you actually shouted out the alignment lab AI discord in your blog post. And that was the first time I even knew, like I saw them on Twitter, never knew they had a discord, never knew that there was actually substantive discussions going on in there and that you were an active member of it. Okay, yeah. [00:49:23]Jeremy: And then even then, if you do know about that and you go there, it'll look like it's totally dead. And that's because unfortunately, nearly all the discords, nearly all of the conversation happens in private channels. You know, and that's, I guess. [00:49:35]Swyx: How does someone get into that world? Because it's obviously very, very instructive, right? [00:49:42]Jeremy: You could just come to the first AI discord, which I'll be honest with you, it's less bustling than some of the others, but it's not terrible. And so like, at least, to be fair, one of Emma's bustling channels is private. [00:49:57]Swyx: I guess. [00:49:59]Jeremy: So I'm just thinking. [00:50:01]Swyx: It's just the nature of quality discussion, right? Yeah, I guess when I think about it, [00:50:05]Jeremy: I didn't have any private discussions on our discord for years, but there was a lot of people who came in with like, oh, I just had this amazing idea for AGI. If you just thought about like, if you imagine that AI is a brain, then we, you know, this just, I don't want to talk about it. You know, I don't want to like, you don't want to be dismissive or whatever. And it's like, oh, well, that's an interesting comment, but maybe you should like, try training some models first to see if that aligns with your intuition. Like, oh, but how could I possibly learn? It's like, well, we have a course, just actually spend time learning. Like, you know, anyway. And there's like, okay, I know the people who always have good answers there. And so I created a private channel and put them all in it. And I got to admit, that's where I post more often because there's much less, you know, flight of fancy views about how we could solve AGI, blah, blah, blah. So there is a bit of that. But having said that, like, I think the bar is pretty low. Like if you join a Discord and you can hit the like participants or community or whatever button, you can see who's in it. And then you'll see at the top, who the admins or moderators or people in the dev role are. And just DM one of them and say like, oh, here's my GitHub. Well, here's some blog posts I wrote. You know, I'm interested in talking about this, you know, can I join the private channels? And I've never heard of anybody saying no. I will say, you know, Alutha's all pretty open. So you can do the Alutha Discord still. You know, one problem with the Alutha Discord is it's been going on for so long that it's like, it's very inside baseball. It's quite hard to get started. Yeah. Carpa AI looks, I think it's all open. That's just less stability. That's more accessible. [00:52:03]Swyx: Yeah. [00:52:04]Jeremy: There's also just recently, now it's research that does like the Hermes models and data set just opened. They've got some private channels, but it's pretty open, I think. You mentioned Alignment Lab, that one it's all the interesting stuff is on private channels. So just ask. If you know me, ask me, cause I've got admin on that one. There's also, yeah, OS Skunkworks, OS Skunkworks AI is a good Discord, which I think it's open. So yeah, they're all pretty good. [00:52:40]Swyx: I don't want you to leak any, you know, Discords that don't want any publicity, but this is all helpful. [00:52:46]Jeremy: We all want people, like we all want people. [00:52:49]Swyx: We just want people who like, [00:52:51]Jeremy: want to build stuff, rather than people who, and like, it's fine to not know anything as well, but if you don't know anything, but you want to tell everybody else what to do and how to do it, that's annoying. If you don't know anything and want to be told like, here's a really small kind of task that as somebody who doesn't know anything is going to take you a really long time to do, but it would still be helpful. Then, and then you go and do it. That would be great. The truth is, yeah, [00:53:19]Swyx: like, I don't know, [00:53:20]Jeremy: maybe 5% of people who come in with great enthusiasm and saying that they want to learn and they'll do anything. [00:53:25]Swyx: And then somebody says like, [00:53:25]Jeremy: okay, here's some work you can do. Almost nobody does that work. So if you're somebody who actually does the work and follows up, you will massively stand out. That's an extreme rarity. And everybody will then want to help you do more work. [00:53:41]Swyx: So yeah. [00:53:41]Jeremy: So just, yeah, just do work and people will want to support you. [00:53:47]Alessio: Our Discord used to be referral only for a long time. We didn't have a public invite and then we opened it and they're kind of like channel gating. Yeah. A lot of people just want to do, I remember it used to be like, you know, a forum moderator. [00:54:00]Swyx: It's like people just want to do [00:54:01]Alessio: like drive-by posting, [00:54:03]Swyx: you know, and like, [00:54:03]Alessio: they don't want to help the community. They just want to get their question answered. [00:54:07]Jeremy: I mean, the funny thing is our forum community does not have any of that garbage. You know, there's something specific about the low latency thing where people like expect an instant answer. And yeah, we're all somehow in a forum thread where they know it's like there forever. People are a bit more thoughtful, but then the forums are less active than they used to be because Discord has got more popular, you know? So it's all a bit of a compromise, you know, running a healthy community is, yeah, it's always a bit of a challenge. All right, we got so many more things [00:54:47]Alessio: we want to dive in, but I don't want to keep you here for hours. [00:54:50]Swyx: This is not the Lex Friedman podcast [00:54:52]Alessio: we always like to say. One topic I would love to maybe chat a bit about is Mojo, modular, you know, CrystalLiner, not many of you on the podcast. So we want to spend a little time there. You recently did a hacker's guide to language models and you ran through everything from quantized model to like smaller models, larger models, and all of that. But obviously modular is taking its own approach. Yeah, what got you excited? I know you and Chris have been talking about this for like years and a lot of the ideas you had, so. [00:55:23]Jeremy: Yeah, yeah, yeah, yeah, no, absolutely. So I met Chris, I think it was at the first TensorFlow Dev Summit. And I don't think he had even like, I'm not sure if he'd even officially started his employment with Google at that point. So I don't know, you know, certainly nothing had been mentioned. So I, you know, I admired him from afar with LLVM and Swift and whatever. And so I saw him walk into the courtyard at Google. It's just like, oh s**t, man, that's Chris Latner. I wonder if he would lower his standards enough to talk to me. Well, worth a try. So I caught up my courage because like nobody was talking to him. He looked a bit lost and I wandered over and it's like, oh, you're Chris Latner, right? It's like, what are you doing here? What are you doing here? And I was like, yeah, yeah, yeah. It's like, oh, I'm Jeremy Howard. It's like, oh, do you do some of this AI stuff? And I was like, yeah, yeah, I like this AI stuff. Are you doing AI stuff? It's like, well, I'm thinking about starting to do some AI stuff. Yeah, I think it's going to be cool. And it's like, wow. So like, I spent the next half hour just basically brain dumping all the ways in which AI was stupid to him. And he listened patiently. And I thought he probably wasn't even remember or care or whatever. But yeah, then I kind of like, I guess I re-caught up with him a few months later. And it's like, I've been thinking about everything you said in that conversation. And he like narrated back his response to every part of it, projects he was planning to do. And it's just like, oh, this dude follows up. Holy s**t. And I was like, wow, okay. And he was like, yeah, so we're going to create this new thing called Swift for TensorFlow. And it's going to be like, it's going to be a compiler with auto differentiation built in. And blah, blah, blah. And I was like, why would that help? [00:57:10]Swyx: You know, why would you? [00:57:10]Jeremy: And he was like, okay, with a compiler during the forward pass, you don't have to worry about saving context, you know, because a lot will be optimized in the backward. But I was like, oh my God. Because I didn't really know much about compilers. You know, I spent enough to kind of like, understand the ideas, but it hadn't occurred to me that a compiler basically solves a lot of the problems we have as end users. I was like, wow, that's amazing. Okay, you do know, right, that nobody's going to use this unless it's like usable. It's like, yeah, I know, right. So I was thinking you should create like a fast AI for this. So, okay, but I don't even know Swift. And he was like, well, why don't you start learning it? And if you have any questions, ask me. It's just like, holy s**t. Like, not only has Chris Latner lowered his standards enough to talk to me, but he's offering me personal tutoring on the programming language that he made. So I was just like, I'm not g
Welcome to The Dr. Brian's Health Show, a weekly podcast where Dr. Brian Boxer Wachler uses his decades of experience in medicine and ability as an expert researcher to provide a light-hearted approach and share health trends popular on TikTok. In this episode, Dr. Brian welcomes the ‘Twin Doctors,' Dr. Jermaine and Dr. Jeremy Hogstrom to the show for a special ‘Mythbusters Edition.' Are car air fresheners toxic? Can you get a smaller nose from nose manipulation exercises? Find out in today's episode! If you're enjoying the show, we'd love it if you leave the show a Rating & Review at RateThisPodcast.com/NoCap Key Takeaways 00:03 – Dr. Brian introduces today's guests, Dr. Jeremy Hogstrom and Dr. Jermaine Hogstrom, who join the show to share their journey to medicine and the differences between traditional and osteopathic manipulative medicine 13:00 – Advice Dr. Jeremy & Dr. Jermaine would give to those looking to pursue a career in the medical field 16:57 – What Dr. Jeremy & Dr. Jermaine are up to now 22:11 – Are car air fresheners toxic? 28:20 – Can you get a smaller nose from nose manipulation exercises? 30:28 – Dr. Brian takes Dr. Jeremy & Dr. Jermaine through a speed round of Cap/No Cap videos 40:25 – Dr. Brian thanks Dr. Jeremy & Dr. Jermaine for joining the show to share their expertise Tweetable Quotes “I always try to make it a point to really get to know my patients because if they don't trust you then how are they going to comply with anything that you suggest?” (06:52) (Dr. Jeremy) “It [osteopathic manipulative medicine] consists of a lot soft tissue work, a lot of musculoskeletal work, a lot of lymphatic drainage techniques that are still used widely today in the field of medical massage therapy and chiropractic work too.” (09:19) (Dr. Jeremy) “We try to get out into the community. We try to help to really inspire people and show people what's possible because it's a hard path, but it's a doable path.” (18:21) (Dr. Jermaine) “There's hair transplants. I've seen those work pretty effectively. There's also other medications out there like minoxidil (Rogaine).” (37:33) (Dr. Jeremy) Resources Mentioned NCHS Links Mentioned Dr. Jeremy & Dr. Jermaine's Website Dr. Jeremy & Dr. Jermaine's Email Dr. Jeremy & Dr. Jermaine's YouTube Channel Dr. Jeremy & Dr. Jermaine's Instagram Dr. Jeremy & Dr. Jermaine's Twitter Dr. Jeremy & Dr. Jermaine's Facebook Dr. Jeremy & Dr. Jermaine's Merch Dr. Jeremy & Dr. Jermaine's Cameo Dr. Jeremy & Dr. Jermaine's TikTok DM Dr. Brian your questions and he will respond back with answers Dr. Brian's Website Dr. Brian's TikTok Dr. Brian's Instagram Please remember, Dr. Brian is a doctor, but he is not your doctor. He is here to provide general information, not medical advice, so you should always check with your doctor before relying on any information. Podcast Production & Marketing provided by FullCast Powered by FullCast
Jeremy Snyder, Founder of FireTail, joins Corey on Screaming in the Cloud to discuss his career journey and what led him to start FireTail. Jeremy reveals what's changed in cloud since he was an AE and AWS, and walks through how the need for customization in cloud security has led to a boom in the number of security companies out there. Corey and Jeremy also discuss the costs of cloud security, and Jeremy points out some of his observations in the world of cloud security pricing and packaging. About JeremyJeremy is the founder and CEO of FireTail.io, an end-to-end API security startup. Prior to FireTail, Jeremy worked in M&A at Rapid7, a global cyber leader, where he worked on the acquisitions of 3 companies during the pandemic. Jeremy previously led sales at DivvyCloud, one of the earliest cloud security posture management companies, and also led AWS sales in southeast Asia. Jeremy started his career with 13 years in cyber and IT operations. Jeremy has an MBA from Mason, a BA in computational linguistics from UNC, and has completed additional studies in Finland at Aalto University. Jeremy speaks 5 languages and has lived in 5 countries. Once, Jeremy went 5 days without seeing another human, but saw plenty of reindeer.Links Referenced: Firetail: https://firetail.io Email: jeremy@firetail.io TranscriptAnnouncer: Hello, and welcome to Screaming in the Cloud with your host, Chief Cloud Economist at The Duckbill Group, Corey Quinn. This weekly show features conversations with people doing interesting work in the world of cloud, thoughtful commentary on the state of the technical world, and ridiculous titles for which Corey refuses to apologize. This is Screaming in the Cloud.Corey: Welcome to Screaming in the Cloud. I'm Corey Quinn. My guest today is Jeremy Snyder, who's the founder at Firetail. Jeremy, thank you for joining me today. I appreciate you taking the time from your day to suffer my slings and arrows.Jeremy: My pleasure, Corey. I'm really happy to be here.Corey: So, we'll get to a point where we talk about what you're up to these days, but first, I want to dive into the jobs of yesteryear because over a decade ago, you did a stint at AWS doing sales. And not to besmirch your hard work, but it feels like at the time, that must have been a very easy job. Because back then it really felt across the board like the sales motion was basically responding to, “Well, why should we do business with you?” And the response is, “Oh, you misunderstand. You have 87 different accounts scattered throughout your organization. I'm just here to give you visibility, governance, and possibly some discounting over that.” It feels like times have changed in a lot of ways since then. Is that accurate?Jeremy: Well, yeah, but I will correct a couple of things in there. In my days—Corey: Oh, please.Jeremy: —almost nobody had more than one account. I was in the one account, no VPCs, you know, you only separate your workloads by tagging days of AWS. So, our job was a lot, actually, harder at the time because people couldn't wrap their heads around the lack of subnetting, the lack of workload segregation. All of that was really, like, brand new to people, and so you were trying to tell them like, “Hey, you're going to be launching something on an EC2 instance that's in the same subnet as everybody else's EC2 instance.” And people were really worried about lateral traffic and sniffing and what could their neighbors or other customers on AWS see. And by the way, I mean, this was the customers who even believed it was real. You know, a lot of the conversations we went into with people was, “Oh, so Amazon bought too many servers and you're trying to sell us excess capacity.”Corey: That legend refuses to die.Jeremy: And, you know, it is a legend. That is not at all the genesis of AWS. And you know, the genesis is pretty well publicized at this point; you can go just google, “how did AWS started?” You can find accurate stuff around that.Corey: I did it a few years ago with multiple Amazon execs and published it, and they said definitively that that story was not true. And you can say a lot about AWS folks, and I assure you, I do, but I also do not catch them lying to my face, ever. And as soon as that changes, well, now we're going to have a different series of [laugh] conversations that are a lot more pointed. But they've earned some trust there.Jeremy: Yeah, I would agree. And I mean, look, I saw it internally, the way that Amazon built stuff was at such a breakneck pace, that challenge that they had that was, you know, the published version of events for why AWS got created, developers needed a place to test code. And that was something that they could not get until they got EC2, or could not get in a reasonably enough timeframe for it to be, you know, real-time valid or relevant for what was going on with the company. So, you know, that really is the genesis of things, and you know, the early services, SQS, S3, EC2, they all really came out of that journey. But yeah, in our days at AWS, there was a lot of ease, in the sense that lots of customers had pent-up frustrations with their data center providers or their colo providers and lots of customers would experience bursts and they would have capacity constraints and they would need a lot of the features that AWS offered, but we had to overcome a lot of technical misunderstandings and trust issues and, you know, oh, hey, Amazon just wants to sniff our data and they want to see what we're up to, and explain to them how encryption works and why they have their own keys and all these things. You know, we had to go through a lot of that. So, it wasn't super easy, but there was some element of it where, you know, just demand actually did make some aspects easy.Corey: What have you seen change since, well I guess ten years ago and change now? And let's be clear, you don't work in AWS sales, but you also are not oblivious to what the market is doing.Jeremy: For sure. For sure. I left AWS in 2011 and I've stayed in the cloud ecosystem pretty much ever since. I did spend some time working for a system integrator where all we did was migrate customers to AWS. And then I spent about five, six years working on cloud security primarily focused on AWS, a lot of GCP, a little bit of Azure.So yeah, I mean, I certainly stay up to date with what's going on in the state of cloud. I mean, look, Cloud has evolved from this kind of, you know, developer-centric, very easy-to-launch type of platform into a fully-fledged enterprise IT platform and all of the management structures and all of the kind of bells and whistles that you would want that you probably wanted from your old VMware networks but never really got, they're all there now. It is a very different ballgame in terms of what the platform actually enables you to do, but fundamentally, a lot of the core building block constructs and the primitives are still kind of driving the heart of it. It's just a lot of nicer packaging.What I think is really interesting is actually how customers' usage of cloud platforms has changed over time. And I always think of it and kind of like the, going back to my days, what did I see from my customers? And it was kind of like the month zero, “I just don't believe you.” Like, “This thing can't be real, I don't trust it, et cetera.” Month one is, I'm going to assign some developer to work on some very low-priority, low-risk workload. In my days, that was SharePoint, by the way. Like, nine times out of ten, the first workload that customers stood up was a SharePoint instance that they had to share across multiple locations.Corey: That thing falls over all the time anyway. May as well put it in the cloud where it can do so without taking too much else down with it. Was that the thinking or?Jeremy: Well, and the other thing about it at the time, Corey, was that, like, so many customers worked in this, like, remote-first world, right? And so, SharePoint was inevitably hosted at somebody's office. And so, the workers at that office were so privileged over the workers everywhere else. The performance gap between consuming SharePoint in one location versus another was like, night and day. So, you know, employees in headquarters were like, “Yeah, SharePoint's great.” Employees in branch offices were like, “This thing is terrible,” you know? “It's so slow. I hate it, I hate it, I hate it.”And so, Cloud actually became, like, this neutral location to move SharePoint to that kind of had an equal performance for every office. And so, that was, I think, one of the reasons and it was also, you know, it had capacity problems, and customers were right at that point, uploading tons of static documents to it, like Word documents, Office attachments, et cetera, and so they were starting to have some of these, like, real disk sprawl problems with SharePoint. So, that was kind of the month one problem. And only after they get through kind of month two, three, and four, and they go through, “I don't understand my bill,” and, “Help me understand security implications,” then they think about, like, “Hey, should we go back and look at how we're running that SharePoint stuff and maybe do it more efficiently and, like, move those static Office documents onto S3?” And so on, and so on.And that's kind of one of the big things that I've changed that I would say is very different from, like, 2011 to now, is there's enough sophistication around understanding that, like, you don't just translate what you're doing in your office or in your data center to what you're doing on cloud. Or if you do, you're not getting the most out of your investment.Corey: I'm curious to get your take on how you have seen cloud adoption patterns differ, specifically tied to geo. I mean, I tend to see it from a world where there's a bifurcation of between born-in-the-cloud SaaS-type companies where one workload is 80% of their bill or whatnot, and of the big enterprises where the largest single component is 3%. So, it's a very different slice there. But I'm curious what you would see from a sales perspective, looking across a lot of different geographic boundaries because we're all, on some level, biased based upon where we tend to spend our time doing business. I'm in San Francisco, which is its very own strange universe that has a certain perspective about itself that is occasionally accurate, but not usually. But it's a big world out there.Jeremy: It is. One thing that I would say it's interesting. I spent my AWS days based in Singapore, living in Singapore at the time, and I was working with customers across Southeast Asia. And to your point, Corey, one of the most interesting things was this little bit of a leapfrog effect. Data centers in Asia-Pac, especially in places like the Philippines, were just terrible.You know, the Philippines had, like, the second highest electricity rates in Asia at the time, only behind Japan, even though the GDP per capita gap between those two countries is really large. And yet you're paying, like, these super-high electricity rates. Secondarily, data centers in the Philippines were prone to flooding. And so, a lot of companies in the Philippines never went the data center route. You know, they just hosted servers in their offices, you know, they had a bunch of desktop machines in a cubicle, that kind of situation because, like, data centers themselves were cost prohibitive.So, you saw this effect a little bit like cell phones in a lot of the developing world. Landline infrastructure was too expensive or never got done for whatever reason, and people went straight to cell phones. So actually, what I saw in a lot of emerging markets in Asia was, screw the data center; we're going to go straight to cloud. So, I saw a lot of Asia-Pac get a little bit ahead of places like Europe where you had, for instance, a lot of long-term data center contracts and you had customers really locked in. And we saw this over the next, let's say between, like, say, 2014 and 2018 when I was working with a systems integrator, and then started working on cloud security.We saw that US customers and Asia-Pac customers didn't have these obligations; European customers, a lot of them were still working off their lease, and still, you know, I'm locked into let's just say Equinix Frankfurt for another five years before I can think about cloud migration. So, that's definitely one aspect that I observed. Second thing I think is, like, the earlier you started, the earlier you reached the point where you realize that actually there is value in a lot of managed services and there actually is value in getting away from the kind of server mindset around EC2.Corey: It feels like there's a lot of, I want to call it legacy thinking, in some ways, except that's unfair because legacy remains a condescending engineering term for something that makes money. The problem that you have is that you get bound by choices you didn't necessarily realize you were making, and then something becomes revenue-bearing. And now there's a different way to do it, or you learn more about the platform, or the platform itself evolves, and, “Oh, I'm going to rewrite everything to take advantage of this,” isn't happening. So, it winds up feeling like, yeah, we're treating the cloud like a data center. And sometimes that's right; sometimes that's a problem, but ultimately, it still becomes a significant challenge. I mean, there's no way around it. And I don't know what the right answer is, I don't know what the fix is going to be, but it always feels like I'm doing something wrong somewhere.Jeremy: I think a lot of customers go through that same set of feelings and they realize that they have the active runway problem, where you know, how do you do maintenance on an active runway? You kind of can't because you've got flights going in and out. And I think you're seeing this in your part of the world at SFO with a lot of the work that got done in, like, 2018, 2019 where they kind of had to close down a runway and had, like, near misses because they consolidated all flights onto the one active runway, right? It is a challenge. And I actually think that some of the evolution that I've seen our customers go through over the last, like, two, three years, is starting to get away from that challenge.So, to your point, when you have revenue-bearing workloads that you can't really modify and things are pretty tightly coupled, it is very hard to make change. But when you start to have it where things are broken down into more microservices, it makes it a lot easier to cycle out Service A for Service B, or let's say more accurately, Service A1 with Service A2 where you can kind of just, like, plug and play different APIs, and maybe, you know, repoint services at the new stuff as they come online. But getting to that point is definitely a painful process. It does require architectural changes and often those architectural changes aren't at the infrastructure level; they're actually inside the application or they're between things like applications and third-party dependencies where the customers may not have full control over the dependencies, and that does become a real challenge for people to break down and start to attack. You've heard of the Strangler Methodology?Corey: Oh, yes. Both in terms of the Boston Strangler, as well—Jeremy: [laugh]. Right.Corey: As the Strangler design pattern.Jeremy: Yeah, yeah. But I think, like, getting to that is challenging until, like, once you understand that you want to do that, it makes a lot of sense. But getting to the starting point for that journey can be really challenging for a lot of customers because it involves stakeholders that are often not involved on infrastructure conversations, and organizational dysfunction can really creep in there, where you have teams that don't necessarily play nice together, not for any particular reason, but just because historically they haven't had to. So, that's something that I've seen and definitely takes a little bit of cultural work to overcome.Corey: When you take a look across the board of cloud adoption, it's interesting to have seen the patterns that wound up unfolding. Your career path, though, seem to have gotten away from the selling cloud and into some strange directions leading up to what you're doing now, where you founded Firetail. What do you folks do?Jeremy: We do API security. And it really is kind of the culmination of, like, the last several years and what we saw. I mean, to your point, we saw customers going through kind of Phase One, Two, Three of cloud adoption. Phase One, the, you know, for lack of a better phrase, lift-and-shift and Phase Two, the kind of first step on the path towards quote-unquote, “Enlightenment,” where they start to see that, like, actually, we can get better operational efficiency if we, you know, move our databases off of EC2 and on to RDS and we move our static content onto S3.And then Phase Three, where they realize actually EC2 kind of sucks, and it's a lot of management overhead, it's a lot of attack surface, I hate having to bake AMIs. What I really want to do is just drop some code on a platform and run my application. And that might be serverless. That might be containerized, et cetera. But one path or the other, where we pretty much always see customers ending up is with an API sitting on a network.And that API is doing two things. It front-ends a data set and at front-ends a set of functionality, and most cases. And so, what that really means is that the thing that sits on the network that does represent the attack surface, both in terms of accessing data or in terms of let's say, like, abusing an application is an API. And that's what led us to where I am today, what led me and my co-founder Riley to, you know, start the company and try to make it easier for customers to build more secure APIs. So yeah, that's kind of the change that I've observed over the last few years that really, as you said, lead to what I'm doing now.Corey: There is a lot of, I guess, challenge in the entire space when we bound that to—even API security, though as soon as you going down the security path it starts seeming like there's a massive problem, just in terms of proliferation of companies that each do different things, that each focus on different parts of the story. It feels like everything winds up spitting out huge amounts of security-focused, or at least security-adjacent telemetry. Everything has findings on top of that, and at least in the AWS universe, “Oh, we have a service that spits out a lot of that stuff. We're going to launch another service on top of it that, of course, cost more money that then winds up organizing it for you. And then another service on top of that that does the same thing yet again.” And it feels like we're building a tower of these things that are just… shouldn't just be a feature in the original underlying thing that turns down the noise? “Well, yes, but then we couldn't sell you three more things around it.”Jeremy: Yeah, I mean—Corey: Agree? Disagree?Jeremy: I don't entirely disagree. I think there is a lot of validity on what you just said there. I mean, if you look at like the proliferation of even the security services, and you see GuardDuty and Config and Security Hub, or things like log analysis with Athena or log analysis with an ELK stack, or OpenSearch, et cetera, I mean, you see all these proliferation of services around that. I do think the thing to bear in mind is that for most customers, like, security is not a one size fits all. Security is fundamentally kind of a risk management exercise, right? If it wasn't a risk management exercise, then all security would really be about is, like, keeping your data off of networks and making sure that, like, none of your data could ever leave.But that's not how companies work. They do interact with the outside world and so then you kind of always have this decision and this trade-off to make about how much data you expose. And so, when you have that decision, then it leads you down a path of determining what data is important to your organization and what would be most critical if it were breached. And so, the point of all of that is honestly that, like, security is not the same for you as it is for me, right? And so, to that end, you might be all about Security Hub, and Config instead of basic checks across all your accounts and all your active regions, and I might be much more about, let's say I'm quote-unquote, “Digital-native, cloud-native,” blah, blah, blah, I really care about detection and response on top of events.And so, I only care about log aggregation and, let's say, GuardDuty or Athena analysis on top of that because I feel like I've got all of my security configurations in Infrastructure as Code. So, there's not a right and wrong answer and I do think that's part of why there are a gazillion security services out there.Corey: On some level, I've been of the opinion for a while now that the cloud providers themselves should not necessarily be selling security services directly because, on some level, that becomes an inherent conflict of interest. Why make the underlying platform more secure or easier to use from a security standpoint when you can now turn that into a revenue source? I used to make comments that Microsoft Defender was a classic example of getting this right because they didn't charge for it and a bunch of antivirus companies screamed and whined about it. And then of course, Microsoft's like, “Oh, Corey saying nice things about us. We can't have that.” And they started charging for it. So okay, that more or less completely subverts my entire point. But it still feels squicky.Jeremy: I mean, I kind of doubt that's why they started charging for it. But—Corey: Oh, I refuse to accept that I'm not that influential. There we are.Jeremy: [laugh]. Fair enough.Corey: Yeah, I just can't get away from the idea that it feels squicky when the company providing the infrastructure now makes doing the secure thing on top of it into an investment decision.Jeremy: Yeah.Corey: “Do you want the crappy, insecure version of what we build or do you want the top-of-the-line secure version?” That shouldn't be a choice people have to make. Because people don't care about security until right after they really should have cared about security.Jeremy: Yeah. Look, and I think the changes to S3 configuration, for instance, kind of bear out your point. Like, it shouldn't be the case that you have to go through a lot of extra steps to not make your S3 data public, it should always be the case that, like, you have to go through a lot of steps if you want to expose your data. And then you have explicitly made a set of choices on your own to make some data public, right? So, I kind of agree with the underlying logic. I think the counterargument, if there is one to be made, is that it's not up to them to define what is and is not right for your organization.Because again, going back to my example, what is secure for you may not be secure for me because we might have very different modes of operation, we might have very different modes of building our infrastructure, deploying our infrastructure, et cetera. And I think every cloud provider would tell you, “Hey, we're just here to enable customers.” Now, do I think that they could be doing more? Do I think that they could have more secure defaults? You know, in general, yes, of course, they could. And really, like, the fundamentals of what I worry about are people building insecure applications, not so much people deploying infrastructure with bad configurations.Corey: It's funny, we talk about this now. Earlier today, I was lamenting some of the detritus from some of my earlier builds, where I've been running some of these things in my old legacy single account for a while now. And the build service is dramatically overscoped, just because trying to get the security permissions right, was an exercise in frustration at the time. It was, “Nope, that's not it. Nope, blocked again.”So, I finally said to hell with it, overscope it massively, and then with a, “Todo: fix this later,” which of course, never happened. And if there's ever a breach on something like that, I know that I'll have AWS wagging its finger at me and talking about the shared responsibility model, but it's really kind of a disaster plan of their own making because there's not a great way to say easily and explicitly—or honestly, by default the way Google Cloud does—of okay, by default, everything in this project can talk to everything in this project, but the outside world can't talk to any of it, which I think is where a lot of people start off. And the security purists love to say, “That's terrible. That won't work at a bank.” You're right, it won't, but a bank has a dedicated security apparatus, internally. They can address those things, whereas your individual student learner does not. And that's how you wind up with open S3 bucket monstrosities left and right.Jeremy: I think a lot of security fundamentalists would say that what you just described about that Google project structure, defeats zero trust, and you know, that on its own is actually a bad thing. I might counterargue and say that, like, hey, you can have a GCP project as a zero trust, like, first principle, you know? That can be the building block of zero trust for your organization and then it's up to you to explicitly create these trust relationships to other projects, and so on. But the thing that I think in what you said that really kind of does resonate with me in particular as an area that AWS—and really this case, just AWS—should have done better or should do better, is IAM permissions. Because every developer in the world that I know has had that exact experience that you described, which is, they get to a point where they're like, “Okay, this thing isn't working. It's probably something with IAM.”And then they try one thing, two things, and usually on the third or fourth try, they end up with a star permission, and maybe a comment in that IAM policy or maybe a Jira ticket that, you know, gets filed into backlog of, “Review those permissions at some point in the future,” which pretty much never happens. So, IAM in particular, I think, is one where, like, Amazon should do better, or should at least make it, like, easy for us to kind of graphically build an IAM policy that is scoped to least permissions required, et cetera. That one, I'll a hundred percent agree with your comments and your statement.Corey: As you take a look across the largest, I guess, environments you see, and as well as some of the folks who are just getting started in this space, it feels like, on some level, it's two different universes. Do you see points of commonality? Do you see that there is an opportunity to get the individual learner who's just starting on their cloud journey to do things that make sense without breaking the bank that they then can basically have instilled in them as they start scaling up as they enter corporate environments where security budgets are different orders of magnitude? Because it seems to me that my options for everything that I've looked at start at tens of thousands of dollars a year, or are a bunch of crappy things I find on GitHub somewhere. And it feels like there should be something between those two.Jeremy: In terms of training, or in terms of, like, tooling to build—Corey: In terms of security software across the board, which I know—Jeremy: Yeah.Corey: —is sort of a vague term. Like, I first discovered this when trying to find something to make sense of CloudTrail logs. It was a bunch of sketchy things off GitHub or a bunch of very expensive products. Same thing with VPC flow logs, same thing with trying to parse other security alerting and aggregate things in a sensible way. Like, very often it's, oh, there's a few very damning log lines surrounded by a million lines of nonsense that no one's going to look through. It's the needle in a haystack problem.Jeremy: Yeah, well, I'm really sorry if you spent much time trying to analyze VPC flow logs because that is just an exercise in futility. First of all, the level of information that's in them is pretty useless, and the SLA on actually, like, log delivery, A, whether it'll actually happen, and B, whether it will happen in a timely fashion is just pretty much non-existent. So—Corey: Oh, from a security perspective I agree wholeheartedly, but remember, I'm coming from a billing perspective, where it's—Jeremy: Ah, fair enough.Corey: —huh, we're taking a petabyte in and moving 300 petabytes between availability zones. It's great. It's a fun game called find whatever is chatty because, on some level, it's like, run two of whatever that is—or three—rather than having it replicate. What is the deal here? And just try to identify, especially in the godforsaken hellscape that is Kubernetes, what is that thing that's talking? And sometimes flow logs are the only real tool you've got, other than oral freaking tradition.Jeremy: But God forbid you forgot to tag your [ENI 00:24:53] so that the flow log can actually be attributed to, you know, what workload is responsible for it behind the scenes. And so yeah, I mean, I think that's a—boy that's a case study and, like, a miserable job that I don't think anybody would really want to have in this day and age.Corey: The timing of this is apt. I sent out my newsletter for the week a couple hours before this recording, and in the bottom section, I asked anyone who's got an interesting solution for solving what's talking to what with VPC flow logs, please let me know because I found this original thing that AWS put up as part of their workshops and a lab to figure this out, but other than that, it's more or less guess-and-check. What is the hotness? It's been a while since I explored the landscape. And now we see if the audience is helpful or disappoints me. It's all on you folks.Jeremy: Isn't the hotness to segregate every microservice into an account and run it through a load balancer so that it's like much more properly tagged and it's also consumable on an account-by-account basis for better attribution?Corey: And then everything you see winds up incurring a direct fee when passing through that load balancer, instead of the same thing within the same subnet being able to talk to one another for free.Jeremy: Yeah, yeah.Corey: So, at scale—so yes, for visibility, you're absolutely right. From a, I would like to spend less money giving it directly to Amazon, not so much.Jeremy: [unintelligible 00:26:08] spend more money for the joy of attribution of workload?Corey: Not to mention as well that coming into an environment that exists and is scaled out—which is sort of a prerequisite for me going in on a consulting project—and saying, “Oh, you should rebuild everything using serverless and microservice principles,” is a great way to get thrown out of the engagement in the first 20 minutes. Because yes, in theory, anyone can design something great, that works, that solves a problem on a whiteboard, but most of us don't get to throw the old thing away and build fresh. And when we do great, I'm greenfielding something; there's always constraints and challenges down the road that you don't see coming. So, you finally wind up building the most extensible thing in the universe that can handle all these things, and your business dies before you get to MVP because that takes time, energy and effort. There are many more companies that have died due to failure to find product-market fit than have died because, “Oh hey, your software architecture was terrible.” If you hit the market correctly, there is budget to fix these things down the road, whereas your code could be pristine and your company's still dead.Jeremy: Yeah. I don't really have a solution for you on that one, Corey [laugh].Corey: [laugh].Jeremy: I will come back to your one question—Corey: I was hoping you did.Jeremy: Yeah, sorry. I will come back to the question about, you know, how should people kind of get started in thinking about assessing security. And you know, to your point, look, I mean, I think Config is a low-ish cost, but should it cost anything? Probably not, at least for, like, basic CIS foundation benchmark checks. I mean, like, if the best practice that Amazon tells everybody is, “Turn on these 40-ish checks at last count,” you know, maybe those 40-ish checks should just be free and included and on in everybody's account for any account that you tag as production, right?Like, I will wholeheartedly agree with that sentiment, and it would be a trivial thing for Amazon to do, with one kind of caveat—and this is something that I think a lot of people don't necessarily understand—collecting all the required data for security is actually really expensive. Security is an extremely data-intensive thing at this day and age. And I have a former coworker who used to hate the expression that security is data science, but there is some truth in it at this point, other than the kind of the magic around it is not actually that big because there's not a lot of, let's say, heuristic analysis or magic that goes into what queries, et cetera. A lot of security is very rule-based. It's a lot of, you know, just binary checks: is this bit set to zero or one?And some of those things are like relatively simple, but what ends up inevitably happening is that customers want more out of it. They don't just want to know, is my security good or bad? They want to know things like is it good or bad now relative to last week? Has it gotten better or worse over time? And so, then you start accumulating lots of data and time series data, and that becomes really expensive.And secondarily, the thing that's really starting to happen more and more in the security world is correlation of multiple layers of data, infrastructure with applications, infrastructure with operating system, infrastructure with OS and app vulnerabilities, infrastructure plus vulnerabilities plus Kubernetes configurations plus API sitting at the edge of that. Because realistically, like, so many organizations that are built out at scale, the truth of the matter is, is just like on their operating system vulnerabilities, they're going to have tens of thousands, if not millions of individual items to deal with and no human can realistically prioritize those without some context around it. And that is where the data, kind of, management becomes really expensive.Corey: I hear you. Particularly the complaints about AWS Config, which many things like Control Tower setup for you. And on some level, it is a tax on using the cloud as the cloud should be used because it charges for evaluation of changes to your environment. So, if you're spinning things up all the time and then turning them down when they're not in use, that incurs a bunch of Config charges, whereas if you've treat it like a big dumb version of your data center where you just spin [unintelligible 00:30:13] things forever, your Config charge is nice and low. When you start seeing it entering the top ten of your spend on services, something is very wrong somewhere.Jeremy: Yeah. I would actually say, like, a good compromise in my mind would be that we should be included with something like business support. If you pay for support with AWS, why not include Config, or some level of Config, for all the accounts that are in scope for your production support? That would seem like a very reasonable compromise.Corey: For a lot of folks that have it enabled but they don't see any direct value from it either, so it's one of those things where not knowing how to turn it off becomes a tax on what you're doing, in some cases. In SCPs, but often with Control Tower don't allow you to do that. So, it's your training people who are learning this in their test environments to avoid it, but you want them to be using it at scale in an enterprise environment. So, I agree with you, there has to be a better way to deliver that value to customers. Because, yeah, this thing is now, you know, 3 or 4% of your cloud bill, it's not adding that much value, folks.Jeremy: Yeah, one thing I will say just on that point, and, like, it's a super small semantic nitpick that I have, I hate when people talk about security as a tax because I think it tends to kind of engender the wrong types of relationships to security. Because if you think about taxes, two things about them, I mean, one is that they're kind of prescribed for you, and so in some sense, this kind of Control Tower implementation is similar because, like you know, it's hard for you to turn off, et cetera, but on the other hand, like, you don't get to choose how that tax money is spent. And really, like, you get to set your security budget as an organization. Maybe this Control Tower Config scenario is a slight outlier on that side, but you know, there are ways to turn it off, et cetera.The other thing, though, is that, like, people tend to relate to tax, like, this thing that they really, really hate. It comes once a year, you should really do everything you can to minimize it and to, like, not spend any time on it or on getting it right. And in fact, like, there's a lot of people who kind of like to cheat on taxes, right? And so, like, you don't really want people to have that kind of mindset of, like, pay as little as possible, spend as little time as possible, and yes, let's cheat on it. Like, that's not how I hope people are addressing security in their cloud environments.Corey: I agree wholeheartedly, but if you have a service like Config, for example—that's what we're talking about—and it isn't adding value to you, and you just you don't know what it does, how it works, than it [unintelligible 00:32:37]—or more or less how to turn it off, then it does effectively become directly in line of a tax, regardless of how people want to view the principle of taxation. It's a—yeah, security should not be a tax. I agree with you wholeheartedly. The problem is, is it is—Jeremy: It should be an enabler.Corey: —unclea—yeah, the relationship between Config and security in many cases is fairly attenuated in a lot of people's minds.Jeremy: Yeah. I mean, I think if you don't have, kind of, ideas in mind for how you want to use it or consume it, or how you want to use it, let's say as an assessment against your own environment, then it's particularly vexing. So, if you don't know, like, “Hey, I'm going to use Config. I'm going to use Config for this set of rules. This is how I'm going to consume that data and how I'm going to then, like, pass the results on to people to make change in the organization,” then it's particularly useless.Corey: Yeah. I really want to thank you for taking the time to speak with me. If people want to learn more, where's the best place for them to find you?Jeremy: Easy, breezy. We are just firetail.io. That's ‘fire' like the, you know, flaming substance, and ‘tail' like the tail of an animal, not like a story. But yeah, just firetail.io.And if you come now, we've actually got, like, a white paper that we just put out around API security and kind of analyzing ten years of API-based data breaches and trying to understand what actually went wrong in most of those cases. And you're more than welcome to grab that off of our website. And if you have any questions, just reach out to me. I'm just jeremy@firetail.io.Corey: And we'll put links to all of that in the [show notes 00:34:03]. Thank you so much for your time. I appreciate it.Jeremy: My pleasure, Corey. Thanks so much for having me.Corey: Jeremy Snyder, founder and CEO at Firetail. I'm Cloud Economist Corey Quinn, and this is Screaming in the Cloud. If you've enjoyed this podcast, please leave a five-star review on your podcast platform of choice, whereas if you've hated this podcast, please leave a five-star review on your podcast platform of choice, along with an angry comment pointing out that listening to my nonsense is a tax on you going about your day.Corey: If your AWS bill keeps rising and your blood pressure is doing the same, then you need The Duckbill Group. We help companies fix their AWS bill by making it smaller and less horrifying. The Duckbill Group works for you, not AWS. We tailor recommendations to your business and we get to the point. Visit duckbillgroup.com to get started.
systemd is a service manager for Linux. It is the first process that runs on many Linux distributions and manages all other user processes. It includes utilities for logging, process isolation, process dependencies, socket activation, and many other tasks. psystemd is a python library to communicate with systemd over dbus from python as an alternative to shelling out from an application to control services. Anita Zhang is an engineerd managerd at Meta and Alvaro Levia is a production engineer at Meta. I attended their systemd workshop at the Southern California Linux Expo. Topics covered: What's systemd? Giving talks and workshops cgroups and namespaces systemd timers vs cron Migrating from CentOS 6 to 7 Production engineers need to go lower in the stack to debug applications Meta's Linux userspace team Use of public cloud at Meta Meta's bootcamp Pystemd Mastodon Anita Zhang Alvaro Leiva Workshop systemd workshop Conference talks Journey into the Heart of systemd - Scale 19x Systemd: why you should care as a Python developer - PyCon 2018 Move Fast without Breaking things - Scale 18x Solving All the Problems with systemd - LISA18 Using systemd to high level languages - All Systems Go! The Curious Case of Memory Growth - Scale 19x Related Links systemd psystemd systemd-run systemd-timers Transcript You can help edit this transcript on GitHub. Introductions [00:00:00] Jeremy: So today I'm talking to Avaro Leiva and Anita Zhang. Avaro is the author of the pystemd library and he's a production engineer at Meta. And Anita is an engineerd managerd at Meta, and I'll let her explain that further. [00:00:19] Jeremy: But thank you both for joining me today. [00:00:21] Anita: Yeah, thanks for having us. [00:00:24] Jeremy: I guess where we could start, Anita, maybe you could explain a little bit your, your title that I just gave you there. engineerd managerd [00:00:31] Anita: Yeah, so by default I, I should be a software engineering manager, but when I transitioned to management, I was not, Ready to go public with, um, my transition. So I kind of hid it by, changing the title. we have some weird systems in place that grep on like the word engineer. So I had to keep engineer in there somehow. and so I kind of polled my friends what I should change my title to, and they're like, oh, you're gonna support the systemd team, so you should change it to like managerd. So I was like, sounds good. engineerd, managerd. I didn't wanna get kicked out of any workplace groups, for example, that required me to be an engineer. [00:01:15] Jeremy: Oh, okay. [00:01:17] Anita: Or like engineering function, I guess. [00:01:19] Jeremy: Yeah. Yeah. And you just gotta title it yourself, so as long as you got engineer in it, you're good. [00:01:24] Anita: Yeah, pretty much. Some people have really fun titles like Chief Potato Officer and things like that. [00:01:32] Jeremy: So what groups does the, uh, the potato officer get to go in? [00:01:37] Anita: Yeah. Not the C level ones. (laughs) What's systemd? [00:01:42] Jeremy: I guess maybe to, to start, we should explain to people who aren't familiar, uh, what systemd is. So if either of you wanna wanna take that one. [00:01:52] Alvaro: so people who doesn't know, right? So systemd is today is your init system, right? Is the thing that manage your, your process. and the best way to understand this, it is like when your computer, it needs to execute something. And that's something is what we call pid one. And that pid one is the thing that is gonna manage everything from now from there on, right? Uh, in the most basic level, if you remember how to, how does program start, how does like an idea becomes a program? Uh, you need to fork exec, right? So that means that something has to be at the top of that tree and that is systemd. now that can be anything, right? So there was a time where that was like systemv and there was also like upstart, uh, today's systemd is the thing that, uh, it's shipped in most distributions. [00:02:37] Jeremy: Yeah, because I, I definitely remember when I first started working with Linux, uh, it was with CentOS 6, and when I would want to run a service, I would have to go and write a bash script and kind of have all these checks for, is this thing running? Does it have permission to these things, which user is it running as, and so there was a lot of stuff that I remember having to do before systemd came out. [00:03:08] Alvaro: The good old days as we call them, [00:03:11] Jeremy: Or the bad old days. [00:03:13] Anita: Yeah. Depending on who you ask. [00:03:15] Alvaro: Yeah. So, so that is super interesting because, um, During those time, like you said, you have to write a first script. That means that you were basically yourself, your own service manager, right? So ideas as simple as, is my program running? There was no real answer. You have to figure it out, right? So if you run a program, uh, you maybe would create a pid file which hold the p or the pid of the process, of the main process, right? And then something needs to check, oh, is this file exist? Does the file exist and does the content of this file actually match to a process? And then you grab the process. So it was all these ideas that you had to do, and then for, you have to do it for every single software that you would deploy on your machine, right? That also makes really hard to parallelize stuff, right? Because you have no concept of dependencies. So if your computer has to put, uh, I, I dunno if you remember like long time ago, like Linux machine would, takes like five minutes to boot like your desktop. I remember like openSUSE. I can't remember, like 2008, 2007. Uh, it would take like five minutes to boot and then Ubuntu came and, and it start like immediately. And it was because, you can parallelize things, but you cannot do that if all you're running are bash script. Why was systemd chosen to be included in Linux distributions? [00:04:26] Jeremy: I remember before the Linux distributions didn't include it. And I wonder if you have any insight into how systemd got chosen to be the thing to manage our processes and basically how we got to where we are today. [00:04:44] Anita: I mean, we can kind of speculate a little bit. at the time when Lennart started systemd, um, with. Kai Sievers probably messed up his name there. Um, they were all at Red Hat and Red Hat manages fedora these days and I believe fedoras kind of like the bleeding edge for a lot of the new software ideas. Um, and when they picked up systemd as the defaults, um, eventually it started to trickle down to the rest of their distributions through RHEL and to CentOS and at the same time, I think other distributions started to see how useful it was in terms of managing all the different processes and services. Um, I know Debian at one point had kind of a vote on like whether they should make systemd either default or like, make it easy to switch between both. And then they decided to just stick with systemd because it's, I mean, the public agrees that it's like easy to use and it's more useful. It abstracts away a lot of things that they had to manually do before Who is interested in systemd? Who comes to your talks and workshops? [00:05:43] Jeremy: Something I've been kind of curious about. So just this year at SCaLE uh, you ran a, a workshop teaching people how to use systemd and, and sort of what it is about. I guess when, when you get people coming to these workshops, what are they typically, where are they typically coming from? Are they like system administrators or are they software developers? Like when you run these workshops, who are you looking for as your audience? [00:06:13] Alvaro: To be fair, this was the first time that we actually did a workshop for this. But we have like, talk about this in, in many like conferences. here's what happened, right? So every time that you put systemd on the title of, uh, of a talk, you are like baiting people into coming in, right? Because you do want to hear like some people who are still like reluctant from that war that happened like a few years ago. Between systemd and Ups tart right? most of the people who we get are, I would say like, software engineers, people who do software, and at least the question that I always get a lot, it is like, why should I care about systemd um, if I run everything on my containers in my Docker containers, right? The other type of audience that you get, you do get system administrators. Uh, but in general those people only cares about starting and stopping services don't really care about like the, like the nice other features that systemd has to offer. And then you get people who just wanna start like flame wars and I'm here for them. Why give talks and workshops on systemd? [00:07:13] Jeremy: In previous years, you've given conference talks and, and things like that related to systemd. And I wonder for, for both of you where, where the, the interests came from, where this is something that you feel strongly enough about that you wanna give talks about it. Because it's like, a lot of times when people give a conference talk, it's about, like new front end technology or some, you know, new shiny thing. Whereas systemd is like, it's like very valuable, but it's something that I feel like a lot of people don't think about. And so I'm just kind of curious where the interest came for, for both of you. [00:07:52] Anita: I think I just like giving talks and teaching in general. So if I have work that I found really exciting or interesting, then I'd want to like tell people about it and like teach them and like show them something cool. I think systemd is kind of a really good topic in that case because a lot of people want to learn more about it. Today there's like lots of new developments going on in systemd. So there's like a lot of basic stuff that you can learn, but also a lot of new advanced topics that are changing every year as well. aside from that, there's also like more generally applicable things. Like everyone wants to know how to debug something if you're like a software engineer or developer or even a sysadmin. Um, so last year I did a debugging talk. there's a lot of overlap I'd say how about you Alvaro? [00:08:48] Alvaro: For me, it, my interest in systemd started in, back when I was working on Instagram, we needed to migrate from CentOS6 to CentOS7. and that was the transition where you would have like a random init system to systemd, right? So we needed to migrate all of our scripts from like shell script to whatever shell script is going to interact with systemd. And that's when I was like, I don't like this. So I also have a thing where if I find something that doesn't have an Python API for it, I go and create a Python api. So I, I create pystemd like during that time. And I guess for me, the first reaction was when I was digging up systemd was like, whoa, can systemd do that? Like, like really, like I can like manage, network firewalls, right? Can I, can I stop my service from actually accessing the internet without having to deal with iptables at the time? So that's kind of like the feeling that I wanted to show people when I, when we do these these talks and, and these workshops, right? It's why like most of our talks, eh, have light demos in them because we do want to show people like, Hey, like, this is real. You can use it. [00:09:55] Jeremy: I don't know if this was a conscious decision on your part, but the thing about things like systemd is they, they feel like more foundational things that don't change that quickly. Like if you look at front end development, for example, at at meta you've got React, and that ecosystem changes so often that it's like there's always this new thing, you learn the way to do it and then it changes, right? Whereas I feel like when you're in the Linux user space and you're with systemd, like they're adding new things, but the, the. Foundations kind of stay the same. I'm not sure if that sounds accurate to both of you. [00:10:38] Anita: Yeah, I'd say a lot of the, there are a lot of stable building blocks in systemd, but at Meadow we also have a kernel team, which is working on like new kernel features all the time. They take years possibly to adopt, but with systemd, if we're able to influence the community and like get those kernel features in earlier, then like we can start to really shape what the future of operating systems look like. So it's not, it's very like not short term, uh, work that we're doing. It's a lot of long term, uh, work. [00:11:11] Jeremy: Yeah, that's, that's interesting in that I didn't even think about the fact that you are sitting at the, the user level with systemd, but you kind of know what you want. And so if there's things that the kernel can do to support that, you're having that involvement. With the open source community, make sure that you have your, your say get put in there. Yeah. [00:11:33] Anita: Mm-hmm. [00:11:35] Alvaro: It, it goes both way, right? So one part it is like, yeah, sure, we want features and we create them. Um, and we actually wanted to those to be upstream because we like, one thing that you should, you should never do is manage internal patches for like, things like the kernel, because that's rebase hell. Um, but you also want to be like part of the community and, and, and, and get the benefit of like, being part of it. Who should care about systemd? [00:11:59] Jeremy: And so, like one thing you mentioned ear earlier, Alvaro, is that people will sometimes ask you, I'm running my application in, in Docker containers. Why do I care about systemd? So, so maybe you could explain like, how you would respond to that. Yeah. [00:12:17] Alvaro: Well for more, for most people who actually run their application container I'd say like, no, you probably shouldn't care. Right? Like, you're good where you are. But in general, like, like system is foundational in the sense that it is the first thing that your computer boots your computer doesn't boot off of Docker or Kubernetes or, or any like that. So like something has to run these applications. there's also like a lot of value is that not all applications exist in the vacuum. Like, uh, like let me give you an example. Like if you have a web server, When people are uploading stuff to the web server, you will upload temporary things and then you have to clean it up after a while. So you may want to take advantage of systemd timers or cron or, or whatever you want, right? While the classical container view is that your pid one of the container is the application that you're running, right? So you do want to have like this whole ecosystem, Not all companies can run on containers. not everything can run in containers. So that's basically where all the things start to, to getting into shape. There's a lot of value in understanding how programs actually like exist, right? With the thing that I told you at the beginning of how an idea becomes a program understanding like, like you hit, you are in your bash, right? And you hit ls Star full enter, right? What happened in your machine? Understanding all the things, uh, there is a lot of value and understanding how systemd works. It's, it, it provides, uh, like that knowledge for you. [00:13:39] Jeremy: So for the average engineer at Meta who is relying on your team to deploy their, their code, I guess, if that's the right term, do you think that they're ever needing to think about systemd or is that kind of more like the responsibility of your team and they're just worried about like, I put my thing into my container and I don't, I don't worry about it. [00:14:04] Anita: I think there's like a whole level of the stack that sh ideally we should not even care or know that we're running systemd below them. I think that's, say we're doing our job well, cuz then the abstraction is good enough that they don't have to worry about it. But there's like a whole class of engineers below that that have to, you know, support the systems that run our on bare metal and infrastructure and make it happen. And those are the people who really care about what we're putting in systemd or like what the corner cases are and things like that. [00:14:37] Jeremy: Yeah, that, that makes sense. I mean, one of the talks that was at SCaLE was, uh, Brian Cantrill um, he gave a talk about the forgotten operator, and he was talking about how people forget that there are actual servers behind all the things we're deploying to, right? [00:14:55] Anita: Mm-hmm. [00:14:55] Jeremy: There is a person that you're racking the machines and plugging the power, and like, even though there's all these abstractions in front, that still exists. And so it sounds like things happening at the kernel level and the Linux user space and systemd that's also true because all this infrastructure that people are using to deploy their software on your team is the one who has to keep that running and to keep that running, they need to understand, uh, systemd and, and all these foundational Linux pieces. Yeah. [00:15:27] Anita: Mm-hmm. Yeah. [00:15:29] Alvaro: Like with that said um, I, and maybe it's because I'm very close to to, to the source. Um, and, and you know, like, like I said, like when, when all your tool is a hammer, everything looks like a nail? Well, that hammer for me, a lot of the times it is like even like cgroups or, or namespaces or even like systemd itself, right? there is a lot of times where, um, like for instance, a few years ago we have not, like, like last year or something, uh, we had an application that was very was very hard to load, right? It used a lot of memory. And so we start with, with a model where we would load like a, like a parent process and then child process would deal with, with, um, with the actual work of the thing, the classical model of our server. Now, the thing is that each of the sub process that would run would need to run, uh, on a separate set of privileges, right? So it would really need to run as different users. And that was like very easy to do. But now we actually wanted to some process to run with a, with only view of the file system while the parent process actually doesn't have to do that, right? Uh, or we want to limit the amount of CPU that a child process would use. So like all of these things, we were able like to, to swap it out uh, with using like systemd and, and, uh, like, like a good, Strategy for like, you create a process, you create a new cgroup, you put that into the cgroup, you create the namespace, uh, you add this process into that namespace, and then you have like all this architecture, and it's pretty free because forking it's free in general. [00:17:01] Anita: Actually, Alvaro's comment reminded me of like why we even ended up building the systemd team in the first place. It's kind of like if we have all these teams trying to touch cgroups on their own or like manage processes on their own, they're all gonna do it a different way and not, all of them will be ideal or like, to put it bluntly, I guess, we're really aiming to try and provide like a unified, really good foundational experience, for the layers above us. And so, systemd and the other things that go into the operating system are a step to get there. What are cgroups and namespaces? [00:17:40] Jeremy: And so for someone who's not familiar with the concept of cgroups or of namespaces, could you kind of give like a brief description? [00:17:50] Anita: so namespaces are, uh, we're talking about the kernel feature where, um, there are different ways to isolate, uh, different resources to the process or like, so that they have their own view of certain things, the network or, the processes and things like that. Um, and Cgroup stand for control groups. It's, at meta we only use Cgroups v2 which is a way to organize your processes into, Kind of like a directory view. but processes will be grouped into different, folders, shall you say, but that allows you to, uh, manage the resources between different groups of processes, which is how systemd does its services. [00:18:33] Alvaro: So a, a control group will allow you to impose restrictions on how each system uses the resources, right? So with a cgroup, you can say, only use 20% of cpu, and the, and the kernel will take care of that. Uh, while namespace it is basically how you view the system around you. So like your mount directory like, like where does your home points to? that's, I would say it's more on the namespace side of things. So one is the view then one is the actual, the restrictions. And like Anita said, like systemd does a very clever thing. It doesn't have two, is not the. It's not why cgroups exist, but every time that you start a systemd service, systemd will create a cgroup for that service and will put every process in that cgroup, even though all cgroups would end up being the same, for instance. But eh, you can now like have a consolidated list of what process belong to a service. So a simple question like, like what services has my Apache web service started? That's show you how old I am. But yeah, you can answer that now because you just look at the cgroup, you don't look at the process tree. [00:19:42] Jeremy: So it, it sounds like the, the namespacing is maybe more for the purposes of security, like you said, giving you a certain view of your, your system. and the cgroups are more for restricting resources, but also, like you said, being able to see what are all the processes, um, are associated. Um, so that you, you don't have a process that spins up other processes and then you don't know who owns those, and then you don't know how to shut 'em all down. That, that takes care of that for you. [00:20:17] Alvaro: So I, I always reluctant to use the word security or privacy. I would like to use the word isolation. Yeah. And then if people want to impose the idea of security and privacy to those, that's fine, but it's, but it's mostly about isolation. [00:20:32] Anita: Yeah. Namespaces are what back all the container technologies are. Anytime you run things in a container, it's probably using some kind of name spacing. But yeah, you, you kind of hit the nail in the head. Isolation versus like resource control [00:20:46] Alvaro: As Anita just said that's what fits on containers, uh, namespaces and cgroup like a big mix of those. But that doesn't mean that the only reason why those things exist are for containers. You can take advantage of those technologies without actually having to think of a container. systemd timers vs cron [00:21:04] Jeremy: Something you had mentioned a little bit earlier is, is how systemd has other features and one of them was, was timers. And I was kind of curious, cuz you said you could, you wanna schedule a job, you can run it using cron or you can run it using systemd timers. And it, I feel like whenever I see people scheduling jobs, they're always talking about cron but, but not so much about systemd timers. So I was curious if you had any thoughts on that. [00:21:32] Anita: I don't know. I feel like it's used pretty interchangeably these days. Um, like even when people say cron they're actually running a systemd timer with the cron format, for their time. [00:21:46] Alvaro: So the, the advantage of of systemd timers over cron is, is basically two, right? The first one it is that, you get more control on the time, right? So you have monotonic and absolute times, right? Which is basically like, you can say like this, start five minutes after the previous run. Or you can say this, start after five minutes after the vote, right? So those are two type of time, that is the first one, uh, which may be irrelevant for most people, but that's it. Uh, the other one is that you actually have advantage over the, you take full advantage of systemd, right? In current you say run this process, right? And how that process run, it's basically controlled by the process itself, right? So if you, uh, like if the crontab is for the user, that's good for you, but if you want to like nice it or make it use less cpu, that's what it is. Well, with systemd you say, This cron will start the service and the service, you take full fledged advantage of all the things a service can do. [00:22:45] Jeremy: From what I could tell, looking at the, the timers api, it, it felt like it would be a lot easier to kind of see when things ran, get, you know, get a log of, I ran this time job and it, it failed. Um, it seemed like systemd had a lot more kind of built in to, to kind of look into that. but, uh, yeah, like Anita was saying, like when you, you hear kind of cron all the time, but like you said, maybe it's, maybe they're not actually using cron all the time. They're just saying cron [00:23:18] Alvaro: Well, I would say this for cron like the, the time, the time, uh, syntax for it, it's pretty, it's pretty easy to understand, even though I never remember where, I remember where weekday is, right? The fourth, which one is which? [00:23:32] Jeremy: I, I'm with Anita. I need to look it up whenever I'm gonna use it. (laughs) [00:23:36] Anita: Yeah. I use a cron translator when I have to use cron format. [00:23:41] Alvaro: This is like, like a flags to tar, right? Like, I never remember which, which flags to put. [00:23:48] Anita: Yeah, that's true. [00:23:50] Alvaro: We didn't talk about this, we haven't talked about systemd-run, but one of the advantages of the, one of the advantages of using timers is that you can schedule them on demand, right? So like cron if you wanna schedule something over time, you need to modify the cron the cron file. Uh, and that's, it's problem right? With systemd, you can have like ephemeral units and so you can say like, just for now, go and run this process five hours from now. Like, and after that, just forget about it. [00:24:21] Jeremy: Yeah, the, during the workshop you mentioned systemd-run and I hadn't even heard of it. And after I saw that I was like, wow, this, this could be really useful. [00:24:32] Alvaro: It is quite useful. How have things changed at meta? [00:24:34] Jeremy: One of the things you had mentioned, I, I guess you've, you've been at Meta for, for quite a while and you were talking about how you started with having all these scripts you were running on CentOS 6 and getting off of that to something more standard. I wonder if you could speak a little bit to that, that process. Like what did things look like then and, and how have they they changed over the years? [00:25:01] Alvaro: I would say the following thing, right? Like Anita said, like for most engineers, the day to day of things don't really change that much, because this is foundational things, right? So if you have to fundamentally change the way that you run applications every couple of years, then you waste a lot of time, right? It's not the same as you say, like react where, or, or in the old days, angular where angular one, angular two, angular three, and then it's gone, right? Like, so, so I, I would say it like for the average engineers things don't change that much, uh, for the other type of engineers, like, like us who we, who that we really care about, like how things run. like having a, an API where you can like query the state of your service. Like if like asking like, is my service running with an API that returns true or false, that is actually like a volume value that you can like, Transferring in your application, uh, that, that helps a lot on, on distributed systems. a lot of like our container infrastructure that we use internally at Meta is based on a lot of these ideas and technologies. [00:26:05] Anita: Yeah, thinking back to the CentOS 6 to 7 migration, I wasn't on like the any operating systems team at the time, but I was working with them and I also was on a team that had to migrate, figure out how to migrate our scripts and things over. so the one thing that did make it easy is that the OS team, uh, we deploy all our things using Chef. Maybe you've heard like Puppet and Ansible, that's our version, the Open Source Chef code. Um, and they wrote some really good documentation on how to migrate, from Runit, which is what we were using before to systemd. it was. a very large scale effort across multiple teams to kind of make sure their stuff works, do the OS upgrade and then get used to using systemd. [00:26:54] Jeremy: And so the, the team who is performing this migration, that's not the product team. That would be the, is it production engineering? Is that, is that what you called that? [00:27:09] Alvaro: So, so I was at the other side of, of that, of that table where I, the same as Anita, we were doing the migration more how most things work at Facebook is that it's a combination of the team that is responsible for the technology and the teams who uses the technology. Right. So we are a company, so we. Can like, move together. it's the same thing when you upgrade kernels. Most of the time the kernel team will do the effort to upgrade the kernels, and when they hit a roadblock or something, they will call for the owner of the service and the owner of the service can help debug uh, for the case of CentOS 6 and CentOS 7, eh, I was the PE at Instagram P Stand for Production Engineer. I was the PE at Instagram who did most of the migration of our fleet. So I, I rewrote most of the things because I understand how our things work, and the OS team provide like the support to understanding like, like when can I use some things, when can I use not other things. There was the equivalent of ChatGPT at those days, right? I was just ask them how to do stuff. They will gimme recipes. so, so it it's kind of like, like a mix, uh, work, uh, between those two teams. Uh, Anita, maybe you can talk a little bit about what you talk when you were upgrading the version of systemd and you found a bug? [00:28:23] Anita: Oh, the, like regular systemd upgrades nowadays? I, I'd say it's a lot easier these days. I mean, since the, at the time when we did the CentOS 6 to 7 migration, it was like, our fleet was a lot more fragmented. I'd say nowadays it's a lot more homogenous, which makes, which makes it easier. yeah, in the early versions there were some kind of obscure like, interactions with the kernel or like, um, we, we make pretty heavy use of systemd to run our container system. So, uh, if we run into any corner cases, um, like pretty obscure stuff sometimes, because we make pretty heavy use of the resource control properties. we usually those end up on the GitHub tracker, things like that. [00:29:13] Alvaro: That's the side effect of hiring very smart people. They do very smart things that are very hard to understand. (laughs) [00:29:21] Jeremy: That's kind of an interesting point about you, you saying you're using these, these features, you know, of the kernel very heavily because, you're kind of running your own infrastructure, I think even your own data centers, so you're kind of forced to go to this level, it sounds like just because of the sheer number of services you're running and the fact that like, you have to find a way to pack 'em all onto the same machine. Does that, does that sound right? [00:29:54] Anita: Yeah, I'd say at, at our scale, like it's more cost effective to act, own the servers and run all everything on it ourselves versus like, you know, leasing from, uh, AWS or something, which we've also explored in the past. But that also means we need more engineers to build and run things on our servers. [00:30:16] Jeremy: Yeah. So the, the distinction between, let's say you're a, a small company or a mid-size company and you pay AWS or, or Google to, to do your hosting for you, then you may not necessarily get exposed to a lot of the, the kernel level problems or even the Linux user space problems because you're, you're working at a higher level and that's why you don't necessarily encounter those kinds of things. [00:30:46] Anita: I'd say not, not necessarily. I think, once you get even like slightly lower in the stack where you're just like on your own server, Then you will want to start really looking into like what systemd's doing, how does it interact with other, uh, services, um, on your server, and how can you like connect these different features together? [00:31:08] Alvaro: One of the things that every developer who who works like has to worry about is log right, and that, and that's the first time that you actually start interacting with systemdata available, right? So you have to understand, like maybe it's not just tail /var/log foo, but log right. Maybe it's just journalctl and it's like, what? But yeah. [00:31:32] Jeremy: Yeah. That's a good point too about whenever you're working with the operating system, like you're deploying onto a Linux machine. Regardless of the distribution, if you're the person who's responsible for that, you, you need to know this stuff. Right. Otherwise it's kind of like, you're just putting stuff out there and hoping for the best. Yeah. [00:31:54] Alvaro: Yeah. There, there's also another thing that, I dunno if I've said this before, but, a lot of the times you don't have to know these technologies, but knowing them will help you do your work better. [00:32:05] Jeremy: Yeah, totally. I mean, I think that that applies to pretty much anything in, in development, right? I, I've heard often that some people will say, you take the level that you work at currently and then kind of just go down one level. Right. And then, so you can kind of see what's underneath that. And you don't necessarily need to keep digging, cuz eventually if you keep digging, you're getting into, you know, machine instructions and whatnot. But, um, Yeah, maybe just one level is, is good to, to give you a better sense of what's happening. Production engineers need to go lower in the stack to be able to debug applications [00:32:36] Alvaro: Um, every time that I, that I, that somebody ask me like, what is the difference between a PE and a SWE, uh, software engineer, production engineer, typical conference, uh, one of the biggest difference that I, that I say is that a PE would tends to ask a lot of questions going the same thing that you're saying, we're trying to go down the stack, right? And I always ask the following question, eh, do you know how time dot sleep is implemented? Right? Do you like, like if you, if you were to see time dot sleep on your Python program, like do you actually know what is doing under the hood, right? Is it a while true? While the time, is it doing a signal interrupt? Is it doing a select on a file descriptor with a timeout? Like what is it doing? would you be able to implement it? And the reason why I say this, because like when you're debugging an application, like somebody something's using your cpu, right? And then you see that line on your code, you. You can debug every single line of your code. But also there's a lot of value to say like, no time.sleep doesn't cause CPU to spike. Right. Because it's implemented in a way that it would not be possible to do that. Meta's linux user space team [00:33:39] Jeremy: Another thing that I think might be kind of interesting to talk about is, so Meta has this Linux user space team. And I, I wonder like including your role in it, but just as a whole, like what does that actually mean day to day? Like, what are the kinds of problems people are facing that, a user space team would be handling? [00:34:04] Anita: Hmm. It's kind of large cuz now that the team's grown out to encompass a few other things as well. But I'll focus on the Linux user space part. the team started off, on the software engineering side as the systemd developer team. So our job was really to contribute to the community. and both, you know, help with, problems and bugs that show up in upstream, um, while also bringing in new features, that we think would be useful both at Meta and to like, folks, in the Linux community as a whole. so we still play a heavy role in, systemd. We also support it, uh, within the fleet, like we roll out new releases and things like that. but we're also working on a few other projects in. User space. Um, BP filter is one of them, which is, uh, how can we convert like IP tables and network filtering, into BPF programs. Um, on the production engineering side, they focus a lot on, the community engagements. So in addition to supporting CentOS they also handle, or they like support several packages in Fedora, Debian and other distributions, really figuring out how we can, be a better member of the open source community, and, you know, make connections there and things like that. [00:35:30] Jeremy: And, and what was your, your process for getting in involved with this team? Because it sounded like maybe it either didn't exist at the start, or it was really small and, and now it's really, really grown. [00:35:44] Anita: So I was kind of the first member of like the systemd team, if you would call it that. Um, it spun out of containers. So my manager at the time, who's now my director, was he kind of made a call out on workplace looking for people who'd be willing to, contribute to systemd. He was, supporting the containers team at the time who after the CentOS 7 migration, they realized the potential that systemd could have, making their jobs a lot easier when it came to developing the container backend. and so along with that, they also needed someone to help, you know, fix bugs, put in new features and things that would, tie into the goals of the containers team. Um, and eventually now our host management team, I was the first person who reached out to him and said, Hey, I wanna give this a try. I was on the security team at the time and I always had dreams of going back into like, operating systems development and getting better at it. So yeah, that's kind of how I ended up in this space. A few years later, he decided, Hey, we should build a team and you should like hire some people who will also do this with you and increase our investments in systemd. so that's how we kind of built out the Linux user space team to encompass systemd and more like operating system, projects. Working on the internal security team vs the linux userspace team [00:37:12] Jeremy: And so when you were working on the security team before, was that on software internal to meta or were you also involved with, you know, the open source, user space side as well? [00:37:24] Anita: That was all internal at the time. Which was kind of a regret because there was a lot of stuff that I would've liked to talk about externally. But I think, moving to Linux user space made me realize like, oh, there's so much more potential in open source projects, in security, which is still like very closed source from our side. [00:37:48] Jeremy: And, and so like in your experience, what have been some of the big differences? I mean, definitely getting to talk about it is a big one. but like in terms of your day-to-day, what are the big differences between working on something internal versus something that that's open source? [00:38:04] Anita: I have to talk more with external folks. we're, pretty regular members of like the systemd like conclave sync that we have with the other upstream maintainers. Um, Oh yeah. There's a lot more like cross company or an external open source community building that we have to do. it kind of puts into perspective like how we manage our time and also our relationships versus like internally, like everyone you work with works at Meta. we kind of have, uh, some shared leadership at the top. it is a little faster to turn around, um, because, you know, you can just ping people on work chat. But the, all of the systems there are closed source. So, um, there's not like this swath of people outside that you can ask about when it comes to open source things. [00:38:58] Jeremy: You can't, can't look in, discord or whatever for questions about, internal meta infrastructure to other people. It's gotta be. all in the same place. Yeah. [00:39:10] Anita: Yeah. And I'd say with like the open source projects, there's a lot of potential to tap into, expertise and talent that just doesn't exist internally. That's what I found really valuable, cuz people have really great ideas outside as well. Um, and we should like, listen to them and figure out how to build that into their systems and also ours Alvaro's work at meta [00:39:31] Jeremy: And, Avaro, I don't know when you first started, was that on internal, infrastructure and tooling as well? [00:39:39] Alvaro: Yeah, so, um, my path is different than Anita and actually my path and Anita doesn't share any common edges. so I, I don't work at the user space or the Linux kernel or anything. I always work in teams adjacent to it. Uh, but. It's always been very interesting to know these technologies, right? So I started working on Instagram and then I did a lot of the work in containers in migrations at where, where we build psystemd and also like getting to know more about that technologies. We did, uh, a small pilot on using casync which is a very old tool that like, it's only for the fans, (laughs) it's still on systemd repository, I dunno if that's used or anything, but it was like a very cool idea of how to distribute images. Uh, and in Instagram we do very fast deployments. So we deploy, or back then we used to deploy the source code, of Instagram every seven minutes, right? So every seven minutes, every time that a developer did commit to master, uh, we pushed that into production in less than an hour and we did that every seven minutes. So we were like planning to, to use those technologies for that. Um, And then I moved to another team inside of Meta, which is called Cloud Foundation, where we do a lot of like cloud infrastructure, uh, like public cloud. Uh, that's the area, that is very much not talked much about. but I keep like contributing to, to like this world. never really work on, on, on those teams inside of Meta. [00:41:11] Jeremy: So I guess it's your, your team is responsible for working with the engineers who work on product to be able to take their code and, and deploy it. And it's kind of like you work in combination with the user space team or the systemd team to make sure that what you're doing can be supported by them. Is that kind of an accurate description? [00:41:35] Alvaro: Yeah, that's, that's, that's definitely not an exhaustive description, but yeah, that's the, we, we, we do that. Public cloud at meta [00:41:42] Jeremy: It's interesting that you're, you're talking about public cloud now. So when you move to public cloud, are you using VMs kind of like you would in a data center, or is it, you're actually looking at the more managed services and things like that? [00:41:57] Alvaro: So I'm gonna take a small detour and say like, something that is funny. When I got hired by Facebook, we were working on Instagram. So Instagram was just an acquisition for, for, for meta right. And Instagram ran on AWS. So why wasn't the original team who were moving stuff from AWS into the internal data centers at Meta? On the team that I work now, uh, we work to support workloads that cannot run on meta infrastructure either for legal reasons, or for, for practical reasons. Right, because we don't have the hardware, uh, capability or legal resource because the government ask us, like, this cannot be on, on your data center or security, right? We don't wanna run this, this binary that we don't understand on our network. We do want to work in isolation. and the same thing that Anita was saying, where their team are building the common ways of using these tools, like systemd, and user space. we do the same thing, but for using cloud technologies. So in a way that is more similar to meta. So that's the detour now the, to answer your actual question, uh, we do a potpourri of things, right? So since we manage infrastructure and then teams deploy their code, they are better suited to know how their code, gets to run. Uh, with that said, we do have our preferred ways of how you would run stuff. and it's a combination of user containers, uh, open source containers, and and also like VMs There's a big difference between VMs and meta and in public cloud [00:43:23] Jeremy: So it, it sounds like in this case, you're, you're still using VMs even in public cloud, so the way that you do deployments, the location is different, but the actual software and infrastructure that you're running is, is similar. [00:43:39] Alvaro: So there's there's a lot of difference. Between the two things, right. So, the uniformity of hardware at Facebook, or our data centers, makes deploying things very simple, right? while in, in the cloud, you first, you don't get that uniformity because everybody like builds their AMIs as, as they want to build it. But also like a meta, we use, one operating system, in the cloud, you are a little bit more free of what you want. And one of the reasons why you want to go to the cloud is because you can run stuff on. On, on, on the way that that meta will run. Right? So, so even though we have something that are similar, it's not as simple like, oh, just change your deployment from like this data center to like whatever us is one think you would run. [00:44:28] Jeremy: Can, can you give an example of something where you wouldn't be able to run it on Meta's, image that they would choose to go to public cloud to run a different image for? [00:44:41] Alvaro: So, um, so in, in general, like if the government ask us, like, this is not necessarily like, like the US government, right? So, and like if the government ask us like, hey, like you need to keep this transaction on, on our territory, right? for logs, for all the reasons, for whatever, right? like, and, and we wanted to be in the place, we would have to comply. And that's where we will probably use this, this kind of technologies security is another one that is pretty good. And the other one, it is like, in it general, like, like, uh, like disaster recovery, right? If, if meta is down in a way where we cannot communicate with each other using metas technologies, right? Like you would need to have like a bootstrap point. [00:45:23] Jeremy: Is, is it the case where you are not able to put, uh, meta's image up into public cloud? Because you were, The examples you gave was more about location, right? Where you're saying we need to host in public cloud because it needs to be in this country, but then I think you were also saying the, the actual images you would use on AWS right. Would be. I don't know, maybe you'd be using Amazon Linux or maybe you'd be using a different, os entirely. And is that mainly because you're just not able to deploy the same images you have, uh, in-house? [00:46:03] Alvaro: So in, in, in general, uh, this is kind of like very hard to to explain, but, but, uh, if, if we would have to deploy code to a, machine and that machine would, would, would be accessed by people who are not like meta employees and we have no way of getting them to sign NDAs then we would not deploy meta code into that machine. Uh, because that's Sorry. No, not Pi PI's personal information. I was, uh, ip, sorry, that's that's the word. Yeah. Yeah. [00:46:31] Jeremy: So, okay. So if there's, so if you're in public cloud, there's certain things that you just won't put there just because. Those are only allowed to run on Metas own infrastructure. [00:46:44] Alvaro: Yeah Meta's bootcamp [00:46:44] Jeremy: Earlier you were talking about Instagram was an acquisition and they were in AWS were, were you there at the time or you joined, after? [00:46:54] Alvaro: No, I joined. I joined after I joined to, to meta. The way that Meta does hiring, at least for my area, is that you get hired as a production engineer, but you don't get assigned to a team. So you go through a process called boot camp where you get to try different teams and figure out what things you like. I try a couple of different teams, turns out that I like it to work at the Instagram. [00:47:15] Jeremy: And so at that time they were already running on Facebook's internal infrastructure and they had migrated off of AWS [00:47:24] Alvaro: We were on the process of finishing that migration. [00:47:28] Jeremy: So by the time you were there, yeah. Basically get, getting everything out of AWS and then into meta's internal. [00:47:35] Alvaro: Yeah. And, and, and everything is, is a very hard terms to, to define. Uh, I would say like, like most of all, like the bulk of things we were putting it in inside, like, at least what we call our Django servers. Like they were all just moving into internal infrastructure. How Anita started [00:47:52] Jeremy: This kind of touches on the, the whole boot camp thing, but, Anita, I saw that you, you interned at Facebook and then you took a position there, when you ended up taking a position, I'm kind of curious what were the different projects you looked at or, or how did you end up settling on the one you chose? [00:48:11] Anita: Yeah, I interned, um, and I joined straight out of university. I went into bootcamp similar to Alvaro and I got the chance to explore several different teams. I knew I was never gonna do UI that was just like not my thing. Um, so I focused, uh, my search on all like backend infrastructure teams. Um, obviously security, uh, was one of them because that's the team I was in interning on. Um, I also explored, the kind of testing infra team. we call it sandcastle. It runs our internal like unit tests and things. and I also explored one of the, ads infrastructure backend teams. so it was mainly just, you know, getting to know the people, um, seeing which projects appealed to me the most. Um, and then, you know, I kind of chose based on that, I, I think I've always chosen. My work based on how interesting the project sounded, uh, which has worked out in my favor as far as I could tell. How Alvaro started [00:49:14] Jeremy: How, how about, you Alvaro what were the, the different projects you looked at when you first started? [00:49:20] Alvaro: So, As a PE you do have a more restrictive, uh, number of teams that you can, that you can join. Uh, like I don't get an option to work in ui. Not that I wanted, but, (laughs) I, I, it's, it's so long ago. Uh, I remember I did look at, um, at MySQL as a team, uh, that was also one of the cool team. Uh, we had at that time, uh, distribute, uh, engine, uh, to, to run work, like if, like celery or something like that. But internally, I really like the constable distribute like workloads, um, and. I can't remember. I think I did put, come with the Messenger team, that I, I ended up having like a good relationship with their TL their tech lead, uh, but never actually like joined that team. And I believe because she have me have a, a PHP task and it was like, no, I'm not down for doing PHP [00:50:20] Jeremy: Only Python. Huh? [00:50:21] Alvaro: Exactly. Python. Python. Because it's just above C level. Psystemd [00:50:27] Jeremy: I mean related to that, you, you started the, the psystemd project. And so I wonder if you could explain what the context behind that was. Like what sparked I need to make this, this library? [00:50:41] Alvaro: So it's, it's a confluence of two things. The first one, it is like, again, if I see something that doesn't have a Python API for it, I. Feels the strong urge to create one. I have done this a couple of times, mostly internally, but also externally. that was one. And when, while we were doing the migration, I, I, I honestly, I really hate text processing. So the classical thing was like, if you wanna know if your application's running, you do systemctl, you shell out to systemctl status, then parse the output, find the, find the status column. Okay. And I didn't like that. And I start reading about like, systemd uh, and I got in contact with the or I saw like the dbus implementation of systemd. And that was, I thought that was a very interesting idea how that opened all the doors. Right? Uh, so I got a demo working like in a couple of hours. and then I said like, okay, now how do we make this pythonic? And then I created that and I just created, again, just for migrating Instagram. That was the idea. Then, uh, one of the team members who work with Anita, but also one who doesn't work with us anymore, they saw this and said like, Hey, like this looks like a good thing to open source it. So it was like, sure, like I'm happy to opensource it. So we opensource it and then we went to all System Go, which is a very nice interesting conference that happened in Berlin where like all the head for like user space get together. and, and I talk about it and people seems to like it, and that's the story of that. [00:52:15] Jeremy: And so this was replacing, I guess, like you were saying, a lot of people were shelling out and running cat commands and things like that from their Python scripts. And this was meant to be a layer on top of that. [00:52:30] Alvaro: Yes. So it, it does a couple of things. So first of all, inspecting the processes or, or like the services, getting that information out. That's one of the main usage. But also like starting or stopping or like doing all that operations that you want to do. Uh, knowing the state of, of, of services, uh, that's also another thing that people take advantage of. The other thing that people take advantage of is to modify the status of the, of the processes at runtime, like changing properties, like increasing or decreasing the CPU threshold. because systemd provides a very nice API or interface to modify the cgroups properties that otherwise you would need to kind of understand the tree structure that, uh, that, that whatever. so that's what people tend to use this mostly internally. [00:53:23] Jeremy: And so it, it sounds like at least on the production engineering side, you're primarily working in, in Python. is that something that's the teams before were using Python and so everybody just continues using Python? Or is there kind of like more structure or thought put into that? [00:53:41] Alvaro: I would say the following thing about it, um, like in in general, uh, there's, there's not a direction on which language you should use. It's pretty natural which language you should use, but with without said, there's not a Potpourri of languages inside of, of meta. most teams use c c plus plus Python and rust and that's it. There's go, that appears every once in a while there. Sorry, I should not talk about this like, like, or talk like this about this, but eh, there are team who are actually like very fond of go and they use it and they contribute a lot to that space. It's just not. That much, uh, use internally. I have always gravitated towards Python. That has been the language that teach me how to do real coding. and that's the language that got me a job at meta. So I tends to work mostly on that. Yeah. [00:54:31] Anita: Hey, you forgot hack Alvaro. Our web services. (laughs) [00:54:37] Alvaro: Yes. Yes. Uh, so I would say like, the most used language at Meta is actually PHP it's just like used by, by one particular product. That, that is the Facebook product. Yes. So our, our entire web interface, eh, or web stack uses a combination of hack, which is a compiled php, which is better than uncompiled php, also known as vanilla php. Uh, there is a lot of like GraphQL, React, and, I think that's it. [00:55:07] Anita: Infrastructure is largely like c plus plus Python, and now Rust is getting a huge following as well. [00:55:15] Alvaro: Yeah. Like, like Rust. Rust is, I I would say it's the fastest growing language inside, inside of Meta. And the thing is that there is also what you call like the bootstrap problem. Um, there's like today, if I wanted do my python program and I have a function that fails one every three times, I can add a decorator that is retry, that retries every time that something fails for a timeout, right? And that's built in and it's there used and it's documented. And I can look at source code that uses this to understand how, how works. When you start with a new language, you don't get the things. So people have to build them. So there's the bootstrap problem. [00:55:55] Jeremy: That's also an opportunity as well, right? Like if you are the ones building sort of the foundations, then you, you have an opportunity to be the ones who have the core libraries that people are, are using every day. Whereas if a language has been around a while, it's kind of, some of that stuff is already set, right? And you may or may not like the APIs, but that's what people use. So that's what we, that's what we do. One of the last things I'd kind of like to ask, so Anita, you moved into management in just the last year or two or so, and I'm kind of curious what your experience has. Been like, was that a conscious decision where you wanted to go from engineering, uh, software engineering to management? Or maybe you could talk a little bit to that. [00:56:50] Anita: Oh man, it hasn't even been a year yet. I feel like so much time has passed already. Uh, no, I never had any plans to go into management. I love being an engineer. I love being in the code. but, I'd say my, my current manager and uh, my director, you know, who hired me into the Linux user space team, kind of. Sold me a little bit on the idea of like, Hey, if you wanna like, keep pushing more projects, you wanna build out the team that you wanna see working on these things, um, you can consider going into management, taking it slow in a, what we call a T L M role, which is like a tech lead manager, role where you kind of spend some time doing development, and leading the team while also supporting, the engineers as a manager doing the hiring and the relationship building and things that you do in management. so that actually worked out quite well for me, despite Alvaro shaking his head at first. I really enjoyed being able to split my time into kind of the key projects that I really wanted to work on, um, while also supporting the engineers and having them build out, um, New features in systemd and kind of getting their own foothold in the community as well. but I'd say like in the past few months, it's been pretty crazy. I, I probably naively thought that I'd have a little more control over, I don't know. My destiny has a manager and that's like a hundred percent not true. (laughs) Um, you're, you are kind of at both the whims of your engineers and also the people above you. And you kind of have to strike that balance. But, um, my favorite part still, just being able to hide the nasty stuff away from the engineers, let them focus on their work and enjoy what engineers wanna do best, which is just like coding, designing, and like, you know, doing fun, open source stuff. [00:58:56] Alvaro: I will say like, Anita may laugh about me for, because like she's on the other side, but one thing that I least I find very cool at Meta is that managers are not seen as your boss. Right? They're still like a teammate who just basically has a different roles. This is why like when you're an engineer, you can transition to be a manager and that's, it's not considered a promotion that's considered like a, a like an horizontal step and vice versa, you can come back, right. from a manager into, into like an engineer. Yeah. [00:59:25] Jeremy: That was what I would say. And, uh, I guess when you were shaking your head, I'm guessing this means you, you don't wanna become a manager anytime soon. [00:59:35] Alvaro: So I, I never closed the door on that, but I was checking my head to the work of a tlm. Right. Uh, so the tlm TL stands for Tech Lead and m stands for manager. so you're basically both, but with the time of only one. So, uh, Anita was able to pull it off. I don't think I would be able to pull up like, double duty on that. [00:59:56] Anita: Yeah. Unfortunately I support too many people now to do the TL stuff as deeply as I used to, but I still have find some time to code a little bit here and there. [01:00:09] Jeremy: So you were talking a little bit about how things have been crazy the last few months. If, if someone is making the transition into management, like what are the kinds of things that you would tell them to, to look out for or to be aware that's coming? [01:00:27] Anita: Um, when I, before I transitioned, I talked to a lot of managers about like, oh, what was like, you know, the hardest part about management. And they all have kind of their own horror story about what happened to them when they transitioned or even like, difficult things that happened to them during management. I'd say don't expect it to be easy. you're gonna make a lot of mistakes usually in like the interpersonal relationship side, and it's really just about learning how to learn from your mistakes, pick back up and do better next time. I think, um, you know, if people like books, the Making of a Manager by Julie Jo, she was a designer, and also a manager, at then Facebook. She's no longer here. but she has a really good book on like what you can expect when you transition into management. the other thing I'd say is don't go into management without having a management chain that you can really trust. I'd say that can kind of make or break your first few years as a manager, whether you'll enjoy it or not, or even like whether you'll be able to get through the hard times. [01:01:42] Jeremy: Good point. Yeah. I mean, I think whenever you take on anything new, right? Having the support of the people above you or just around you as well is like, that makes such a big difference, right? Even like the situation can be bad, but if everyone is supportive, then you can, you can get through it. [01:02:02] Anita: Yeah, that's absolutely right. [01:02:04] Jeremy: I think that's a good place to wrap up unless either of you have anything else that you thought we should have talked about. so if people want to check out what you're working on, what you're up to, um, how can they find you? [01:02:20] Anita: well, I guess we're both on matrix now. Uh, I'm Anita Zha on Matrix, a n i t a z h A. we both have Twitters as well. If you just search up our names. Nope. Yeah, you're on Twitter. Yeah. [01:02:36] Alvaro: There is an impostor with my name, right? Actually it's not an impostor. It's just me. I just never log into Twitter anymore. [01:02:40] Anita: We both have Mastodon now as well? Yes. Fosstodon we're both frequently at conferences as well. what's, what's coming up next? I think it's, uh, devconf cZ in the Czech Republic. and then, uh, all systems go in September. [01:02:57] Alvaro: You sent something in Canada? [01:03:01] Anita: Oh, yeah. L F F L F S M M B P F is coming up. That's a, that's more of a kernel conference, though. [01:03:09] Alvaro: An acryonym that is longer than the actual word. Yes. Yeah. [01:03:12] Jeremy: That's a lot. That's a lot of letters. [01:03:14] Anita: It's a, it's a mouthful. (laughs) [01:03:18] Jeremy: That's very neat that you get to, to kind of go to all these different conferences and, and actually get, to meet the people in, in person that are, you know, working with the same things you are and, get to be in the same room. I think that's a, that's a real privilege. Yeah. [01:03:35] Anita: Yeah, for sure. [01:03:38] Jeremy: All right. Well, Anita and Alvaro, thank you so much for chatting with me today. [01:03:43] Alvaro: Thank you for hosting. [01:03:45] Anita: Yeah. Thanks for the opportunity. This is a lot of fun.
What you'll learn in this episode: How Jeremy found that landscape architecture translated to jewelry making Why he was drawn to working with paper, and how he came up with his distinctive technique Why jewelry is a powerful object to preserve memories Jeremy's design process and how he creates a unique piece of jewelry for each client About Jeremy May Jeremy May is a Landscape Architect born in Suffolk, UK. After having worked in his field of design for over 10 years, Jeremy created the first paper ring in September 2007. Jeremy's literary jewels were first introduced to the public in January 2009, transforming the paper that aspires to last beautifully and bring joy, colour, and love to all those sustainably minded individuals. The jewels have been presented in London, Paris, Osaka, Athens, Hamburg and Saint Petersburg. Currently Jeremy is working on private commissions and on creating collections of jewels under a thematology to be presented in exhibitions around the world. He lives and works in London. Additional Resources: Jermey's Website Jermey's Instagram Photos available on TheJewelryJourney.com Transcript: It takes an adventurous jewelry designer to eschew traditional materials like metal and diamonds in favor of paper. But as a former landscape architect who left his career for more thrilling creative pursuits, Jeremy May was up for the challenge. He joined the Jewelry Journey Podcast to talk about why he was drawn to paper when he first discovered jewelry making; how he came up with his one-of-a-kind technique; and how he works with clients to create the perfect, meaningful piece. Read the episode transcript here. Sharon: Hello, everyone. Welcome to the Jewelry Journey Podcast. This is the second part of a two-part episode. If you haven't heard part one, please head to TheJewelryJourney.com. Today, speaking to us from London is Jeremy May, who creates unique literary jewels from pages of vintage books. He transforms these books into unique pieces of paper jewelry with quotes carefully cut from the book. Each piece is unique to the wearer. We will hear more about the books and how he creates his unique jewels today. Welcome back. So, you're proud of everything you do, you said. Have you ever told a client, “That book isn't the right book for you”? Jeremy: Yeah. I've had clients come and say, “I'd like you to use this book,” and I'm like, “No, not really. Can you think of something else?” Sharon: You don't think the book reflects the person they want to give it to? It's too blah? Jeremy: I haven't really thought it through. If they say, “I want you to reuse this book because of this and this,” then I'll say, “O.K., that's fine. It's not my personal choice. I don't particularly like that style of writing. I don't like that author,” but sometimes you get a feeling they want me to make a piece of jewelry and they haven't really thought through what the title is or what it means or what the story represents. Sometimes after we've had a chat and I've explained my feelings about the book, they go, “O.K., yeah, you're absolutely right.” They come back with another title and I go, “O.K., that's great.” Sharon: So they listen to you, basically. Besides the jewelry, they listen to you. You describe your jewels as sculptural, and you haven't put them together. Is that something you intend to do? Jeremy: That's right, to put them together. Sharon: Put them together to make a larger sculpture. Do you intend to do that? Jeremy: Yeah, potentially. Sometimes I think about things and they don't come to fruition for years. I'm a very messy designer. I don't have notebooks. I'm not that way. I just have loose pieces of paper, much to my wife's annoyance. I'll take a piece of paper and just sketch. I have an idea, and then I'll put that in a drawer. I'll be looking for something six months later and I'll go, “Oh, yeah, I forgot about it.” Sometimes it takes a while. I would love to make something bigger, actually combining books together to make one piece. Yes, absolutely. It's definitely possible. Sharon: The people who find you are mostly men. What happens when a book is in a different language, like you described how you were in Japan and you had an exhibit? What do you do when it's in a different language? Jeremy: I find a translation online, or I can go and buy another book in English. The majority of books—this sounds very pompous—are in English, and then they've been translated into another language. When someone comes to me, I can go, “Yeah,” and I can find that quite easily. Basically, I find a translation in English. Sharon: That's interesting. What kind of creative outlets did you think about when you were leaving architecture? Jeremy: How do you mean? Sharon: You had mentioned that you left architecture because you felt you could do other things and you'd done it for 12 years. Jeremy: Yeah. Sharon: Did you think about other creative outlets you could do instead? Jeremy: No, the jewelry came at the time when I thought I was happy doing landscape architecture with design. I realized by working with jewelry and creating jewelry that I was happier in a way. I had more creativity, more ideas, more output. I was like, “Oh, there's a bright light. I'm just going to go over here.” I was quite happy where I was until I was given something else to take my attention. I didn't think about anything else. Sharon: You're following the shiny penny. Jeremy: Yes. Sharon: Did you immediately transition from architecture to jewelry? The way you described it, it didn't sound like you did both for 10 years and then segued to jewelry. Jeremy: No, I created a few pieces of jewelry over about two years. I was still working in an office as a landscape architect, and slowly I was spending more time making jewelry and experimenting. Then it came to 2008 when the recession happened here in the U.K., and a lot of my projects I was working on with Watkins Dally Architects were put on hold. Then I was given the opportunity to spend more time working on my new passion. I worked on that for about six months. I was so enthusiastic about it, but I wasn't getting enough work. I wasn't paying the bills, let's say. So, I went back and worked with Watkins Dally Architects for another year and was still working on jewelry at night. After that, I went into creating my jewelry full time. So, there was a transition of a few years. Sharon: What made you decide on jewelry? A lot of people have it as a hobby. You came home from your landscape architecture job during the day and then did jewelry in the evening. Jeremy: Yes. Sharon: Describe your feelings there. Jeremy: I felt so passionate about it. This is what I wanted to do. This was my calling, if you like. It's what really got me excited and got me out of bed in the morning. I was really happy about it. It was a big leap of faith, and my wife was super understanding. I just went for it and so far, it's paid off. Sharon: You have an understanding wife. I probably would be saying to my husband to go get a job. You mentioned that you ask your clients for their favorite quotes within the book. Is that correct? Jeremy: I ask them for their quotes. I also take my own quotes. Sharon: It's encased in the jewelry then, if I'm understanding it correctly. Right? Jeremy: I take the book as the foundation for the design. I then take the quote as the detailing of the jewel. Sharon: Does the quote come directly from the book? Jeremy: Yes. There will be a particular quote I get inspired by to complete the piece of jewelry. It's also within the jewel. Sometimes it appears on the surface and sometimes it's inside. There have been times when clients have asked me for a particular quote to appear on the actual jewel so it's visible, which is very passionate to them. It's a combination of the two, I would say. Sharon: If it's in the jewel, if it's not on the outside, what's their feeling? Do they get upset or do they trust you that it's there? Jeremy: They trust me, which is amazing. Sharon: How do you get more color? Do you get more color into the jewel if your client wants more color? Jeremy: Yes, I have two ways of doing that. One is I stain or dye the paper if I want a particular shade or color I can't find using colored paper. That's the other way I add color to my jewels, from colored paper, which I find everywhere with wrapping paper. I find it and store it. I have drawers of different colored paper. Sharon; Do you use that paper? Jeremy: Yeah. Sharon: Has anybody ever come to you with a comic book and said, “Do something with this?” Jeremy: No, they haven't, but I have used Japanese manga books. They were absolutely amazing to use. Sharon: Why? Jeremy: Because they have so much depth and color and texture. When you're laminating from a book using just text, you have the color of the paper and then you have the black text. When you're using a coloring book or a manga book, then the actual color from the ink is there. You end up with this very multicolored surface and technique. It's much more vibrant. Sharon: It sounds very nice. Jeremy: Yeah, it's super nice. I was fortunate enough to go to Japan, and I came back with a second suitcase. Sharon: Do you have favorite books you like to do, favorite jewels you like to do? What are your thoughts about that? Jeremy: No. I go to secondhand bookshops and charity bookshops. I go there every week and look for whatever takes my fancy. I'm a bit of a magpie when it comes to that. Then books will sit on my bookshelf. This is for when I'm making jewels for my own collection to exhibit in museums and galleries. They may sit there for a few years or a few months, and then I'll be inspired to take that book and read it. I look to choose books that I would never normally find. That's why I like to go to secondhand bookshops, because you never know what you're going to find. It's there, and you can sit there and actually look. When you to go to a new bookshop, they're all pristine and perfect and in alphabetical order and everything. I like to go rummaging. I like to go through big piles and boxes of books and discover something I would never find normally by going online or into a new bookshop. Sharon: When a client brings you a book you haven't read, do you read the book first? Jeremy: Absolutely. I read all of the books. Even if I've read it before, I read it again because it gives different emotions, which I then translate into the design. I always read the book, no matter if I've read it two or three times before. Sharon: When you say you are passionate about jewelry, how does that compare to passion for landscape architecture? It sounds like that really caught your fancy in the beginning. Jeremy: Yes, the similarities between the two are that they both change people's lives. I think with landscape architecture, you're working with the greater public and you're designing an environment which is going to change their lives for the better, hopefully. With jewelry, you're creating something beautiful which is going to change someone's life. That's just one person's life, but they're quite similar. Sharon: In the beginning, did your passion to change people's lives with landscape architecture influence the way you do jewelry? Jeremy: In the beginning, yes. I was designing urban parks and working directly with the public. You have lots of conversations with them and you work up their exact needs. Sometimes a lot of people don't know what they need, so you need to ask them other questions to find out about their lives and how they're going to use the landscape. Then you come up with a design that way. Sharon: If somebody needs a jewel and comes to you and says, “I need a jewel for an anniversary,” what do you ask? Tell us what you ask. Jeremy: It's quite funny because there are a lot of transferrable things from working with landscape architecture and designing a park with making a piece of jewelry. I ask people to send a small bio about who it's going to be made for so I can actually understand who they are. Otherwise, I'm designing blind. I get inspired. I take a lot of inspiration and discovery from the text, but I also need to understand who I'm creating for because all my jewelry is completely unique. I'm not producing the same ring or necklace over and over again, so I want to know who I'm designing for. I don't ask specific questions. I want the person to explain to me and give me little nuggets of information that fill me with joy. When a gentleman comes to me and says, “I want a ring for my wife,” you go up into the clouds and he's like, “Yes, she's lovely.” I love that. I really love that. Sharon: Do people find it hard to write about another person? Jeremy: No, I have never noticed that because it's about your loved one. It's someone you deeply care about that you want to have this piece of jewelry designed for them. I've never had anyone say, “I don't know.” It's very spontaneous, I think. I've had pages sometimes, and sometimes it's just been a couple of paragraphs. Sharon: I can see writing about somebody else. If I had to write about myself, that would be harder. Jeremy: Yeah, but sometimes people give a little biography. Sometimes people want me to use a book that was given to them by their father and the father has passed away. They'll explain more about their father or their mother or someone who's passed away and explain why this book is so personal to them. They may say a little bit about themselves, but there's more about why they want this book used. You end up designing a ring for that person, but you're also understanding where that desire to have that jewelry comes from. It's for the passing of a dear friend or a relative. It all adds into the soup. Sharon: The mixture. Jeremy: Yeah, the mixture of the design. All those things are swimming around in my head. That's what I really love about it. Sharon: Can you describe how it is when you jump out of bed, or do you jump out of bed? What do you start or how? Jeremy: In the morning, it depends on the day, but most of the days I'm ready to go. There are some times when I take a weekend off and I'm super, super eager to get back into the studio on Monday morning. I have itchy fingers. Sharon: Do you ever have kids—let's say their parent comes and they say this is for their mom, but the kids give the book and want you to create the jewel? Jeremy: Yes, yeah. Sharon: Thank you so much. I really appreciate it. It's great. Your work is in a collection, you said. Jeremy: Yes, I am. I'm about to go off now to the private view. That's happening now. I'm super excited about that. That's going to happen over the next few days. I'm super, super excited. Sharon: I wish I could be there to see all your jewels. Another year. Jeremy, thank you very much. Jeremy: Thank you very much. It's been an honor. Sharon: We will have photos posted on the website. Please head to TheJewelryJourney.com to check them out. Thank you again for listening. Please leave us a rating and review so we can help others start their own jewelry journey.
What you'll learn in this episode: How Jeremy found that landscape architecture translated to jewelry making Why he was drawn to working with paper, and how he came up with his distinctive technique Why jewelry is a powerful object to preserve memories Jeremy's design process and how he creates a unique piece of jewelry for each client About Jeremy May Jeremy May is a Landscape Architect born in Suffolk, UK. After having worked in his field of design for over 10 years, Jeremy created the first paper ring in September 2007. Jeremy's literary jewels were first introduced to the public in January 2009, transforming the paper that aspires to last beautifully and bring joy, colour, and love to all those sustainably minded individuals. The jewels have been presented in London, Paris, Osaka, Athens, Hamburg and Saint Petersburg. Currently Jeremy is working on private commissions and on creating collections of jewels under a thematology to be presented in exhibitions around the world. He lives and works in London. Additional Resources: Jermey's Website Jermey's Instagram Photos available on TheJewelryJourney.com Transcript: It takes an adventurous jewelry designer to eschew traditional materials like metal and diamonds in favor of paper. But as a former landscape architect who left his career for more thrilling creative pursuits, Jeremy May was up for the challenge. He joined the Jewelry Journey Podcast to talk about why he was drawn to paper when he first discovered jewelry making; how he came up with his one-of-a-kind technique; and how he works with clients to create the perfect, meaningful piece. Read the episode transcript here. Sharon: Hello, everyone. Welcome to the Jewelry Journey Podcast. This is the first part of a two-part episode. Please make sure you subscribe so you can hear part two as soon as it's released later this week. Today, speaking to us from London is Jeremy May, who creates unique literary jewels from pages of vintage books. He transforms these books into unique pieces of paper jewelry with quotes carefully cut from the book. Each piece is unique to the wearer. We will hear more about the books and how he creates his unique jewels today. Jeremy, welcome to the program. Jeremy: Hello. It's an honor and a delight to speak to you. Sharon: Tell us about your jewelry journey. How did you start? Jeremy: I started in 2007. I made my first ring for my wife for our first wedding anniversary. I made it from a newspaper, and that's basically how it all started for me in the jewelry world. I studied as a landscape architect, and I did that for about 12 years. When I made the first ring, that was like the catalyst. I saw my new profession, and I decided that landscape architecture was not for me. I started making jewelry. Sharon: With landscape architecture, had it been in the back of your mind, “I have to find something else”? Jeremy: I started landscape architecture from a very young age. My parents were both in the horticulture world, so it was in the forefront of my mind. My grandfather was a head gardener, so plants and horticulture were always at the forefront of my mind. It was second nature. For me, a progression into landscape architecture was great because I loved art and design, and that was my output, if you like, for creativity. From a very young age, about the age of 12 or 13, I decided I was going to be a landscape architect. I researched and worked out how I was going to do this, what courses and classes I needed to take. I ended up going to Greenwich University, and it was very much an art-based course. It was less about horticulture and plants and more about design. I loved it; I adored it, actually. It was less writing and exam-based and more about design and making artwork, really. I was in my element there, and then you get to the end of the course and go, “O.K., now I have to go and get a job. That's fine.” For 10 years, I loved it; I really did. I was working with the public. I was creating urban parks in London and having so much fun, but my biggest problem was that the projects were taking too long. They were taking years and years to come to fruition. I started to get itchy feet, so I decided I was going to change, but I didn't know what and I didn't know how. This went on for two years. In the meantime, I made my first ring for Eva, and then it was like, “Oh wow! I can do this.” I had never thought about jewelry before. I had never thought there was this whole world out there. I had no understanding of it, but I knew I was getting excited about it. I was like a dog with a bone. I went to see friends who were jewelers and watchmakers and product designers, and I asked them questions. I had lots of chats with them and they helped me a lot. They gave me books and introduced me to other people, but everything they were saying wasn't interesting to me. They were showing me things that had already been done by people who had already worked with metal, with pearls, with diamonds, and it didn't really interest me. I really wanted to understand paper, so people were showing me origami and folded paper. I was like, “O.K., that's great, but it's not really what I'm interested in.” I wanted to discover something new. I wanted to invent something or do something that no one else was really doing. I was just playing around, and I started stacking paper up. It was like a eureka moment. I compressed them under high pressure, and then it was like, “Oh wow! That works!” It was almost like turning paper back into wood. I created a material—it was a bit like plywood—but I wasn't using any glues or resins. It was also purely natural. It was just paper. I was like, “Oh wow! If I do it like this and I do that, maybe I can make a ring out of this.” That's basically how I started. Sharon: With all the art they taught you, did they touch on jewelry at all? Jeremy: No, never. It was fine art. It was painting. It was a little bit of collage, and we were working with clay. We were working with a lot of materials. We were given the opportunity to experiment and do anything to get the mind working, to be inspired and then to help you come up with a design. They were trying to get you to have a catalyst to get you inspired. Sharon: Inspired for landscape architecture work or everything? Jeremy: Well, it was good training for anything, but in this situation it was for landscape architecture. If ever you got stuck with a design and you didn't know where to go, they were saying, “Why don't you do a collage? Why don't you do a painting? Why don't you make something with your hands?” It would help you become un-stuck and inspire you. At university, my teachers were constantly saying, “Think about something new. Think about something different. Don't go down the same route. Don't copy.” That formed me. What molded me into me now is that I don't want to copy people. I don't want to copy a design. I don't want to copy my same design. I want each piece I make to be unique and one-off. It bores me, in a way, to repeat myself. I can't do it. If someone says to me, “Oh, I like that ring. Can you make one the same?” No, I can't. Sharon: That's interesting. When you went to these jewelers to ask them their opinion or get ideas, you already had it in mind that you wanted to do something different. Jeremy: Yeah, because I didn't know what it was to work with paper. I thought about working with wood or some other material. They gave me books, “This is what other people have done,” and I was like, “That's great, but it's not what I want.” I wasn't inspired. It wasn't like, “Oh, wow! Maybe I can work on that and come up with another solution, another idea.” When I went away, I was a bit disappointed and frustrated, but after sitting there daydreaming—which is one of the things I love, just to daydream, to have the opportunity to sit back and look out the window and let your mind wander. I find a lot of solutions and problems are solved that way. Yes, my friends helped me a lot in showing me what I didn't want to do. Sharon: These people, these jewelers, probably thought you were nuts when you mentioned paper. Jeremy: Yes, in a way. They were classically trained jewelers working with precious metals and I said, “O.K., I want to do something different. I don't know what I want to do. Can you help me? I really want to work with paper because paper is the first material for a wedding anniversary.” That was my starting point. From there, it was like, “O.K., maybe you could do this. Maybe you could that,” and I was like, “O.K.” Sharon: How do you choose the paper and the book? If I come to you with a book, do you say, “O.K., I'll take this book and use it,” or do you have input? Jeremy: Clients come to me and say, “I want you to make me a piece of jewelry.” Some of them will say, “This is the book I want you to use,” and I go, “O.K., that's great.” Other clients say, “I don't know what book I want to use. Can you help me?” and I give them parameters. I say, “If you have a thick book, then the piece of jewelry can be bigger. If it's thin, then you can do a smaller piece.” It comes down to the quality of the book, whether it's hardcover or softcover, the age of the book, the country the book was published in, because that can lead to different qualities of paper. You have a chat with the client about that, but then it comes down to the clients, what book is personal to them. Books are very, very personal, and it means a lot to them to have a particular novel or author. Sharon: Do you have a library yourself that you pull from and say, “How about this book?” Jeremy: Yeah, absolutely I do. My shelves here are absolutely full. I can say, “What about this one? What about that one?” but the majority of the time they say to me, “I'll send you a book,” and they'll go to their own library and clip it out. Or, if they say, “I want this book,” I can start researching to find a suitable copy. I prefer to work with vintage books, ones that have been read or are being used. They feel like they have a history to them. I don't particularly like using new books that have just been printed. Sharon: Do you say to them, “Pick the book,” and give them parameters, and then do you say, “Pick the quote in the book you want”? Jeremy: No, after I receive the book, I read the book completely. While I'm reading, I'm sketching. Within the words, I get inspired for the design of the jewel. From there, I pick a particular quote, and that then inspires me to finalize the design. Sharon: So, you might start out with a ring and then read the book and say, “This should really be a pin,” or “It should be a necklace.” Jeremy: Yeah, absolutely. Sharon: Does the client say anything to you? Do they argue? Jeremy: I am so lucky that clients go with what I say. There have only been a few times when they said, “I really would like some reds. I would like it a little bit bigger.” I'm so lucky that clients just go, “Yup, that's great,” which is completely different from when I was working as a landscape architect. You would take your design to the client and they would go, “I don't know. Maybe you could change this. Maybe you could change that.” You go through so many revisions. Now I'm producing sketches, and I send them to clients and they go, “Yeah, great, fantastic!” I'm like, “Really? Are you sure? Would you like little changes?” “No, I love it. Let's do it.” Sharon: That's very nice that they don't have that many changes, only once in a while. Tell us about the process. How do you make pages stick together? How do you make your jewelry stick together, because it's made of different pieces, right? Jeremy: Yeah. That is a little bit of magic and a little bit of a secret, but I don't use any strong chemicals. I don't use glues or anything like that. I'm basically using high pressure and squashing them together. I use a form of Japanese lacquer to coat them, but the strength of it comes from the actual paper, the lamination. I'm folding the paper. I'm overlapping it and then compressing it into the actual form. Sharon: Does paper jewelry last like a jewel? Jeremy: Absolutely. I made the first one for my wife in 2007 and it's as the day I made it. You do have to respect it. It is paper. It's not metal, so if you do bang it hard, you can chip the corner or it can split. I've had that a couple of times from clients. They didn't realize it, mainly because it's so light. I've had this in galleries. People have come up and gone, “Wow,” and they pick the ring up and then immediately drop it because they expect it to be heavy. It's paper, so I understand that it can damage if they drop it onto a concrete floor or something like that, but I can easily repair it. Sharon: The high pressure and the techniques you use, are they things you learned being a landscape architect? Jeremy: No, this was completely separate. It was through experimentation. Over the years, I've just experimented and changed my techniques over the last 15 years or so. It's a beautiful material to work with because it allows you to do pretty much anything in any form, and I'm constantly experimenting with the form. I'm constantly looking for new techniques or a way of fine-tuning it to be able to make bigger or smaller pieces. I've started to experiment with larger sculptures because I think my work is sculptural. It's sculpture you can wear, and I've thought, “Oh, maybe I can make this slightly bigger.” I use books, so I'm confined by the size of the book. If I can find a big book, then I'm super excited. I have made three or four sculptures now. Sharon: Can you put books together for larger pieces? Jeremy: I suppose I could, but I've never actually done that. Sharon: Would you say what you do is art jewelry? Jeremy: Yeah, I think so. I always think of jewelry as precious materials and gold and stuff like that, so I see my work more as sculpture, jewelry sculpture. I always find it weird to call myself an artist or a jeweler. I don't know exactly what I am, but it's a point to say, “You're this. You're that.” But I create sculpture people can wear, I think. Sharon: How do you describe it to people who walk into a gallery and see all this metal, whether it's an art gallery or a jewelry gallery, and then they see paper jewelry? How do you describe what you do? Jeremy: All my jewelry is set within the book. So, after I've read the book, I'm cutting exactly the amount of paper I need from the book in the shape of the jewel. When I'm finished, the jewel goes back into the book. In the gallery, I present the piece of jewelry with the book, so immediately when they see it, they make the connection, “Ah, it's paper.” Sometimes they say, “Why are you putting clay jewelry in books?” They can't understand. Then I say, “No, it's from the book. It's paper.” “Oh, wow!” I do try and put text or some sort of reference to the book visible on the ring so in an exhibition, people can actually make the connection. Sharon: That's interesting. That's why I asked you how long it lasts. I think of paper jewelry as being really delicate and not long-lasting, but you say you laminate it. Do you make one-offs only? Jeremy: Yeah, absolutely. I do one-offs because I get inspired by the book, that individual, unique book. When I read another book, I get inspired in a completely different direction, which makes it super exciting. When I start reading, I don't know what I'm going to make. By the end of the book, I know exactly what piece I'm going to make. It makes my job super exciting. I never get bored. Sharon: So, you'll pick a book that a client hasn't brought you, but just a book you wanted to read, and you design something while you're reading it. Jeremy: Yeah, exactly. For an exhibition or a gallery exhibition, I'll produce a series of works where I've chosen the book. Normally I choose a theme. I've done exhibitions revolving around Harlem novels or fantasy novels or romances. I do it within a library or a genre. Sharon: How do people find you? What's your biggest way of getting the word out? Jeremy: I honestly don't know. A lot of it has been luck. When I started, a friend of mine had a shop in London and she said, “Why don't you come and do a few pieces in my shop? I can sell them there.” I said, “O.K., great.” From that, someone was walking past. They saw the work and said, “Oh, come and exhibit in Paris.” I said, “O.K., I'll come and exhibit in Paris.” From there I got an exhibition in Japan. It's all been like that. I never really went out looking for galleries or anything. I never pushed my work. People just found me, which has been really nice. Blogs have found me over the years. They come across my website and they've written about me. Then other people write about me through the internet. People are finding me that way. Then Instagram came along, which is fantastic as well. Sharon: Your website is very nice. Tell us the name of the link on your website. We'll have it at the end. Jeremy: It's Littlefly.co.uk. That's Little Fly because in the beginning I didn't know what to call myself or what to call my work. My first ring was inspired by my wife. When she was young, she wasn't given a name, and her eldest brother called her Little Fly. So, I decided that was great. I called it Little Fly and it stuck. Sharon: How old was your wife before she had a name? Jeremy: I think she was three or four. Sharon: When you present something to them and it's finished, do you say to them, “Here's the book. This is where it came from, and this is why it's meaningful to you”? What do you tell them? Jeremy: Yes, I come up with a design. I've spoken a lot with the client and they tell me about themselves. The majority of my clients are men and it's a gift for their partners. Sharon: Oh, that's interesting. Jeremy: Yeah, 90% of my jewels are for men for their partners. In the process, I speak with them and get an understanding of who they are. I understand what they need. After I produce a sketch and I'm showing it to them, then I don't know. Something just kind of clicks. I've had people crying when I've made jewels. A gentleman came to me. He said, “I want you to use the book ‘The Whale Rider,' and I want you to make a ring for my wife.” I said, “O.K., great.” “When you come to London, could you come and meet her and give it to her?” I said, “Yes, of course.” So, we met in a restaurant. I came up, and they were already eating. I handed her the book, and she opened it and burst into tears. I was like, “Oh, no, she doesn't like that. Is it because I've destroyed her favorite book?” But no, she was so excited that she loved it. She immediately connected with it. I don't know how to fully describe it, what I do in relation to the client's desire for a particular piece or colors or form. I've done it for so long, I just seem to get that feeling, that emotion from them. I seem to understand what they need, if that makes sense. Sharon: It does make a lot of sense. Do you think men buy from you for their wives if they feel like their wives already have diamonds and pearls? Jeremy: This is a completely different emotional level. Gentlemen come to me and say, “I've been looking for something different for my wife for years. I found you, and you need to make a piece for her. This is her favorite book.” I had a gentleman who wanted to propose to his wife. This couple had traveled around Australia for two years, and they had used a Lonely Planet travel book for it. Inside there were notes and rips. The book was falling apart, and he wanted to use this exact book for me to make a ring for him to propose to his wife. I've been nervous other times about starting to cut a book, but this is the first time I had this intense emotion that I was cutting the book itself. You could go and buy a new copy for a few pounds, but this book was so emotional and so charged that it was very difficult for me to—I put it off for a long time. It sat on my desk. “Oh, I'll do it later. I'll do it later.” I did it, but sitting there with a scalpel—because I use a scalpel for most of my work—I sat there ready to cut the first page, and that was very difficult. Sharon: Have you ever had a book that's so dog-eared and worn that you haven't been able to use it? Jeremy: Yes, absolutely. I've explained that to the client. No one's actually sent me one, but I have wanted to use a book because it's so beautiful, but it's falling apart. It would just fall apart while I'm creating the jewel. Sharon: Can you put it back together if it's worn? Jeremy: No. I've actually kept them. If books fall apart, I put them on the shelf because I think they're so beautiful as they are. I don't want to repair them because they've had a life. I'd rather go and find another copy that is usable. My shelves are littered with these old books, hundreds of years old. Sharon: Tell us about something you're very proud of, the thing or one or two things you did with—let's call it vintage book jewelry. I don't know what else to call it. Jeremy: That's a very difficult question because I'm always happy about the pieces I'm working on at the moment. I'm proud of all my jewels. I'm super happy with all of them, but what gets me out of bed in the morning is the piece I'm making right now. As soon that one's finished, I don't think about it; I'm thinking about the next one. Sharon: We will have photos posted on the website. Please head to TheJewelryJourney.com to check them out.
Victor is a software consultant in Tokyo who describes himself as a yak shaver. He writes on his blog at vadosware and curates Awesome F/OSS, a mailing list of open source products. He's also a contributor to the Open Core Ventures blog. Before our conversation Victor wrote a structured summary of how he works on projects. I recommend checking that out in addition to the episode. Topics covered: Most people should use Dokku or CapRover But he uses Kubernetes anyways Hosting a Database in Kubernetes Learning technology You don't really know a thing until something goes wrong History of Frontend Development Context from lower layers of the stack and historical projects Good project pages have comparisons to other products Choosing technologies Language choice affects maintainability Knowing an ecosystem Victor's preferred stack Technology bake offs Posting findings means you get free corrections Why people use medium instead of personal sites Victor VADOSWARE - Blog How Victor works on Projects - Companion post for this episode Awesome FOSS - Curated list of OSS projects NimbusWS - Hosted OSS built on top of budget cloud providers Unvalidated Ideas - Startup ideas for side project inspiration PodcastSaver - Podcast index that allows you to choose Postgres or MeiliSearch and compare performance and results of each Victor's preferred stack Docker - Containers Kubernetes - Container provisioning (Though at the beginning of the episode he suggests Dokku for single server or CapRover for multiple) TypeScript - JavaScript with syntax for types. Victor's default choice. Rust - Language he uses if doing embedded work, performance is critical, or more correctness is desired Haskell - Language he uses if correctness and type system is the most important for the project Postgresql - General purpose database that's good enough for most use cases including full text search. KeyDB - Redis compatible database for caching. Acquired by Snap and then made open source. Victor uses it over Redis because it is multi threaded and supports flash storage without a Redis Enterprise license. Pulumi - Provision infrastructure with the languages you're already using instead of a specialized one or YAML Svelte and SvelteKit - Preferred frontend stack. Previously used Nuxt. Search engines Postgres Full Text Search vs the rest Optimizing Postgres Text Search with Trigrams OpenSearch - Amazon's fork of Elasticsearch typesense meilisearch sonic Quickwit JavaScript build tools Babel SWC Webpack esbuild parcel Vite Turbopack JavaScript frameworks React Vue Svelte Ember Frameworks built on top of frameworks Next - React Nuxt - Vue SvelteKit - Svelte Astro - Multiple Historical JavaScript tools and frameworks Underscore jQuery MooTools Backbone AngularJS Knockout Aurelia GWT Bower - Frontend package manager Grunt - Task runner Gulp - Task runner Related Links Dokku - Open source single-host alternative to Heroku Cloud Native Buildpacks - Buildpacks created by Heroku and Pivotal and used by Dokku CapRover - An open source PaaS-like abstraction built on top of Docker Swarm Kelsey Hightower's tweet about being cautious about running databases on Kubernetes Settling the Myth of Transparent HugePages for Databases Kubernetes Container Storage Interface (CSI) Kubernetes Local Persistent Volumes Longhorn - Distributed block storage for Kubernetes Postgres docs Postgres TOAST Everything I've seen on optimizing Postgres on ZFS Kubernetes Workload Resources Kubernetes Network Plugins Kubernetes Ingress Traefik Kubernetes the Hard Way (Setting up a cluster in a way that optimizes for learning) How does TLS work Let's Encrypt Cert manager for Kubernetes Choose Boring Technology A Linux user's guide to Logical Volume Management Docker networking overview Kubernetes Scheduler Tauri - Build desktop applications with web technology and Rust ripgrep - CLI tool to recursively search directory for a regex pattern (Meant to be a rust replacement for grep) angle-grinder / ag - CLI tool to parse and process log files written in rust Object.observe ECMAScript Proposal to be Withdrawn Ruby on Rails - Ruby web framework Django - Python web framework Laravel - PHP web framework Adonis - JavaScript NestJS - JavaScript What is a NullPointerException, and how do I fix it? Mastodon Clap - CLI argument parser for Rust AWS CDK - Provision AWS infrastructure using programming languages Terraform - Provision infrastructure with terraform language URL canonicalization of duplicate pages and the use of the canonical tag - Used by dev.to to send google traffic to the original blogpost instead of dev.to Transcript You can help edit this transcript on GitHub. [00:00:00] Jeremy: This episode, I talk to Victor Adossi who describes himself as a yak shaver. Someone who likes trying a whole bunch of different technologies, seeing the different options. We talk about what he uses, the evolution of front end development, and his various projects. Talking to just different people it's always good to get where they're coming from because something that works for Google at their scale is going to be different than what you're doing with one of your smaller projects. [00:00:31] Victor: Yeah, the context. Of course in direct conflict with that statement, I definitely use Google technology despite not needing to at all right? Like, you know, 99% of people who are doing like people like to call it indiehacking or building small products could probably get by with just Dokku. If you know Dokku or like CapRover. Are two projects that'll be like, Oh, you can just push your code here, we'll build it up like a little mini Heroku PaaS thing and just go on one big server, right? Like 99% of the people could just use that. But of course I'm not doing that. So I'm a bit of a hypocrite in that sense. I know what I should be doing, but I'm not doing that. I am writing a Kubernetes cluster with like five nodes for no reason. Uh, yeah, I dunno, people don't normally count the controllers. [00:01:24] Jeremy: Dokku and CapRover, I think those are where it's supposed to create a heroku like experience I think it's based off of the heroku buildpacks right? At least Dokku is? [00:01:36] Victor: Yeah Buildpacks has actually been spun out into like a community thing so like pivotal and heroku, it's like buildpacks.io, they're trying to build a wider standard around it so that more people can get involved. And buildpacks are actually obviously fantastic as a technology and as a a process piece. There's not much else like them and you know, that's obvious from like Heroku's success and everything. I know Dokku uses that. I don't know that Caprover does, but I haven't, I haven't really run Caprover that much. They, they probably do. Like at this point if you're going to support building from code, it seems silly to try and build your own buildpacks. Cause that's what you will do, eventually. So you might as well use what's there. Anyway, this is like just getting to like my personal opinions at this point, but like, if you think containers are a bad idea in 2022, You're wrong, you should, you should stop. Like you should, you should stop. Think about it. I mean, obviously there's not, um, I got a really great question at an interview once, which is, where are containers a bad idea? That's probably one of the best like recent interview questions I've ever gotten cause I was like, Oh yeah, I mean, like, you can't, it can't be perfect everywhere, right? Nothing's perfect everywhere. So it's like, where is it? Uh, and of course the answer was networking, right? (unintelligible) So if you need absolute performance, but like for just about everything else. Containers are kind of it at this point. Like, time has born it out, I think. So yeah, I always just like bias at taking containers at this point. So I'm probably more of a CapRover person than a Dokku person, even though I have not used, I don't use CapRover. [00:03:09] Jeremy: Well, like something that I've heard with containers, and maybe it's changed recently, but, but something that was kind of holdout was when people would host a database sometimes they would oh we just don't wanna put this in a container and I wonder if like that matches with your thinking or if things have changed. [00:03:27] Victor: I am not a database administrator right like I read postgres docs and I read the, uh, the Postgres documentation, and I think I know a bit about postgres but I don't commit right like so and I also haven't, like, oh, managed X terabytes on one server that you are making sure never goes down kind of deal. But the stickiness for me, at least from when I've run, So I've done a lot of tests with like ZFS and Postgres and like, um, and also like just trying to figure out, and I run Postgres in Kubernetes of course, like on my cluster and a lot of the stuff I found around is, is like fiddly kernel things like sort of base kernel settings that you need to have set. Like, you know, stuff like should you be using transparent huge pages, like stuff like that. But once you have that settled. Containers are just processes with name spacing and resource control, right? Like, that's it. there are some other ins and outs, but for the most part, if you're fine running a process, so people ran processes, right? And they were just completely like unprotected. Then people made users for the processes and they limited the users and ran the processes, right? Then the next step is now you can run a process and then do the limiting the name spaces in cgroups dynamically. Like there, there's, there's sort of not a humongous difference, unless you're hitting something very specific. Uh, but yeah, databases have been a point of contention, but I think, Kelsey Hightower had that tweet yeah. That was like, um, don't run databases in Kubernetes. And I think he called it back. [00:04:56] Victor: I don't know, but I, I know that was uh, was one of those things that people were really unsure about at first, but then after people sort of like felt it out, they were like, Oh, it's actually fine. Yeah. [00:05:06] Jeremy: Yeah I vaguely remember one of the concerns having to do with persistent storage. Like there were challenges with Kubernetes and needing to keep that storage around and I don't know if that's changed yeah or if that's still a concern. [00:05:18] Victor: Uh, I'd say that definitely has changed. Uh, and it was, it was a concern, depending on where you were. Mostly people who are running AKS or EKS or you know, all those other managed Kubernetes, they're just using EBS or like whatever storage provider is like offering for storage. Most of those people don't actually have that much of a problem with, storage in general. Now, high performance storage is obviously different, right? So like, so you'll, you're gonna have to start doing manual, like local volume management and stuff like that. it was a problem, because obviously CSI (Kubernetes Container Storage Interface) didn't exist for some period of time, and like there was, it was hard to know what to do for if you were just running a Kubernetes cluster. I think a lot of people were just using local, first of all, local didn't even exist for a bit. Um, they were just using host path, right? And just like, Oh, it's on the disk somewhere. Where do we, we have to go get it right? Or we have to like, sort of manage that. So that was something most people weren't ready for, especially if you were just, if you weren't like sort of a, a, a traditional sysadmin and used to doing that stuff. And then of course local volumes came out, but I think they still had to be, um, pre-provisioned. So that's sysadmin stuff that most people, you know, maybe aren't, aren't necessarily ready for. Uh, and then most of the general solutions were slow. So like, I used Longhorn (https://longhorn.io) for a long time and Longhorn, Longhorn's great. And super easy to set up, but it can be slower and you can have some, like, delays in mount time. it wasn't ideal for, for most people. So yeah, I, overall it's true. Databases, Databases in Kubernetes were kind of fraught with peril for a while, but it wasn't for the reason that, it wasn't for the fundamental reason that Kubernetes was just wrong or like, it wasn't the reason most people think of, which is just like, Oh, you're gonna break your database. It's more like, running a database is hard and Kubernetes hasn't solved all the hard problems. Like, cuz that's what Kubernetes does. It basically solves a lot of problems in a very generic way. Right. So it just hadn't solved all those problems yet at this point. I think it's got decent answers on a lot of them. So I, I mean, I don't know. I I do it. Don't, don't take what I'm saying to your, you know, PM meeting or your standup meeting, uh, anyone who's listening. But it's more like if you could solve the problems with databases in the sense before. You could probably solve 'em on Kubernetes now with a good understanding of Kubernetes. Cause at the end of the day, it's all the same stuff. Just Kubernetes makes it a little easier to, uh, do it dynamically. [00:07:50] Jeremy: It sounds like you could do it before, but some of the, I guess the tools or the ways of doing persistent storage were not quite there yet, or they were difficult to use. And so that was why people at the start were like, Okay, maybe it's not a good idea, but, now maybe there's some established practices for how you should run a database in Kubernetes. And I, I suppose the other aspect too is that, like you were saying, Kubernetes is its own thing. You gotta learn Kubernetes and all its intricacies. And then running a database is also its own challenge. So if you stack the two of them together and, and the path was not really clear then maybe at the start it wasn't the best idea. Um, uh, if somebody was going to try it out now, was there like a specific resource you looked at or a specific path to where like okay this is is how I'm going to do it. [00:08:55] Victor: I'll just say what I normally recommend to everybody. Cause it depends on which path you wanna go right? If you wanna go down like running a database path first and figure that out, fill out that skill tree. Like go read the Postgres docs. Well, first of all, use Postgres. That's the first tip there. But like, read those documents. And obviously you don't have to understand everything. You won't understand everything. But knowing the big pieces and sort of letting your brain see the mention of like a whole bunch of things, like what is toast? Oh, you can do compression on columns. Like, you can do some, some things concurrently. Um, you know, what ALTER TABLE looks like. You get all that stuff kind of in your head. Um, and then I personally really believe in sort of learning by building and just like iterating. you won't get it right the first time. It's just like, it's not gonna happen. You're get, you can, you can get better the first time, right? By being really prepared and like, and leave yourself lots of outs, but you kind of have to like, get it out there. Do do your best to make sure that you can't fail, uh, catastrophically, right? So this is like, goes back to that decision to like use ZFS as the bottom of this I'm just like, All right, well, I, I'm not a file systems expert, but if I. I could delegate some of that, you know, some of that, I can get some of that knowledge from someone else. Um, and I can make it easier for me to not fail catastrophically. For the database side, actually read documentation on Postgres or the whatever database you're going to use, make sure you at least understand that. Then start running it like locally or whatever. Again, Docker use, use Docker locally. It's, it's, it's fine. and then, you know, sort of graduate to running sort of more progressively, more complicated versions. what I would say for the Kubernetes side is actually similar. the Kubernetes docs are really good. they're very large. but they're good. So you can actually go through and know all the, like, workload, workload resources, know, like what a config map is, what a secret is, right? Like what etcd is doing in this whole situation. you know, what a kublet is versus an API server, right? Like the, the general stuff, like if you go through all that, you should have like a whole bunch of ideas at least floating around in your head. And then once you try and start setting up a server, they will all start to pop up again, right? And they'll all start to like, you, like, Oh, okay, I need a CNI (Container Networking) plugin because something needs to make the services available, right? Or something needs to power the ingress, right? Like, if I wanna be able to get traffic, I need an ingress object. But what listens, what does that, what makes that ingress object do anything? Oh, it's an ingress controller. nginx, you know, almost everyone's heard of nginx, so they're like, okay. Um, nginx, has an ingress control. Actually there's, there used to be two, I assume there's still two, but there's like one that's maintained by Kubernetes, one that's maintained by nginx, the company or whatever. I use traefik, it's fantastic. but yeah, so I think those things kind of fall out and that is almost always my first way to explain it and to start building. And tinkering iteratively. So like, read the documentation, get a good first grasp of it, and then start building yourself because you'll, you'll get way more questions that way. Like, you'll ask way more questions, you won't be able to make progress. Uh, and then of course you can, you know, hop into slacks or like start looking around and, and searching on the internet. oh, one of the things that really helped me out early learning Kubernetes was, Kelsey Hightower's, um, learn Kubernetes the hard way. I'm also a big believer in doing things the hard way, at least knowing what you're choosing to not know, right? distributing file system, Deltas, right? Or like changes to a file system over the network is not a new problem. Other people have solved it. There's a lot of complexity there. but if you at least know the sort of surface level of what the thing does and what it's supposed to do and how it's supposed to do it, you can make a decision on, Oh, how deep am I going to go? Right? To prevent yourself from like, making a mistake or going too deep in the rabbit hole. If you have an idea of the sort of ecosystem and especially like, Oh, here, like the basics of how I can use this thing, that's generally very good. And doing things the hard way is a great way to get a, a feel for that, right? Cause if you take some chunk and like, you know, the first level of doing things the hard way, uh, or, you know, Kelsey Hightower's guide is like, get a machine, right? Like, so, like, if you somehow were like, Oh, I wanna run a Kubernetes cluster. but, you know, I don't want use necessarily EKS and you wanna learn it the hard way. You have to go get a machine, right? If you, if you're not familiar, if you run on Heroku the whole time, like you didn't manage your own machines, you gotta go like, figure out EC2, right? Or, I personally use, hetzner I love hetzner, so you have to go figure out hetzner, digital ocean, whatever. Right. And then the next thing's like, you know, the guide's changed a lot, and I haven't, I haven't looked at it in like, in years, actually a while since I, since I've sort of been, I guess living it, but it's, it's like generate certificates, right? So if you've never dealt with SSL and like, sort of like, or I should say TLS uh, and generating certificates and how that whole dance works, right? Which is fascinating because it's like, oh, right, nothing's secure on the internet, except that we distribute root certificates on computers that are deployed in every OS, right? Like, that's a sort of fundamental understanding you may not go deep enough to realize, but if you are fascinated by it, trying to do it manually would lead you down that path. You'd be like, Oh, what, like what is this thing? What is a CSR? Like, why, who is signing my request? Right? And it's like, why do we trust those people? Right? And it's like, you know, that kind of thing comes out and I feel like you can only get there from trying to do it, you know, answering the questions you can. Right. And again, it takes some judgment to know when you should not go down a rabbit hole. uh, and then iterating. of course there are people who are excellent at explaining. you can find some resources that are shortcuts. But, uh, I think particularly my bread and butter has been just to try and do it the hard way. Avoid pitfalls or like rabbit holes when you can. But know that the rabbit hole is there, and then keep going. And sometimes if something's just too hard, you're not gonna get it the first time. Like maybe you'll have to wait like another three months, you'll try again and you'll know more sort of ambiently about everything else. You get a little further that time. that's how I feel about that. Anyway. [00:15:06] Jeremy: That makes sense to me. I think sometimes when people take on a project, they try to learn too many things at the same time. I, I think the example of Kubernetes and Postgres is pretty good example, where if you're not familiar with how do I install Postgres on bare metal or a vm, trying to make sense of that while you're trying to into is probably gonna be pretty difficult. So, so splitting them up and learning them individually, that makes a lot of sense to me. And the whole deciding how deep you wanna go. That's interesting too, because I think that's very specific to the person right because sometimes you wanna go a little deeper because otherwise you don't understand how the two things connect together. But other times it's just like with the example with certificates, some people they may go like, I just put in let's encrypt it gives me my cert I don't care right then, and then, and some people they wanna know like okay how does the whole certificate infrastructure work which I think is interesting, depending on who you are, maybe you go ahh maybe it doesn't really matter right. [00:16:23] Victor: Yeah, and, you know, shout out to Let's Encrypt . It's, it's amazing, right? think Singlehandedly the most, most of the deployment of HTTPS that happens these days, right? so many so many of like internet providers and uh, sort of service providers will use it right? Under the covers. Like, Hey, we've got you free SSL through Let's Encrypt, right? Like, kind of like under the, under the covers. which is awesome. And they, and they do it. So if you're listening to this, donate to them. I've done it. So now that, now the pressure is on whoever's listening, but yeah, and, and I, I wanna say I am that person as well, right? Like, I use, Cert Manager on my cluster, right? So I'm just like, I don't wanna think about it, but I, you know, but I, I feel like I thought about it one time. I have a decent grasp. If something changes, then I guess I have to dive back in. I think it, you've heard the, um, innovation tokens idea, right? I can't remember the site. It's like, um, do, like do boring tech or something.com (https://boringtechnology.club/) . Like it shows up on sort of hacker news from time to time, essentially. But it's like, you know, you have a certain amount of tokens and sort of, uh, we'll call them tokens, but tolerance for complexity or tolerance for new, new ideas or new ways of doing things, new processes. Uh, and you spend those as you build any project, right? you can be devastatingly effective by just sticking to the stack, you know, and not introducing anything new, even if it's bad, right? and there's nothing wrong with LAMP stack, I don't wanna annoy anybody, but like if you, if you're running LAMP or if you run on a hostgator, right? Like, if you run on so, you know, some, some service that's really old but really works for you isn't, you know, too terribly insecure or like, has the features you need, don't learn Kubernetes then, right? Especially if you wanna go fast. cuz you, you're spending tokens, right? You're spending, essentially brain power, right? On learning whatever other thing. So, but yeah, like going back to that, databases versus databases on Kubernetes thing, you should probably know one of those before you, like, if you're gonna do that, do that thing. You either know Kubernetes and you like, at least feel comfortable, you know, knowing Kubernetes extremely difficult obviously, but you feel comfortable and you feel like you can debug. Little bit of a tangent, but maybe that's even a better, sort of watermark if you know how to debug a thing. If, if it's gone wrong, maybe one or five or 10 or 20 times and you've gotten out. Not without documentation, of course, cuz well, if you did, you're superhuman. But, um, but you've been able to sort of feel your way out, right? Like, Oh, this has gone wrong and you have enough of a model of the system in your head to be like, these are the three places that maybe have something wrong with them. Uh, and then like, oh, and then of course it's just like, you know, a mad dash to kind of like, find, find the thing that's wrong. You should have confidence about probably one of those things before you try and do both when it's like, you know, complex things like databases and distributed systems management, uh, and orchestration. [00:19:18] Jeremy: That's, that's so true in, in terms of you are comfortable enough being able to debug a problem because it's, I think when you are learning about something, a lot of times you start with some kind of guide or some kind of tutorial and you follow the steps. And if it all works, then great. Right? But I think it's such a large leap from that to something went wrong and I have to figure it out. Right. Whether it's something's not right in my Dockerfile or my postgres instance uh, the queries are timing out. so many things that could go wrong, that is the moment where you're forced to figure out, okay, what do I really know about this not thing? [00:20:10] Victor: Exactly. Yeah. Like the, the rubber's hitting the road it's uh you know the car's about to crash or has already crashed like if I open the bonnet, do I know what's happening right or am I just looking at (unintelligible). And that's, it's, I feel sort a little sorry or sad for, for devs that start today because there's so much. Complexity that's been built up. And a lot of it has a point, but you need to kind of have seen the before to understand the point, right? So I like, I like to use front end as an example, right? Like the front end ecosystem is crazy, and it has been crazy for a very long time, but the steps are actually usually logical, right? Like, so like you start with, you know, HTML, CSS and JavaScript, just plain, right? And like, and you can actually go in lots of directions. Like HTML has its own thing. CSS has its own sort of evolution sort of thing. But if we look at JavaScript, you're like, you're just writing JavaScript on every page, right? And like, just like putting in script tags and putting in whatever, and it's, you get spaghetti, you get spaghetti, you start like writing, copying the same function on multiple pages, right? You just, it, it's not good. So then people, people make jquery, right? And now, now you've got like a, a bundled set of like good, good defaults that you can, you can go for, right? And then like, you know, libraries like underscore come out for like, sort of like not dom related stuff that you do want, you do want everywhere. and then people go from there and they go to like backbone or whatever. it's because Jquery sort of also becomes spaghetti at some point and it becomes hard to manage and people are like, Okay, we need to sort of like encapsulate this stuff somehow, right? And like the new tools or whatever is around at the same timeframe. And you, you, you like backbone views for example. and you have people who are kind of like, ah, but that's not really good. It's getting kind of slow. Uh, and then you have, MVC stuff comes out, right? Like Angular comes out and it's like, okay, we're, we're gonna do this thing called dirty checking, and it's gonna be, it's gonna be faster and it's gonna be like, it's gonna be less sort of spaghetti and it's like a little bit more structured. And now you have sort of like the rails paradigm, but on the front end, and it takes people to get a while to get adjusted to that, but then that gets too heavy, right? And then dirty checking is realized to be a mistake. And then, you get stuff like MVVM, right? So you get knockout, like knockout js and you got like Durandal, and like some, some other like sort of front end technologies that come up to address that problem. Uh, and then after that, like, you know, it just keeps going, right? Like, and if you come in at the very end, you're just like, What is happening? Right? Like if it, if it, if someone doesn't sort of boil down the complexity and reduce it a little bit, you, you're just like, why, why do we do this like this? Right? and sometimes there's no good reason. Sometimes the complexity is just like, is unnecessary, but having the steps helps you explain it, uh, or helps you understand how you got there. and, and so I feel like that is something younger people or, or newer devs don't necessarily get a chance to see. Cause it just, it would take, it would take very long right? And if you're like a new dev, let's say you jumped into like a coding bootcamp. I mean, I've got opinions on coding boot camps, but you know, it's just like, let's say you jumped into one and you, you came out, you, you made it. It's just, there's too much to know. sure, you could probably do like HTML in one month. Well, okay, let's say like two weeks or whatever, right? If you were, if you're literally brand new, two weeks of like concerted effort almost, you know, class level, you know, work days right on, on html, you're probably decently comfortable with it. Very comfortable. CSS, a little harder because this is where things get hard. Cause if you, if you give two weeks for, for HTML, CSS is harder than HTML kind of, right? Because the interactions are way more varied. Right? Like, and, and maybe it's one of those things where you just, like, you, you get somewhat comfortable and then just like know that in the future you're gonna see something you don't understand and have to figure it out. Uh, but then JavaScript, like, how many months do you give JavaScript? Because if you go through that first like, sort of progression that I, I I, I, I mentioned everyone would have a perfect sort of, not perfect but good understanding of the pieces, right? Like, why did we start transpiling at all? Right? Like, uh, or why did you know, why did we adopt libraries? Like why did Bower exist? No one talks about Bower anymore, obviously, but like, Bower was like a way to distribute front end only packages, right? Um, what is it? Um, Uh, yes, there's grunt. There's like the whole build system thing, right? Once, once we decide we're gonna, we're gonna do stuff to files before we, before we push. So there's grunt, there's, uh, gulp, which is like grunt, but like, Oh, we're gonna do it all in memory. We're gonna pipe, we're gonna use this pipes thing to make sure everything goes fast. then there's like, of course that leads like the insanity that's webpack. And then there's like parcel, which did better. There's vite there's like, there's all this, there's this progression, but how many months would it take to know that progression? It, it's too long. So they end up just like, Hey, you're gonna learn react. Which is the right thing because it's like, that's what people hire for, right? But then you're gonna be in react and be like, What's webpack, right? And it's like, but you can't go down. You can't, you don't have the time. You, you can't sort of approach that problem from the other direction where you, which would give you better understanding cause you just don't have the time. I think it's hard for newer devs to overcome this. Um, but I think there are some, there's some hope on the horizon cuz some things are simpler, right? Like some projects do reduce complexity, like, by watching another project sort of innovate so like react. Wasn't the first component, first framework, right? Like technically, I, I think, I think you, you might have to give that to like, to maybe backbone because like they had views and like marionette also went with that. Like maybe, I don't know, someone, someone I'm sure will get in like, send me an angry email, uh, cuz I forgot you Moo tools or like, you know, Ember Ember. They've also, they've also been around, I used to be a huge Ember fan, still, still kind of am, but I don't use it. but if you have these, if you have these tools, right? Like people aren't gonna know how to use them and Vue was able to realize that React had some inefficiencies, right? So React innovates the sort of component. So Reintroduces the component based model component first, uh, front end development model. Vue sees that and it's like, wait a second, if we just export this like data object, and of course that's not the only innovation of Vue, but if we just export this data object, you don't have to do this fine grained tracking yourself anymore, right? You don't have to tell React or tell your the system which things change when other things change, right? Like you, you don't have to set up this watching and stuff, right? Um, and that's one of the reasons, like Vue is just, I, I, I remember picking up Vue and being like, Oh, I'm done. I'm done with React now. Because it just doesn't make sense to use React because they Vue essentially either, you know, you could just say they learned from them or they, they realize a better way to do things that is simpler and it's much easier to write. Uh, and you know, functionally similar, right? Um, similar enough that it's just like, oh they boil down some of that complexity and we're a step forward and, you know, in other ways, I think. Uh, so that's, that's awesome. Every once in a while you get like a compression in the complexity and then it starts to ramp up again and you get maybe another compression. So like joining the projects that do a compression. Or like starting to adopting those is really, can be really awesome. So there's, there's like, there's some hope, right? Cause sometimes there is a compression in that complexity and you you might be lucky enough to, to use that instead of, the thing that's really complex after years of building on it. [00:27:53] Jeremy: I think you're talking about newer developers having a tough time making sense of the current frameworks but the example you gave of somebody starting from HTML and JavaScript going to jquery backbone through the whole chain, that that's just by nature of you've put in a lot of time right you've done a lot of work working with each of these technologies you see the progression as if someone is starting new just by nature of you being new you won't have been able to spend that time [00:28:28] Victor: Do you think it could work? again, the, the, the time aspect is like really hard to get like how can you just avoid spending time um to to learn things that's like a general problem I think that problem is called education in the general sense. But like, does it make sense for a, let's say a bootcamp or, or any, you know, school right? To attempt to guide people through the previous solutions that didn't work, right? Like in math, you don't start with calculus, right? It just wouldn't, it doesn't make sense, right? But we try and start with calculus in software, right? We're just like, okay, here's the complexity. You've got all of it. Don't worry. Just look at this little bit. If, you know, if the compiler ever spits out a weird error uh oh, like, you're, you're, you're in for trouble cuz you, you just didn't get the. get the basics. And I think that's maybe some of what is missing. And the thing is, it is like the constraints are hard, right? No one has infinite time, right? Or like, you know, even like, just tons of time to devote to learning, learning just front end, right? That's not even all of computing, That's not even the algorithm stuff that some companies love to throw at you, right? Uh, or the computer sciencey stuff. I wonder if it makes more sense to spend some time taking people through the progression, right? Because discovering that we should do things via components, let's say, or, or at least encapsulate our functionality to components and compose that way, is something we, we not everyone knew, right? Or, you know, we didn't know wild widely. And so it feels like it might make sense to touch on that sort of realization and sort of guide the student through, you know, maybe it's like make five projects in a week and you just get progressively more complex. But then again, that's also hard cause effort, right? It's just like, it's a hard problem. But, but I think right now, uh, people who come in at the end and sort of like see a bunch of complexity and just don't know why it's there, right? Like, if you've like, sort of like, this is, this applies also very, this applies to general, but it applies very well to the Kubernetes problem as well. Like if you've never managed nginx on more than one machine, or if you've never tried to set up a, like a, to format your file system on the machine you just rented because it just, you know, comes with nothing, right? Or like, maybe, maybe some stuff was installed, but, you know, if you had to like install LVM (Logical Volume Manager) yourself, if you've never done any of that, Kubernetes would be harder to understand. It's just like, it's gonna be hard to understand. overlay networks are hard for everyone to understand, uh, except for network people who like really know networking stuff. I think it would be better. But unfortunately, it takes a lot of time for people to take a sort of more iterative approach to, to learning. I try and write blog posts in this way sometimes, but it's really hard. And so like, I'll often have like an idea, like, so I call these, or I think of these as like onion, onion style posts, right? Where you either build up an onion sort of from the inside and kind of like go out and like add more and more layers or whatever. Or you can, you can go from the outside and sort of take off like layers. Like, oh, uh, Kubernetes has a scheduler. Why do they need a scheduler? Like, and like, you know, kind of like, go, go down. but I think that might be one of the best ways to learn, but it just takes time. Or geniuses and geniuses who are good at two things, right? Good at the actual technology and good at teaching. Cuz teaching is a skill and it's very hard. and, you know, shout out to teachers cuz that's, it's, it's very difficult, extremely frustrating. it's hard to find determinism in, in like methods and solutions. And there's research of course, but it's like, yeah, that's, that's a lot harder than the computer being like, Nope, that doesn't work. Right? Like, if you can't, if you can't, like if you, if the function call doesn't work, it doesn't work. Right. If the person learned suboptimally, you won't know Right. Until like 10 years down the road when, when they can't answer some question or like, you know, when they, they don't understand. It's a missing fundamental piece anyway. [00:32:24] Jeremy: I think with the example of front end, maybe you don't have time to walk through the whole history of every single library and framework that came but I think at the very least, if you show someone, or you teach someone how to work with css, and you have them, like you were talking about components before you have them build a site where there's a lot of stuff that gets reused, right? Maybe you have five pages and they all have the same nav bar. [00:33:02] Victor: Yeah, you kind of like make them do it. [00:33:04] Jeremy: Yeah. You make 'em do it and they make all the HTML files, they copy and paste it, and probably your students are thinking like, ah, this, this kind of sucks [00:33:16] Victor: Yeah [00:33:18] Jeremy: And yeah, so then you, you come to that realization, and then after you've done that, then you can bring in, okay, this is why we have components. And similarly you brought up, manual dom manipulation with jQuery and things like that. I, I'm sure you could come up with an example of you don't even necessarily need to use jQuery. I think people can probably skip that step and just use the the, the API that comes with the browser. But you can have them go in like, Oh, you gotta find this element by the id and you gotta change this based on this, and let them experience the. I don't know if I would call it pain, but let them experience like how it was. Right. And, and give them a complex enough task where they feel like something is wrong right. Or, or like, there, should be something better. And then you can go to you could go straight to vue or react. I'm not sure if we need to go like, Here's backbone, here's knockout. [00:34:22] Victor: Yeah. That's like historical. Interesting. [00:34:27] Jeremy: I, I think that would be an interesting college course or something that. Like, I remember when, I went through school, one of the classes was programming languages. So we would learn things like, Fortran and stuff like that. And I, I think for a more frontend centered or modern equivalent you could go through, Hey, here's the history of frontend development here's what we used to do and here's how we got to where we are today. I think that could be actually a pretty interesting class yeah [00:35:10] Victor: I'm a bit interested to know you learned fortran in your PL class. I, think when I went, I was like, lisp and then some, some other, like, higher classes taught haskell but, um, but I wasn't ready for haskell, not many people but fortran is interesting, I kinda wanna hear about that. [00:35:25] Jeremy: I think it was more in terms of just getting you exposed to historically this is how things were. Right. And it wasn't so much of like, You can take strategies you used in Fortran into programming as a whole. I think it was just more of like a, a survey of like, Hey, here's, you know, here's Fortran and like you were saying, here's Lisp and all, all these different languages nd like at least you, you get to see them and go like, yeah, this is kind of a pain. [00:35:54] Victor: Yeah [00:35:55] Jeremy: And like, I understand why people don't choose to use this anymore but I couldn't take away like a broad like, Oh, I, I really wish we had this feature from, I think we were, I think we were using Fortran 77 or something like that. I think there's Fortran 77, a Fortran 90, and then there's, um, I think, [00:36:16] Victor: Like old fortran, deprecated [00:36:18] Jeremy: Yeah, yeah, yeah. So, so I think, I think, uh, I actually don't know if they're, they're continuing to, um, you know, add new things or maintain it or it's just static. But, it's, it's more, uh, interesting in terms of, like we were talking front end where it's, as somebody who's learning frontend development who is new and you get to see how, backbone worked or how Knockout worked how grunt and gulp worked. It, it's like the kind of thing where it's like, Oh, okay, like, this is interesting, but let us not use this again. Right? [00:36:53] Victor: Yeah. Yeah. Right. But I also don't need this, and I will never again [00:36:58] Jeremy: yeah, yeah. It's, um, but you do definitely see the, the parallels, right? Like you were saying where you had your, your Bower and now you have NPM and you had Grunt and Gulp and now you have many choices [00:37:14] Victor: Yeah. [00:37:15] Jeremy: yeah. I, I think having he history context, you know, it's interesting and it can be helpful, but if somebody was. Came to me and said hey I want to learn how to build websites. I get into front end development. I would not be like, Okay, first you gotta start moo tools or GWT. I don't think I would do that but it I think at a academic level or just in terms of seeing how things became the way they are sure, for sure it's interesting. [00:37:59] Victor: Yeah. And I, I, think another thing I don't remember who asked or why, why I had to think of this lately. um but it was, knowing the differentiators between other technologies is also extremely helpful right? So, What's the difference between ES build and SWC, right? Again, we're, we're, we're leaning heavy front end, but you know, just like these, uh, sorry for context, of course, it's not everyone a front end developer, but these are two different, uh, build tools, right? For, for JavaScript, right? Essentially you can think of 'em as transpilers, but they, I think, you know, I think they also bundle like, uh, generally I'm not exactly sure if, if ESbuild will bundle as well. Um, but it's like one is written in go, the other one's written in Rust, right? And sort of there's, um, there's, in addition, there's vite which is like vite does bundle and vite does a lot of things. Like, like there's a lot of innovation in vite that has to have to do with like, making local development as fast as possible and also getting like, you're sort of making sure as many things as possible are strippable, right? Or, or, or tree shakeable. Sorry, is is is the better, is the better term. Um, but yeah, knowing, knowing the, um, the differences between projects is often enough to sort of make it less confusing for me. Um, as far as like, Oh, which one of these things should I use? You know, outside of just going with what people are recommending. Cause generally there is some people with wisdom sometimes lead the crowd sometimes, right? So, so sometimes it's okay to be, you know, a crowd member as long as you're listening to the, to, to someone worth listening to. Um, and, and so yeah, I, I think that's another thing that is like the mark of a good project or, or it's not exclusive, right? It's not, the condition's not necessarily sufficient, but it's like a good projects have the why use this versus x right section in the Readme, right? They're like, Hey, we know you could use Y but here's why you should use us instead. Or we know you could use X, but here's what we do better than X. That might, you might care about, right? That's, um, a, a really strong indicator of a project. That's good cuz that means the person who's writing the project is like, they've done this, the survey. And like, this is kind of like, um, how good research happens, right? It's like most of research is reading what's happening, right? To knowing, knowing the boundary you're about to push, right? Or try and sort of like push one, make one step forward in, um, so that's something that I think the, the rigor isn't in necessarily software development everywhere, right? Which is good and bad. but someone who's sort of done that sort of rigor or, and like, and, and has, and or I should say, has been rigorous about knowing the boundary, and then they can explain that to you. They can be like, Oh, here's where the boundary was. These people were doing this, these people were doing this, these people were doing this, but I wanna do this. So you just learned now whether it's right for you and sort of the other points in the space, which is awesome. Yeah. Going to your point, I feel like that's, that's also important, it's probably not a good idea to try and get everyone to go through historical artifacts, but if just a, a quick explainer and sort of, uh, note on the differentiation, Could help for sure. Yeah. I feel like we've skewed too much frontend. No, no more frontend discussion this point. [00:41:20] Jeremy: It's just like, I, I think there's so many more choices where the, the mental thought that has to go into, Okay, what do I use next I feel is bigger on frontend. I guess it depends on the project you're working on but if you're going to work on anything front end if you haven't done it before or you don't have a lot of experience there's so many build tools so many frameworks, so many libraries that yeah, but we [00:41:51] Victor: Iterate yeah, in every direction, like the, it's good and bad, but frontend just goes in every direction at the same time Like, there's so many people who are so enthusiastic and so committed and and it's so approachable that like everyone just goes in every direction at the same time and like a lot of people make progress and then unfortunately you have try and pick which, which branch makes sense. [00:42:20] Jeremy: We've been kind of talking about, some of your experiences with a few things and I wonder if you could explain the the context you're thinking of in terms of the types of projects you typically work on like what are they what's the scale of them that sort of thing. [00:42:32] Victor: So I guess I've, I've gone through a lot of phases, right? In sort of what I use in in my tooling and what I thought was cool. I wrote enterprise java like everybody else. Like, like it really doesn't talk about it, but like, it's like almost at some point it was like, you're either a rail shop or a Java shop, for so many people. And I wrote enterprise Java for a, a long time, and I was lucky enough to have friends who were really into, other kinds of computing and other kinds of programming. a lot of my projects were wrapped around, were, were ideas that I was expressing via some new technology, let's say. Right? So, I wrote a lot of haskell for, for, for a while, right? But what did I end up building with that was actually a job board that honestly didn't go very far because I was spending much more time sort of doing, haskell things, right? And so I learned a lot about sort of what I think is like the pinnacle of sort of like type development in, in the non-research world, right? Like, like right on the edge of research and actual usability. But a lot of my ideas, sort of getting back to the, the ideas question are just things I want to build for myself. Um, or things I think could be commercially viable or like do, like, be, be well used, uh, and, and sort of, and profitable things, things that I think should be built. Or like if, if I see some, some projects as like, Oh, I wish they were doing this in this way, Right? Like, I, I often consider like, Oh, I want, I think I could build something that would be separate and maybe do like, inspired from other projects, I should say, Right? Um, and sort of making me understand a sort of a different, a different ecosystem. but a lot of times I have to say like, the stuff I build is mostly to scratch an itch I have. Um, and or something I think would be profitable or utilizing technology that I've seen that I don't think anyone's done in the same way. Right? So like learning Kubernetes for example, or like investing the time to learn Kubernetes opened up an entire world of sort of like infrastructure ideas, right? Because like the leverage you get is so high, right? So you're just like, Oh, I could run an aws, right? Like now that I, now that I know this cuz it's like, it's actually not bad, it's kind of usable. Like, couldn't I do that? Right? That kind of thing. Right? Or um, I feel like a lot of the times I'll learn a technology and it'll, it'll make me feel like certain things are possible that they, that weren't before. Uh, like Rust is another one of those, right? Like, cuz like Rust will go from like embedded all the way to WASM, which is like a crazy vertical stack. Right? It's, that's a lot, That's a wide range of computing that you can, you can touch, right? And, and there's, it's, it's hard to learn, right? The, the, the, the, uh, the, the ramp to learning it is quite steep, but, it opens up a lot of things you can write, right? It, it opens up a lot of areas you can go into, right? Like, if you ever had an idea for like a desktop app, right? You could actually write it in Rust. There's like, there's, there's ways, there's like is and there's like, um, Tauri is one of my personal favorites, which uses web technology, but it's either I'm inspired by some technology and I'm just like, Oh, what can I use this on? And like, what would this really be good at doing? or it's, you know, it's one of those other things, like either I think it's gonna be, Oh, this would be cool to build and it would be profitable. Uh, or like, I'm scratching my own itch. Yeah. I think, I think those are basically the three sources. [00:46:10] Jeremy: It's, it's interesting about Rust where it seems so trendy, I guess, in lots of people wanna do something with rust, but then in a lot of they also are not sure does it make sense to write in rust? Um, I, I think the, the embedded stuff, of course, that makes a lot of sense. And, uh, you, you've seen a sort of surge in command line apps, stuff ripgrep and ag, stuff like that, and places like that. It's, I think the benefits are pretty clear in terms of you've got the performance and you have the strong typing and whatnot and I think where there's sort of the inbetween section that's kind of unclear to me at least would I build a web application in rust I'm not sure that sort of thing [00:47:12] Victor: Yeah. I would, I characterize it as kind of like, it's a tool toolkit, so it really depends on the problem. And think we have many tools that there's no, almost never a real reason to pick one in particular right? Like there's, Cause it seems like just most of, a lot of the work, like, unless you're, you're really doing something interesting, right? Like, uh, something that like, oh, I need to, I need to, like, I'm gonna run, you know, billions and billions of processes. Like, yeah, maybe you want erlang at that point, right? Like, maybe, maybe you should, that should be, you know, your, your thing. Um, but computers are so fast these days, and most languages have, have sort of borrowed, not borrowed, but like adopted features from others that there's, it's really hard to find a, a specific use case, for one particular tool. Uh, so I often just categorize it by what I want out of the project, right? Or like, either my goals or project goals, right? Depending on, and, or like business goals, if you're, you know, doing this for a business, right? Um, so like, uh, I, I basically, if I want to go fast and I want to like, you know, reduce time to market, I use type script, right? Oh, and also I'm a, I'm a, like a type zealot. I, I'd say so. Like, I don't believe in not having types, right? Like, it's just like there's, I think it's crazy that you would like have a function but not know what the inputs could be. And they could actually be anything, right? , you're just like, and then you have to kind of just keep that in your head. I think that's silly. Now that we have good, we, we have, uh, ways to avoid the, uh, ceremony, right? You've got like hindley Milner type systems, like you have a way to avoid the, you can, you know, predict what types of things will be, and you can, you don't have to write everything everywhere. So like, it's not that. But anyway, so if I wanna go fast, the, the point is that going back to that early, like the JS ecosystem goes everywhere at the same time. Typescript is excellent because the ecosystem goes everywhere at the same time. And so you've got really good ecosystem support for just about everything you could do. Um, uh, you could write TypeScript that's very loose on the types and go even faster, but in general it's not very hard. There's not too much ceremony and just like, you know, putting some stuff that shows you what you're using and like, you know, the objects you're working with. and then generally if I wanna like, get it really right, I I'll like reach for haskell, right? Cause it's just like the sort of contortions, and again, this takes time, this not fast, but, right. the contortions you can do in the type system will make it really hard to write incorrect code or code that doesn't, that isn't logical with itself. Of course interfacing with the outside world. Like if you do a web request, it's gonna fail sometimes, right? Like the network might be down, right? So you have to, you basically pull that, you sort of wrap that uncertainty in your system to whatever degree you're okay with. And then, but I know it'll be correct, right? But and correctness is just not important. Most of like, Oh, I should , that's a bad quote. Uh, it's not that correct is not important. It's like if you need to get to market, you do not necessarily need every single piece of your code to be correct, Right? If someone calls some, some function with like, negative one and it's not an important, it's not tied to money or it's like, you know, whatever, then maybe it's fine. They just see an error and then like you get an error in your back and you're like, Oh, I better fix that. Right? Um, and then generally if I want to be correct and fast, I choose rust these days. Right? Um, these days. and going back to your point, a lot of times that means that I'm going to write in Typescript for a lot of projects. So that's what I'll do for a lot of projects is cuz I'll just be like, ah, do I need like absolute correctness or like some really, you know, fancy sort of type stuff. No. So I don't pick haskell. Right. And it's like, do I need to be like mega fast? No, probably not. Cuz like, cuz so I don't necessarily don't necessarily need rust. Um, maybe it's interesting to me in terms of like a long, long term thing, right? Like if I, if I'm think, oh, but I want x like for example, tight, tight, uh, integration with WASM, for example, if I'm just like, oh, I could see myself like, but that's more of like, you know, for a fun thing that I'm doing, right? Like, it's just like, it's, it's, you don't need it. You don't, that's premature, like, you know, that's a premature optimization thing. But if I'm just like, ah, I really want the ability to like maybe consider refactoring some of this out into like a WebAssembly thing later, then I'm like, Okay, maybe, maybe I'll, I'll pick Rust. Or like, if I, if I like, I do want, you know, really, really fast, then I'll like, then I'll go Rust. But most of the time it's just like, I want a good ecosystem so I don't have to build stuff myself most of the time. Uh, and you know, type script is good enough. So my stack ends up being a lot of the time just in type script, right? Yeah. [00:52:05] Jeremy: Yeah, I think you've encapsulated the reason why there's so many packages on NPM and why there's so much usage of JavaScript and TypeScript in general is that it, it, it fits the, it's good enough. Right? And in terms of, in terms of speed, like you said, most of the time you don't need of rust. Um, and so typescript I think is a lot more approachable a lot of people have to use it because they do front end work anyways. And so that kinda just becomes the I don't know if I should say the default but I would say it's probably the most common in terms of when somebody's building a backend today certainly there's other languages but JavaScript and TypeScript is everywhere. [00:52:57] Victor: Yeah. Uh, I, I, I, another thing is like, I mean, I'm, of ignored the, like, unreasonable effectiveness of like rails Cause there's just a, there's tons of just like rails warriors out there, and that's great. They're they're fantastic. I'm not a, I'm not personally a huge fan of rails but that's, uh, that's to my own detriment, right? In, in some, in some ways. But like, Rails and Django sort of just like, people who, like, I'm gonna learn this framework it's gonna be excellent. It most, they have a, they have carved out a great ecosystem for themselves. Um, or like, you know, even php right? PHP and like Laravel, or whatever. Uh, and so I'm ignoring those, like, those pockets of productivity, right? Those pockets of like intense productivity that people like, have all their needs met in that same way. Um, but as far as like general, general sort of ecosystem size and speed for me, um, like what you said, like applies to me. Like if I, if I'm just like, especially if I'm just like, Oh, I just wanna build a backend, Like, I wanna build something that's like super small and just does like, you know, maybe a few, a couple, you know, endpoints or whatever and just, I just wanna throw it out there. Right? Uh, I, I will pick, yeah. Typescript. It just like, it makes sense to me. I also think note is a better. VM or platform to build on than any of the others as well. So like, like I, by any of the others, I mean, Python, Perl, Ruby, right? Like sort of in the same class of, of tool. So I I am kind of convinced that, um, Node is better, than those as far as core abilities, right? Like threading Right. Versus the just multi-processing and like, you know, other, other, other solutions and like, stuff like that. So, if you want a boring stack, if I don't wanna use any tokens, right? Any innovation tokens I reach for TypeScript. [00:54:46] Jeremy: I think it's good that you brought up. Rails and, and Django because, uh, personally I've done, I've done work with Rails, and you're right in that Rails has so many built in, and the ways to do them are so well established that your ability to be productive and build something really fast hard to compete with, at least in my experience with available in the Node ecosystem. Um, on the other hand, like I, I also see what you mean by the runtimes. Like with Node, you're, you're built on top of V8 and there's so many resources being poured into it to making it fast and making it run pretty much everywhere. I think you probably don't do too much work with managed services, but if you go to a managed service to run your code, like a platform as a service, they're gonna support Node. Will they support your other preferred language? Maybe, maybe not, You know that they will, they'll be able to run node apps so but yeah I don't know if it will ever happen or maybe I'm just not familiar with it, but feel like there isn't a real rails of javascript. [00:56:14] Victor: Yeah, you're, totally right. There are, there are. It's, it's weird. It's actually weird that there, like Uh, but, but, I kind of agree with you. There's projects that are trying it recently. There's like Adonis, um, there is, there are backends that also do, like, will do basic templating, like Nest, NestJS is like really excellent. It's like one of the best sort of backend, projects out there. I I, I but like back in the day, there were projects like Sails, which was like very much trying to do exactly what Rails did, but it just didn't seem to take off and reach that critical mass possibly because of the size of the ecosystem, right? Like, how many alternatives to Rails are there? Not many, right? And, and now, anyway, maybe let's say the rest of 'em sort of like died out over the years, but there's also like, um, hapi HAPI, uh, which is like also, you know, similarly, it was like angling themselves to be that, but they just never, they never found the traction they needed. I think, um, or at least to be as wide, widely known as Rails is for, for, for the, for the Ruby ecosystem, um, but also for people to kind of know the magic, cause. Like I feel like you're productive in Rails only when you imbibe the magic, right? You, you, know all the magic context and you know the incantations and they're comforting to you, right? Like you've, you've, you have the, you have the sort of like, uh, convention. You're like, if you're living and breathing the convention, everything's amazing, right? Like, like you can't beat that. You're just like, you're in the zone but you need people to get in that zone. And I don't think node has, people are just too, they're too frazzled. They're going like, there's too much options. They can't, it's hard to commit, right? Like, imagine if you'd committed to backbone. Like you got, you can't, It's, it's over. Oh, it's not over. I mean, I don't, no, I don't wanna, you know, disparage the backbone project. I don't use it, but, you know, maybe they're still doing stuff and you know, I'm sure people are still working on it, but you can't, you, it's hard to commit and sort of really imbibe that sort of convention or, or, or sort of like, make yourself sort of breathe that product when there's like 10 products that are kind of similar and could be useful as well. Yeah, I think that's, that's that's kind of big. It's weird that there isn't a rails, for NodeJS, but, but people are working on it obviously. Like I mentioned Adonis, there's, there's more. I'm leaving a bunch of them out, but that's part of the problem. [00:58:52] Jeremy: On, on one hand, it's really cool that people are trying so many different things because hopefully maybe they can find something that like other people wouldn't have thought of if they all stick same framework. but on the other hand, it's ... how much time have we spent jumping between all these different frameworks when what we could have if we had a rails. [00:59:23] Victor: Yeah the, the sort of wasted time is, is crazy to think about it uh, I do think about that from time to time. And you know, and personally I waste a lot of my own time. Like, just, just rec
Episode SummaryJeremy Enns is the Founder of Podcast Marketing Academy, where he helps scrappy brands and Creators hit their podcast growth milestones with a step-by-step playbook. Through his extensive experience in audio, Jeremy understands that podcasting is one of the best ways to consistently generate leads, make sales, and elevate your profile. Today, Harry and Jeremy discuss Jeremy's passion for writing and creating content, what separates a consistent show with a growing, successful one and the value of pursuing a niche and narrow audience. Episode SponsorFocusrite –http://pcjk.es/focusrite ( )http://pcjk.es/vocaster (http://pcjk.es/vocaster) FullCast –https://fullcast.co/ ( https://fullcast.co/) Key Takeaways06:25 – Founder of Podcast Marketing Academy, Jeremy Enns joins the show to share his plans for moving to Portugal as well as his passion for audio, music and photography 13:13 – The ‘Wildman' 23:01 – Content creation, Jeremy's podcasting origin story and overcoming Imposter Syndrome as an entrepreneur 34:14 – Jeremy reflects on returning to his love of writing 41:04 – How Jeremy plans and maps out his content 49:17 – The decision to begin curating courses 54:16 – What separates a consistent show with a growing, successful show 1:03:05 – The value of going narrower and pursuing niche audiences 1:13:51 – Something Jeremy has changed his mind about recently 1:19:07 – Harry thanks Jeremy for joining the show and lets listeners know where they can go to connect with him and learn more about Podcast Marketing Academy Tweetable Quotes“I think I read some stat recently that per capita more Canadians listen to podcasts than Americans do now.” (09:58) (Jeremy) “It's interesting when I look back at especially my lack of a corporate career history, I'm very aware of both the pros and cons. A lot of people I've talked to get conditioned where it's very hard to go off on your own path because you've just worked so long in a structure. I didn't have any of that baggage, but one of the interesting things that I've always thought is that everyone has some sort of Imposter Syndrome. But I don't know that you can get to this without going through it.” (27:31) (Jeremy) “You hear a lot of people who write regularly talk about how writing really clarifies your own thinking. That, for me, was the case where I thought, ‘At this point, I don't even care if anybody ever reads anything I write. It's so valuable to me personally just to keep writing because it was structuring my thoughts.'” (35:37) (Jeremy) “I tend to skew to the philosophical, higher-level strategy side of things than tactical side. But, I've also recognized that it's a lot harder to market and sell vague, philosophical things even if there's value to it and people like it.” (43:56) (Jeremy) “I think a lot of times it actually comes back to how specific you are about the person that you're actually trying to reach. Everybody, I'm sure who's listened to hundreds of episodes of your shows, has heard before that if you create a show for everybody, it's for nobody. We don't want to believe that, but it's the truth.” (55:32) (Jeremy) “For many audiences and many niches, the narrower you go, the more you can potentially charge sponsors. And, people don't really think of it that way.” (1:05:48) (Jeremy) Resources MentionedJeremy's Website & Links – https://counterweightcreative.co/junkies/ (https://counterweightcreative.co/junkies/) Podcast Marketing Academy – https://counterweightcreative.co/podcast-marketing-academy/ (https://counterweightcreative.co/podcast-marketing-academy/) Podcast Marketing Academy Twitter – https://twitter.com/PodGrowthSchool (https://twitter.com/PodGrowthSchool) Jeremy's LinkedIn – https://www.linkedin.com/in/jeremy-enns/ (https://www.linkedin.com/in/jeremy-enns/) Jeremy's Twitter – https://twitter.com/iamjeremyenns (https://twitter.com/iamjeremyenns) Seth Godin's Blog – https://seths.blog/ (https://seths.blog/)...
Swizec is the author of the Serverless Handbook and a software engineer at Tia.Swizec Swizec's personal site Serverless Handbook AWS Lambda API Gateway Operating Lambda (The cold start problem) Provisioned Concurrency DynamoDB Relational Database Service Aurora Simple Queue Service CloudFormation CloudWatch Other serverless function hosting providers Gatsby Cloud Functions Vercel Serverless Functions Netlify Functions Cloud Functions for Firebase Related topics Serverless Framework Jamstack Lighthouse What is a Static Site Generator? What is a CDN? Keeping Server-Side Rendering Cool With React Hydration TypeScript TranscriptYou can help edit this transcript on GitHub.[00:00:00] Jeremy: Today, I'm talking to Swiz Teller. He's a senior software engineer at Tia. The author of the serverless handbook and he's also got a bunch of other courses and I don't know is it thousands of blog posts now you have a lot of them.[00:00:13] Swizec: It is actually thousands of, uh, it's like 1500. So I don't know if that's exactly thousands, but it's over a thousand.I'm cheating a little bit. Cause I started in high school back when blogs were still considered social media and then I just kind of kept going on the same domain.Do you have some kind of process where you're, you're always thinking of what to write next? Or are you writing things down while you're working at your job? Things like that. I'm just curious how you come up with that. [00:00:41] Swizec: So I'm one of those people who likes to use writing as a way to process things and to learn. So one of the best ways I found to learn something new is to kind of learn it and then figure out how to explain it to other people and through explaining it, you really, you really spot, oh shit. I don't actually understand that part at all, because if I understood it, I would be able to explain it.And it's also really good as a reference for later. So some, one of my favorite things to do is to spot a problem at work and be like, oh, Hey, this is similar to that side project. I did once for a weekend experiment I did, and I wrote about it so we can kind of crib off of my method and now use it. So we don't have to figure things out from scratch.And part of it is like you said, that just always thinking about what I can write next. I like to keep a schedule. So I keep myself to posting two articles per week. It used to be every day, but I got too busy for that. when you have that schedule and, you know, okay on Tuesday morning, I'm going to sit down and I have an hour or two hours to write, whatever is on top of mind, you kind of start spotting more and more of these opportunities where it's like a coworker asked me something and I explained it in a slack thread and it, we had an hour. Maybe not an hour, but half an hour of back and forth. And you actually just wrote like three or 400 words to explain something. If you take those 400 words and just polish them up a little bit, or rephrase them a different way so that they're easier to understand for somebody who is not your coworker, Hey, that's a blog post and you can post it on your blog and it might help others.[00:02:29] Jeremy: It sounds like taking the conversations most people have in their day to day. And writing that down in a more formal way. [00:02:37] Swizec: Yeah. not even maybe in a more formal way, but more, more about in a way that a broader audience can appreciate. if it's, I'm super gnarly, detailed, deep in our infrastructure in our stack, I would have to explain so much of the stuff around it for anyone to even understand that it's useless, but you often get these nuggets where, oh, this is actually a really good insight that I can share with others and then others can learn from it. I can learn from it. [00:03:09] Jeremy: What's the most accessible way or the way that I can share this information with the most people who don't have all this context that I have from working in this place. [00:03:21] Swizec: Exactly. And then the power move, if you're a bit of an asshole is to, instead of answering your coworkers question is to think about the answer, write a blog post and then share the link with them.I think that's pushing it a little bit.[00:03:38] Jeremy: Yeah, It's like you're being helpful, but it also feels a little bit passive aggressive.[00:03:44] Swizec: Exactly. Although that's a really good way to write documentation. One thing I've noticed at work is if people keep asking me the same questions, I try to stop writing my replies in slack and instead put it on confluence or whatever internal wiki that we have, and then share that link. and that has always been super appreciated by everyone.[00:04:09] Jeremy: I think it's easy to, have that reply in slack and, and solve that problem right then. But when you're creating these Wiki pages or these documents, how're people generally finding these. Cause I know you can go through all this trouble to make this document. And then people just don't know to look or where to go. [00:04:30] Swizec: Yeah. Discoverability is a really big problem, especially what happens with a lot of internal documentation is that it's kind of this wasteland of good ideas that doesn't get updated and nobody maintains. So people stop even looking at it. And then if you've stopped looking at it before, stop updating it, people stop contributing and it kind of just falls apart.And the other problem that often happens is that you start writing this documentation in a vacuum. So there's no audience for it, so it's not help. So it's not helpful. That's why I like the slack first approach where you first answered the question is. And now, you know exactly what you're answering and exactly who the audiences.And then you can even just copy paste from slack, put it in a conf in JIRA board or wherever you put these things. spice it up a little, maybe effect some punctuation. And then next time when somebody asks you the same question, you can be like, oh, Hey, I remember where that is. Go find the link and share it with them and kind of also trains people to start looking at the wiki.I don't know, maybe it's just the way my brain works, but I'm really bad at remembering information, but I'm really good at remembering how to find it. Like my brain works like a huge reference network and it's very easy for me to remember, oh, I wrote that down and it's over there even if I don't remember the answer, I almost always remember where I wrote it down if I wrote it down, whereas in slack it just kind of gets lost.[00:06:07] Jeremy: Do you also take more informal notes? Like, do you have notes locally? You look through or something? That's not a straight up Wiki. [00:06:15] Swizec: I'm actually really bad at that. I, one of the things I do is that when I'm coding, I write down. so I have almost like an engineering log book where everything, I, almost everything I think about, uh, problems I'm working on. I'm always writing them down on by hand, on a piece of paper. And then I never look at those notes again.And it's almost like it helps me think it helps me organize my thoughts. And I find that I'm really bad at actually referencing my notes and reading them later because, and this again is probably a quirk of my brain, but I've always been like this. Once I write it down, I rarely have to look at it again.But if I don't write it down, I immediately forget what it is.What I do really like doing is writing down SOPs. So if I notice that I keep doing something repeatedly, I write a, uh, standard operating procedure. For my personal life and for work as well, I have a huge, oh, it's not that huge, but I have a repository of standard procedures where, okay, I need to do X.So you pull up the right recipe and you just follow the recipe. And if you spot a bug in the recipe, you fix the recipe. And then once you have that polished, it's really easy to turn that into an automated process that can do it for you, or even outsource it to somebody else who can work. So we did, you don't have to keep doing the same stuff and figuring out, figuring it out from scratch every time.[00:07:55] Jeremy: And these standard operating procedures, they sound a little bit like runbooks I guess. [00:08:01] Swizec: Yep. Run books or I think in DevOps, I think the big red book or the red binder where you take it out and you're like, we're having this emergency, this alert is firing. Here are the next steps of what we have to check.[00:08:15] Jeremy: So for those kinds of things, those are more for incidents and things like that. But in your case, it sounds like it's more, uh, I need to get started with the next JS project, or I need to set up a Postgres database things like that. [00:08:30] Swizec: Yeah. Or I need to reset a user to initial states for testing or create a new user. That's sort of thing.[00:08:39] Jeremy: These probably aren't in that handwritten log book.[00:08:44] Swizec: The wiki. That's also really good way to share them with new engineers who are coming on to the team.[00:08:50] Jeremy: Is it where you just basically dump them all on one page or is it where you, you organize them somehow so that people know that this is where, where they need to go. [00:09:00] Swizec: I like to keep a pretty flat structure because, I think the, the idea of categorization outlived its prime. We have really good search algorithms now and really good fuzzy searching. So it's almost easier if everything is just dumped and it's designed to be easy to search. a really interesting anecdote from, I think they were they were professors at some school and they realized that they try to organize everything into four files and folders.And they're trying to explain this to their younger students, people who are in their early twenties and the young students just couldn't understand. Why would you put anything in a folder? Like what is a folder? What is why? You just dump everything on your desktop and then command F and you find it. Why would you, why would you even worry about what the file name is? Where the file is? Like, who cares? It's there somewhere.[00:09:58] Jeremy: Yeah, I think I saw the same article. I think it was on the verge, right?I mean, I think that's that's right, because when you're using, say a Mac and you don't go look for the application or the document you want to run a lot of times you open up spotlight and just type it and it comes up.Though, I think what's also sort of interesting is, uh, at least in the note taking space, there's a lot of people who like setting up things like tags and things like that. And in a way that feels a lot like folders, I guess [00:10:35] Swizec: Yeah. The difference between tags and categories is that the same file can have multiple tags and it cannot be in multiple folders. So that's why categorization systems usually fall apart. You mentioned note taking systems and my opinion on those has always been that it's very easy to fall into the trap of feeling productive because you are working on your note or productivity system, but you're not actually achieving anything.You're just creating work for work sake. I try to keep everything as simple as possible and kind of avoid the overhead.[00:11:15] Jeremy: People can definitely spend hours upon hours curating what's my note taking system going to be, the same way that you can try to set up your blog for two weeks and not write any articles. [00:11:31] Swizec: Yeah. exactly.[00:11:32] Jeremy: When I take notes, a lot of times I'll just create a new note in apple notes or in a markdown file and I'll just write stuff, but it ends up being very similar to what you described with your, your log book in that, like, because it's, it's not really organized in any way. Um, it can be tricky to go back and actually, find useful information though, Though, I suppose the main difference though, is that when it is digital, uh, sometimes if I search for a specific, uh, software application or a specific tool, then at least I can find, um, those bits there [00:12:12] Swizec: Yeah. That's true. the other approach I'd like to use is called the good shit stays. So if I can't remember it, it probably wasn't important enough. And you can, especially these days with the internet, when it comes to details and facts, you can always find them. I find that it's pretty easy to find facts as long as you can remember some sort of reference to it.[00:12:38] Jeremy: You can find specific errors or like you say specific facts, but I think if you haven't been working with a specific technology or in a specific domain for a certain amount of time, you, it, it can be hard to, to find like the right thing to look for, or to even know if the solution you're looking at is, is the right one. [00:13:07] Swizec: That is very true. Yeah. Yeah, I don't really have a solution for that one other than relearn it again. And it's usually faster the second time. But if you had notes, you would still have to reread the notes. Anyway, I guess that's a little faster, cause it's customized to you personally.[00:13:26] Jeremy: Where it's helpful is that sometimes when you're looking online, you have to jump through a bunch of different sites to kind of get all the information together. And by that time you've, you've lost your flow a little bit, or you you've lost, kind of what you were working on, uh, to begin with. Yeah. [00:13:45] Swizec: Yeah. That definitely happens.[00:13:47] Jeremy: Next I'd like to talk about the serverless handbook. Something that you've talked about publicly a little bit is that when you try to work on something, you don't think it's a great idea to just go look at a bunch of blog posts. Um, you think it's better to, to go to a book or some kind of more, uh, I don't know what you would call it like larger or authoritative resource. And I wonder what the process was for, for you. Like when you decided I'm going to go learn how to do serverless you know, what was your process for doing that? [00:14:23] Swizec: Yeah. When I started learning serverless, I noticed that maybe I just wasn't good at finding them. That's one thing I've noticed with Google is that when you're jumping into a new technical. It's often hard to find stuff because you don't really know what you're searching for. And Google also likes to tune the algorithms to you personally a little bit.So it can be hard to find what you want if you are, if you haven't been in that space. So I couldn't really find a lot of good resources, uh, which resulted in me doing a lot of exploration, essentially from scratch or piecing together different blogs and scraps of information here and there. I know that I spend ridiculous amounts of time in even as deep as GitHub issues on closed issues that came up in Google and answer something or figure, or people were figuring out how something works and then kind of piecing all of that together and doing a lot of kind of manual banging my head against the wall until the wall broke.And I got through. I decided after all of that, that I really liked serverless as a technology. And I really think it's the future of how backend systems are going to be built. I think it's unclear yet. What kind of systems is appropriate for and what kind of kind of systems it isn't.It does have pros and cons. it does resolve a lot of the very annoying parts of building a modern website or building upon backend go away when you go serverless. So I figured I really liked this and I've learned a lot trying to piece it together over a couple of years.And if combined, I felt like I was able to do that because I had previous experience with building full stack websites, building full stack apps and understanding how backends work in general. So it wasn't like, oh, How do I do this from scratch? It was more okay. I know how this is supposed to work in theory.And I understand the principles. What are the new things that I have to add to that to figure out serverless? So I wrote the serverless handbook basically as a, as a reference or as a resource that I wish I had when I started learning this stuff. It gives you a lot of the background of just how backends work in general, how databases connect, what different databases are, how they're, how they work.Then I talked some, some about distributed systems because that comes up surprisingly quickly when you're going with serverless approaches, because everything is a lot more distributed. And it talks about infrastructure as code because that kind of simplifies a lot of the, they have opposite parts of the process and then talks about how you can piece it together in the ends to get a full product. and I approached it from the perspective of, I didn't want to write a tutorial that teaches you how to do something specific from start to finish, because I personally don't find those to be super useful. Um, they're great for getting started. They're great for building stuff. If you're building something, that's exactly the same as the tutorial you found.But they don't help you really understand how it works. It's kind of like if you just learn how to cook risotto, you know how to cook risotto, but nobody told you that, Hey, you actually, now that you know how to cook risotto, you also know how to just make rice and peas. It's pretty much the same process.Uh, and if you don't have that understanding, it's very hard to then transition between technologies and it's hard to apply them to your specific situation. So I try to avoid that and write more from the perspective. How I can give somebody who knows JavaScript who's a front end engineer, or just a JavaScript developer, how I can give them enough to really understand how serverless and backends works and be able to apply those approaches to any project.[00:18:29] Jeremy: When people hear serverless, a lot of times they're not really sure what that actually means. I think a lot of times people think about Lambdas, they think about functions as a service. but I wonder to you what does serverless mean? [00:18:45] Swizec: It's not that there's no server, there's almost always some server somewhere. There has to be a machine that actually runs your code. The idea of serverless is that the machine and the system that handles that stuff is trans is invisible to you. You're offloading all of the dev ops work to somebody else so that you can full focus on the business problems that you're trying to solve.You can focus on the stuff that is specific and unique to your situation because, you know, there's a million different ways to set up a server that runs on a machine somewhere and answers, a, API requests with adjacent. And some people have done that. Thousands of times, new people, new folks have probably never done it.And honestly, it's really boring, very brittle and kind of annoying, frustrating work that I personally never liked. So with serverless, you can kind of hand that off to a whole team of engineers at AWS or at Google or, whatever other providers there are, and they can deal with that stuff. And you can, you can work on the level of, I have this JavaScript function.I want this JavaScript function to run when somebody hits this URL and that's it. That's all, that's essentially all you have to think about. So that's what serverless means to me. It's essentially a cloud functions, I guess.[00:20:12] Jeremy: I mean, there been services like Heroku, for example, that, that have let people make rails apps or Django apps and things like that, where the user doesn't really have to think about the operating system, um, or about creating databases and things like that. And I wonder, to you, if, if that is serverless or if that's something different and, and what the difference there might be. [00:20:37] Swizec: I think of that as an intermediary step between on prem or handling your own servers and full serverless, because you still have to think about provisioning. You still have to think of your server as a whole blob or a whole glob of things that runs together and runs somewhere and lives or lifts somewhere.You have to provision capacity. You have to still think about how many servers you have on Heroku. They're called dynos. you still have to deal with the routing. You have to deal with connecting it to the database. Uh, you always have to think about that a little bit, but you're, you're still dealing with a lot of the frameworky stuff where you have to, okay, I'm going to declare a route. And then once I've declared the route, I'm going to tell it how to take data from the, from the request, put it to the function. That's actually doing the work. And then you're still dealing with all of that. Whereas with full serverless, first of all, it can scale down to zero, which is really useful.If you don't have a lot of traffic, you can have, you're not paying anything unless somebody is actually using your app. The other thing is that you don't deal with any of the routing or any of that. You're just saying, I want this URL to exist, and I want it to run that function, that you don't deal with anything more than that.And then you just write, the actual function that's doing the work. So it ends up being as a normal jobs function that accepts a request as an argument and returns a JSON response, or even just a JSON object and the serverless machinery handles everything else, which I personally find a lot easier. And you don't have to have these, what I call JSON bureaucracy, where you're piping an object through a bunch of different functions to get from the request to the actual part that's doing the work. You're just doing the core interesting work.[00:22:40] Jeremy: Sort of sounds like one of the big distinctions is with something like Heroku or something similar. You may not have a server, but you have the dyno, which is basically a server. You have something that is consistently running, Whereas with what you consider to be serverless, it's, it's something that basically only launches on when it's invoked. Um, whether that's a API call or, or something else. The, the routing thing is a little bit interesting because the, when I was going through the course, there are still the routes that you write. It's just that you're telling, I guess the API gateway Amazon's API gateway, how to route to your functions, which was very similar to how to route to a controller action or something like that in other languages.[00:23:37] Swizec: Yeah. I think that part is actually is pretty similar where, I think it kind of depends on what kind of framework you end up building. Yeah, it can be very simple. I know with rails, it's relatively simple to define a new route. I think you have to touch three or four different files. I've also worked in large express apps where.Hooking up the controller with all of the swagger definitions or open API definitions, and everything else ends up being like six or seven different files that have to have functions that are named just right. And you have to copy paste it around. And I, I find that to be kind of a waste of effort, with the serverless framework.What I like is you have this YAML file and you say, this route is handled by this function. And then the rest happens on its own with next JS or with Gatsby functions, Gatsby cloud functions. They've gone even a step further, which I really like. You have the slash API directory in your project and you just pop a file in there.And whatever that file is named, that becomes your API route and you don't even have to configure anything. You're just, in both of them, if you put a JavaScript file in slash API called hello, That exports, a handler function that is automatically a route and everything else happens behind the scenes.[00:25:05] Jeremy: So that that's more of a matter of the framework you're using and how easy does it make it to, to handle routing? Whether that's a pain or a not.[00:25:15] Swizec: Yeah. and I think with the serverless frameworks, it's because serverless itself, as a concept makes it easier to set this up. We've been able to have these modern frameworks with really good developer experience Gatsby now with how did they have Gatsby cloud and NextJS with Vercel and I think Netlify is working on it as well.They can have this really good integration between really tight coupling and tight integration between a web framework and the deployment environment, because serverless is enabling them to spin that up. So easily.[00:25:53] Jeremy: One of the things about your courses, this isn't the only thing you focus on, but one of the use cases is basically replacing a traditional server rendered application or a traditional rails, django, spring application, where you've got Amazon's API gateway in front, which is serving as the load balancer.And then you have your Lambda functions, which are basically what would be a controller action in a lot of frameworks. and then you're hooking it up to a database which could be Amazon. It could be any database, I suppose. And I wonder in your experience having worked with serverless at your job or in side projects, whether that's like something you would use as a default or whether serverless is more for background jobs and things like that.[00:26:51] Swizec: I think the underlying hidden question you're asking is about cold starts and API, and the response times, is one of the concerns that people have with serverless is that if your app is not used a lot, your servers scale down to zero. So then when somebody new comes on, it can take a really long time to respond.And they're going to bail and be upset with you. One way that I've solved, that is using kind of a more JAM Stacky approach. I feel like that buzzword is still kind of in flux, but the idea is that the actual app front-end app, the client app is running off of CDNs and doesn't even touch your servers.So that first load is of the entire app and of the entire client system is really fast because it comes from a CDN that's running somewhere as close as possible to the user. And it's only the actual APIs are hitting your server. So in the, for example, if you have something like a blog, you can, most blogs are pretty static.Most of the content is very static. I use that on my blog as well. you can pre-render that when you're deploying the project. So you, you kind of, pre-render everything that's static when you deploy. And then it becomes just static files that are served from the CDN. So you get the initial article. I think if you, I haven't tested in a while, but I think if you load one of my articles on swizec.com, it's readable, like on lighthouse reports, if you look at the lighthouse where it gives you the series of screenshots, the first screenshot is already fully readable.I think that means it's probably under 30 or 40 milliseconds to get the content and start reading, but then, then it rehydrates and becomes a react app. and then when it's a react app, it can make for their API calls to the backend. So usually on user interaction, like if you have upvotes or comments or something like that, Only when the user clicks something, you then make an API call to your server, and that then calls a Lambda or Gatsby function or a Netlify cloud function, or even a Firebase function, which then then wakes up and talks to the database and does things, and usually people are a lot more forgiving of that one taking 50 milliseconds to respond instead of 10 milliseconds, but, you know, 50 milliseconds is still pretty good.And I think there were recently some experiments shared where they were comparing cold start times. And if you write your, uh, cloud functions in JavaScript, the average cold startup time is something like a hundred milliseconds. And a big part of that is because you're not wrapping this entire framework, like express or rails into your function. It's just a small function. So the server only has to load up something like, I don't know. I think my biggest cloud functions have been maybe 10 kilobytes with all of the dependencies and everything bundled in, and that's pretty fast for a server to, to load run, start no JS and start serving your request.It's way fast enough. And then if you need even more speed, you can go to rust or go, which are even faster. As long as you avoid the java, .net, C-sharp those kinds of things. It's usually fine.[00:30:36] Jeremy: One of the reasons I was curious is because I was going through the rest example you've got, where it's basically going through Amazon's API gateway, um, goes to a Lambda function written in JavaScript, and then talks to dynamoDB gives you a record back or creates a record and, I, I found that just making those calls, making a few calls, hopefully to account for the cold start I getting response times of maybe 150 to 250 milliseconds, which is not terrible, but, it's also not what I would call fast either.So I was just kind of curious, when you have a real app, like, are, are there things that you've come across where Lambda maybe might have some issues or at least there's tricks you need to do to, to work around them? [00:31:27] Swizec: Yeah. So the big problem there is, as soon as a database is involved, that tends to get. Especially if that database is not co-located with your Lambda. So it's usually, or when I've experimented, it was a really bad idea to go from a Vercel API function, talk to dynamo DB in AWS that goes over the open internet.And it becomes really slow very quickly. at my previous job, I experimented with serverless and connecting it to RDS. If you have RDS in a separate private network, then RDS is that they, the Postgres database service they have, if that's running in a separate private network, then your functions, it immediately adds 200 or 300 milliseconds to your response times.If you keep them together, it usually works a lot faster. ANd then there are ways to keeping them. Pre-warned usually it doesn't work as well as you would want. There are ways on AWS to, I forget what it's called right now, but they have now what's, some, some sort of automatic rewarming, if you really need response times that are smaller than a hundred, 200 milliseconds.But yeah, it mostly depends on what you're doing. As soon as you're making API calls or database calls. You're essentially talking to a different server that is going to be slower on a lambda then it is if you have a packaged pserver, that's running the database and the server itself on the same machine.[00:33:11] Jeremy: And are there any specific challenges related to say you mentioned RDS earlier? I know with some databases, like for example, Postgres sometimes, uh, when you have a traditional server application, the server will pool the connections. So it'll make some connection into your data database and just keep reusing them.Whereas with the Lambda is it making a new connection every time? [00:33:41] Swizec: Almost. So Lambdas. I think you can configure how long it stays warm, but what AWS tries to do is reuse your laptops. So when the Lambda wakes up, it doesn't die immediately. After that initial request, it stays, it stays alive for the next, let's say it's one minute. Or even if it's 10 minutes, it's, there's a life for the next couple of minutes.And during that time, it can accept new requests, new requests and serve them. So anything that you put in the global namespace of your phone. We'll potentially remain alive between functions and you can use that to build a connection pool to your database so that you can reuse the connections instead of having to open new connections every time.What you have to be careful with is that if you get simultaneous requests at actually simultaneous requests, not like 10 requests in 10 milliseconds, if you get 10 requests at the same millisecond, you're going to wake up multiple Lambdas and you're going to have multiple connection pools running in parallel.So it's very easy to crash your RDS server with something like AWS Lambda, because I think the default concurrency limit is a thousand Lambdas. And if each of those can have a pool of, let's say 10 requests, that's 10,000 open requests or your RDS server. And. You were probably not paying for high enough tier for the RDS server to survive that that's where it gets really tricky.I think AWS now has a service that lets you kind of offload a connection pool so that you can take your Lambda and connect it to the connection pool. And the connection pool is keeping warm connections to your server. but an even better approach is to use something like Aurora DB, which is also an on AWS or dynamo DB, which are designed from the ground up to work with serverless applications.[00:35:47] Jeremy: It's things that work, but you have to know sort of the little, uh, gotchas, I guess, that are out there. [00:35:54] Swizec: Yeah, exactly. There's sharp edges to be found everywhere. part of that is also that. serverless, isn't that old yet I think AWS Lambda launched in 2014 or 2015, which is one forever in internet time, but it's still not that long ago. So we're still figuring out how to make things better.And, it's also where, where you mentioned earlier that whether it's more appropriate for backend processes or for user-facing processes, it does work really well for backend processes because you CA you have better control over the maximum number of Lambdas that run, and you have more patience for them being slow, being slow sometimes. And so on.[00:36:41] Jeremy: It sounds like even for front end processes as long as you know, like you said, the sharp edges and you could do things like putting a CDN in front where your Lambdas don't even get hit until some later time. There's a lot of things you can do to make it where it is a good choice or a good I guess what you're saying, when you're building an application, do you default to using a serverless type of stack? [00:37:14] Swizec: Yes, for all of my side projects, I default to using serverless. Um, I have a bunch of apps running that way, even when serverless is just no servers at all. Like my blog doesn't have any cloud functions right now. It's all running from CDNs, basically. I think the only, I don't know if you could even count that as a cloud function is w my email signup forms go to an API with my email provider.So there's also not, I don't have any servers there. It's directly from the front end. I would totally recommend it if you are a startup that just got tens of millions of dollars in funding, and you are planning to have a million requests per second by tomorrow, then maybe not. That's going to be very expensive very quickly.But there's always a trade off. I think that with serverless, it's a lot easier to build in terms of dev ops and in terms of handling your infrastructure, it's, it takes a bit of a mind shift in how you're building when it comes to the actual logic and the actual, the server system that you're building.And then in terms of costs, it really depends on what you're doing. If you're a super huge company, it probably doesn't make sense to go and serverless, but if you're that. Or if you have that much traffic, you hopefully are also making enough money to essentially build your own serverless system for yourself.[00:38:48] Jeremy: For someone who's interested in trying serverless, like I know for myself when I was going through the tutorial you're using the serverless framework and it creates all these different things in AWS for you and at a high level I could follow. Okay. You know, it has the API gateway and you've got your simple queue service and DynamoDB, and the lambdas all that sort of thing.So at a high level, I could follow along. But when I log into the AWS console, not knowing a whole lot about AWS, it's creating a ton of stuff for you. And I'm wondering from your perspective for somebody who's learning about serverless, how much do they need to really dive into the AWS internals and understand what's going on there. [00:39:41] Swizec: That's a tough one because personally I try to stay away as much as possible. And especially with the serverless framework, what I like is configuring everything through the framework rather than doing it manually. Um, because there's a lot of sharp edges there as well. Where if you go in and you manually change something, then AWS can't allow serverless framework to clean up anymore and you can have ghost processes running.At Tia, we've had that as a really interesting challenge. We're not using serverless framework, we're using something called cloud formation, which is essentially. One lower level of abstraction, then serverless framework, we're doing a lot more work. We're creating a lot more work for ourselves, but that's what we have. And that's what we're working with. these decisions predate me. So I'm just going along with what we have and we wanted to have more control, because again, we have dev ops people on the team and they want more control because they also know what they're doing and we keep having trouble with, oh, we were trying to use infrastructure as code, but then there's this little part where you do have to go into the AWS console and click around a million times to find the right thing and click it.And we've had interesting issues with hanging deploys where something gets stuck on the AWS side and we can take it back. We can tear it down, we can stop it. And it's just a hanging process and you have to wait like seven hours for AWS to do. Oh, okay. Yeah. If it's been there for seven hours, it's probably not needed and then kills it and then you can deploy.So that kind of stuff gets really frustrating very quickly.[00:41:27] Jeremy: Sounds like maybe in your personal projects, you've been able to, to stick to the serverless framework abstraction and not necessarily have to understand or dive into the details of AWS and it's worked out okay for you. [00:41:43] Swizec: Yeah, exactly. it's useful to know from a high, from a high level what's there and what the different parts are doing, but I would not recommend configuring them through the, through the AWS console because then you're going to always be in the, in the AWS console. And it's very easy to get something slightly wrong.[00:42:04] Jeremy: Yeah. I mean, I know for myself just going through the handbook, just going into the console and finding out where I could look at my logs or, um, what was actually running in AWS. It wasn't that straightforward. So, even knowing the bare minimum for somebody who's new to, it was like a little daunting. [00:42:26] Swizec: Yeah, it's super daunting. And they have thousands, if not hundreds of different products on AWS. and when it comes to, like you mentioned logs, I, I don't think I put this in the handbook because I either didn't know about it yet, or it wasn't available quite yet, but serverless can all the serverless framework also let you look at logs through the servers framework.So you can say SLS function, name, logs, and it shows you the latest logs. it also lets you run functions locally to an extent. it's really useful from that perspective. And I personally find the AWS console super daunting as well. So I try to stay away as much as possible.[00:43:13] Jeremy: It's pretty wild when you first log in and you click the button that shows you the services and it's covering your whole screen. Right. And you're like, I just want to see what I just pushed. [00:43:24] Swizec: Yeah, exactly. And there's so many different ones and they're all they have these obscure names that I don't find meaningful at all.[00:43:34] Jeremy: I think another thing that I found a little bit challenging was that when I develop applications, I'm used to having the feedback cycle of writing the code, running the application or running a test and seeing like, did it work? And if it didn't, what's the stack trace, what, what happened? And I found the process of going into CloudWatch and looking at the logs and waiting for them to eventually refresh and all that to be, a little challenging. And, and, um, so I was wondering in your, your experience, um, how you've worked through, you know, how are you able to get a fast feedback loop or is this just kind of just part of it. [00:44:21] Swizec: I am very lazy when it comes to writing tests, or when it comes to fast feedback loops. I like having them I'm really bad at actually setting them up. But what I found works pretty well for serverless is first of all, if you write your backend a or if you write your cloud functions in TypeScript that immediately resolves most of the most common issues, most common sources of bugs, it makes sure that you're not using something that doesn't exist.Make sure you're not making typos, make sure you're not holding a function wrong, which I personally find very helpful because I have pretty fast and I make typos. And it's so nice to be able to say, if it's completely. I know that it's at least going to run. I'm not going to have some stupid issue of a missing semi-colon or some weird fiddly detail.So that's already a super fast feedback cycle that runs right in your IDE the next step is because you're just writing the business logic function and you know, that the function itself is going to run. You can write unit tests that treat that function as a normal function. I'm personally really bad at writing those unit tests, but they can really speed up the, the actual process of testing because you can go and you can be like, okay.So I know that the code is doing what I want it to be doing if it's running in isolation. And that, that can be pretty fast. The next step that is, uh, Another level in abstraction and and gives you more feedback is with serverless. You can locally invoke most Lambdas. The problem with locally running your Lambdas is that it's not the same environment as on AWS.And I asked one of the original developers of the same serverless framework, and he said, just forget about accurately replicating AWS on your system. There are so many dragons there it's never going to work. and I had an interesting example about that when I was building a little project for my girlfriend that sends her photos from our relationship to an IOT device every day or something like that.It worked when I ran SLS invoke and it ran and it even called all of the APIs and everything worked. It was amazing. And then when I deployed it, it didn't work and it turned out that it was a permissions issue. I forgot to give myself a specific, I am role for something to work. That's kind of like a stair-stepping process of having fast feedback cycles first, if it compiles, that means that you're not doing anything absolutely wrong.If the tests are running, that means it's at least doing what you think it's doing. If it's invoking locally, it means that you're holding the API APIs and the third-party stuff correctly. And then the last step is deploying it to AWS and actually running it with a curl or some sort of request and seeing if it works in production.And that then tells you if it's actually going to work with AWS. And the nice thing there is because uh serverless framework does this. I think it does a sort of incremental deploys. The, that cycle is pretty fast. You're not waiting half an hour for your C code pipeline or for your CIO to run an integration test, to do stuff.One minute, it takes one minute and it's up and you can call it and you immediately see if it's working.[00:47:58] Jeremy: Basically you're, you're trying to do everything you can. Static typing and, running tests just on the functions. But I guess when it comes down to it, you really do have to push everything, update AWS, have it all run, um, in order to, to really know. Um, and so I guess it's, it's sort of a trade-off right. Versus being able to, if you're writing a rails application and you've got all your dependencies on your machine, um, you can spin it up and you don't really have to wait for it to, to push anywhere, but, [00:48:36] Swizec: Yeah. But you still don't know if, what if your database is misconfigured in production?[00:48:42] Jeremy: right, right. So it's, it's never, never the same as production. It's just closer. Right? Yeah. Yeah, I totally get When you don't have the real services or the real databases, then there's always going to be stuff that you can miss. Yeah, [00:49:00] Swizec: Yeah. it's not working until it's working in production.[00:49:03] Jeremy: That's a good place to end it on, but is there anything else you want to mention before we go?[00:49:10] Swizec: No, I think that's good. Uh, I think we talked about a lot of really interesting stuff.[00:49:16] Jeremy: Cool. Well, Swiz, thank you so much for chatting with me today. [00:49:19] Swizec: Yeah. Thank you for having me.
Alexander Pugh is a software engineer at Albertsons. He has worked in Robotic Process Automation and the cognitive services industry for over five years.This episode originally aired on Software Engineering Radio.Related LinksAlexander Pugh's personal siteEnterprise RPA Solutions Automation Anywhere UiPath blueprism Enterprise "Low Code/No Code" API Solutions appian mulesoft Power Automate RPA and the OS Office primary interop assemblies Office Add-ins documentation Task Scheduler for developers The Component Object Model The Document Object Model TranscriptYou can help edit this transcript on GitHub.[00:00:00] Jeremy: Today, I'm talking to Alexander Pugh. He's a solutions architect with over five years of experience working on robotic process automation and cognitive services. Today, we're going to focus on robotic process automation. Alexander welcome to software engineering radio. [00:00:17] Alex: Thank you, Jeremy. It's really good to be here. [00:00:18] Jeremy: So what does robotic process automation actually mean? [00:00:23] Alex: Right. It's a, it's a very broad nebulous term. when we talk about robotic process automation, as a concept, we're talking about automating things that humans do in the way that they do them. So that's the robotic, an automation that is, um, done in the way a human does a thing.Um, and then process is that thing, um, that we're automating. And then automation is just saying, we're turning this into an automation where we're orchestrating this and automating this. and the best way to think about that in any other way is to think of a factory or a car assembly line. So initially when we went in and we, automated a car or factory, automation line, what they did is essentially they replicated the process as a human did it. So one day you had a human that would pick up a door and then put it on the car and bolt it on with their arms. And so the initial automations that we had on those factory lines were a robot arm that would pick up that door from the same place and put it on the car and bolt it on there.Um, so the same can be said for robotic process automation. We're essentially looking at these, processes that humans do, and we're replicating them, with an automation that does it in the same way. Um, and where we're doing that is the operating system. So robotic process automation is essentially going in and automating the operating system to perform tasks the same way a human would do them in an operating system.So that's, that's RPA in a nutshell, Jeremy: So when you say you're replicating something that a human would do, does it mean it has to go through some kind of GUI or some kind of user interface?[00:02:23] Alex: That's exactly right, actually. when we're talking about RPA and we look at a process that we want to automate with RPA, we say, okay. let's watch the human do it. Let's record that. Let's document the human process. And then let's use the RPA tool to replicate that exactly in that way.So go double click on Chrome, launch that click in the URL line and send key in www.cnn.com or what have you, or servicenow hit enter, wait for it to load and then click, you know, where you want to, you know, fill out your ticket for service. Now send key in. So that's exactly how an RPA solution at the most basic can be achieved.Now and any software engineer knows if you sit there and look over someone's shoulder and watch them use an operating system. Uh, you'll say, well, there's a lot of ways we can do this more efficiently without going over here, clicking that, you know, we can, use a lot of services that the operating system provides in a programmatic way to achieve the same ends and RPA solutions can also do that.The real key is making sure that it is still achieving something that the human does and that if the RPA solution goes away, a human can still achieve it. So if you're, trying to replace or replicate a process with RPA, you don't want to change that process so much so that a human can no longer achieve it as well.that's something where if you get a very technical, and very fluent software engineer, they lose sight of that because they say, oh, you know what? There's no reason why we need to go open a browser and go to you know, the service now portal and type this in when I can just directly send information to their backend.which a human could not replicate. Right? So that's kind of where the line gets fuzzy. How efficiently can we make this RPA solution? [00:04:32] Jeremy: I, I think a question that a lot of people are probably having is a lot of applications have APIs now. but what you're saying is that for it to, to be, I suppose, true RPA, it needs to be something that a user can do on their own and not something that the user can do by opening up dev tools or making a post to an end point.[00:04:57] Alex: Yeah. And so this, this is probably really important right now to talk about why RPA, right? Why would you do this when you could put on a server, a a really good, API ingestion point or trigger or a web hook that can do this stuff. So why would we, why would we ever pursue our RPA?There there's a lot of good reasons for it. RPA is very, very enticing to the business. RPA solutions and tools are marketed as a low code, no code solution for the business to utilize, to solve their processes that may not be solved by an enterprise solution and the in-between processes in a way.You have, uh, a big enterprise, finance solution that everyone uses for the finance needs of your business, but there are some things that it doesn't provide for that you have a person that's doing a lot of, and the business says, Okay. well, this thing, this human is doing this is really beneath their capability. We need to get a software solution for it, but our enterprise solution just can't account for it. So let's get a RPA capability in here. We can build it ourselves, and then there we go. So there, there are many reasons to do that. financial, IT might not have, um, the capability or the funding to actually build and solve the solution. Or it it's at a scale that is too small to open up, uh, an IT project to solve for. Um, so, you know, a team of five is just doing this and they're doing it for, you know, 20 hours a week, which is uh large, but in a big enterprise, that's not really. Maybe um, worth building an enterprise solution for it. or, and this is a big one. There are regulatory constraints and security constraints around being able to access this or communicate some data or information in a way that is non-human or programmatic. So that's really where, um, RPA is correctly and best applied and you'll see it most often.So what we're talking about there is in finance, in healthcare or in big companies where they're dealing with a lot of user data or customer data in a way. So when we talk about finance and healthcare, there are a lot of regulatory constraints and security reasons why you would not enable a programmatic solution to operate on your systems. You know, it's just too hard. We we're not going to expose our databases or our data to any other thing. It would, it would take a huge enterprise project to build out that capability, secure that capability and ensure it's going correctly. We just don't have the money the time or the strength honestly, to afford for it.So they say, well, we already have. a user pattern. We already allow users to, to talk to this information and communicate this information. Let's get an RPA tool, which for all intents and purposes will be acting as a user. And then it can just automate that process without us exposing to queries or any other thing, an enterprise solution or programmatic, um, solution.So that's really why RPA, where and why you, you would apply it is there's, there's just no capability at enterprise for one reason or another to solve for it. [00:08:47] Jeremy: as software engineers, when we see this kind of problem, our first thought is, okay, let's, let's build this custom application or workflow. That's going to talk to all these API APIs. And, and what it sounds like is. In a lot of cases there just isn't the time there just isn't the money, to put in the effort to do that.And, it also sounds like this is a way of being able to automate that. and maybe introducing less risk because you're going through the same, security, the same workflow that people are doing currently. So, you know, you're not going to get into things that they're not supposed to be able to get into because all of that's already put in place.[00:09:36] Alex: Correct. And it's an already accepted pattern and it's kind of odd to apply that kind of very IT software engineer term to a human user, but a human user is a pattern in software engineering. We have patterns that do this and that, and, you know, databases and not, and then the user journey or the user permissions and security and all that is a pattern.And that is accepted by default when you're building these enterprise applications okay.What's the user pattern. And so since that's already established and well-known, and all the hopefully, you know, walls are built around that to enable it to correctly do what it needs to do. It's saying, Okay. we've already established that. Let's just use that instead of. You know, building a programmatic solution where we have to go and find, do we already have an appropriate pattern to apply to it? Can we build it in safe way? And then can we support it? You know, all of a sudden we, you know, we have the support teams that, you know, watch our Splunk dashboards and make sure nothing's going down with our big enterprise application.And then you're going to build a, another capability. Okay. WHere's that support going to come from? And now we got to talk about change access boards, user acceptance testing and, uh, you know, UAT dev production environments and all that. So it becomes, untenable, depending on your, your organization to, to do that for things that might fall into a place that is, it doesn't justify the scale that needs to be thrown upon it.But when we talk about something like APIs and API exist, um, for a lot of things, they don't exist for everything. And, a lot of times that's for legacy databases, that's for mainframe capability. And this is really where RPA shines and is correctly applied. And especially in big businesses are highly regulated businesses where they can't upgrade to the newest thing, or they can't throw something to the cloud.They have a, you know, their mainframe systems or they have their database systems that have to exist for one reason or the other until there is the motivation and the money and the time to correctly migrate and, and solve for them. So until that day, and again, there's no, API to, to do anything on a, on a mainframe, in this bank or whatnot, it's like, well, Okay. let's just throw RPA on it.Let's, you know, let's have a RPA do this thing, uh, in the way that a human does it, but it can do it 24 7. and an example, or use cases, you work at a bank and, uh, there's no way that InfoSec is going to let you query against this database with, your users that have this account or your customers that have this no way in any organization at a bank.Is InfoSec going to say, oh yeah. sure. Let me give you an Odata query, you know, driver on, you know, and you can just set up your own SQL queries and do whatever they're gonna say no way. In fact, how did you find out about this database in the first place and who are you.How do we solve it? We, we go and say, Okay. how does the user get in here well they open up a mainframe emulator on their desktop, which shows them the mainframe. And then they go in, they click here and they put this number in there, and then they look up this customer and then they switch this value to that value and they say, save.And it's like, okay. cool. That's that RPA can do. And we can do that quite easily. And we don't need to talk about APIs and we don't need to talk about special access or doing queries that makes, you know, Infosec very scared. you know, a great use case for that is, you know, a bank say they, they acquire, uh, a regional bank and they say, cool, you're now part of our bank, but in your systems that are now going to be a part of our systems, you have users that have this value, whereas in our bank, that value is this value here. So now we have to go and change for 30,000 customers this one field to make it line up with our systems. Traditionally you would get a, you know, extract, transform load tool an ETL tool to kind of do that. But for 30,000 customers that might be below the threshold, and this is banking. So it's very regulated and you have to be very, very. Intentional about how you manipulate and move data around.So what do we have to do? okay. We have to hire 10 contractors for six months, and literally what they're going to do eight hours a day is go into the mainframe through the simulator and customer by customer. They're going to go change this value and hit save. And they're looking at an Excel spreadsheet that tells them what customer to go into.And that's going to cost X amount of money and X, you know, for six months, or what we could do is just build a RPA solution, a bot, essentially that goes, and for each line of that Excel spreadsheet, it repeats this one process, open up mainframe emulator, navigate into the customer profile and then changes value, and then shut down and repeat.And It can do that in one week and, and can be built in two, that's the, the dream use case for RPA and that's really kind of, uh, where it would shine.[00:15:20] Jeremy: It sounds like the. best use case for it is an old system, a mainframe system, in COBOL maybe, uh, doesn't have an API. And so, uh, it makes sense to rather than go, okay, how can we get directly into the database?[00:15:38] Alex: How can we build on top of it? Yeah,[00:15:40] Jeremy: we build on top of it? Let's just go through the, user interface that exists, but just automate that process. And, the, you know, the example you gave, it sounds very, very well-defined you're gonna log in and you're going to put in maybe this ID, here's the fields you want to get back.and you're going to save those and you didn't have to make any real decisions, I suppose, in, in terms of, do I need to click this thing or this thing it's always going to be the same path to, to get there.[00:16:12] Alex: exactly. And that's really, you need to be disciplined about your use cases and what those look like. And you can broadly say a use case that I am going to accept has these features, and one of the best ways to do that is say it has to be a binary decision process, which means there is no, dynamic or interpreted decision that needs to, or information that needs to be made.Exactly like that use case it's very binary either is, or it isn't you go in you journey into there. and you change that one thing and that's it there's no oh, well this information says this, which means, and then I have to go do this. Once you start getting in those if else, uh, processes you're, you're going down a rabbit hole and it could get very shaky and that introduces extreme instability in what you're trying to do.And also really expands your development time cause you have to capture these processes and you have to say, okay. tell me exactly what we need to build this bot to do. And for, binary decision processes, that's easy go in here, do this, but nine times out of 10, as you're trying to address this and solution for it, you'll find those uncertainties.You'll find these things where the business says, oh, well, yeah. that happens, you know, one times out of 10 and this is what we need to do. And it's like, well, that's going to break the bot. It, you know, nine times out of 10, this, this spot is going to fall over. this is now where we start getting into, the machine learning and AI, realm.And why RPA, is classified. Uh, sometimes as a subset of the AI or machine learning field, or is a, a pattern within that field is because now that you have this bot or this software that enables you to do a human process, let's enable that bot to now do decision-making processes where it can interpret something and then do something else.Because while we can just do a big tree to kind of address every capability, you're never going to be able to do that. And also it's, it's just a really heavy, bad way to build things. So instead let's throw in some machine learning capability where it just can understand what to do and that's, you know, that's the next level of RPA application is Okay. we've got it. We've, we've gone throughout our organization. We found every kind of binary thing, that can be replaced with an RPA bot. Okay.Now what are the ones that we said we couldn't do? Because it had some of that decision-making that, required too much of a dynamic, uh, intelligence behind it. And let's see if we can address those now that we have this. And so that's, that's the 2.0, in RPA is addressing those non-binary, paths. I would argue that especially in organizations that are big enough to justify bringing in an RPA solution to solve for their processes. They have enough binary processes, binary decision processes to keep them busy.Some people, kind of get caught up in trying to right out the gate, say, we need to throw some machine learning. We need to make these bots really capable instead of just saying, well, we we've got plenty of work, just changing the binary processes or addressing those. Let's just be disciplined and take that, approach.Uh, I will say towards RPA and bots, the best solution or the only solution. When you talk about building a bot is the one that you eventually turn off. So you can say, I built a bot that will go into our mainframe system and update this value. And, uh, that's successful.I would argue that's not successful. When that bot is successful is when you can turn it off because there's an enterprise solution that addresses it. and, and you don't have to have this RPA bot that lives over here and does it instead, you're enterprise, capability now affords for it. And so that's really, I think a successful bot or a successful RPA solution is you've been able to take away the pain point or that human process until it can be correctly addressed by your systems that everyone uses. [00:21:01] Jeremy: from, the business perspective, you know, what are some of the limitations or long-term problems with, with leaving an RPA solution in place?[00:21:12] Alex: that's a, that's a good question. Uh, from the business there, isn't, it's solved for. leaving it in place is other than just servicing it and supporting it. There's no real issue there, especially if it's an internal system, like a mainframe, you guys own that. If it changes, you'll know it, if it changes it's probably being fixed or addressed.So there's no, problem. However, That's not the only application for RPA. let's talk about another use case here, your organization, uses, a bank and you don't have an internal way to communicate it. Your user literally has to go to the bank's website, log in and see information that the bank is saying, Hey, this is your stuff, right?The bank doesn't have an API for their, that service. because that would be scary for the bank. They say, we don't want to expose this to another service. So the human has to go in there, log in, look at maybe a PDF and download it and say, oh, Okay.So that is happens in a browser. So it's a newer technology.This isn't our mainframe built in 1980. You know, browser based it's in the internet and all that, but that's still a valid RPA application, right? It's a human process. There's no API, there's no easy programmatic way to, to solution for it. It would require the bank and your it team to get together and, you know, hate each other. Think about why this, this is so hard. So let's just throw a bot on it. That's going to go and log in, download this thing from the bank's website and then send it over to someone else. And it's going to do that all day. Every day. That's a valid application. And then tomorrow the bank changes its logo. And now my bot is it's confused.Stuff has shifted on the page. It doesn't know where to click anymore. So you have to go in and update that bot because sure enough, that bank's not going to send out an email to you and saying, Hey, by the way, we're upgrading our website in two weeks. Not going to happen, you'll know after it's happened.So that's where you're going to have to upgrade the bot. and that's the indefinite use of RPA is going to have to keep until someone else decides to upgrade their systems and provide for a programmatic solution that is completely outside the, uh, capability of the organization to change. And so that's where the business would say, we need this indefinitely.It's not up to us. And so that is an indefinite solution that would be valid. Right? You can keep that going for 10 years as long, I would say you probably need to get a bank that maybe meets your business needs a little easier, but it's valid. And that would be a good way for the business to say yes, this needs to keep running forever until it doesn't.[00:24:01] Jeremy: you, you brought up the case of where the webpage changes and the bot doesn't work anymore. specifically, you're, you're giving the example of finance and I feel like it would be basically catastrophic if the bot is moving money to somewhere, it shouldn't be moving because the UI has moved around or the buttons not where it expects it to be.And I'm kind of curious what your experience has been with that sort of thing.[00:24:27] Alex: you need to set organizational thresholds and say, this is this something this impacting or something that could go this wrong. It is not acceptable for us to solve with RPA, even though we could do it, it's just not worth it. Some organizations say that's anything that touches customer data healthcare and banking specialists say, yeah, we have a human process where the human will go and issue refunds to a customer, uh, and that could easily be done via RPA solution, but it's fraught with, what, if it does something wrong, it's literally going to impact.Uh, someone somewhere they're their moneys or their, their security or something like that. So that, that definitely should be part of your evaluation. And, um, as an organization, you should set that up early and stick to it and say, Nope, this is outside our purview. Even we can do it. It has these things.So I guess the answer to that is you should never get to that process, but now we're going to talk about, I guess, the actual nuts and bolts of how RPA solutions work and how they can be made to not action upon stuff when it changes or if it does so RPA software, by and large operates by exposing the operating system or the browsers underlying models and interpreting them.Right. So when we talk about something like a, mainframe emulator, you have your RPA software on Microsoft windows. It's going to use the COM the component operating model, to see what is on the screen, what is on that emulator, and it's gonna expose those objects. to the software and say, you can pick these things and click on that and do that.when we're talking about browser, what the RPA software is looking at is not only the COM the, the component object model there, which is the browser, itself. But then it's also looking at the DOM the document object model that is the webpage that is being served through the browser. And it's exposing that and saying, these are the things that you can touch or, operate on.And so when you're building your bots, what you want to make sure is that the uniqueness of the thing that you're trying to access is something that is truly unique. And if it changes that one thing that the bot is looking for will not change. So we let's, let's go back to the, the banking website, right?We go in and we launch the browser and the bot is sitting there waiting for the operating system to say, this process is running, which is what you wanted to launch. And it is in this state, you know, the bot says, okay. I'm expecting this kind of COM to exist. I see it does exist. It's this process, and it has this kind of name and cool Chrome is running. Okay. Let's go to this website. And after I've typed this in, I'm going to wait and look at the DOM and wait for it to return this expected a webpage name, but they could change their webpage name, the title of it, right. They can say, one day can say, hello, welcome to this bank. And the next day it says bank website, all of a sudden your bot breaks it no longer is finding what it was told to expect.So you want to find something unique that will never change with that conceivably. And so you find that one thing on the DOM on the banking website, it's, you know, this element or this tag said, okay, there's no way they're changing that. And so it says cool the page is loaded. Now click on this field, which is log in.Okay. You want to find something unique on that field that won't change when they upgrade, you know, from bootstrap to this kind of, you know, UI framework. that's all well, and good. That's what we call the happy path. It's doing this perfectly. Now you need to define what it should do when it doesn't find these things, which is not keep going or find similar it's it needs to fail fast and gracefully and pass on that failure to someone and not keep going. And that's kind of how we prevent that scary use case where it's like. okay. it's gone in, it's logged into the bank website now it's transactioning, bad things to bad places that we didn't program it for it, Well you unfortunately did not specify in a detailed enough way what it needs to look for.And if it doesn't find that it needs to break, instead of saying that this is close enough. And so, in all things, software engineering, it's that specificity, it's that detail, that you need to hook onto. And that's also where, when we talk about this being a low-code no-code solutions that sometimes RPA is marketed to the business.It's just so often not the case, because yes. It might provide a very user, business, friendly interface for you to build bots. But the knowledge you need to be able to ensure stability and accuracy, um, to build the bots is, is a familiarity that's probably not going to be had in the business. It's going to be had by a developer who knows what the DOM and COM are and how the operating system exposes services and processes and how.JavaScript, especially when we're talking about single page apps and react where you do have this very reactive DOM, that's going to change. You need to be fluent with that and know, not only how HTML tags work and how CSS will change stuff on you in classes, but also how clicking on something on a single page app is as simple as a username input field will dynamically change that whole DOM and you need to account for it. so, it is it's, traditionally not as easy as saying, oh, the business person can just click, click, click, click, and then we have a bot. You'll have a bot, but it's probably going to be break breaking quite often. It's going to be inaccurate in its execution.this is a business friendly user-friendly non-technical tool. And I launch it and it says, what do you want to do? And it says, let me record what you're going to do. And you say, cool.And then you go about you open up Chrome and you type in the browser, and then you click here, click there, hit send, and then you stop recording. The tool says, cool, this is what you've done. Well, I have yet to see a, a solution that is that isn't able to not need further direction or, or defining on that process, You still should need to go in there and say, okay, yeah.you recorded this correctly, but you know, you're not interpreting correctly or as accurate as you need to that field that I clicked on.And if you know, anybody hits, you know, F12 on their keyboard while they have Chrome open and they see how the DOM is built, especially if this is using kind of any kind of template, Webpage software. It's going to have a lot of cruft in that HTML. So while yes, the recording did correctly see that you clicked on the input box.What it's actually seen is that you actually clicked on the div. That is four levels scoped above it, whereas the parent, and there are other things within that as well. And so the software could be correctly clicking on that later, but other things could be in there and you're going to get some instability.So the human or the business, um, bot builder, the roboticist, I guess, would need to say, okay, listen, we need to pare this down, but it's, it's even beyond that. There are concepts that you can't get around when building bots that are unique to software engineering as a concept. And even though they're very basic, it's still sometimes hard for the business user to, they felt to learn that.And I I'm talking concepts as simple as for loops or loops in general where the business of course has, has knowledge of what we would call a loop, but they wouldn't call it a loop and it's not as accurately defined. So they have to learn that. And it's not as easy as just saying, oh Yeah.do a loop. And the business will say, well, what's a loop.Like I know, you know, conceptually what a loop could be like a loop in my, when I'm tying my shoe. But when you're talking about loop, that's a very specific thing in software and what you can do. And when you shouldn't do it, and that's something that these, no matter how good your low code, no code solution might be, it's going to have to afford for that concept.And so a business user is still going to have to have some lower level capability to apply those concepts. And, and I I've yet to see anybody be able to get around that in their RPA solutions.[00:33:42] Jeremy: So in your experience, even though these vendors may sell it as being a tool that anybody can just sit down and use but then you would want a developer to, to sit with them or, or see the result and, and try and figure out, okay, what do you, what do you really want this, this code to do?Um, not just sort of these broad strokes that you were hoping the tool was gonna take care of for you? Yeah.[00:34:06] Alex: that that's exactly right. And that's how every organization will come to that realization pretty quickly. the head of the game ones have said, okay, we need to have a really good, um, COE structure to this robotic operating model where we can have, a software engineering, developer capability that sits with the business, capability.And they can, marry with each other, other businesses who may take, um, these vendors at their word and say, it's a low code meant for business. It just needs to make sure it's on and accessible. And then our business people are just gonna, uh, go in there and do this. They find out pretty quickly that they need some technical, um, guidance to go in because they're building unstable or inaccurate bots.and whether they come to that sooner or later, they, they always come to that. Um, and they realize that, okay, there there's a technical capability And, this is not just RPA. This is the story of all low-code no-code solutions that have ever existed. It always comes around that, while this is a great interface for doing that, and it's very easy and it makes concepts easy.Every single time, there is a technical capability that needs to be afforded. [00:35:26] Jeremy: For the. The web browser, you mentioned the DOM, which is how we typically interact with applications there. But for native applications, you, you briefly mentioned, COM. And I was wondering when someone is writing, um, you know, a bot, uh, what are the sorts of things they see, or what are the primitives they're working with?Like, is there a name attached to each button, each text, field, [00:35:54] Alex: wouldn't that be a great world to live in, so there's not. And, and, as we build things in the DOM. People get a lot better. We've seen people are getting much better about using uniqueness when they build those things so that they can latch onto when things were built or built for the COM or, you know, a .NET for OS that might, that was not no one no one was like oh yeah, we're going to automate this.Or, you know, we need to make this so that this button here is going to be unique from that button over there on the COM they didn't care, you know, different name. Um, so yeah, that is, that is sometimes a big issue when you're using, uh, an RPA solution, you say, okay. cool. Look at this, your calculator app. And Okay. it's showing me the component object model that this was built. It that's describing what is looking at, but none of these nodes have, have a name. They're all, you know, node one node, 1.1 node two, or, or whatnot, or button is just button and there's no uniqueness around it. And that is, you see a lot of that in legacy older software, um, E legacy is things built in 2005, 2010.Um, you do see that, and that's the difficulty at that point. You can still solve for this, but what you're doing is you're using send keys. So instead of saying, Okay.RPA software, open up this, uh, application and then look for. You know, thing, this object in the COM and click on it, it's going to, you know, it can't, there is no uniqueness.So what you say is just open up the software and then just hit tab three times, and that should get you to this one place that was not unique, but we know if you hit tab three times, it's going to get there now. That's all well and good, but there's so many things that could interfere with that and break it.And the there's no context for the bot to grab onto, to verify, Okay. I am there. So any one thing, you could have a pop-up which essentially hijacks your send key, right? And so the bot yes, absolutely hit tab three times and it should be in that one place. It thinks it is, and it hits in enter, but in between the first and second tab, a pop-up happened and now it's latched onto this other process, hits enter. And all of a sudden outlook's opening bot doesn't know that, but it's still going on and it's going to enter in some financial information into oops, an email that it launched because it thought hitting enter again would do so. Yeah.That's, that's where you get that instability. Um, there are other ways around it or other solutions.and this is where we get into the you're using, um, lower level software engineering solutioning instead of doing it exactly how the user does it. When we're talking about the operating system and windows, there are a ton of interop services and assemblies that a, uh, RPA solution can access.So instead of cracking open Excel, double-clicking on Excel workbook waiting for it to load, and then reading the information and putting information in, you can use the, you know, the office 365 or whatnot that, um, interop service assembly and say, Hey, launch this workbook without the UI, showing it, attach to that process that, you know, it is.And then just send to it, using that assembly send information into it. And the human user can't do that. It can't manipulate stuff like that, but the bot can, and it it's the same end as the human users trying. And it's much more efficient and stable because the UI couldn't afford for that kind of stability.So that would be a valid solution. But at that point, you're really migrating into a software engineering, it developer solution of something that you were trying not to do that for. So when is that? Why, you know, why not just go and solve for it with an enterprise or programmatic solution in the first place?So that's the balance. [00:40:18] Jeremy: earlier you're talking about the RPA needs to be something that, uh, that the person is able to do. And it sounds like in this case, I guess there still is a way for the person to do it. They can open up the, the Excel sheet and right it's just that the way the, the RPA tool is doing it is different. Yeah.[00:40:38] Alex: Right. And more efficient and more stable. Certainly. Uh, especially when we're talking about Excel, you have an Excel with, you know, 200,000 lines, just opening that that's, that's your day, that's going to Excel it, just going to take its time opening and visualizing that information for you. Whereas you, you know, an RPA solution doesn't even need to crack that open.Uh, it can just send data right directly to that workbook and it that's a valid solution. And again, some of these processes, it might be just two people at your organization that are essentially doing it. So it's, you know, you don't really, it's not at a threshold where you need an enterprise solution for it, but they're spending 30 minutes of their day just waiting for that Excel workbook to open and then manipulating the data and saving it.And then, oh, their computer crashed. So you can do an RPA solution. It's going to be, um, to essentially build for a more efficient way of doing it. And that would be using the programmatic solution, but you're right. It is doing it in a way that a human could not achieve it. Um, and that again is. The where the discipline and the organizational, aspect of this comes in where it's saying, is that acceptable?Is it okay to have it do things in this way, that are not human, but achieving the same ends. And if you're not disciplined that creeps, and all of a sudden you have a RPA solution that is doing things in a way that where the whole reason to bring that RPA solution is to not have something that did something like that. And that's usually where the stuff falls apart. IT all of a sudden perks their head up and says, wait, I have a lot of connections coming in from this one computer doing stuff very quickly with a, you know, a SQL query. It's like, what is going on? And so all of a sudden, someone built a bot to essentially do a programmatic connection.And it is like, you should not be who gave you this permissions who did this shut down everything that is RPA here until we figure out what you guys went and did. So that's, that's the dance. [00:42:55] Jeremy: it's almost like there's this hidden API or there's this API that you're not intended to use. but in the process of trying to automate this thing, you, you use it and then if your, IT is not aware of it, then things just kind of spiral out of control.[00:43:10] Alex: Exactly. Right. So let's, you know, a use case of that would be, um, we need to get California tax information on alcohol sales. We need to see what each county taxes for alcohol to apply to something. And so today the human users, they go into the California, you know, tobacco, wildlife, whatever website, and they go look up stuff and okay, let's, that's, that's very arduous.Let's throw a bot on that. Let's have a bot do that. Well, the bot developers, smart person knows their way around Google and they find out, well, California has an API for that. instead of the bot cracking open Chrome, it's just going to send this rest API call and it's going to get information back and that's awesome and accurate and way better than anything. but now all of a sudden IT sees connections going in and out. all of a sudden it's doing very quickly and it's getting information coming into your systems in a way that you did not know was going to be, uh, happening. And so while it was all well and good, it's, it's a good way for, the people whose job it is to protect yourself or know about these things, to get very, um, angry, rightly so that this is happening.that's an organizational challenge, uh, and it's an oversight challenge and it's a, it's a developer challenge because, what you're getting into is the problems with having too technical people build these RPA bots, right? So on one hand we have business people who are told, Hey, just crack this thing open and build it.And it's like, well, they don't have enough technical fluency to actually build a stable bot because they're just taking it at face value. Um, on the other hand, you have software engineers or developers that are very technical that say, oh, this process. Yeah. Okay. I can build a bot for that. But what if I used, you know, these interop services, assemblies that Microsoft gives me and I can access it like that.And then I can send an API call over here. And while I'm at it, I'm going to, you know, I'm just going to spin up a server just on this one computer that can do this. When the bot talks to it. And so you have the opposite problem. Now you have something that is just not at all RPA, it's just using the tool to, uh, you know, manipulate stuff, programmatically.[00:45:35] Jeremy: so, as a part of all this, is using the same credentials as a real user, right. You're you're logging in with a username and password. if the form requires something like two factor authentication or, you know, or something like that, like, how does that work since it's not an actual person?[00:45:55] Alex: Right. So in a perfect world, you're correct. Um, a bot is a user. I know a lot of times you'll hear, say, people will be like, oh, hi, I have 20 RPA bots. What they're usually saying is I have 20 automations that are being run for separate processes, with one user's credentials, uh, on a VDI. So you're right.They, they are using a user's credentials with the same permissions that any user that does that process has, that's why it's easy. but now we have these concepts, like two factor authentication, which every organization is using that should require something that exists outside of that bot users environment. And so how do you afford for that in a perfect world? It would be a service account, not a user account and service accounts are governed a little differently. A lot of times service accounts, um, have much more stringent rules, but also allow for things like password resets, not a thing, um, or two factor authentication is not a thing for those.So that would be the perfect solution, but now you're dragging in IT. Um, so, you know, if you're not structurally set up for that, that's going to be a long slog. Uh, so what would want to do some people actually literally have a, we'll have a business person that has their two factor auth for that bot user on their phone.And then just, you know, they'll just go in and say, yeah.that's me. that's untenable. So, um, sometimes what a lot of these, like Microsoft, for instance, allow you to do is to install a two factor authentication, application, um, on your desktop so that when you go to log in a website and says, Hey, type in your password.Cool. Okay. Give me that code. That's on your two factor auth app. The bot can actually launch that. Copy the code and paste it in there and be on its way. But you're right now, you're having to afford for things that aren't really part of the process you're trying to automate. They are the incidentals that also happen.And so you have to build your bot to afford for those things and interpret, oh, I need to do two factor authentication. And a lot of times, especially if you have an entirely business focused PA um, robotic operating model, they will forget about those things or find ways around them that the bot isn't addressing, like having that authenticator app on their phone.that's, um, stuff that definitely needs to be addressed. And sometimes is only, found at runtime like, oh, it's asking for login. And when I developed it, I didn't need to do that because I had, you know, the cookie that said you're good for 30 days, but now, oh, no. [00:48:47] Jeremy: yeah. You could have two factor. Um, you could have, it asking you to check your email for a code. There could be a fraud warning. There's like all sorts of, you know, failure cases that can happen. [00:48:58] Alex: exactly. And those things are when we talk about, uh, third-party vendors, um, third-party provider vendors, like going back to the banking website, if you don't tell them that you're going to be using a bot to get their information or to interface with that website, you're setting yourself up for a bad time because they're going to see that kind of at runtime behavior that is not possible at scale by user.And so you run into that issue at runtime, but then you're correct. There are other things that you might run into at runtime that are not again, part of the process, the business didn't think that that was part of the process. It's just something they do that actually the bot has to afford for. that's part of the journey, uh, in building these. [00:49:57] Jeremy: when you're, when you're building these, these bots, what are the types of tools that, that you've used in the past? Are these commercial, packages, are these open source? Like what, what does that ecosystem look like?[00:50:11] Alex: Yeah, in this space, we have three big ones, which is, uh, automation anywhere UI path and, blue prism. Those are the RPA juggernauts providing this software to the companies that need it. And then you have smaller ones that are, trying to get in there, or provide stuff in a little different way. and you even have now, big juggernauts that are trying to provide for it, like Microsoft with something like power automate desktop.So all of these, say three years ago, all of these softwares existed or all of these RPA solution softwares existed or operated in the same kind of way, where you would install it on your desktop. And it would provide you a studio to either record or define, uh, originally the process that was going to be automated on that desktop when you pushed play and they all kind of expose or operate in the same way they would interpret the COM or the DOM that the operating system provided. Things like task scheduler have traditionally, uh, exposed, uh, and they all kind of did that in the same way. Their value proposition in their software was the orchestration capability and the management of that.So I build a bot to do this, Jim over there built a bot to do that. Okay. This RPA software, not only enabled you to define those processes, But what their real value was is they enable a place where I can say this needs to run at this time on this computer.And it needs to, you know, I need to be able to monitor it and it needs to return information and all that kind of orchestration capability. Now all of these RPA solutions actually exist in that, like everything else in the browser. So instead of installing, you know, the application and launching it and, and whatnot, and the orchestration capability being installed on another computer that looked at these computers and ran stuff on them.Now it's, it's all in the cloud as it were, and they are in the browser. So I go to. Wherever my RPA solution is in my browser. And then it says, okay, cool. You, you still need to install something on the desktop where you want the spot to run and it deploys it there. But I define and build my process in the provided browser studio.And then we're going to give you a capability to orchestrate, monitor, and, uh, receive information on those things that you have, those bots that you have running, and then what they're now providing as well is the ability to tie in other services to your bot so that it has expanded capability. So I'm using automation anywhere and I built my bot and it's going, and it's doing this or that.And automation anywhere says, Hey, that's cool. Wouldn't you like your bot to be able to do OCR? Well, we don't have our own OCR engine, but you probably as an enterprise do. Just use, you know, use your Kofax OCR engine or Hey, if you're really a high speed, why don't you use your Azure cognitive services capability?We'll tie it right into our software. And so when you're building your bot, instead of just cracking open a PDF and send key control C and key control V to do stuff instead, we'll use your OCR engine that you've already paid for to, to understand stuff. And so that's, how they expand, what they're offering, um, into addressing more and more capabilities.[00:53:57] Alex: But now we're, we're migrating into a territory where it's like, well, things have APIs why even build a bot for them. You know, you can just build a program that uses the API and the user can drive this. And so that's where people kind of get stuck. It's they they're using RPA on a, something that just as easily provides for a programmatic solution as opposed to an RPA solution.but because they're in their RPA mode and they say, we can use a bot for everything, they don't even stop and investigate and say, Hey, wouldn't this be just as easy to generate a react app and let a user use this because it has an API and IT can just as easily monitor and support that because it's in an Azure resource bucket.that's where an organization needs to be. Clear-eyed and say, Okay. at this point RPA is not the actual solution. We can do this just as easy over here and let's pursue that. [00:54:57] Jeremy: the experience of making these RPAs. It sounds like you have this browser-based IDE, there's probably some kind of drag and drop set up, and then you, you, you mentioned JavaScript. So I suppose, does that mean you can kind of dive a little bit deeper and if you want to set up specific rules or loops, you're actually writing that in JavaScript.[00:55:18] Alex: Yeah. So not, not necessarily. So, again, the business does not know what an IDE is. It's a studio. Um,so that's, but you're correct. It's, it's an IDE. Um, each, whether we're talking about blue prism or UiPath or automation anywhere, they all have a different flavor of what that looks like and what they enable.Um, traditionally blue prism gave you, uh, a studio that was more shape based where you are using UML shapes to define or describe your process. And then there you are, whereas automation anywhere traditionally used, uh, essentially lines or descriptors. So I say, Hey, I want to open this file. And your studio would just show a line that said open file.You know, um, although they do now, all of them have a shape based way to define your process. Go here, here. You know, here's a circle which represents this. Uh, let's do that. Um, or a way for you to kind of more, um, creatively define it in a, like a text-based way. When we talk about Java script, um, or anything like that, they provide predefined actions, all of them saying, I want to open a file or execute this that you can do, but all of them as well, at least last time I checked also allow you for a way to say, I want to programmatically run something I want to define.And since they're all in the browser, it is, uh, you know, Javascript that you're going to be saying, Hey, run this, this JavaScript, run this function. Um, previously, uh, things like automation anywhere would, uh, let you write stuff in, in .NET essentially to do that capability. But again, now everything's in the browser.So yeah, they do, They do provide for a capability to introduce more low level capability to your automation. That can get dangerous. Uh, it can be powerful and it can be stabilizing, but it can be a very slippery slope where you have an RPA solution bot that does the thing. But really all it does is it starts up and then executes code that you built.[00:57:39] Alex: Like what, what was the, the point in the first place? [00:57:43] Jeremy: Yeah. And I suppose at that point, then anybody who knows how to use the RPA tool, but isn't familiar with that code you wrote, they're just, they can't maintain it [00:57:54] Alex: you have business continuity and this goes back to our, it has to be replicable or close as close to the human process, as you can make. Because that's going to be the easiest to inherit and support. That's one of the great things about it. Whereas if you're a low level programmer, a dev who says, I can easily do this with a couple of lines of, you know, dot net or, you know, TypeScript or whatever.And so the bot just starts up in executes. Well, unless someone that is just as proficient comes along later and says, this is why it's breaking you now have an unsupportable business, solution. that's bad Juju. [00:58:38] Jeremy: you have the software engineers who they want to write code. then you have the people who are either in business or in IT that go, I don't want to look at your code.I don't want to have to maintain it. Yeah. So it's like you almost, if you're a software engineer coming in, you almost have to fight that urge to, to write anything yourself and figure out, okay, what can I do with the tool set and only go to code if I can't do it any other way.[00:59:07] Alex: That's correct. And that's the, it takes discipline. more often than not, not as fun as writing the code where you're like, I can do this. And this is really where the wheels come off is. You went to the business that is that I have this process, very simple. I need to do this and you say, cool, I can do that.And then you're sitting there writing code and you're like, but you know what? I know what they really want to do. And I can write that now. And so you've changed the process and while it is, and nine times out of 10, the business will be like, oh, that's actually what we wanted. The human process was just as close as we could get nothing else, but you're right.That's, that's exactly what we needed. Thank you nine times out of 10. They'll love you for that. But now you own their process. Now you're the one that defined it. You have to do the business continuity. You have to document it. And when it falls over, you have to pick it back up and you have to retrain.And unless you have an organizational capacity to say, okay, I've gone in and changed your process. I didn't automate it. I changed it. Now I have to go in and tell you how I changed it and how you can do it. And so that, unless you have built your robotic operating model and your, your team to afford for that, your developer could be writing checks bigger than they can cash.Even though this is a better capability. [01:00:30] Jeremy: you, you sort of touched on this before, and I think this is probably the, the last topic we'll cover, but you've been saying how the end goal should be to not have to use the RPAs anymore And I wonder if you have any advice for how to approach that process and, and what are some of the mistakes you've seen people make[01:00:54] Alex: Mm Hmm. I mean the biggest mistake I've seen organizations make, I think is throwing the RPA solution out there, building bots, and they're great bots, and they are creating that value. They're enabling you to save money and also, enabling your employees to go on and do better, more gratifying work. but then they say, that's, it that's as far as we're going to think, instead of taking those savings and saying, this is for replacing this pain point that we had to get a bot in the first place to do so.That's a huge common mistake. Absolutely understandable if I'm a CEO or even, you know, the person in charge of, you know, um, enterprise transformation. Um, it's very easy for me to say, ha victory, here's our money, here's our savings. I justified what we've done. Go have fun. Um, and instead of saying, we need to squirrel this money away and give it to the people that are going to change the system. So that, that's definitely one of the biggest things.The problem with that is that's not realized until years later when they're like, oh, we're still supporting these bots. So it is upfront having a turnoff strategy. When can we turn this bot off? What is that going to look like? Does it have a roadmap that will eventually do that?And that I think is the best way. And that will define what kind of processes you do indeed build bots for is you go to it and say, listen, we've got a lot of these user processes, human processes that are doing this stuff. Is there anything on your roadmap that is going to replace that and they say, oh yeah you know, in three years we're actually going to be standing up our new thing.We're going to be converting. And part of our, uh, analysis of the solution that we will eventually stand up will be, does it do these things? And so yes, in three years, you're good. And you say, cool, those are the processes I'm going to automate and we can shut those off. That's your point of entry for these things not doing that leads to bots running and doing things even after there is a enterprise solution for that. And more often than not, I would say greater than five times out of 10, when we are evaluating a process to build a bot for easily five times out of 10, we say, whoa, no, actually there's, you don't even need to do this.Our enterprise application can do this. you just need retraining, because your process is just old and no one knew you were doing this. And so they didn't come in and tell you, Hey, you need to use this.So that's really a lot of times what, what the issue is. And then after that, we go in and say, Okay.no, there's, there's no solution for this. This is definitely a bot needs to do this. Let's make sure number one, that there isn't a solution on the horizon six months to a year, because otherwise we're just going to waste time, but let's make sure there is, or at least IT, or the people in charge are aware that this is something that needs to be replaced bot or no bot.And so let's have an exit strategy. Let's have a turn-off strategy. When you have applications that are relatively modern, like you have a JIRA, a ServiceNow, you know, they must have some sort of API and it may just be that nobody has come in and told them, you just need to plug these applications together.[01:04:27] Alex: And so kind of what you're hitting on and surfacing is the future of RPA. Whereas everything we're talking about is using a bot to essentially bridge a gap, moving data from here to there that can't be done, programmatically. Accessing something from here to there that can't be done programmatically.So we use a bot to do it. That's only going to exist for so long. Legacy can only be legacy for so long, although you can conceivably because we had that big COBOL thing, um, maybe longer than we we'd all like, but eventually these things will be. upgraded. and so either the RPA market will get smaller because there's less legacy out there.And so RPA as a tool and a solution will become much more targeted towards specific systems or we expand what RPA is and what it can afford for. And so that I think is more likely the case. And that's the future where bots or automations aren't necessary interpreting the COM and the DOM and saying, okay, click here do that.But rather you're able to quickly build bots that utilize APIs that are built in and friendly. And so what we're talking about there is things like Appian or MuleSoft, which are these kind of API integrators are eventually going to be classified as RPA. They're going to be within this realm.And I think, where, where you're seeing that at least surfaced or moving towards is really what Microsoft's offering in that, where they, uh, they have something called power automate, which essentially is it just a very user-friendly way to access API. that they built or other people have built.So I want to go and I need to get information to service now, service now has an API. Yeah. Your, IT can go in and build you a nice little app that does a little restful call to it, or a rest API call to it gets information back, or you can go in and, you know, use Microsoft power automate and say, okay, I want to access service now.And it says, cool. These are the things you can do. And I say, okay, I just want to put information in this ticket and we're not talking about get or patch or put, uh, or anything like that. We're just saying, ah, that's what it's going to do. And that's kind of what Microsoft is, is offering. I think that is the new state of RPA is being able to interface in a user-friendly way with APIs. Cause everything's in the browser to the point. where, you know, Microsoft's enabling add ins for Excel to be written in JavaScript, which is just the new frontier. Um, so that's, that's kind of going to be the future state of this. I believe. [01:07:28] Jeremy: so, so moving from RPAs being this thing, that's gonna click through website, click through, um, a desktop application instead it's maybe more of this high, higher level tool where the user will still get this, I forget the term you used, but this tool to build a workflow, right. A studio. Okay. Um, and instead of saying, oh, I want this to click this button or fill in this form.It'll be, um, I want to get this information from service now. And I want to send a message using that information to slack or to Twilio, or, um, you're basically, talking directly to these different services and just telling it what you want and where it should go.[01:08:14] Alex: That's correct. So, as you said, everything's going to have an API, right? Seemingly everything has an API. And so instead of us, our RPA bots or solutions being UI focused, they're going to be API focused, um, where it doesn't have to use the user interface. It's going to use the other service. And again, the cool thing about APIs in that way is that it's not, directly connecting to your data source.It's the same as your UI for a user. It sits on top of it. It gets the request and it correctly interprets that. And does it the same thing with your UI where I say I click here and you know, wherever it says. okay. yeah. You're allowed to do that. Go ahead. So that's kind of that the benefit to that.Um, but to your point, the, the user experience for whether you're using a UI or API to build up RPA bot, it's going to be the same experience for the user. And then at this point, what we're talking about, well, where's the value offering or what is the value proposition of RPA and that's orchestration and monitoring and data essentially.we'll take care of hosting these for you. we'll take care of where they're going to run, uh, giving you a dashboard, things like that.[01:09:37] Alex: That's a hundred percent correct. It's it's providing a view into that thing and letting the business say, I want to no code this. And I want to be able to just go in and understand and say, oh, I do want to do that. I'm going to put these things together and it's going to automate this business process that I hate, but is vital, and I'm going to save it, the RPA software enables you to say, oh, I saw they did that. And I see it's running and everything's okay in the world and I want to turn it on or off. And so it's that seamless kind of capability that that's what that will provide. And I think that's really where it isn't, but really where it's going. Uh, it'll be interesting to see when the RPA providers switch to that kind of language because currently and traditionally they've gone to business and said, we can build you bots or no, no, your, your users can build bots and that's the value proposition they can go in.And instead of writing an Excel where you had one very, very advanced user. Building macros into Excel with VBA and they're unknown to the, the IT or anybody else instead, you know, build a bot for it. And so that's their business proposition today. Instead, it's going to shift, and I'd be interested to see when it shifts where they say, listen, we can provide you a view into those solutions and you can orchestrate them in, oh, here's the studio that enables people to build them.But really what you want to do is give that to your IT and just say, Hey, we're going to go over here and address business needs and build them. But don't worry. You'll be able to monitor them and at least say, yeah okay. this is, this is going.[01:11:16] Jeremy: Yeah. And that's a, a shift. It sounds like where RPA is currently, you were talking about how, when you're configuring them to click on websites and GUIs, you really do still need someone with the software expertise to know what's going on. but maybe when you move over to communicating with API, Um, maybe that won't be as important maybe, somebody who just knows the business process really can just use that studio and get what they need.[01:11:48] Alex: that's correct. Right. Cause the API only enables you to do what it defined right. So service now, which does have a robust API, it says you can do these things the same as a user can only click a button that's there that you've built and said they can click. And so that is you can't go off the reservation as easy with that stuff, really what's going to become prime or important is as no longer do I actually have an Oracle server physically in my location with a database.Instead I'm using Oracle's cloud capability, which exists on their own thing. That's where I'm getting data from. What becomes important about being able to monitor these is not necessarily like, oh, is it falling over? Is it breaking? It's saying, what information are you sending or getting from these things that are not within our walled garden.And that's really where, it or the P InfoSec is, is going to be maybe the main orchestrator owner of RPA, because they're, they're going to be the ones to say you can't, you can't get that. You're not allowed to get that information. It's not necessarily that you can't do it. Um, and you can't do it in a dangerous way, but it's rather, I don't want you
About Ben KehoeBen Kehoe is a Cloud Robotics Research Scientist at iRobot and an AWS Serverless Hero. As a serverless practitioner, Ben focuses on enabling rapid, secure-by-design development of business value by using managed services and ephemeral compute (like FaaS). Ben also seeks to amplify voices from dev, ops, and security to help the community shape the evolution of serverless and event-driven designs.Twitter: @ben11kehoeMedium: ben11kehoeGitHub: benkehoeLinkedIn: ben11kehoeiRobot: www.irobot.comWatch this episode on YouTube: https://youtu.be/B0QChfAGvB0 This episode is sponsored by CBT Nuggets and Lumigo.TranscriptJeremy: Hi, everyone. I'm Jeremy Daly.Rebecca: And I'm Rebecca Marshburn.Jeremy: And this is Serverless Chats. And this is a momentous occasion on Serverless Chats because we are welcoming in Rebecca Marshburn as an official co-host of Serverless Chats.Rebecca: I'm pretty excited to be here. Thanks so much, Jeremy.Jeremy: So for those of you that have been listening for hopefully a long time, and we've done over 100 episodes. And I don't know, Rebecca, do I look tired? I feel tired.Rebecca: I've never seen you look tired.Jeremy: Okay. Well, I feel tired because we've done a lot of these episodes and we've published a new episode every single week for the last 107 weeks, I think at this point. And so what we're going to do is with you coming on as a new co-host, we're going to take a break over the summer. We're going to revamp. We're going to do some work. We're going to put together some great content. And then we're going to come back on, I think it's August 30th with a new episode and a whole new show. Again, it's going to be about serverless, but what we're thinking is ... And, Rebecca, I would love to hear your thoughts on this as I come at things from a very technical angle, because I'm an overly technical person, but there's so much more to serverless. There's so many other sides to it that I think that bringing in more perspectives and really being able to interview these guests and have a different perspective I think is going to be really helpful. I don't know what your thoughts are on that.Rebecca: Yeah. I love the tech side of things. I am not as deep in the technicalities of tech and I come at it I think from a way of loving the stories behind how people got there and perhaps who they worked with to get there, the ideas of collaboration and community because nothing happens in a vacuum and there's so much stuff happening and sharing knowledge and education and uplifting each other. And so I'm super excited to be here and super excited that one of the first episodes I get to work on with you is with Ben Kehoe because he's all about both the technicalities of tech, and also it's actually on his Twitter, a new compassionate tech values around humility, and inclusion, and cooperation, and learning, and being a mentor. So couldn't have a better guest to join you in the Serverless Chats community and being here for this.Jeremy: I totally agree. And I am looking forward to this. I'm excited. I do want the listeners to know we are testing in production, right? So we haven't run any unit tests, no integration tests. I mean, this is straight test in production.Rebecca: That's the best practice, right? Total best practice to test in production.Jeremy: Best practice. Right. Exactly.Rebecca: Straight to production, always test in production.Jeremy: Push code to the cloud. Here we go.Rebecca: Right away.Jeremy: Right. So if it's a little bit choppy, we'd love your feedback though. The listeners can be our observability tool and give us some feedback and we can ... And hopefully continue to make the show better. So speaking of Ben Kehoe, for those of you who don't know Ben Kehoe, I'm going to let him introduce himself, but I have always been a big fan of his. He was very, very early in the serverless space. I read all his blogs very early on. He was an early AWS Serverless Hero. So joining us today is Ben Kehoe. He is a cloud robotics research scientist at iRobot, as I said, an AWS Serverless Hero. Ben, welcome to the show.Ben: Thanks for having me. And I'm excited to be a guinea pig for this new exciting format.Rebecca: So many observability tools watching you be a guinea pig too. There's lots of layers to this.Jeremy: Amazing. All right. So Ben, why don't you tell the listeners for those that don't know you a little bit about yourself and what you do with serverless?Ben: Yeah. So I mean, as with all software, software is people, right? It's like Soylent Green. And so I'm really excited for this format being about the greater things that technology really involves in how we create it and set it up. And serverless is about removing the things that don't matter so that you can focus on the things that do matter.Jeremy: Right.Ben: So I've been interested in that since I learned about it. And at the time saw that I could build things without running servers, without needing to deal with the scaling of stuff. I've been working on that at iRobot for over five years now. As you said early on in serverless at the first serverless con organized by A Cloud Guru, now plural sites.Jeremy: Right.Ben: And yeah. And it's been really exciting to see it grow into the large-scale community that it is today and all of the ways in which community are built like this podcast.Jeremy: Right. Yeah. I love everything that you've done. I love the analogies you've used. I mean, you've always gone down this road of how do you explain serverless in a way to show really the adoption of it and how people can take that on. Serverless is a ladder. Some of these other things that you would ... I guess the analogies you use were always great and always helped me. And of course, I don't think we've ever really come to a good definition of serverless, but we're not talking about that today. But ...Ben: There isn't one.Jeremy: There isn't one, which is also a really good point. So yeah. So welcome to the show. And again, like I said, testing in production here. So, Rebecca, jump in when you have questions and we'll beat up Ben from both sides on this, but, really ...Rebecca: We're going to have Ben from both sides.Jeremy: There you go. We'll embrace him from both sides. There you go.Rebecca: Yeah. Yeah.Jeremy: So one of the things though that, Ben, you have also been very outspoken on which I absolutely love, because I'm in very much closely aligned on this topic here. But is about infrastructure as code. And so let's start just quickly. I mean, I think a lot of people know or I think people working in the cloud know what infrastructure as code is, but I also think there's a lot of people who don't. So let's just take a quick second, explain what infrastructure as code is and what we mean by that.Ben: Sure. To my mind, infrastructure as code is about having a definition of the state of your infrastructure that you want to see in the cloud. So rather than using operations directly to modify that state, you have a unified definition of some kind. I actually think infrastructure is now the wrong word with serverless. It used to be with servers, you could manage your fleet of servers separate from the software that you were deploying onto the servers. And so infrastructure being the structure below made sense. But now as your code is intimately entwined in the rest of your resources, I tend to think of resource graph definitions rather than infrastructure as code. It's a less convenient term, but I think it's worth understanding the distinction or the difference in perspective.Jeremy: Yeah. No, and I totally get that. I mean, I remember even early days of cloud when we were using the Chefs and the Puppets and things like that, that we were just deploying the actual infrastructure itself. And sometimes you deploy software as part of that, but it was supporting software. It was the stuff that ran in the runtime and some of those and some configurations, but yeah, but the application code that was a whole separate process, and now with serverless, it seems like you're deploying all those things at the same time.Ben: Yeah. There's no way to pick it apart.Jeremy: Right. Right.Rebecca: Ben, there's something that I've always really admired about you and that is how strongly you hold your opinions. You're fervent about them, but it's also because they're based on this thorough nature of investigation and debate and challenging different people and yourself to think about things in different ways. And I know that the rest of this episode is going to be full with a lot of opinions. And so before we even get there, I'm curious if you can share a little bit about how you end up arriving at these, right? And holding them so steady.Ben: It's a good question. Well, I hope that I'm not inflexible in these strong opinions that I hold. I mean, it's one of those strong opinions loosely held kind of things that new information can change how you think about things. But I do try and do as much thinking as possible so that there's less new information that I have to encounter to change an opinion.Rebecca: Yeah. Yeah.Ben: Yeah. I think I tend to try and think about how people ... But again, because it's always people. How people interact with the technology, how people behave, how organizations behave, and then how technology fits into that. Because sometimes we talk about technology in a vacuum and it's really not. Technology that works for one context doesn't work for another. I mean, a lot of my strong opinions are that there is no one right answer kind of a thing, or here's a framework for understanding how to think about this stuff. And then how that fits into a given person is just finding where they are in that more general space. Does that make sense? So it's less about finding out here's the one way to do things and more about finding what are the different options, how do you think about the different options that are out there.Rebecca: Yeah, totally makes sense. And I do want to compliment you. I do feel like you are very good at inviting new information in if people have it and then you're like, "Aha, I've already thought of that."Ben: I hope so. Yeah. I was going to say, there's always a balance between trying to think ahead so that when you discover something you're like, "Oh, that fits into what I thought." And the danger of that being that you're twisting the information to fit into your preexisting structures. I hope that I find a good balance there, but I don't have a principle way of determining that balance or knowing where you are in that it's good versus it's dangerous kind of spectrum.Jeremy: Right. So one of the opinions that you hold that I tend to agree with, I have some thoughts about some of the benefits, but I also really agree with the other piece of it. And this really has to do with the CDK and this idea of using CloudFormation or any sort of DSL, maybe Terraform, things like that, something that is more domain-specific, right? Or I guess declarative, right? As opposed to something that is imperative like the CDK. So just to get everybody on the same page here, what is the top reasons why you believe, or you think that DSL approach is better than that iterative approach or interpretive approach, I guess?Ben: Yeah. So I think we get caught up in the imperative versus declarative part of it. I do think that declarative has benefits that can be there, but the way that I think about it is with the CDK and infrastructure as code in general, I'm like mildly against imperative definitions of resources. And we can get into that part, but that's not my smallest objection to the CDK. I'm moderately against not being able to enforce deterministic builds. And the CDK program can do anything. Can use a random number generator and go out to the internet to go ask a question, right? It can do anything in that program and that means that you have no guarantees that what's coming out of it you're going to be able to repeat.So even if you check the source code in, you may not be able to go back to the same infrastructure that you had before. And you can if you're disciplined about it, but I like tools that help give you guardrails so that you don't have to be as disciplined. So that's my moderately against. My strongly against piece is I'm strongly against developer intent remaining client side. And this is not an inherent flaw in the CDK, is a choice that the CDK team has made to turn organizational dysfunction in AWS into ownership for their customers. And I don't think that's a good approach to take, but that's also fixable.So I think if we want to start with the imperative versus declarative thing, right? When I think about the developers expressing an intent, and I want that intent to flow entirely into the cloud so that developers can understand what's deployed in the cloud in terms of the things that they've written. The CDK takes this approach of flattening it down, flattening the richness of the program the developer has written into ... They think of it as assembly language. I think that is a misinterpretation of what's happening. The assembly language in the process is the imperative plan generated inside the CloudFormation engine that says, "Here's how I'm going to take this definition and turn it into an actual change in the cloud.Jeremy: Right.Ben: They're just translating between two definition formats in CDK scene. But it's a flattening process, it's a lossy process. So then when the developer goes to the Console or the API has to go say, "What's deployed here? What's going wrong? What do I need to fix?" None of it is framed in terms of the things that they wrote in their original language.Jeremy: Right.Ben: And I think that's the biggest problem, right? So drift detection is an important thing, right? What happened when someone went in through the Console? Went and tweaked some stuff to fix something, and now it's different from the definition that's in your source repository. And in CloudFormation, it can tell you that. But what I would want if I was running CDK is that it should produce another CDK program that represents the current state of the cloud with a meaningful file-level diff with my original program.Jeremy: Right. I'm just thinking this through, if I deploy something to CDK and I've got all these loops and they're generating functions and they're using some naming and all this kind of stuff, whatever, now it produces this output. And again, my naming of my functions might be some function that gets called to generate the names of the function. And so now I've got all of these functions named and I have to go in. There's no one-to-one map like you said, and I can imagine somebody who's not familiar with CloudFormation which is ultimately what CDK synthesizes and produces, if you're not familiar with what that output is and how that maps back to the constructs that you created, I can see that as being really difficult, especially for younger developers or developers who are just getting started in that.Ben: And the CDK really takes the attitude that it's going to hide those things from those developers rather than help them learn it. And so when they do have to dive into that, the CDK refers to it as an escape hatch.Jeremy: Yeah.Ben: And I think of escape hatches on submarines, where you go from being warm and dry and having air to breathe to being hundreds of feet below the sea, right? It's not the sort of thing you want to go through. Whereas some tools like Amplify talk about graduation. In Amplify they aim to help you understand the things that Amplify is doing for you, such that when you grow beyond what Amplify can provide you, you have the tools to do that, to take the thing that you built and then say, "Okay, I know enough now that I understand this and can add onto it in ways that Amplify can't help with."Jeremy: Right.Ben: Now, how successful they are in doing that is a separate question I think, but the attitude is there to say, "We're looking to help developers understand these things." Now the CDK could also if the CDK was a managed service, right? Would not need developers to understand those things. If you could take your program directly to the cloud and say, "Here's my program, go make this real." And when it made it real, you could interact with the cloud in an understanding where you could list your deployed constructs, right? That you can understand the program that you wrote when you're looking at the resources that are deployed all together in the cloud everywhere. That would be a thing where you don't need to learn CloudFormation.Jeremy: Right.Ben: Right? That's where you then end up in the imperative versus declarative part where, okay, there's some reasons that I think declarative is better. But the major thing is that disconnect that's currently built into the way that CDK works. And the reason that they're doing that is because CloudFormation is not moving fast enough, which is not always on the CloudFormation team. It's often on the service teams that aren't building the resources fast enough. And that's AWS's problem, AWS as an entire company, as an organization. And this one team is saying, "Well, we can fix that by doing all this client side."What that means is that the customers are then responsible for all the things that are happening on the client side. The reason that they can go fast is because the CDK team doesn't have ownership of it, which just means the ownership is being pushed on customers, right? The CDK deploys Lambda functions into your account that they don't tell you about that you're now responsible for. Right? Both the security and operations of. If there are security updates that the CDK team has to push out, you have to take action to update those things, right? That's ownership that's being pushed onto the customer to fix a lack of ACM certificate management, right?Jeremy: Right. Right.Ben: That is ACM not building the thing that's needed. And so AWS says, "Okay, great. We'll just make that the customer's problem."Jeremy: Right.Ben: And I don't agree with that approach.Rebecca: So I'm sure as an AWS Hero you certainly have pretty good, strong, open communication channels with a lot of different team members across teams. And I certainly know that they're listening to you and are at least hearing you, I should say, and watching you and they know how you feel about this. And so I'm curious how some of those conversations have gone. And some teams as compared to others at AWS are really, really good about opening their roadmap or at least saying, "Hey, we hear this, and here's our path to a solution or a success." And I'm curious if there's any light you can shed on whether or not those conversations have been fruitful in terms of actually being able to get somewhere in terms of customer and AWS terms, right? Customer obsession first.Ben: Yeah. Well, customer obsession can mean two things, right? Customer obsession can mean giving the customer what they want or it can mean giving the customer what they need and different AWS teams' approach fall differently on that scale. The reason that many of those things are not available in CloudFormation is that those teams are ... It could be under-resourced. They could have a larger majority of customer that want new features rather than infrastructure as code support. Because as much as we all like infrastructure as code, there are many, many organizations out there that are not there yet. And with the CDK in particular, I'm a relatively lone voice out there saying, "I don't think this ownership that's being pushed onto the customer is a good thing." And there are lots of developers who are eating up CDK saying, "I don't care."That's not something that's in their worry. And because the CDK has been enormously successful, right? It's fixing these problems that exists. And I don't begrudge them trying to fix those problems. I think it's a question of do those developers who are grabbing onto those things and taking them understand the full total cost of ownership that the CDK is bringing with it. And if they don't understand it, I think AWS has a responsibility to understand it and work with it to help those customers either understand it and deal with it, right? Which is where the CDK takes this approach, "Well, if you do get Ops, it's all fine." And that's somewhat true, but also many developers who can use the CDK do not control their CI/CD process. So there's all sorts of ways in which ... Yeah, so I think every team is trying to do the best that they can, right?They're all working hard and they all have ... Are pulled in many different directions by customers. And most of them are making, I think, the right choices given their incentives, right? Given what their customers are asking for. I think not all of them balance where customers ... meeting customers where they are versus leading them where they should, like where they need to go as well as I would like. But I think ... I had a conclusion to that. Oh, but I think that's always a debate as to where that balance is. And then the other thing when I talk about the CDK, that my ideal audience there is less AWS itself and more AWS customers ...Rebecca: Sure.Ben: ... to understand what they're getting into and therefore to demand better of AWS. Which is in general, I think, the approach that I take with AWS, is complaining about AWS in public, because I do have the ability to go to teams and say, "Hey, I want this thing," right? There are plenty of teams where I could just email them and say, "Hey, this feature could be nice", but I put it on Twitter because other people can see that and say, "Oh, that's something that I want or I don't think that's helpful," right? "I don't care about that," or, "I think it's the wrong thing to ask for," right? All of those things are better when it's not just me saying I think this is a good thing for AWS, but it being a conversation among the community differently.Rebecca: Yeah. I think in the spirit too of trying to publicize types of what might be best next for customers, you said total cost of ownership. Even though it might seem silly to ask this, I think oftentimes we say the words total cost of ownership, but there's actually many dimensions to total cost of ownership or TCO, right? And so I think it would be great if you could enumerate what you think of as total cost of ownership, because there might be dimensions along that matrices, matrix, that people haven't considered when they're actually thinking about total cost of ownership. They're like, "Yeah, yeah, I got it. Some Ops and some security stuff I have to do and some patches," but they might only be thinking of five dimensions when you're like, "Actually the framework is probably 10 to 12 to 14." And so if you could outline that a bit, what you mean when you think of a holistic total cost of ownership, I think that could be super helpful.Ben: I'm bad at enumeration. So I would miss out on dimensions that are obvious if I was attempting to do that. But I think a way that I can, I think effectively answer that question is to talk about some of the ways in which we misunderstand TCO. So I think it's important when working in an organization to think about the organization as a whole, not just your perspective and that your team's perspective in it. And so when you're working for the lowest TCO it's not what's the lowest cost of ownership for my team if that's pushing a larger burden onto another team. Now if it's reducing the burden on your team and only increasing the burden on another team a little bit, that can be a lower total cost of ownership overall. But it's also something that then feeds into things like political capital, right?Is that increased ownership that you're handing to that team something that they're going to be happy with, something that's not going to cause other problems down the line, right? Those are the sorts of things that fit into that calculus because it's not just about what ... Moving away from that topic for a second. I think about when we talk about how does this increase our velocity, right? There's the piece of, "Okay, well, if I can deploy to production faster, right? My feedback loop is faster and I can move faster." Right? But the other part of that equation is how many different threads can you be operating on and how long are those threads in time? So when you're trying to ship a feature, if you can ship it and then never look at it again, that means you have increased bandwidth in the future to take on other features to develop other new features.And so even if you think about, "It's going to take me longer to finish this particular feature," but then there's no maintenance for that feature, that can be a lower cost of ownership in time than, "I can ship it 50% faster, but then I'm going to periodically have to revisit it and that's going to disrupt my ability to ship other things," right? So this is where I had conversations recently about increasing use of Step Functions, right? And being able to replace Lambda functions with Step Functions express workflows because you never have to go back to those Lambdas and update dependencies in them because dependent bot has told you that you need to or a version of Python is getting deprecated, right? All of those things, just if you have your Amazon States Language however it's been defined, right?Once it's in there, you never have to touch it again if nothing else changes and that means, okay, great, that piece is now out of your work stream forever unless it needs to change. And that means that you have more bandwidth for future things, which serverless is about in general, right? Of say, "Okay, I don't have to deal with this scaling problems here. So those scaling things. Once I have an auto-scaling group, I don't have to go back and tweak it later." And so the same thing happens at the feature level if you build it in ways that allow you to do that. And so I think that's one of the places where when we focus on, okay, how fast is this getting me into production, it's okay, but how often do you have to revisit it ...Jeremy: Right. And so ... So you mentioned a couple of things in there, and not only in that question, but in the previous questions as you were talking about the CDK in general, and I am 100% behind you on this idea of deterministic builds because I want to know exactly what's being deployed. I want to be able to audit that and map that back. And you can audit, I mean, you could run CDK synth and then audit the CloudFormation and test against certain things. But if you are changing stuff, right? Then you have to understand not only the CDK but also the CloudFormation that it actually generates. But in terms of solving problems, some of the things that the CDK does really, really well, and this is something where I've always had this issue with just trying to use raw CloudFormation or Serverless Framework or SAM or any of these things is the fact that there's a lot of boilerplate that you often have to do.There's ways that companies want to do something specifically. I basically probably always need 1,400 lines of CloudFormation. And for every project I do, it's probably close to the same, and then add a little bit more to actually make it adaptive for my product. And so one thing that I love about the CDK is constructs. And I love this idea of being able to package these best practices for your company or these compliance requirements, excuse me, compliance requirements for your company, whatever it is, be able to package these and just hand them to developers. And so I'm just curious on your thoughts on that because that seems like a really good move in the right direction, but without the deterministic builds, without some of these other problems that you talked about, is there another solution to that that would be more declarative?Ben: Yeah. In theory, if the CDK was able to produce an artifact that represented all of the non-deterministic dependencies that it had, right? That allowed you to then store that artifacts as you'd come back and put that into the program and say, "I'm going to get out the same thing," but because the CDK doesn't control upstream of it, the code that the developers are writing, there isn't a way to do that. Right? So on the abstraction front, the constructs are super useful, right? CloudFormation now has modules which allow you to say, "Here's a template and I'm going to represent this as a CloudFormation type itself," right? So instead of saying that I need X different things, I'm going to say, "I packaged that all up here. It is as a type."Now, currently, modules can only be playing CloudFormation templates and there's a lot of constraints in what you can express inside a CloudFormation template. And I think the answer for me is ... What I want to see is more richness in the CloudFormation language, right? One of the things that people do in the CDK that's really helpful is say, "I need a copy of this in every AZ."Jeremy: Right.Ben: Right? There's so much boilerplate in server-based things. And CloudFormation can't do that, right? But if you imagine that it had a map function that allowed you to say, "For every AZ, stamp me out a copy of this little bit." And then that the CDK constructs allowed to translate. Instead of it doing all this generation only down to the L one piece, instead being able to say, "I'm going to translate this into more rich CloudFormation templates so that the CloudFormation template was as advanced as possible."Right? Then it could do things like say, "Oh, I know we need to do this in every AZ, I'm going to use this map function in the CloudFormation template rather than just stamping it out." Right? And so I think that's possible. Now, modules should also be able to be defined as CDK programs. Right? You should be able to register a construct as a CloudFormation tag.Jeremy: It would be pretty cool.Ben: There's no reason you shouldn't be able to. Yeah. Because I think the declarative versus imperative thing is, again, not the most important piece, it's how do we move ... It's shifting right in this case, right? That how do you shift what's happening with the developer further into the process of deployment so that more of their context is present? And so one of the things that the CDK does that's hard to replicate is have non-local effects. And this is both convenient and I think of code smell often.So you can pass a bucket resource from another stack into a piece of code in your CDK program that's creating a different stack and you say, "Oh great, I've got this Lambda function, it needs permissions to that bucket. So add permissions." And it's possible for the CDK programs to either be adding the permissions onto the IAM role of that function, or non-locally adding to that bucket's resource policy, which is weird, right? That you can be creating a stack and the thing that you do to that stack or resource or whatever is not happening there, it's happening elsewhere. I don't think that's a great approach, but it's certainly convenient to be able to do it in a lot of situations.Now, that's not representable within a module. A module is a contained piece of functionality that can't touch anything else. So things like SAM where you can add events onto a function that can go and create ... You create the API events on different functions and then SAM aggregates them and creates an API gateway for you. Right? If AWS serverless function was a module, it couldn't do that because you'd have these in different places and you couldn't aggregate something between all of them and put them in the top-level thing, right?This is what CloudFormation macros enable, but they don't have a... There's no proper interface to them, right? They don't define, "This is what I'm doing. This is the kind of resources I can create." There's none of that that would help you understand them. So they're infinitely flexible, but then also maybe less principled for that reason. So I think there are ways to evolve, but it's investment in the CloudFormation language that allows us to shift that burden from being a flattening inside client-side code from the developer and shifting it to be able to be represented in the cloud.Jeremy: Right. Yeah. And I think from that standpoint too if we go back to the solving people's problems standpoint, that everything you explained there, they're loaded with nuances, it's loaded with gotchas, right? Like, "Oh, you can't do this, you can't do that." So that's just why I think the CDK is so popular because it's like you can do so much with it so quickly and it's very, very fast. And I think that trade-off, people are just willing to make it.Ben: Yes. And that's where they're willing to make it, do they fully understand the consequences of it? Then does AWS communicate those consequences well? Before I get into that question of, okay, you're a developer that's brand new to AWS and you've been tasked with standing up some Kubernetes cluster and you're like, "Great. I can use a CDK to do this." Something is malfunctioning. You're also tasked with the operations and something is malfunctioning. You go in through the Console and maybe figure out all the things that are out there are new to you because they're hidden inside L3 constructs, right?You're two levels down from where you were defining what you want, and then you find out what's wrong and you have no idea how to turn that into a change in your CDK program. So instead of going back and doing the thing that infrastructure as code is for, which is tweaking your program to go fix the problem, you go and you tweak it in the Console ...Jeremy: Right. Which you should never do.Ben: ... and you fix it that way. Right. Well, and that's the thing that I struggle with, with the CDK is how does the CDK help the developer who's in that situation? And I don't think they have a good story around that. Now, I don't know. I haven't talked with enough junior developers who are using the CDK about how often they get into that situation. Right? But I always say client-side code is not a replacement for a managed service because when it's client-side code, you still own the result.Jeremy: Right.Ben: If a particular CDK construct was a managed service in AWS, then all of the resources that would be created underneath AWS's problem to make work. And the interface that the developer has is the only level of ownership that they have. Fargate is this. Because you could do all the things that Fargate does with a CDK construct, right? Set up EC2, do all the things, and represent it as something that looks like Fargate in your CDK program. But every time your EC2 fleet is unhealthy that's your problem. With Fargate, that's AWS's problem. If we didn't have Fargate, that's essentially what CDK would be trying to do for ECS.And I think we all recognize that Fargate is very necessary and helpful in that case, right? And I just want that for all the things, right? Whenever I have an abstraction, if it's an abstraction that I understand, then I should have a way of zooming into it while not having to switch languages, right? So that's where you shouldn't dump me out the CloudFormation to understand what you're doing. You should help me understand the low-level things in the same language. And if it's not something that I need to understand, it should be a managed service. It shouldn't be a bunch of stuff that I still own that I haven't looked at.Jeremy: Makes sense. Got a question, Rebecca? Because I was waiting for you to jump in.Rebecca: No, but I was going to make a joke, but then the joke passed, and then I was like, "But should I still make it?" I was going to be like, "Yeah, but does the CDK let you test in production?" But that was a 32nd ago joke and then I was really wrestling with whether or not I should tell it, but I told it anyway, hopefully, someone gets a laugh.Ben: Yeah. I mean, there's the thing that Charity Majors says, right? Which is that everybody tests in production. Some people are lucky enough to have a development environment in production. No, sorry. I said that the wrong way. It's everybody has a test environment. Some people are lucky enough that it's not in production.Rebecca: Yeah. Swap that. Reverse it. Yeah.Ben: Yeah.Jeremy: All right. So speaking of talking to developers and getting feedback from them, so I actually put a question out on Twitter a couple of weeks ago and got a lot of really interesting reactions. And essentially I asked, "What do you love or hate about infrastructure as code?" And there were a lot of really interesting things here. I don't know, maybe it might be fun to go through a couple of these and get your thoughts on them. So this is probably not a great one to start with, but I thought it was interesting because this I think represents the frustration that a lot of us feel. And it was basically that they love that automation minimizes future work, right? But they hate that it makes life harder over time. And that pretty much every approach to infrastructure in, sorry, yeah, infrastructure in code at the present is flawed, right? So really there are no good solutions right now.Ben: Yeah. CloudFormation is still a pain to learn and deal with. If you're operating in certain IDEs, you can get tab completion.Jeremy: Right.Ben: If you go to CDK you get tab completion, which is, I think probably most of the value that developers want out of it and then the abstraction, and then all the other fancy things it does like pipelines, which again, should be a managed service. I do think that person is absolutely right to complain about how difficult it is. That there are many ways that it could be better. One of the things that I think about when I'm using tools is it's not inherently bad for a tool to have some friction to use it.Jeremy: Right.Ben: And this goes to another infrastructure as code tool that goes even further than the CDK and says, "You can define your Lambda code in line with your infrastructure definition." So this is fine with me. And there's some other ... I think Punchcard also lets you do some of this. Basically extracts out the bits of your code that you say, "This is a custom thing that glues together two things I'm defining in here and I'll make that a Lambda function for you." And for me, that is too little friction to defining a Lambda function.Because when I define a Lambda function, just going back to that bringing in ownership, every time I add a Lambda function, that's something that I own, that's something that I have to maintain, that I'm responsible for, that can go wrong. So if I'm thinking about, "Well, I could have API Gateway direct into DynamoDB, but it'd be nice if I could change some of these fields. And so I'm just going to drop in a little sprinkle of code, three lines of code in between here to do some transformation that I want." That is all of sudden an entire Lambda function you've brought into your infrastructure.Jeremy: Right. That's a good point.Ben: And so I want a little bit of friction to do that, to make me think about it, to make me say, "Oh, yeah, downstream of this decision that I am making, there are consequences that I would not otherwise think about if I'm just trying to accomplish the problem," right? Because I think developers, humans, in general, tend to be a bit shortsighted when you have a goal especially, and you're being pressured to complete that goal and you're like, "Okay, well I can complete it." The consequences for later are always a secondary concern.And so you can change your incentives in that moment to say, "Okay, well, this is going to guide me to say, "Ah, I don't really need this Lambda function in here. Then I'm better off in the long term while accomplishing that goal in the short term." So I do think that there is a place for tools making things difficult. That's not to say that the amount of difficult that infrastructure as code is today is at all reasonable, but I do think it's worth thinking about, right?I'd rather take on the pain of creating an ASL definition by hand for express workflow than the easier thing of writing Lambda code. Because I know the long-term consequences of that. Now, if that could be flipped where it was harder to write something that took more ownership, it'd be just easy to do, right? You'd always do the right thing. But I think it's always worth saying, "Can I do the harder thing now to pay off to pay off later?"Jeremy: And I always call those shortcuts "tomorrow-Jeremy's" problem. That's how I like to look at those.Ben: Yeah. Yes.Jeremy: And the funny thing about that too is I remember right when EventBridge came out and there was no CloudFormation support for a long time, which was super frustrating. But Serverless Framework, for example, implemented a custom resource in order to do that. And I remember looking at a clean stack and being like, "Why are there two Lambda functions there that I have no idea?" I'm like, "I didn't publish ..." I honestly thought my account was compromised that somebody had published a Lambda function in there because I'm like, "I didn't do that." And then it took me a while to realize, I'm like, "Oh, this is what this is." But if it is that easy to just create little transform functions here and there, I can imagine there being thousands of those in your account without anybody knowing that they even exist.Ben: Now, don't get me wrong. I would love to have the ability to drop in little transforms that did not involve Lambda functions. So in other words, I mean, the thing that VTL does for API Gateway, REST APIs but without it being VTL and being ... Because that's hard and then also restricted in what you can do, right? It's not, "Oh, I can drop in arbitrary code in here." But enough to say, "Oh, I want to flip ... These fields should go from a key-value mapping to a list of key-value, right? In the way that it addresses inconsistent with how tags are defined across services, those kinds of things. Right? And you could drop that in any service, but once you've defined it, there's no maintenance for you, right?You're writing JavaScript. It's not actually a JavaScript engine underneath or something. It's just getting translated into some big multi-tenant fancy thing. And I have a hypothesis that that should be possible. You should be able to do it where you could even do it in the parsing of JSON, being able to do transforms without ever having to have the whole object in memory. And if we could get that then, "Oh, sure. Now I have sprinkled all over the place all of these little transforms." Now there's a little bit of overhead if the transform is defined correctly or not, right? But once it is, then it just works. And having all those little transforms everywhere is then fine, right? And that incentive to make it harder it doesn't need to be there because it's not bringing ownership with it.Rebecca: Yeah. It's almost like taking the idea of tomorrow-Jeremy's problem and actually switching it to say tomorrow-Jeremy's celebration where tomorrow-Jeremy gets to look back at past-Jeremy and be like, "Nice. Thank you for making that decision past-Jeremy." Because I think we often do look at it in terms of tomorrow-Jeremy will think of this, we'll solve this problem rather than how do we approach it by saying, how do I make tomorrow-Jeremy thankful for it today-Jeremy? And that's a simple language, linguistic switch, but a hard switch to actually make decisions based on.Ben: Yeah. I don't think tomorrow-Ben is ever thankful for today-Ben. I think it's tomorrow-Ben is thankful for yesterday-Ben setting up the incentives correctly so that today-Ben will do the right thing for tomorrow-Ben. Right? When I think about people, I think it's easier to convince people to accept a change in their incentives than to convince them to fight against their incentives sustainably.Jeremy: Right. And I think developers and I'm guilty of this too, I mean, we make decisions based off of expediency. We want to get things done fast. And when you get stuck on that problem you're like, "You know what? I'm not going to figure it out. I'm just going to write a loop or I'm going to do whatever I can do just to make it work." Another if statement here, "Isn't going to hurt anybody." All right. So let's move to ... Sorry, go ahead.Ben: We shouldn't feel bad about that.Jeremy: You're right.Ben: I was going to say, we shouldn't feel bad about that. That's where I don't want tomorrow-Ben to have to be thankful for today-Ben, because that's the implication there is that today-Ben is fighting against his incentives to do good things for tomorrow-Ben. And if I don't need to have to get to that point where just the right path is the easiest path, right? Which means putting friction in the right places than today-Ben ... It's never a question of whether today-Ben is doing something that's worth being thankful for. It's just doing the job, right?Jeremy: Right. No, that makes sense. All right. I got another question here, I think falls under the category of service discovery, which I know is another topic that you love. So this person said, "I love IaC, but hate the fuzzy boundaries where certain software awkwardly fall. So like Istio and Prometheus and cert-manager. That they can be considered part of the infrastructure, but then it's awkward to deploy them when something like Terraform due to circular dependencies relating to K8s and things like that."So, I mean, I know that we don't have to get into the actual details of that, but I think that is an important aspect of infrastructure as code where best practices sometimes are deploy a stack that has your permanent resources and then deploy a stack that maybe has your more femoral or the ones that are going to be changing, the more mutable ones, maybe your Lambda functions and some of those sort of things. If you're using Terraform or you're using some of these other services as well, you do have that really awkward mix where you're trying to use outputs from one stack into another stack and trying to do all that. And really, I mean, there are some good tools that help with it, but I mean just overall thoughts on that.Ben: Well, we certainly need to demand better of AWS services when they design new things that they need to be designed so that infrastructure as code will work. So this is the S3 bucket notification problem. A very long time ago, S3 decided that they were going to put bucket notifications as part of the S3 bucket. Well, CloudFormation at that point decided that they were going to put bucket notifications as part of the bucket resource. And S3 decided that they were going to check permissions when the notification configuration is defined so that you have to have the permissions before you create the configuration.This creates a circular dependency when you're hooking it up to anything in CloudFormation because the dependency depends on the resource policy on an SNS topic, and SQS queue or a Lambda function depends on the bucket name if you're letting CloudFormation name the bucket, which is the best practice. Then bucket name has to exist, which means the resource has to have been created. But the notification depends on the thing that's notifying, which doesn't have the names and the resource policy doesn't exist so it all fails. And this is solved in a couple of different ways. One of which is name your bucket explicitly, again, not a good practice. Another is what SAM does, which says, "The Lambda function will say I will allow all S3 buckets to invoke me."So it has a star permission in it's resource policy. So then the notification will work. None of which is good or there's custom resources that get created, right? Now, if those resources have been designed with infrastructure as code as part of the process, then it would have been obvious, "Oh, you end up with a circular pendency. We need to split out bucket notifications as a separate resource." And not enough teams are doing this. Often they're constrained by the API that they develop first ...Jeremy: That's a good point.Ben: ... they come up with the API, which often makes sense for a Console experience that they desire. So this is where API Gateway has this whole thing where you create all the routes and the resources and the methods and everything, right? And then you say, "Great, deploy." And in the Console you only need one mutable working copy of that at a time, but it means that you can't create two deployments or update two stages in parallel through infrastructure as code and API Gateway because they both talk to this mutable working copy state and would overwrite each other.And if infrastructure as code had been on their list would have been, "Oh, if you have a definition of your API, you should be able to go straight to the deployment," right? And so trying to push that upstream, which to me is more important than infrastructure as code support at launch, but people are often like, "Oh, I want CloudFormation support at launch." But that often means that they get no feedback from customers on the design and therefore make it bad. KMS asymmetric keys should have been a different resource type so that you can easily tell which key types are in your template.Jeremy: Good point. Yeah.Ben: Right? So that you can use things like CloudFormation Guard more easily on those. Sure, you can control the properties or whatever, but you should be able to think in terms of, "I have a symmetric key or an asymmetric key in here." And they're treated completely separately because you use them completely differently, right? They don't get used to the same place.Jeremy: Yeah. And it's funny that you mentioned the lacking support at launch because that was another complaint. That was quite prevalent in this thread here, was people complaining that they don't get that CloudFormation support right away. But I think you made a very good point where they do build the APIs first. And that's another thing. I don't know which question asked me or which one of these mentioned it, but there was a lot of anger over the fact that you go to the API docs or you go to the docs for AWS and it focuses on the Console and it focuses on the CLI and then it gives you the API stuff and very little mention of CloudFormation at all. And usually, you have to go to a whole separate set of docs to find the CloudFormation. And it really doesn't tie all the concepts together, right? So you get just a block of JSON or of YAML and you're like, "Am I supposed to know what everything does here?"Ben: Yeah. I assume that's data-driven. Right? And we exist in this bubble where everybody loves infrastructure as code.Jeremy: True.Ben: And that AWS has many more customers who set things up using Console, people who learn by doing it first through the Console. I assume that's true, if it's not, then the AWS has somehow gotten on the extremely wrong track. But I imagine that's how they find that they get the right engagement. Now maybe the CDK will change some of this, right? Maybe the amount of interest that is generating, we'll get it to the point where blogs get written with CDK programs being written there. I think that presents different problems about what that CDK program might hide from when you're learning about a service. But yeah, it's definitely not ... I wrote a blog for AWS and my first draft had it as CloudFormation and then we changed it to the Console. Right? And ...Jeremy: That must have hurt. Did you die a little inside when that happened?Ben: I mean, no, because they're definitely our users, right? That's the way in which they interact with data, with us and they should be able to learn from that, their company, right? Because again, developers are often not fully in control of this process.Jeremy: Right. That's a good point.Ben: And so they may not be able to say, "I want to update this through CloudFormation," right? Either because their organization says it or just because their team doesn't work that way. And I think AWS gets requests to prevent people from using the Console, but also to force people to use the Console. I know that at least one of them is possible in IAM. I don't remember which, because I've never encountered it, but I think it's possible to make people use the Console. I'm not sure, but I know that there are companies who want both, right? There are companies who say, "We don't want to let people use the API. We want to force them to use the Console." There are companies who say, "We don't want people using the Console at all. We want to force them to use the APIs."Jeremy: Interesting.Ben: Yeah. There's a lot of AWS customers, right? And there's every possible variety of organization and AWS should be serving all of them, right? They're all customers. And certainly, I want AWS to be leading the ones that are earlier in their cloud journey and on the serverless ladder to getting further but you can't leave them behind, I think it's important.Jeremy: So that people argument and those different levels and coming in at a different, I guess, level or comfortability with APIs versus infrastructure as code and so forth. There was another question or another comment on this that said, "I love the idea of committing everything that makes my solution to text and resurrect an entire solution out of nothing other than an account key. Loved the ability to compare versions and unit tests, every bit of my solution, and not having to remember that one weird setting if you're using the Console. But hate that it makes some people believe that any coder is now an infrastructure wizard."And I think this is a good point, right? And I don't 100% agree with it, but I think it's a good point that it basically ... Back to your point about creating these little transformations in Pulumi, you could do a lot of damage, I mean, good or bad, right? When you are using these tools. What are your thoughts on that? I mean, is this something where ... And again, the CDK makes it so easy for people to write these constructs pretty quickly and spin up tons of infrastructure without a lot of guard rails to protect them.Ben: So I think if we tweak the statement slightly, I think there's truth there, which isn't about the self-perception but about what they need to be. Right? That I think this is more about serverless than about infrastructure as code. Infrastructure as code is just saying that you can define it. Right? I think it's more about the resources that are in a particular definition that require that. My former colleague, Aaron Camera says, "Serverless means every developer is an architect" because you're not in that situation where the code you write goes onto something, you write the whole thing. Right?And so you do need to have those ... You do need to be an infrastructure wizard whether you're given the tools to do that and the education to do that, right? Not always, like if you're lucky. And the self-perception is again an even different thing, right? Especially if coders think that there's nothing to be learned ... If programmers, software developers, think that there's nothing to be learned from the folks who traditionally define the infrastructure, which is Ops, right? They think, "Those people have nothing to teach me because now I can do all the things that they did." Well, you can create the things that they created and it does not mean that you're as good at it ...Jeremy: Or responsible for monitoring it too. Right.Ben: ... and have the ... Right. The monitoring, the experience of saying these are the things that will come back to bite you that are obvious, right? This is how much ownership you're getting into. There's very much a long-standing problem there of devaluing Ops as a function and as a career. And for my money when I look at serverless, I think serverless is also making the software development easier because there's so much less software you need to write. You need to write less software that deals with the hard parts of these architectures, the scaling, the distributed computing problems.You still have this, your big computing problems, but you're considering them functionally rather than coding things that address them, right? And so I see a lot of operations folks who come into serverless learn or learn a new programming language or just upscale, right? They're writing Python scripts to control stuff and then they learn more about Python to be able to do software development in it. And then they bring all of that Ops experience and expertise into it and look at something and say, "Oh, I'd much rather have step functions here than something where I'm running code for it because I know how much my script break and those kinds of things when an API changes or ... I have to update it or whatever it is."And I think that's something that Tom McLaughlin talks about having come from an outside ground into serverless. And so I think there's definitely a challenge there in both directions, right? That Ops needs to learn more about software development to be more engaged in that process. Software development does need to learn much more about infrastructure and is also at this risk of approaching it from, "I know the syntax, but not the semantics, sort of thing." Right? We can create ...Jeremy: Just because I can doesn't mean I should.Ben: ... an infrastructure. Yeah.Rebecca: So Ben, as we're looping around this conversation and coming back to this idea that software is people and that really software should enable you to focus on the things that do matter. I'm wondering if you can perhaps think of, as pristine as possible, an example of when you saw this working, maybe it was while you've been at iRobot or a project that you worked on your own outside of that, but this moment where you saw software really working as it should, and that how it enabled you or your team to focus on the things that matter. If there's a concrete example that you can give when you see it working really well and what that looks like.Ben: Yeah. I mean, iRobot is a great example of this having been the company without need for software that scaled to consumer electronics volumes, right? Roomba volumes. And needing to build a IOT cloud application to run connected Roombas and being able to do that without having to gain that expertise. So without having to build a team that could deal with auto-scaling fleets of servers, all of those things was able to build up completely serverlessly. And so skip an entire level of organizational expertise, because that's just not necessary to accomplish those tasks anymore.Rebecca: It sounds quite nice.Ben: It's really great.Jeremy: Well, I have one more question here that I think could probably end up ... We could talk about for another hour. So I will only throw it out there and maybe you can give me a quick answer on this, but I actually had another Twitter thread on this not too long ago that addressed this very, very problem. And this is the idea of the feedback cycle on these infrastructure as code tools where oftentimes to deploy infrastructure changes, I mean, it just takes time. In many cases things can run in parallel, but as you said, there's race conditions and things like that, that sometimes things have to be ... They just have to be synchronous. So is this something where there are ways where you see in the future these mutations to your infrastructure or things like that potentially happening faster to get a better feedback cycle, or do you think that's just something that we're going to have to deal with for a while?Ben: Yeah, I think it's definitely a very extensive topic. I think there's a few things. One is that the deployment cycle needs to get shortened. And part of that I think is splitting dev deployments from prod deployments. In prod it's okay for it to take 30 seconds, right? Or a minute or however long because that's at the end of a CI/CD pipeline, right? There's other things that are happening as part of that. Now, you don't want that to be hours or whatever it is. Right? But it's okay for that to be proper and to fully manage exactly what's going on in a principled manner.When you're doing for development, it would be okay to, for example, change the Lambda code without going through CloudFormation to change the Lambda code, right? And this is what an architect does, is there's a notion of a dirty deploy which just packages up. Now, if your resource graph has changed, you do need to deploy again. Right? But if the only thing that's changing is your code, sure, you can go and say, "Update function code," on that Lambda directly and that's faster.But calling it a dirty deploy is I think important because that is not something that you want to do in prod, right? You don't want there to be drift between what the infrastructure as code service understands, but then you go further than that and imagine there's no reason that you actually have to do this whole zip file process. You could be R sinking the code directly, or you could be operating over SSH on the code remotely, right? There's many different ways in which the loop from I have a change in my Lambda code to that Lambda having that change could be even shorter than that, right?And for me, that's what it's really about. I don't think that local mocking is the answer. You and Brian Rue were talking about this recently. I mean, I agree with both of you. So I think about it as I want unit tests of my business logic, but my business logic doesn't deal with AWS services. So I want to unit test something that says, "Okay, I'm performing this change in something and that's entirely within my custom code." Right? It's not touching other services. It doesn't mean that I actually need adapters, right? I could be dealing with the native formats that I'm getting back from a given service, but I'm not actually making calls out of the code. I'm mocking out, "Well, here's what the response would look like."And so I think that's definitely necessary in the unit testing sense of saying, "Is my business logic correct? I can do that locally. But then is the wiring all correct?" Is something that should only happen in the cloud. There's no reason to mock API gateway into Lambda locally in my mind. You should just be dealing with the Lambda side of it in your local unit tests rather than trying to set up this multiple thing. Another part of the story is, okay, so these deploys have to happen faster, right? And then how do we help set up those end-to-end test and give you observability into it? Right? X-Ray helps, but until X-Ray can sort through all the services that you might use in the serverless architecture, can deal with how does it work in my Lambda function when it's batching from Kinesis or SQS into my function?So multiple traces are now being handled by one invocation, right? These are problems that aren't solved yet. Until we get that kind of inspection, it's going to be hard for us to feel as good about cloud development. And again, this is where I feel sometimes there's more friction there, but there's bigger payoff. Is one of those things where again, fighting against your incentives which is not the place that you want to be.Jeremy: I'm going to stop you before you disagree with me anymore. No, just kidding! So, Rebecca, you have any final thoughts or questions for Ben?Rebecca: No. I just want to say to both of you and to everyone listening that I hope your today self is celebrating your yesterday-self right now.Jeremy: Perfect. Well, Ben, thank you so much for joining us and being a guinea pig as we said on this new format that we are trying. Excellent guinea pig. Excellent.Rebecca: An excellent human too but also great guinea pig.Jeremy: Right. Right. Pretty much so. So if people want to find out more about you, read some of the stuff you're doing and working on, how do they do that?Ben: I'm on Twitter. That's the primary place. I'm on LinkedIn, I don't post much there. And then I write articles that show up on Medium.Rebecca: And just so everyone knows your Twitter handle I'll say it out loud too. It's @ben11kehoe, K-E-H-O-E, ben11kehoe.Jeremy: Right. Perfect. All right. Well, we will put all that in the show notes and hopefully people will like this new format. And again, we'd love your feedback on this, things that you'd like us to do in the future, any ideas you have. And of course, make sure you reach out to Ben. He's an amazing resource for serverless. So again, thank you for everything you do, and thank you for being on the show.Ben: Yeah. Thanks so much for having me. This was great.Rebecca: Good to see you. Thank you.
About Nader DabitNader Dabit is a web and mobile developer, author, and Developer Relations Engineer building the decentralized future at Edge and Node. Previously, he worked as a Developer Advocate at AWS Mobile working with projects like AWS AppSync and AWS Amplify. He is also the author and editor of React Native in Action and OpenGraphQL.Nader Dabit Twitter: @dabit3Edge and Node Twitter: @edgeandnodeGraph protocol Twitter: @graphprotocolEdge and Node: edgeandnode.com Everest: everest.link YouTube: YouTube.com/naderdabitWhat is Web3? The Decentralized Internet of the Future ExplainedWatch this episode on YouTube: https://youtu.be/pSv_cCQyCPQ This episode is sponsored by CBT Nuggets and Fauna. TranscriptJeremy: Hi everyone. I'm Jeremy Daly and this is Serverless Chats. Today I am joined again by Nader Dabit. Hey Nader, thanks for joining me.Nader: Hey Jeremy. Thanks for having me.Jeremy: You are now a developer relations engineer at Edge & Node. I would love it if you could tell the listeners a little bit about yourself. I think a lot of people probably know you already, but a little bit about your background and then what Edge & Node is.Nader: Yeah, totally. My name is Nader Dabit like you mentioned, and I've been a developer for about, I guess, nine or ten years now. A lot of people might know me from my work with AWS, where I worked with the Amplify team with the front end web and mobile team, doing a lot of full stack stuff there as well as serverless. I've been working as a developer relations person, developer advocate, actually, leading the front end web and mobile team at AWS for a little over three years I was there. I was a manager for the last year and I became really, really interested in serverless while I was there. It led to me writing a book, which is Full Stack Serverless. It also just led me down the rabbit hole of managed services and philosophy and all this stuff.It's been really, really cool to learn about everything in the space. Edge & Node is my next step, I would say, in doing work and what I consider maybe a serverless area, but it's an area that a lot of people might not associate with the traditional, I would say definition of serverless or the types of companies they often associate with serverless. But Edge & Node is a company that was spun off from a team that created a decentralized API protocol, which is called the Graph protocol. And the Graph protocol started being built in 2017. It was officially launched in a decentralized way at the end of 2020. Now we are currently finalizing that migration from a hosted service to a decentralized service actually this month.A lot of really exciting things going on. We'll talk a lot about that and what all that means. But Edge & Node itself, we do support the Graph protocol, that's part of what we do, but we also build out decentralized applications ourselves. We have a couple of applications that we're building as engineers. We're also doing a lot of work within the Web3 ecosystem, which is known as the decentralized web ecosystem by investing in different people and companies and supporting different things and spreading awareness around some of the things that are going on here because it does have a lot to do with maybe the work that people are doing in the Web2 space, which would be the traditional webspace, the space that I was in before.Jeremy: Right, right. Here I am. I follow you on Twitter. Love the videos that you do on your YouTube channel. You're like a shining example of what a really good developer relations dev advocate is. You just produce so much content, things like that, and you're doing all this stuff on serverless and I'm loving it. And then all of a sudden, I see you post this thing saying, hey, I'm leaving AWS Amplify. And you mentioned something about blockchain and I'm like, okay, wait a minute. What is this that Nader is now doing? Explain to me this, or maybe explain to me and hopefully the audience as well. What is the blockchain have to do with this decentralized applications or decentralized, I guess Web3?Nader: Web3 as defined by definition, what you might see if you do some research, would be what a lot of people are talking about as the next evolution of the web as we know it. In a lot of these articles and stuff that people are trying to formalize ideas and stuff, the original web was the read-only web where we were not creators, the only creators were maybe the developers themselves. Early on, I might've gone and read a website and been able to only interact with the website by reading information. The current version that we're currently experiencing might be considered as Web2 where everyone's a creator. All of the interfaces, all of the applications that we interact with are built specifically for input. I can actually create a comment, I can upload a video, I can share stuff, and I can write to the web. And I can read.And then the next evolution, a lot of people are categorizing, yes, is Web3. It's like taking a lot of the great things that we have today and maybe improving upon those. A lot of people and everyone kind of, this is just a really, a very old discussion around some of the trade-offs that we currently make in today's web around our data, around advertising, around the way a lot of business models are created for monetization. Essentially, they all come down to the manipulation of user data and different tricks and ways to steal people's data and use that essentially to create targeted advertising. Not only does this lead to a lot of times a negative experience. I just saw a tweet yesterday that resonated a lot with me that said, "YouTube is no longer a video platform, it's now an ad platform with videos in between." And that's the way I feel about YouTube. My kids ...Jeremy: Totally.Nader: ... I have kids that use YouTube and it's interesting to watch them because they know exactly what to do when the ads come up and exactly how to time it because they're used to, ads are just part of their experience. That's just what they're used to. And it's not just YouTube, it's every site that's out there, that's a social site, Instagram, LinkedIn. I think that that's not the original vision that people had, right, for the web. I don't think this was part of it. There have been a lot of people proposing solutions, but the core fundamental problem is how these applications are engineered, but also how the applications are paid for. How do these companies pay for developers to build. It's a really complex problem that, the simplest solution is just sell ads or maybe create something like a developer platform where you're charging a weekly or monthly or yearly or something like that.I would say a lot of the ideas around Web3 are aiming to solve this exact problem. In order to do that you have to rethink how we build applications. You have to rethink how we store data. You have to rethink about how we think about identity as well, because again, how do you build an application that deals with user data without making it public in some way? Right? How do we deal with that? A lot of those problems are the things that people are thinking about and building ways to address those in this decentralized Web3 world. It became really fascinating to me when I started looking into it because I'm very passionate about what I'm doing. I really enjoy being a developer and going out and helping other people, but I always felt there was something missing because I'm sitting here and I love AWS still.In fact, I would 100% go back and work there or any of these big companies, right? Because you can't really look at a company as, in my opinion, a black or white, good or bad thing, there's companies are doing good things and bad things at the same time. For instance, at AWS, I would meet a developer, teach them something at a workshop, a year later they would contact me and be like, hey, I got my first job or I created a business, or I landed my first client. So you're actually helping improve people's lives, at the same time you're reading these articles about Amazon in the news with some of the negative stuff going on. The way that I look at it is, I can't sit there and say any company is good or bad, but I felt a lot of the applications that people were building were also, at the end goal when you hear some of these VC discussions or people raising money, a lot of the end goal for some of the people I was working with were just selling advertising.And I'm like, is this really what we're here to do? It doesn't feel fulfilling anymore when you start seeing that over and over and over. I think the really thing that fascinated me was that people are actually building applications that are monetized in a different way. And then I started diving into the infrastructure that enabled this and realized that there was a lot of similarities between serverless and how developers would deploy and build applications in this way. And it was the entry point to my rabbit hole.Jeremy: I talked to you about this and I've been reading some of the stuff that you've been putting out and trying to educate myself on some of this. It seems very much so that show Silicon Valley on HBO, right? This decentralized web and things like that, but there's kind of, and totally correct me if I'm wrong here, but I feel there's two sides of this. You've got one side that is the blockchain, that I think some people are familiar with in the, I guess in the context of cryptocurrency, right? This is a very popular use of the blockchain because you have that redundancy and you have the agreement amongst multiple places, it's decentralized. And so you have that security there around that. But there's other uses for the blockchain as well.Especially things like banking and real estate and some of those other use cases that I'd like to talk about. And then there's another side of it that is this decentralized piece. Is the decentralized piece of it like building apps? How is that related to the blockchain or are those two separate things?Nader: Yeah, absolutely. I'm a big fan of Silicon Valley. Working in tech, it's almost like every single episode resonates with you if you've been in here long enough because you've been in one of those situations. The blockchain is part of the discussion. Crypto is part of the discussion, and those things never really interested me, to be honest. I was a speculator in crypto from 2015 until now. It's been fun, but I never really looked at crypto in any other way other than that. Blockchain had a really negative, I would say, association in my mind for a long time, I just never really saw any good things that people were doing with it. I just didn't do any research, maybe didn't understand what was going on.When I started diving into it originally what really got me interested is the Graph protocol, which is one of the things that we work on at Edge & Node. I started actually understanding, why does this thing exist? Why is it there? That led me to understanding why it was there and the fact that 90% of dApps, decentralized apps in the Ethereum ecosystem are using it. And billions of queries, companies with billions of dollars in transactions are all using this stuff. I'm like, okay, this whole world exists, but why does it exist? I guess to give you an example, I guess we can talk about the Graph protocol. And there are a lot of other web, I would say Web3 or decentralized infrastructure protocols that are out there that are similar, but they all are doing similar things in the sense of how they're actually built and how they allow participation and stuff like that.When you think of something like AWS, you think of, AWS has all of these different services. I want to build an app, I need storage. I need some type of authentication layer, maybe with Cognito, and then maybe I need someplace to execute some business logic. So maybe I'll spin up some serverless functions or create an EC2 instance, whatever. You have all these building blocks. Essentially what a lot of these decentralized protocols like the Graph are doing, are building out the same types of web infrastructure, but doing so in a decentralized way. Why does that even matter? Why is that important? Well, for instance, when you live, let's say for example in another country, I don't know, in South America and outside the United States, or even in the United States in the future, you never know. Let's say that you have some application and you've said something rude about maybe the president or something like that.Let's say that for whatever reason, somebody hacks the server that you're dealing with or whatever, at the end of the day, there is a single point of failure, right? You have your data that's controlled by the cloud provider or the government can come in and they can have control over that. The idea around some of, pretty much all of the decentralized protocols is that they are built and distributed in a way that there is no single point of failure, but there's also no single point of control. That's important when you're living in areas that have to even worry about stuff like that. So maybe we don't have to worry about that as much here, but in other countries, they might.Building something like a server is not a big deal, right? With AWS, but how would you build a server and make it available for anyone in the world to basically deploy and do so in a decentralized way? I think that's the problem that a lot of these protocols are trying to solve. For the Graph in particular, if you want to build an application using data that's stored on a blockchain. There's a lot of applications out there that are basically using the blockchain for mainly, right now it's for financial, transactional reasons because a lot of the transactions actually cost a lot of money. For instance, Uniswap is one of these applications. If you want to basically query data from a blockchain, it's not as easy as querying data from a traditional server or database.For us we are used to using something like DynamoDB, or some type of SQL database, that's very optimized for queries. But on the blockchain, you're basically having these blocks that add up every time. You create a transaction, you save it. And then someone comes behind them and they save another transaction. Over time you build up this data that's aggregated over time. But let's say you want to hit that database with the, quote-unquote, database with a query and you want to retrieve data over time, or you want to have some type of filtering mechanism. You can't do that. You can't just query blockchains the way you can from a regular database. Similar to how a database basically indexes data and stores it and makes it efficient for retrieval, the Graph protocol basically does that, but for blockchain data.Anyone that wants to build an application, one of these decentralized apps on top of blockchain data has a couple of options. They can either build their own indexing server and deploy it to somewhere like AWS. That takes away the whole idea of decentralization because then you have a single point of failure again. You can query data directly from the blockchain, from your client application, which takes a very long time. Both of those are not, I would say the most optimal way to build. But also if you're building your own indexing server, every time you want to come up with a new idea also, you have to think about the resources and time that go into it. Basically, I want to come up with a new idea and test it out, I have to basically build a server index, all this data, create APIs around it. It's time-intensive.What the Graph protocol allows you to do is, as a developer you can basically define a subgraph using YAML, similar to something like cloud formation or a very condensed version of that maybe more Serverless Framework where you're defining, I want to query data from this data source, and I want to save these entities and you deploy that to the network. And that subgraph will basically then go and look into that blockchain. And will look for all the transactions that have happened, and it will go ahead and save those and make those available for public retrieval. And also, again, one of the things that you might think of is, all of this data is public. All of the data that's on the blockchain is public.Jeremy: Right. Right. All right. Let me see if I could repeat what you said and you tell me if I'm right about this. Because this was one of those things where blockchain ... you're right. To me, it had a negative connotation. Why would you use the blockchain, unless you were building your own cryptocurrency? Right. That just seemed like that's what it was for. Then when AWS comes out with QLDB or they announced that or whatever it was. I'm like, okay, so this is interesting, but why would you use it, again, unless you're building your own cryptocurrency or something because that's the only thing I could think of you would use the blockchain for.But as you said, with these blockchains now, you have highly sensitive transactions that can be public, but a real estate transaction, for example, is something really interesting, where like, we still live in a world where if Bank of America or one of these other giant banks, JPMorgan Chase or something like that gets hacked, they could wipe out financial data. Right? And I know that's backed up in multiple regions and so forth, but this is the thing where if you're doing some transaction, that you want to make sure that transaction lives forever and isn't manipulated, then the blockchain is a good place to do that. But like you said, it's expensive to write there. But it's even harder to read off the blockchain because it's that ledger, right? It's just information coming in and coming in.So event storming or if you were doing event sourcing or something that, it's that idea. The idea with these indexers are these basically separate apps that run, and again, I'm assuming that these protocols, their software, and things that you don't have to build this yourself, essentially you can just deploy these things. Right? But this will read off of the blockchain and do that aggregation for you and then make that. Basically, it caches the blockchain. Right? And makes that available to you. And that you could deploy that to multiple indexers if you wanted to. Right? And then you would have access to that data across multiple providers.Nader: Right. No single point of failure. That's exactly right. You basically deploy a very concise configuration file that defines how you want your data stored and made available. And then it goes, and it just starts at the very beginning and it queries all those blocks or reads all those blocks, saves the data in a database, and then it keeps up with additional new updates. If someone writes a new transaction after that, it also saves that and makes it available for efficient retrieval. This is just for blockchain data. This is the data layer for, but it's not just a blockchain data in the future. You can also query from IPFS, which is a file storage layer, somewhat S3. You can query from other chains other than Ethereum, which is kind of like the main chamber.In the future really what we're hoping to have is a complete API on top of all public data. Anybody that wants to have some data set available can basically deploy a subgraph and index it and then anyone can then essentially query for it. It's like when you think of public data, we're not really used to thinking of data in this way. And also I think a good thing to talk about in a moment is the types of apps that you can build because you wouldn't want to store private messages on a blockchain or something like that. Right? The types of apps that people are building right now at least are not 100% in line with everything. You can't do everything I would say right now in Web3 that you can do in Web2.There are only certain types of applications, but those applications that are successful seem to be wildly successful and have a lot of people interested in them and using them. That's the general idea, is like you have this way to basically deploy APIs and the technology that we use to query is GraphQL. That was one of the reasons that I became interested as well. Right now the main data sources are blockchains like Ethereum, but in the future, we would like to make that available to other data sources as well.Jeremy: Right. You mentioned earlier too because there are apps obviously being built on this that you said are successful. And the problem though, I think right now, because I remember I speculated a little bit with Bitcoin and I bought a whole bunch of Ripple, so I'm still hanging on to it. Ripple XPR whatever, let's go. Anyways, but it was expensive to make a transaction. Right? Reading off of the blockchain itself, I think just connecting generally doesn't cost money, but if you're, and I know there's some costs with indexers and that's how that works. But in terms of the real cost, it's writing to the blockchain. I remember moving some Bitcoin at one point, I think cost me $30 to make one transaction, to move something like that.I can see if you're writing a $300,000 real estate transaction, or maybe some really large wire transfer or something that you want to record, something that makes sense where you could charge a fee of $30 or $40 in order to do that. I can't see you doing that for ... certainly not for web streaming or click tracking or something like that. That wouldn't make sense. But even for smaller things there might be writing more to it, $30 or whatever that would be ... seems quite expensive. What's the hope around that?Nader: That was one of the biggest challenges and that was one of the reasons that when I first, I would say maybe even considered this as a technology back in the day, that I would be considering as something that would possibly be usable for the types of applications I'm used to seeing. It just was like a no-brainer, like, no. I think right now, and that's one of the things that attracted me right now to some of the things that are happening, is a lot of those solutions are finally coming to fruition for fixing those sorts of things. There's two things that are happening right now that solve that problem. One of them is, they are merging in a couple of updates to the base layer, layer one, which would be considered something like Ethereum or Bitcoin. But Ethereum is the main one that a lot of the financial stuff that I see is happening.Basically, there are two different updates that are happening, I think the main one that will make this fee transactional price go down a little bit is sharding. Sharding is basically going to increase the number of, I believe nodes that are basically able to process the transactions by some number. Basically, that will reduce the cost somewhat, but I don't think it's ever going to get it down to a usable level. Instead what the solutions seem to be right now and one of the solutions that seems to actually be working, people are using it in production really recently, this really just started happening in the last couple of months, is these layer 2 solutions. There are a couple of different layer 2 solutions that are basically layers that run on top of the layer one, which would be something like Ethereum.And they treat Ethereum as the settlement layer. It's almost like when you interact with the bank and you're running your debit card. You're probably not talking to the bank directly and they are doing that. Instead, you have something like Visa who has this layer 2 on top of the banks that are managing thousands of transactions per second. And then they take all of those transactions and they settle those in an underlying layer. There's a couple different layer 2s that seem to be really working well right now in the Ethereum ecosystem. One of those is Arbitrum and then the other is I think Matic, but I think they have a different name now. Both of those seem to be working and they bring the cost of a transaction down to a fraction of a penny.You have, instead of paying $20 or $30 for a transaction, you're now paying almost nothing. But now that's still not cheap enough to probably treat a blockchain as a traditional database, a high throughput database, but it does open the door for a lot of other types of applications. The applications that you see building on layer one where the transactions really are $5 to $20 or $30 or typically higher value transactions. Things like governance, things like financial transactions, you've heard of NFTs. And that might make sense because if someone's going to spend a thousand bucks or 500 bucks, whatever ...Jeremy: NFTs don't make sense to me.Nader: They're not my thing either, the way they're being, I would say, talked about today especially, but I think in the future, the idea behind NFTs is interesting, but yeah, I'm in the same boat as you. But still to those people, if you're paying a thousand dollars for something then that 5 or 10 or 20 bucks might make sense, but it's not going to make sense if I just want to go to an e-commerce store and pay $5 for something. Right? I think that these layer 2s are starting to unlock those potential opportunities where people can start building these true financial applications that allow these transactions to happen at the same cost or actually a lot cheaper maybe than what you're paying for a credit card transaction, or even what those vendors, right? If you're running a store, you're paying percentages to those companies.The idea around decentralization comes back to this discussion of getting rid of the middleman, and a lot of times that means getting rid of the inefficiencies. If you can offload this business logic to some type of computer, then you've basically abstracted away a lot of inefficiencies. How many billions of dollars are spent every year by banks flying their people around the world and private jets and these skyscrapers and stuff. Now, where does that money come from? It comes from the consumer and them basically taking fees. They're taking money here and there. Right? That's the idea behind technology in general. They're like whenever something new and groundbreaking comes in, it's often unforeseen, but then you look back five years later and you're like, this is a no-brainer. Right?For instance Blockbuster and Netflix, there's a million of them. I don't have to go into that. I feel this is what that is for maybe the financial institutions and how we think about finance, especially in a global world. I think this was maybe even accelerated by COVID and stuff. If you want to build an application today, imagine limiting yourself to developers in your city. Unless you're maybe in San Francisco or New York, where that might still work. If I'm here in Mississippi and I want to build an application, I'm not going to just look for developers in a 30-mile radius. That is just insane. And I don't use that word mildly, it's just wild to think about that. You wouldn't do that.Instead, you want to look in your nation, but really you might want to look around the world because you now have things like Slack and Discord and all these asynchronous ways of doing work. And you might be able to find the best developer in the world for 25% or 50% of what you would typically find locally and an easy way to pay them might just be to just send them some crypto. Right? You don't have to go find out all their banking information and do all the wiring and all this other stuff. You just open your wallet, you send them the money and that's it. It's a done deal. But that's just one thing to think about. To me when I think about building apps in Web2 versus Web3, I don't think you're going to see the Facebook or Instagram use case anytime in the next year or two. I think the killer app for right now, it's going to be financial and e-commerce stuff.But I do think in maybe five years you will see someone crack that application for, something like a social media app where we're basically building something that we use today, but maybe in a better way. And that will be done using some off-chain storage solution. You're not going to be writing all these transactions again to a blockchain. You're going to have maybe a protocol like Graph that allows you to have a distributed database that is managed by one of these networks that you can write to. I think the ideas that we're talking about now are the things that really excite me anyway.Jeremy: Let's go back to GraphQL for a second, though. If you were going to build an app on top of this, and again, that's super exciting getting those transaction fees down, because I do feel every time you try to move money between banks or it's the $3 fee, if you go to a foreign ATM and you take money out of an ATM, they charge you. Everybody wants to take a cut somewhere along, and there's probably reasons for it, but also corporate jets cost money. So that makes sense as well. But in terms of the GraphQL protocol here, so if I wanted to build an application on top of it, and maybe my application doesn't write to the blockchain, it just reads from it, with one of these indexers, because maybe I'm summing up some financial transactions or something, or I've got an app we can look things up or whatever, I'm building something.I'm querying using the GraphQL, this makes sense. I have to use one of these indexers that's aggregating that data for me. But what if I did want to write to the blockchain, can I use GraphQL to do a mutation and actually write something to the blockchain? Or do I have to write to it directly?Nader: Yeah, that's actually a really, really good question. And that's one of the things that we are currently working on with the Graph. Right now if you want to write a transaction, you typically are going to be using one of these JSON RPC wallets and using some type of client library that interacts with the wallet and signs the transaction with the private key. And then that sends the transaction to the blockchain directly. And you're talking to the blockchain and you're just using something like the Graph to query. But I think what would be ideal and what we think would be ideal, is if someone could use a single technology, a single language, and a single abstraction to do everything, not only with reading and writing but also with subscriptions for real-time updates.That's where we think the whole idea for this will ultimately be, and that's what we're working on now. Right now you can only query. And if you want to write a transaction, you basically are still going to be using something like ethers.js or Web3 or one of these other libraries that allows you to sign a transaction using your wallet. But in the future and in fact, we're already building this right now as having an end-to-end GraphQL library that allows you to write transactions as well as read. That way someone just learns a single API and it's a lot easier. It would also make it easier for developers that are coming from a traditional web background to come in because there's a little bit of learning curve for understanding how to create one of these signed providers and write the transaction. It's not that much code, but it is a new way of thinking about things.Jeremy: Well I think both of us coming from the serverless space, we know that new way of thinking about things certainly can throw a wrench in the system when a new developer is trying to pick that stuff up.Nader: Yeah.Jeremy: All right. So that's the blockchain side of things with the data piece of it. I think people could wrap their head around that. I think it makes a lot of sense. But I'm still, the decentralized, the other things that you talked about. You mentioned an S3, something that's sort of an S3 type protocol that you can use. And what are some of the other ones? I think I've written some of them down here. Acash was one, Filecoin, Livepeer. These are all different protocols or services that are hosted by the indexers, or is this a different thing than the indexers? How does that work? And then how would you use that to save data, maybe save some blob, a blob storage or something like that?Nader: Let's talk about the tokenomics idea around how crypto fits into this and how it actually powers a protocol like this. And then we'll talk about some of those other protocols. How do people actually build all this stuff and do it for, are they getting paid for it? Is it free? How does that work and how does this network actually stay up? Because everything costs money, developers' time costs money, and so on and so forth. For something like the Graph, basically during the building phase of this protocol, basically, there was white papers and there was blog posts, and there was people in Discords talking about the ideas that were here. They basically had this idea to build this protocol. And this is a very typical life cycle, I would say.You have someone that comes up with an idea, they document some of it, they start building it. And the people that start building it are going to be basically part of essentially the founding team you could think of, in the sense of they're going to be having equity. Because at the end of the day, to actually launch one of these decentralized protocols, the way that crypto comes into it, there's typically some type of a token offering. The tokens need to be for a network like this, some type of utility token to keep the network running in the future. You're not just going to create some crypto and that's it like, right? I think that's the whole idea that I thought was going on when in reality, these tokens are typically used for powering the protocol.But let's say early on you have let's say 20 developers and they all build 5% of the system, whatever percentage that you want to talk about, whatever. Let's say you have these people helping out and then you actually build the thing and you want to go ahead and launch it and you have something that's working. A lot of times what people will do is they'll basically have a token offering, where they'll basically say, okay, let's go ahead and we're going to mint X number of tokens, and we're going to put these on the market and we're going to also pay these people that helped build this system, X number of tokens, and that's going to be their payment. And then they can go and sell those or keep those or trade those or whatever they would like to do.And then you have the tokens that are then put on the public market essentially. Once you've launched the protocol, you have to have tokens to basically continue to power the protocol and fund it. There are different people that interact with the protocol in different ways. You have the indexers themselves, which are basically software engineers that are deploying whatever infrastructure to something like AWS or GCP. These people are still using these cloud providers or they're maybe doing it at their house, whatever. All you basically need is a server and you want to basically run this indexer node, which is software that is open source, and you run this node. Basically, you can go ahead and say, okay, I want to start being an indexer and I want to be one of the different nodes on the network.To do that you basically buy some GRT, Graph Token, and in our case you stake it, meaning you are putting this money up to basically affirm that you are an indexer on the protocol and you are going to be accepting subgraph developers to deploy their subgraphs to your indexer. You stake that money and then when people use the API, they're basically paying money just like they might pay money to somewhere like API gateway or AppSync. Instead, they're paying money for their subgraph and that money is paid in GRT and it's distributed to the people in the ecosystem. Like me as a developer, I'm deploying the subgraph, and then if I have a million people using it, then I make some money. That's one way to use tokens in the system.Another way is basically to, as an outside person looking in, I can say, this indexer is really, really good. They know what they're doing. They're a very strong engineer. I'm going to basically put some money into their indexer and I'm basically backing them as an indexer. And then I will also share the money that comes in from the query fees. And then there are also people that are subgraph developers, which is the stuff that I've been working with mainly, where I can basically come up with a new API. I can be like, it'd be cool if I took data from this blockchain and this file system and merged it together, and I made this really cool API that people can use to build their apps with. I can deploy that. And basically, people can signal to this subgraph using tokens. And when people do that, they can say that they believe that this is a good subgraph to use.And then when people use that, I can also make money in that way. Basically, people are using tokens to be part of the system itself, but also to use that. If I'm a front end application like Uniswap and I want to basically use the Graph, I can basically say, okay, I'm going to put a thousand dollars in GRT tokens and I'm going to be using this API endpoint, which is a subgraph. And then all of the money that I have put up as someone that's using this, is going to be taken as the people start using it. Let's say I have a million queries and each query is one, 1000th of a cent, then after those million queries are up, I've spent $100 or something like that. Kind of similar to how you might pay AWS, you're now paying, you know, subgraph developers and indexers.Jeremy: Right. Okay. That makes sense. So then that's the payment method of that. So then these other protocols that get built on top of it, the Acash and Filecoin and Livepeer. So those ...Nader: They're all operating in a very similar fashion.Jeremy: Okay. All right. And so it's ...Nader: They have some type of node software that's run and people can basically run this node on some server somewhere and make it available as part of the network. And then they can use the tokens to participate. There's Filecoin for file storage. There's also IPFS, which is actually more of, it's a completely free service, but it's also not something that's as reliable as something like S3 or Filecoin. And then you have, like you mentioned, I believe Acash, which is a way to execute arbitrary code, business logic, and stuff like that. You have Ceramic Network, which is something that you can use for authentication. You have Livepeer which is something you use for live streaming. So you have all these ideas, these decentralized services fitting in these different niches.Jeremy: Right, right. Okay. So then now you've got a bunch of people. Now you mentioned this idea of, you could say, this is a good indexer. What about bad indexers? Right?Nader: That's a really good question.Jeremy: Yeah. You're relying on people to take data off of a public blockchain, and then you're relying on them to process it correctly and give you back good data. I'm assuming they could manipulate that data if they wanted to. I don't know why, but let's say they did. Is there a way to guarantee that you're getting the correct data?Nader: Yeah. That's a whole part of how the system works. There's this whole idea and this whole, really, really deep rabbit hole of crypto-economics and how these protocols are structured to incentivize and also disincentivize. In our protocol, basically, you have this idea of slashing and this is also a fairly known and used thing in the ecosystem and in the space. It's this idea of slashing. Basically, you incentivize people to go out and find people that are serving incorrect data. And if that person finds someone that's serving incorrect data, then the person that's serving the incorrect data is, quote-unquote, slashed. And that basically means that they're not only not going to receive the money from the queries that they were serving, but they also might lose the money that they put up to be a part of the network.I mentioned you have to actually put up money to deploy an indexer to the network, that money could also be at risk. You're very, very, very much so financially disincentivized to do that. And there's actually, again, incentives in the network for people to go and find those people. It's all-around incentives, game theory, and things like that.Jeremy: Which makes a ton of sense. That's good to know. You mentioned, you threw out the number, five years from now, somebody might build the killer app or whatever, they'll figure out some of these things. Where are we with this though? Because this sounds really early, right? There's still things that need to be figured out. Again, it's public data on the blockchain. How do you see this evolving? When do you think Web3 will be more accessible to the masses?Nader: Today people are actually building really, really interesting applications that are fitting the current technology stack, what are the things that you can build? People are already building those. But when you think about the current state of the web, where you have something like Twitter, or Facebook or Instagram, where I would say, especially maybe something like Facebook, that's extremely, extremely complex with a lot of UI interaction, a lot of private data, messages and stuff. I think to build something like that, yeah, it's going to be a couple of years. And then you might not even see certain types of applications being built. I don't think there is going to be this thing where there is no longer these types of applications. There are only these new types. I think it's more of a new type of application that people are going to be building, and it's not going to be a winner takes all just like in all tech in my opinion.I wouldn't say all but in many areas of tech where you're thinking of something as a zero-sum game where I don't think this is. But I do think that the most interesting stuff is around how Web3 essentially enables native payments and how people are going to use these native payments in interesting ways that maybe we haven't thought of yet. One of the ways that you're starting to see people doing, and a lot of venture capitalists are now investing in a lot of these companies, if you look at a lot of the companies coming out of YC and a lot of the new companies that these traditional venture capitalists are investing in, are a lot of TOMS crypto companies.When you think about the financial incentives, the things that we talked about early on, let's say you want to have the next version of YouTube and you don't want to have ads. How would that even work? Right? You still need to enable payments. But there's a couple of things that could happen there. Well, first of all, if you're building an application in the way that I've talked about, where you basically have these native payments or these native tokens that can be part of the whole process now, instead of waiting 10 years to do an IPO for an application that has been around for those 10 years and then paying back all his investors and all of those people that had been basically pulling money out their pockets to take part in.What if someone that has a really interesting idea and maybe they have a really good track record, they come out with a new application and they're basically saying, okay, if you want to own a piece of this, we're going to basically create a token and you can have ownership in it. You might see people doing these ICO's, initial coin offerings, or whatever, where basically they're offering portions of the company to anyone that wants to own it and then incentivizing people to basically use those, to govern how the application is built in the future. Let's say I own 1% of this company and a proposal is put up to do something new. I can basically say, I can use that portion of my ownership to vote on things. And then people that are speculating can say, this company is doing interesting things. I'm going to buy into it, therefore driving the price up or down.Kind of like the same way that you see the traditional stock market there, but without all of the regulation and friction that comes with that. I think that's interesting and you're already seeing companies doing that. You're not seeing the majority of companies doing that or anything like that, but you are starting to see those types of things happening. And that brings around the discussion of regulations. Is ... can you even do something like that in the United States? Well, maybe, maybe not. Does that mean people are going to start building these companies elsewhere? That's an interesting discussion as well. Right now if you want to build an application this way, you need to have some type of utility that these tokens are there for. You can't just do them purely on speculation, at least right now. But I think it's going to be interesting for sure, to watch.Jeremy: Right. And I think too that, I'm just thinking if you're a bank, right? And you maybe have a bunch of private transactions that you want to keep private. Because again, I don't even know how, I don't know how we get to private transactions on the blockchain. I could see you wanting to have some transactions that were public blockchain and some that were private and maybe a hybrid approach would make sense for some companies.Nader: I think the idea that we haven't really talked about at all is identity and how identity works compared to how we're used to identity. The way that we're used to identity working is, we basically go to a new website and we're like, this looks awesome. Let me try it out. And they're like, oh wait, we need your name, your email address, your phone number, and possibly your credit card and all this other stuff. We do that over and over and over, and over time we've now given our personal information to 500 people. And then you start getting these emails, your data has been breached, every week you get one of these emails, if you're someone like me, I don't know. Maybe I'm just signing up for too much stuff. Maybe not every week, but maybe every month or two. But you're giving out your personal data.But we're used to identity as being tied to our own physical name and address and things like that. But what if identity was something that was more abstract? And I think that that's the way that you typically see identity managed in Web3. When you're dealing with authentication mechanisms, one of the most interesting things that I think that is part of this whole discussion is this idea of a single sign-on mechanism, that you own your identity and you can transfer it across all the applications and no one else is in control of it. When you use something like an Ethereum wallet, like MetaMask, for example, it's an extension you can just download and put crypto in and basically make payments on the web with. When you create a wallet, you're given a wallet address. And the wallet address is basically created using public key cryptography, where basically you start with this private key, your public key is derived from the private key, and then your address is dropped from the public key.And when you send a transaction, you basically sign the transaction with your private key and you send your public key along with the transaction, and the person that receives that can decode the transaction with the public key to verify that that's who signed the transaction. Using this public key cryptography that only you can basically sign with your own address and your own password, it's all stored on the blockchain or in some decentralized manner. Actually in this case stored on the blockchain or it depends on how you use it really, I guess. But anyway, the whole idea here is that you completely own your identity. If you never decide to associate that identity with your name and your phone number, then who knows who's sending these transactions and who knows what's going on, because why would you need to associate your own name and phone number with all of these types of things, in these situations where you're making payments and stuff like that. Right?What is the idea of a user profile anyway, and why do you actually need it? Well, you might need it on certain applications. You might need it or want it on social network, or maybe not, or you might come up with a pseudonym, because maybe you don't want to associate yourself with whatever. You might want to in other cases, but that's completely up to you and you can have multiple wallet addresses. You might have a public wallet address that you associate your name with that you are using on social media. You might have a private wallet address that you're never associating with your name, that you're using for financial transactions. It's completely up to you, but no one can change that information. One of the applications that I recently built was called Decentralized Identity. I built it and release it a few days ago.And it's an implementation of this and it's using some of these Web3 technologies. One of them is IDX. One of them is Ceramic, which is a decentralized protocol similar to the Graph but for identity. And then it's using something called DIDs, which are decentralized identifiers, which are a way to have a completely unique ID based off of your address. And then you own the control over that. You can basically go in and make updates to that profile. And then any application across the web that you choose to use can then access that information. You're only dealing with it stored in one place. You have full control over it, at any time you can go in and delete that. You can go in and change it. No one has control over it except for you.The idea of identity is a mind-bending thing in this space because I think we're so used to just handing everybody our real names and our real phone numbers and all of our personal information and just having our fingers crossed, that we're just not used to anything else.Jeremy: It's all super interesting. You mentioned earlier about, would it be legal in the United States? I'm thinking of all these recent ransomware attacks and I think they were able to trace back some Bitcoin transaction, they were actually able to trace it back to the individual group that accepted the payment. It opens up a whole can of worms. I love this idea of being anonymous and not being tracked, but then it's also like, what could bad actors do with anonymous financial transactions and things like that? So ...Nader: There kind of has been anonymous transactional layer for a long time. Cash brought in, you can't really do a lot of illegal stuff these days without cash. So should we get rid of cash? I think with any technology ...Jeremy: No, but I mean, there's a limit though, right? You can't withdraw more than $10,000 worth of cash without the FBI being flagged and you can't deposit more, you know what I mean?Nader: You can't take a million dollars worth of Bitcoin that you've gotten from ransomware and turn it into cash either.Jeremy: That's also true. Right.Nader: Because it's all tracked on the blockchain, that's probably how they caught those people. Right? They somehow had their personal information tied to a transaction, because if you follow these transactions long enough, you're going to find some origination point. I agree though. There's definitely trade-offs with everything. I don't think I'm ever the type to argue that. There's good things and there's bad things. I think you have to look at the whole picture and decide for yourself, what you think. I'm the type that's like, let's lay out all of the ideas and let the market decide.Jeremy: Right. Yeah. I totally agree with that. All this stuff is fascinating, there is way too much more for me to learn at this point. I think my brain is filled at this point. Anything else about Edge & Node? Any cool things you're working on there or anything you want people to know?Nader: We're working on a couple of different projects. I can't really talk about some of them because they're not released yet, but we are working on a new version of something called Everest, and Everest is already out. If you want to check it out, it's at everest.link. It's basically a repository of a bunch of different applications that have already been built in the Web3 ecosystem. It also ties in a lot of the stuff that we talked about, like identity and stuff like that. You can basically sign in with your Ethereum wallet. You can basically interact with different applications and stuff, but you can also just see the types of stuff people are building. It's categorized into games, financial apps. If you've listened to this and you're like, this sounds cool, but are people actually building stuff? This is a place to see hundreds of apps that people have are already built and that are out there and successful.Jeremy: Awesome. All right. Well, listen, Nader, this was awesome. Thank you so much for sharing this with me. I know I learned a ton. I hope the listeners learned a ton. If people want to learn more about this or just follow you and keep up with what you're doing, what's the best way to do that?Nader: I would say check out Twitter, we're on Twitter @dabit3 for me, @edgeandnode for Edge & Node, and of course @graphprotocol for Graph protocol.Jeremy: Okay. And then edgeandnode.com. Your YouTube channel is just youtube.com/naderdabit, N-A-D-E-R D-A-B-I-T. And then you had an article on Web3 and I'll put it in the show notes.Nader: Yeah. Put it in the show notes. For freeCodeCamp, it's called what is Web3. And it's really a condensed version of a lot of the stuff we talked about. Maybe go into a little bit more depth around native payments and how people might build companies in the way that we've talked about here.Jeremy: Awesome. All right. Well, I will get all that stuff into the show notes. Thanks again, Nader.Nader: Thanks for having me. It was good to talk.
About Patrick StrzelecPatrick Strzelec is a fullstack developer with a focus on building GraphQL gateways and serverless microservices. He is currently working as a technical lead at NorthOne making banking effortless for small businesses.LinkedIn: Patrick StrzelecNorthOne Careers: www.northone.com/about/careersWatch this episode on YouTube: https://youtu.be/8W6lRc03QNU This episode sponsored by CBT Nuggets and Lumigo. TranscriptJeremy: Hi everyone. I'm Jeremy Daly, and this is Serverless Chats. Today, I'm joined by Patrick Strzelec. Hey, Patrick, thanks for joining me.Patrick: Hey, thanks for having me.Jeremy: You are a lead developer at NorthOne. I'd love it if you could tell the listeners a little bit about yourself, your background, and what NorthOne does.Patrick: Yeah, totally. I'm a lead developer here at NorthOne, I've been focusing on building out our GraphQL gateway here, as well as some of our serverless microservices. What NorthOne does, we are a banking experience for small businesses. Effectively, we are a deposit account, with many integrations that act almost like an operating system for small businesses. Basically, we choose the best partners we can to do things like check deposits, just your regular transactions you would do, as well as any insights, and the use cases will grow. I'd like to call us a very tailored banking experience for small businesses.Jeremy: Very nice. The thing that is fascinating, I think about this, is that you have just completely embraced serverless, right?Patrick: Yeah, totally. We started off early on with this vision of being fully event driven, and we started off with a monolith, like a Python Django big monolith, and we've been experimenting with serverless all the way through, and somewhere along the journey, we decided this is the tool for us, and it just totally made sense on the business side, on the tech side. It's been absolutely great.Jeremy: Let's talk about that because this is one of those things where I think you get a business and a business that's a banking platform. You're handling some serious transactions here. You've got a lot of transactions that are going through, and you've totally embraced this. I'd love to have you take the listeners through why you thought it was a good idea, what were the business cases for it? Then we can talk a little bit about the adoption process, and then I know there's a whole bunch of stuff that you did with event driven stuff, which is absolutely fascinating.Then we could probably follow up with maybe a couple of challenges, and some of the issues you face. Why don't we start there. Let's start, like who in your organization, because I am always fascinated to know if somebody in your organization says, “Hey we absolutely need to do serverless," and just starts beating that drum. What was that business and technical case that made your organization swallow that pill?Patrick: Yeah, totally. I think just at a high level we're a user experience company, we want to make sure we offer small businesses the best banking experience possible. We don't want to spend a lot of time on operations, and trying to, and also reliability is incredibly important. If we can offload that burden and move faster, that's what we need to do. When we're talking about who's beating that drum, I would say our VP, Blake, really early on, seemed to see serverless as this amazing fit. I joined about three years ago today, so I guess this is my anniversary at the company. We were just deciding what to build. At the time there was a lot of architecture diagrams, and Blake hypothesized that serverless was a great fit.We had a lot of versions of the world, some with Apache Kafka, and a bunch of microservices going through there. There's other versions with serverless in the mix, and some of the tooling around that, and this other hypothesis that maybe we want GraphQL gateway in the middle of there. It was one of those things that we wanted to test our hypothesis as we go. That ties into this innovation velocity that serverless allows for. It's very cheap to put a new piece of infrastructure up in serverless. Just the other day we wanted to test Kinesis for an event streaming use case, and that was just a half an hour to set up that config, and you could put it live in production and test it out, which is completely awesome.I think that innovation velocity was the hypothesis. We could just try things out really quickly. They don't cost much at all. You only pay for what you use for the most part. We were able to try that out, and as well as reliability. AWS really does a good job of making sure everything's available all the time. Something that maybe a young startup isn't ready to take on. When I joined the company, Blake proposed, “Okay, let's try out GraphQL as a gateway, as a concept. Build me a prototype." In that prototype, there was a really good opportunity to try serverless. They just ... Apollo server launched the serverless package, that was just super easy to deploy.It was a complete no-brainer. We tried it out, we built the case. We just started with this GraphQL gateway running on serverless. AWS Lambda. It's funny because at first, it's like, we're just trying to sell them development. Nobody's going to be hitting our services. It was still a year out from when we were going into production. Once we went into prod, this Lambda's hot all the time, which is interesting. I think the cost case breaks down there because if you're running this thing, think forever, but it was this GraphQL server in front of our Python Django monolift, with this vision of event driven microservices, which has fit well for banking. If you just think about the banking world, everything is pretty much eventually consistent.Just, that's the way the systems are designed. You send out a transaction, it doesn't settle for a while. We were always going to do event driven, but when you're starting out with a team of three developers, you're not going to build this whole microservices environment and everything. We started with that monolith with the GraphQL gateway in front, which scaled pretty nicely, because we were able to sort of, even today we have the same GraphQL gateway. We just changed the services backing it, which was really sweet. The adoption process was like, let's try it out. We tried it out with GraphQL first, and then as we were heading into launch, we had this monolith that we needed to manage. I mean, manually managing AWS resources, it's easier than back in the day when you're managing your own virtual machines and stuff, but it's still not great.We didn't have a lot of time, and there was a lot of last-minute changes we needed to make. A big refactor to our scheduling transactions functions happened right before launch. That was an amazing serverless use case. And there's our second one, where we're like, “Okay, we need to get this live really quickly." We created this work performance pattern really quickly as a test with serverless, and it worked beautifully. We also had another use case come up, which was just a simple phone scheduling service. We just wrapped an API, and just exposed some endpoints, but it was just a lot easier to do with serverless. Just threw it off to two developers, figure out how you do it, and it was ready to be live. And then ...Jeremy: I'm sorry to interrupt you, but I want to get to this point, because you're talking about standing up infrastructure, using infrastructure as code, or the tools you're using. How many developers were working on this thing?Patrick: How many, I think at the time, maybe four developers on backend functionality before launch, when we were just starting out.Jeremy: But you're building a banking platform here, so this is pretty sophisticated. I can imagine another business case for serverless is just the sense that we don't have to hire an operations team.Patrick: Yeah, exactly. We were well through launching it. I think it would have been a couple of months where we were live, or where we hired our first dev ops engineer. Which is incredible. Our VP took a lot of that too, I'm sure he had his hands a little more dirty than he did like early on. But it was just amazing. We were able to manage all that infrastructure, and scale was never a concern. In the early stages, maybe it shouldn't be just yet, but it was just really, really easy.Jeremy: Now you started with four, and I think, what are you now? Somewhere around 25 developers? Somewhere in that space now?Patrick: About 25 developers now, we're growing really fast. We doubled this year during COVID, which is just crazy to think about, and somehow have been scaling somewhat smoothly at least, in terms of just being able to output as a dev team promote. We'll probably double again this year. This is maybe where I shamelessly plug that we're hiring, and we always are, and you could visit northone.com and just check out the careers page, or just hit me up for a warm intro. It's been crazy, and that's one of the things that serverless has helped with us too. We haven't had this scaling bottleneck, which is an operations team. We don't need to hire X operations people for a certain number of developers.Onboarding has been easier. There was one example of during a major project, we hired a developer. He was new to serverless, but just very experienced developer, and he had a production-ready serverless service ready in a month, which was just an insane ramp-up time. I haven't seen that very often. He didn't have to talk to any of our operation staff, and we'd already used serverless long enough that we had all of our presets and boilerplates ready, and permissions locked down, so it was just super easy. It's super empowering just for him to be able to just play around with the different services. Because we hit that point where we've invested enough that every developer when they opened a branch, that branch deploys its own stage, which has all of the services, AWS infrastructure deployed.You might have a PR open that launches an instance of Kinesis, and five SQS queues, and 10 Lambdas, and a bunch of other things, and then tear down almost immediately, and the cost isn't something we really worry about. The innovation velocity there has been really, really good. Just being able to try things out. If you're thinking about something like Kinesis, where it's like a Kafka, that's my understanding, and if you think about the organizational buy-in you need for something like Kafka, because you need to support it, come up with opinions, and all this other stuff, you'll spend weeks trying it out, but for one of our developers, it's like this seems great.We're streaming events, we want this to be real-time. Let's just try it out. This was for our analytics use case, and it's live in production now. It seems to be doing the thing, and we're testing out that use case, and there isn't that roadblock. We could always switch off to a different design if you want. The experimentation piece there has been awesome. We've changed, during major projects we've changed the way we've thought about our resources a few times, and in the end it works out, and often it is about resiliency. It's just jamming queues into places we didn't think about in the first place, but that's been awesome.Jeremy: I'm curious with that, though, with 25 developers ... Kinesis for the most part works pretty well, but you do have to watch those iterator ages, and make sure that they're not backing up, or that you're losing events. If they get flooded or whatever, and also sticking queues everywhere, sounds like a really good idea, and I'm a big fan of that, but it also, that means there's a lot of queues you have to manage, and watch, and set alarms and all that kind of stuff. Then you also talked about a pretty, what sounds like a pretty great CI/CD process to spin up new branches and things like that. There's a lot of dev ops-y ops work that is still there. How are you handling that now? Do you have dedicated ops people, or do you just have your developers looking after that piece of it?Patrick: I would say we have a very spirited group of developers who are inspired. We do a lot of our code-sharing via internal packages. A few of our developers just figured out some of our patterns that we need, whether it's like CI, or how we structure our events stores, or how we do our Q subscriptions. We manage these internal packages. This won't scale well, by the way. This is just us being inspired and trying to reduce some of this burden. It is interesting, I've listened to this podcast and a few others, and this idea of infrastructure as code being part of every developer's toolbox, it's starting to really resonate with our team.In our migration, or our swift shift to full, I'd say doing serverless properly, we've learned to really think in it. Think in terms of infrastructure in our creating solutions. Not saying we're doing serverless the right way now, but we certainly did it the wrong way in the past, where we would spin up a bunch of API gateways that would talk to each other. A lot of REST calls going around the spider web of communication. Also, I'll call these monster Lambdas, that have a whole procedure list that they need to get through, and a lot of points of failure. When we were thinking about the way we're going to do Lambda now, we try to keep one Lambda doing one thing, and then there's pieces of infrastructure stitching that together. EventBridge between domain boundaries, SQS for commands where we can, instead of using API gateway. I think that transitions pretty well into our big break. I'm talking about this as our migration to serverless. I want to talk more about that.Jeremy: Before we jump into that, I just want to ask this question about, because again, I call those fat, some people call them fat Lambdas, I call them Lambda lifts. I think there's Lambda lifts, then fat Lambdas, then your single-purpose functions. It's interesting, again, moving towards that direction, and I think it's super important that just admitting that you're like, we were definitely doing this wrong. Because I think so many companies find that adopting serverless is very much so an evolution, and it's a learning thing where the teams have to figure out what works for them, and in some cases discovering best practices on your own. I think that you've gone through that process, I think is great, so definitely kudos to you for that.Before we get into that adoption and the migration or the evolution process that you went through to get to where you are now, one other business or technical case for serverless, especially with something as complex as banking, I think I still don't understand why I can't transfer personal money or money from my personal TD Bank account to my wife's local checking account, why that's so hard to do. But, it seems like there's a lot of steps. Steps that have to work. You can't get halfway through five steps in some transaction, and then be like, oops we can't go any further. You get to roll that back and things like that. I would imagine orchestration is a huge piece of this as well.Patrick: Yeah, 100%. The banking lends itself really well to these workflows, I'll call them. If you're thinking about even just the start of any banking process, there's this whole application process where you put in all your personal information, you send off a request to your bank, and then now there's this whole waterfall of things that needs to happen. All kinds of checks and making sure people aren't on any fraud lists, or money laundering lists, or even just getting a second dive from our compliance department. There's a lot of steps there, and even just keeping our own systems in sync, with our off-provider and other places. We definitely lean on using step functions a lot. I think they work really, really well for our use case. Just the visual, being able to see this is where a customer is in their onboarding journey, is very, very powerful.Being able to restart at any point of their, or even just giving our compliance team a view into that process, or even adding a pause portion. I think that's one of the biggest wins there, is that we could process somebody through any one of our pipelines, and we may need a human eye there at least for this point in time. That's one of the interesting things about the banking industry is. There are still manual processes behind the scenes, and there are, I find this term funny, but there are wire rooms in banks where there are people reviewing things and all that. There are a lot of workflows that just lend themselves well to step functions. That pausing capability and being able to return later with a response, so that allows you to build other internal applications for your compliance teams and other teams, or just behind the scenes calls back, and says, "Okay, resume this waterfall."I think that was the visualization, especially in an events world when you're talking about like sagas, I guess, we're talking about distributed transactions here in a way, where there's a lot of things happening, and a common pattern now is the saga pattern. You probably don't want to be doing two-phase commits and all this other stuff, but when we're looking at sagas, it's the orchestration you could do or the choreography. Choreography gets very messy because there's a lot of simplistic behavior. I'm a service and I know what I need to do when these events come through, and I know which compensating events I need to dump, and all this other stuff. But now there's a very limited view.If a developer is trying to gain context in a certain domain, and understand the chain of events, although you are decoupled, there's still this extra coupling now, having to understand what's going on in your system, and being able to share it with external stakeholders. Using step functions, that's the I guess the serverless way of doing orchestration. Just being able to share that view. We had this process where we needed to move a lot of accounts to, or a lot of user data to a different system. We were able to just use an orchestrator there as well, just to keep an eye on everything that's going on.We might be paused in migrating, but let's say we're moving over contacts, a transaction list, and one other thing, you could visualize which one of those are in the red, and which one we need to come in and fix, and also share that progress with external stakeholders. Also, it makes for fun launch parties I'd say. It's kind of funny because when developers do their job, you press a button, and everything launches, and there's not really anything to share or show.Jeremy: There's no balloons or anything like that.Patrick: Yeah. But it was kind of cool to look at these like, the customer is going through this branch of the logic. I know it's all green. Then I think one of the coolest things was just the retry ability as well. When somebody does fail, or when one of these workflows fails, you could see exactly which step, you can see the logs, and all that. I think one of the challenges we ran into there though, was because we are working in the banking space, we're dealing with sensitive data. Something I almost wish AWS solved out of the box, would be being able to obfuscate some of that data. Maybe you can't, I'm not sure, but we had to think of patterns for tokenization for instance.Stripe does this a lot where certain parts of their platform, you just get it, you put in personal information, you get back a token, and you use that reference everywhere. We do tokenization, as well as we limit the amount of details flowing through steps in our orchestrators. We'll use an event store with identifiers flowing through, and we'll be doing reads back to that event store in between steps, to do what we need to do. You lose some of that debug-ability, you can't see exactly what information is flowing through, but we need to keep user data safe.Jeremy: Because it's the use case for it. I think that you mentioned a good point about orchestration versus choreography, and I'm a big fan of choreography when it makes sense. But I think one of the hardest lessons you learn when you start building distributed systems is knowing when to use choreography, and knowing when to use orchestration. Certainly in banking, orchestration is super important. Again, with those saga patterns built-in, that's the kind of thing where you can get to a point in the process and you don't even need to do automated rollbacks. You can get to a failure state, and then from there, that can be a pause, and then you can essentially kick off the unwinding of those things and do some of that.I love that idea that the token pattern and using just rehydrating certain steps where you need to. I think that makes a ton of sense. All right. Let's move on to the adoption and the migration process, because I know this is something that really excites you and it should because it is cool. I always know, as you're building out applications and you start to add more capabilities and more functionality and start really embracing serverless as a methodology, then it can get really exciting. Let's take a step back. You had a champion in your organization that was beating the drum like, "Let's try this. This is going to make a lot of sense." You build an Apollo Lambda or a Lambda running Apollo server on it, and you are using that as a strangler pattern, routing all your stuff through now to your backend. What happens next?Patrick: I would say when we needed to build new features, developers just gravitated towards using serverless, it was just easier. We were using TypeScript instead of Python, which we just tend to like as an organization, so it's just easier to hop into TypeScript land, but I think it was just easier to get something live. Now we had all these Lambdas popping up, and doing their job, but I think the problem that happened was we weren't using them properly. Also, there was a lot of difference between each of our serverless setups. We would learn each time and we'd be like, okay, we'll use this parser function here to simplify some of it, because it is very bare-bones if you're just pulling the Serverless Framework, and it took a little ...Every service looked very different, I would say. Also, we never really took the time to sit back and say, “Okay, how do we think about this? How do we use what serverless gives us to enable us, instead of it just being an easy thing to spin up?" I think that's where it started. It was just easy to start. But we didn't embrace it fully. I remember having a conversation at some point with our VP being like, “Hey, how about we just put Express into one of our Lambdas, and we create this," now I know it's a Lambda lift. I was like, it was just easier. Everybody knows how to use Express, why don't we just do this? Why are we writing our own parsers for all these things? We have 10 versions of a make response helper function that was copy-pasted between repos, and we didn't really have a good pattern for sharing that code yet in private packages.We realized that we liked serverless, but we realized we needed to do it better. We started with having a serverless chapter reading between some of our team members, and we made some moves there. We created a shared boilerplate at some point, so it reduced some of the differences you'd see between some of the repositories, but we needed a step-change difference in our thinking, when I look back, and we got lucky that opportunity came up. At this point, we probably had another six Lambda services, maybe more actually. I want to say around, we'd probably have around 15 services at this point, without a governing body around patterns.At this time, we had this interesting opportunity where we found out we're going to be re-platforming. A big announcement we just made last month was that we moved on to a new bank partner called Bancorp. The bank partner that supports Chime, and they're like, I'll call them an engine boost. We put in a much larger, more efficient engine for our small businesses. If you just look at the capabilities they provide, they're just absolutely amazing. It's what we need to build forward. Their events API is amazing as well as just their base banking capabilities, the unit economics they can offer, the times on there, things were just better. We found out we're doing an engine swap. The people on the business side on our company trusted our technical team to do what we needed to do.Obviously, we need to put together a case, but they trusted us to choose our technology, which was awesome. I think we just had a really good track record of delivering, so we had free reign to decide what do we do. But the timeline was tight, so what we decided to do, and this was COVID times too, was a few of our developers got COVID tested, and we rented a house and we did a bubble situation. How in the NHL or MBA you have a bubble. We had a dev bubble.Jeremy: The all-star team.Patrick: The all-star team, yeah. We decided let's sit down, let's figure out what patterns are going to take us forward. How do we make the step-change at the same time as step-change in our technology stack, at the same time as we're swapping out this bank, this engine essentially for the business. In this house, we watched almost every YouTube video you can imagine on event driven and serverless, and I think leading up. I think just knowing that we were going to be doing this, I think all of us independently started prototyping, and watching videos, and reading a lot of your content, and Alex DeBrie and Yan Cui. We all had a lot of ideas already going in.When we all got to this house, we started off with this exercise, an event storming exercise, just popular in the domain-driven design community, where we just threw down our entire business on a wall with sticky notes, and it would have been better to have every business stakeholder there, but luckily we had two people from our product team there as representatives. That's how invested we were in building this outright, that we have products sitting in the room with us to figure it out.We slapped down our entire business on a wall, this took days, and then drew circles around it and iterated on that for a while. Then started looking at what the technology looks like. What are our domain boundaries, and what prototypes do we need to make? For a few weeks there, we were just prototyping. We built out what I'd called baby's first balance. That was the running joke where, how do we get an account opened with a balance, with the transactions minimally, with some new patterns. We really embraced some of this domain-driven-design thinking, as well as just event driven thinking. When we were rethinking architecture, three concepts became very important for us, not entirely new, but important. Item potency was a big one, dealing with distributed transactions was another one of those, as well as the eventual consistency. The eventual consistency portion is kind of funny because we were already doing it a lot.Our transactions wouldn't always settle very quickly. We didn't know about it, but now our whole system becomes eventually consistent typically if you now divide all of your architecture across domains, and decouple everything. We created some early prototypes, we created our own version of an event store, which is, I would just say an opinionated scheme around DynamoDB, where we keep track of revisions, payload, timestamp, all the things you'd want to be able to do event sourcing. That's another thing we decided on. Event sourcing seemed like the right approach for state, for a lot of our use cases. Banking, if you just think about a banking ledger, it is events or an accounting ledger. You're just adding up rows, add, subtract, add, subtract.We created a lot of prototypes for these things. Our events store pattern became basically just a DynamoDB with opinions around the schema, as well as a package of a shared code package with a simple dispatch function. One dispatch function that really looks at enforcing optimistic concurrency, and one that's a little bit more relaxed. Then we also had some reducer functions built into there. That was one of the packages that we created, as well as another prototype around that was how do we create the actual subscriptions to this event store? We landed on SNS to SQS fan-out, and it seems like fan-out first is the serverless way of doing a lot of things. We learned that along the way, and it makes sense. It was one of those things we read from a lot of these blogs and YouTube videos, and it really made sense in production, when all the data is streaming from one place, and then now you just add subscribers all over the place. Just new queues. Fan-out first, highly recommend. We just landed on there by following best practices.Jeremy: Great. You mentioned a bunch of different things in there, which is awesome, but so you get together in this house, you come up with all the events, you do this event storming session, which is always a great exercise. You get a pretty good visualization of how the business is going to run from an event standpoint. Then you start building out this event driven architecture, and you mentioned some packages that you built, we talked about step functions and the orchestration piece of this. Just give me a quick overview of the actual system itself. You said it's backed by DynamoDB, but then you have a bunch of packages that run in between there, and then there's a whole bunch of queues, and then you're using some custom packages. I think I already said that but you're using ... are you using EventBridge in there? What's some of the architecture behind all that?Patrick: Really, really good question. Once we created these domain boundaries, we needed to figure out how do we communicate between domains and within domains. We landed on really differentiating milestone events and domain events. I guess milestone events in other terms might be called integration events, but this idea that these are key business milestones. An account was open, an application was approved or rejected, things that every domain may need to know about. Then within our domains, or domain boundaries, we had these domain events, which might reduce to a milestone event, and we can maintain those contracts in the future and change those up. We needed to think about how do we message all these things across? How do we communicate? We landed on EventBridge for our milestone events. We have one event bus that we talked to all of our, between domain boundaries basically.EventBridge there, and then each of our services now subscribed to that EventBridge, and maintain their own events store. That's backed by DynamoDB. Each of our services have their own data store. It's usually an event stream or a projection database, but it's almost all Dynamo, which is interesting because our old platform used Postgres, and we did have relational data. It was interesting. I was really scared at first, how are we going to maintain relations and things? It became a non-issue. I don't even know why now that I think about it. Just like every service maintains its nice projection through events, and builds its own view of the world, which brings its own problems. We have DynamoDB in there, and then SNS to SQS fan-out. Then when we're talking about packages ...Jeremy: That's Office Streams?Patrick: Exactly, yeah. We're Dynamo streams to SNS, to SQS. Then we use shared code packages to make those subscriptions very easy. If you're looking at doing that SNS to SQS fan-out, or just creating SQS queues, there is a lot of cloud formation boilerplate that we were creating, and we needed to move really quick on this project. We got pretty opinionated quick, and we created our own subscription function that just generates all this cloud formation with naming conventions, which was nice. I think the opinions were good because early on we weren't opinionated enough, I would say. When you look in your AWS dashboard, the read for these aren't prefixed correctly, and there's all this garbage. You're able to have consistent naming throughout, make it really easy to subscribe to an event.We would publish packages to help with certain things. Our events store package was one of those. We also created a Lambda handlers package, which leverages, there's like a Lambda middlewares compose package out there, which is quite nice, and we basically, all the common functionality we're doing a lot of, like parsing a body from S3, or SQS or API gateway. That's just the middleware that we now publish. Validation in and out. We highly recommend the library Zod, we really embrace the TypeScript first object validation. Really, really cool package. We created all these middlewares now. Then subscription packages. We have a lot of shared code in this internal NPM repository that we install across.I think one challenge we had there was, eventually you extracted away too much from the cloud formation, and it's hard for new developers to ... It's easy for them to create events subscriptions, it's hard for them to evolve our serverless thinking because they're so far removed from it. I still think it was the right call in the end. I think this is the next step of the journey, is figuring out how do we share code effectively while not hiding away too much of serverless, especially because it's changing so fast.Jeremy: It's also interesting though that you take that approach to hide some of that complexity, and bake in some of that boilerplate that, someone's mostly didn't have to write themselves anyways. Like you said, they're copying and pasting between services, is not the best way to do it. I tried the whole shared packages thing one time, and it kind of worked. It's just like when you make a small change to that package and you have 14 services, that then you have to update to get the newest version. Sometimes that's a little frustrating. Lambda layers haven't been a huge help with some of that stuff either. But anyways, it's interesting, because again you've mentioned this a number of times about using queues.You did mention resiliency in there, but I want to touch on that point a little bit because that's one of those things too, where I would assume in a banking platform, you do not want to lose events. You don't want to lose things. and so if something breaks, or something gets throttled or whatever, having to go and retry those events, having the alerts in place to know that a queue is backed up or whatever. Then just, I'm thinking ordering issues and things like that. What kinds of issues did you face, and tell me a little bit more about what you've done for reliability?Patrick: Totally. Queues are definitely ... like SQS is a workhorse for our company right now. We use a lot of it. Dropping messages is one of the scariest things, so you're dead-on there. When we were moving to event driven, that was what scared me the most. What if we drop an event? A good example of that is if you're using EventBridge and you're subscribing Lambdas to it, I was under the impression early on that EventBridge retries forever. But I'm pretty sure it'll retry until it invokes twice. I think that's what we landed on.Jeremy: Interesting.Patrick: I think so, and don't quote me on this. That was an example of where drop message could be a problem. We put a queue in front of there, an SQS queue as the subscription there. That way, if there's any failure to deliver there, it's just going to retry all the time for a number of days. At that point we got to think about DLQs, and that's something we're still thinking about. But yeah, I think the reason we've been using queues everywhere is that now queues are in charge of all your retry abilities. Now that we've decomposed these Lambdas into one Lambda lift, into five Lambdas with queues in between, if anything fails in there, it just pops back into the queue, and it'll retry indefinitely. You can drop messages after a few days, and that's something we learned luckily in the prototyping stage, where there are a few places where we use dead letter queues. But one of the issues there as well was ordering. Ordering didn't play too well with ...Jeremy: Not with DLQs. No, it does not, no.Patrick: I think that's one lesson I'd want to share, is that only use ordering when you absolutely need it. We found ways to design some of our architecture where we didn't need ordering. There's places we were using FIFO SQS, which was something that just launched when we were building this thing. When we were thinking about messaging, we're like, "Oh, well we can't use SQS because they don't respect ordering, or it doesn't respect ordering." Then bam, the next day we see this blog article. We got really hyped on that and used FIFO everywhere, and then realized it's unnecessary in most use cases. So when we were going live, we actually changed those FIFO queues into just regular SQS queues in as many places as we can. Then so, in that use case, you could really easily attach a dead letter queue and you don't have to worry about anything, but with FIFO things get really, really gnarly.Ordering is an interesting one. Another place we got burned I think on dead-letter queues, or a tough thing to do with dead letter queues is when you're using our state machines, we needed to limit the concurrency of our state machines is another wishlist item in AWS. I wish there was just at the top of the file, a limit concurrent executions of your state machine. Maybe it exists. Maybe we just didn't learn to use it properly, but we needed to. There's a few patterns out there. I've seen the [INAUDIBLE] pattern where you can use the actual state machine flow to look back at how many concurrent executions you have, and pause. We landed on setting reserved concurrency in a number of Lambdas, and throwing errors. If we've hit the max concurrency and it'll pause that Lambda, but the problem with DLQs there was, these are all errors. They're coming back as errors.We're like, we're fine with them. This is a throttle error. That's fine. But it's hard to distinguish that from a poison message in your queue, so when do you dump those into DLQ? If it's just a throttling thing, I don't think it matters to us. That was another challenge we had. We're still figuring out dead letter queues and alerting. I think for now we just relied on CloudWatch alarms a lot for our alerting, and there's a lot you could do. Even just in the state machines, you can get pretty granular there. I know once certain things fail, and announced to your Slack channel. We use that Slack integration, it's pretty easy. You just go on a Slack channel, there's an email in there, you plop it into the console in AWS, and you have your very early alerting mechanism there.Jeremy: The thing with Elasticsearch ... not Elasticsearch, I'm sorry. I'm totally off-topic here. The thing with EventBridge and Lambda, these are one of those things that, again, they're nuances, but event bridge, as long as it can deliver to the Lambda service, then the Lambda service kicks off and queues it automatically. Then that will retry at a certain number of times. I think you can control that now. But then eventually if that retries multiple times and eventually fails, then that kicks it over to the DLQ or whatever. There's all different ways that it works like that, but that's why I always liked the idea of putting a queue in between there as well, because I felt you just had a little bit more control over exactly what happens.As long as it gets to the queue, then you know you haven't lost the message, or you hope you haven't lost a message. That's super interesting. Let's move on a little bit about the adoption issues. You mentioned a few of these things, obviously issues with concurrency and ordering, and some of that other stuff. What about some of the other challenges you had? You mentioned this idea of writing all these packages, and it pulls devs away from the CloudFormation a little bit. I do like that in that it, I think, accelerates a lot of things, but what are some of the other maybe challenges that you've been having just getting this thing up and running?Patrick: I would say IAM is an interesting one. Because we are in the banking space, we want to be very careful about what access do you give to what machines or developers, I think machines are important too. There've been cases where ... so we do have a separate developer set up with their own permissions, in development's really easy to spin up all your services within reason. But now when we're going into production, there's times where our CI doesn't have the permissions to delete a queue or create a queue, or certain things, and there's a lot of tweaking you have to do there, and you got to do a lot of thinking about your IAM policies as an organization, especially because now every developer's touching infrastructure.That becomes this shared operational overhead that serverless did introduce. We're still figuring that out. Right now we're functioning on least privilege, so it's better to just not be able to deploy than deploy something you shouldn't or read the logs that you shouldn't, and that's where we're starting. But that's something that, it will be a challenge for a little while I think. There's all kinds of interesting things out there. I think temporary IAM permissions is a really cool one. There are times we're in production and we need to view certain logs, or be able to access a certain queue, and there's tooling out there where you can, or at least so I've heard, you can give temporary permissions. You have this queue permission for 30 minutes, and it expires and it's audited, and I think there's some CloudTrail tie-in you could do there. I'm speaking about my wishlist for our next evolution here. I hope my team is listening ...Jeremy: Your team's listening to you.Patrick: ... will be inspired as well.Jeremy: What about ... because this is something too that I always found to be a challenge, especially when you start having multiple services, and you've talked about these domain events, but then milestone events. You've got different services that need to communicate across services, or across domains, and realize certain things like that. Service discovery in and of itself, and which queue are we mapping to, or which service am I talking to, and which version of the service am I talking to? Things like that. How have you been dealing with that stuff?Patrick: Not well, I would say. Very, very ad hoc. I think like right now, at least we have tight communication between the teams, so we roughly know which service we need to talk to, and we output our URLs in the cloud formation output, so at least you could reference the URLs across services, a little easier. Really, a GraphQL is one of the only service that really talks to a lot of our API gateways. At least there's less of that, knowing which endpoint to hit. Most of our services will read into EventBridge, and then within services, a lot of that's abstracted away, like the queue subscription's a little easier. Service discovery is a bit of a nightmare.Once our services grow, it'll be, I don't know. It'll be a huge challenge to understand. Even which services are using older versions of Node, for instance. I saw that AWS is now deprecating version 10 and we'll have to take a look internally, are we using version 10 anywhere, and how do we make sure that's fine, or even things like just knowing which services now have vulnerabilities in their NPM packages because we're using Node. That's another thing. I don't even know if that falls in service discovery, but it's an overhead of ...Jeremy: It's a service management too. It's a lot there. That actually made me, it brings me to this idea of observability too. You mentioned doing some CloudWatch alerts and some of that stuff, but what about using some observability tool or tracing like x-ray, and things like that? Have you been implementing any of that, and if you have, have you had any success and or problems with it?Patrick: I wish we had a better view of some of the observability tools. I think we were just building so quickly that we never really invested the time into trying them out. We did use X-Ray, so we rolled our own tooling internally to at least do what we know. X-Ray was one of those, but the problem with X-Ray is, we do subscribe all of our services, but X-Ray isn't implemented everywhere internally in AWS, so we lose our trail somewhere in that Dynamo stream to SNS, or SQS. It's not a full trace. Also, just digesting that huge graph of information is just very difficult. I don't use it often, I think it's a really cool graphic to show, “Hey, look, how many services are running, and it's going so fast."It's a really cool thing to look at, but it hasn't been very useful. I think our most useful tool for debugging and observability has been just our logging. We created a JSON logger package, so we get up JSON logs and we can actually filter off of different properties, and we ship those to Elasticsearch. Now you can have a view of all of the functions within a given domain at any point in time. You could really see the story. Because I think early on when we were opening up CloudWatch and you'd have like 10 tabs, and you're trying to understand this flow of information, it was very difficult.We also implemented our own trace ID pattern, and I think we just followed a Lumigo article where we introduced some properties, and in each of our Lambdas at a higher level, and one of our middlewares, and we were able to trace through. It's not ideal. Observability is something that we'll probably have to work on next. It's been tolerable for now, but I can't see the scaling that long.Jeremy: That's the other thing too, is even the shared package issue. It's like when you have an observability tool, they'll just install a layer or something, where you don't necessarily have to worry about updating your own tool. I always find if you are embracing serverless and you want to get rid of all that undifferentiated heavy lifting, observability tools, there's a lot of really good ones out there that are doing some great stuff, and they're specializing in it. It might be worth letting someone else handle that for you than trying to do it yourself internally.Patrick: Yeah, 100%. Do you have any that you've used that are particularly good? I know you work with serverless so-Jeremy: I played around with all of them, because I love this stuff, so it's always fun, but I mean, obviously Lumigo and Epsagon, and Thundra, and New Relic. They're all great. They all do things slightly differently, but they all follow a similar implementation pattern so that it's very easy to install them. We can talk more about some recommendations. I think it's just one of those things where in a modern application not having that insight is really hard. It can be really hard to debug stuff. If you look at some of the tools that AWS offers, I think they're there, it's just, they are maybe a little harder to implement, and not quite as refined and targeted as some of the observability tools. But still, you got to get there. Again, that's why I keep saying it's an evolution, it's a process. Maybe one time you get burned, and you're like, we really needed to have observability, then that's when it becomes more of a priority when you're moving fast like you are.Patrick: Yeah, 100%. I think there's got to be a priority earlier than later. I think I'll do some reading now that you've dropped some of these options. I have seen them floating around, but it's one of those things that when it's too late, it's too late.Jeremy: It's never too late to add observability though, so it should. Actually, a lot of them now, again, it makes it really, really easy. So I'm not trying to pitch any particular company, but take a look at some of them, because they are really great. Just one other challenge that I also find a lot of people run into, especially with serverless because there's all these artificial account limits in place. Even the number of queues you can create, and the number of concurrent Lambda functions in a particular region, and stuff like that. Have you run into any of those account limit issues?Patrick: Yeah. I could give you the easiest way to run into an account on that issue, and that is replay your entire EventBridge archive to every subscriber, and you will find a bottleneck somewhere. That's something ...Jeremy: Somewhere it'll fall over? Nice.Patrick: 100%. It's a good way to do some quick check and development to see where you might need to buffer something, but we have run into that. I think the solution there, and a lot of places was just really playing with concurrency where we needed to, and being thoughtful about where is their main concurrency in places that we absolutely needed to stay functioning. I think the challenge there is that eats into your total account concurrency, which was an interesting learning there. Definitely playing around there, and just being thoughtful about where you are replaying. A couple of things. We use replays a lot. Because we are using these milestone events between service boundaries, now when you launch a new service, you want to replay that whole history all the way through.We've done a lot of replaying, and that was one of the really cool things about EventBridge. It just was so easy. You just set up an archive, and it'll record everything coming through, and then you just press a button in the console, and it'll replay all of them. That was really awesome. But just being very mindful of where you're replaying to. If you replay to all of your subscriptions, you'll hit Lambda concurrency limits real quick. Even just like another case, early on we needed to replace ... we have our own domain events store. We want to replace some of those events, and those are coming off the Dynamo stream, so we were using dynamo to kick those to a stream, to SNS, and fan-out to all of our SQS queues. But there would only be one or two queues you actually needed to subtract to those events, so we created an internal utility just to dump those events directly into the SQS queue we needed. I think it's just about not being wasteful with your resources, because they are cheap. Sure.Jeremy: But if you use them, they start to cost money.Patrick: Yeah. They start to cost some money as well as they could lock down, they can lock you out of other functionality. If you hit your Lambda limits, now our API gateway is tapped.Jeremy: That's a good point.Patrick: You could take down your whole system if you just aren't mindful about those limits, and now you could call up AWS in a panic and be like, “Hey, can you update our limits?" Luckily we haven't had to do that yet, but it's definitely something in your back pocket if you need it, if you can make the case to AWS, that maybe you do need bigger limits than the default. I think just not being wasteful, being mindful of where you're replaying. I think another interesting thing there is dealing with partners too. It's really easy to scale in the Lambda world, but not every partner could handle that volume really quickly. If you're not buffering any event coming through EventBridge to your new service that hits a partner every time, you're going to hit their API rate limit really quickly, because they're just going to just go right through it.You might be doing thousands of API calls when you're instantiating a new service. That's one of those interesting things that we have to deal with, and particularly in our orchestrators, because they are talking to different partners, that's why we need to really make sure we could limit the concurrent executions of the state machines themselves. In a way, some of our architecture is too fast to scale.Jeremy: It's too good.Patrick: You still have to consider downstream. That, and even just, if you are using relational databases or anything else in your system, now you have to worry about connection limits and ...Jeremy: I have a whole talk I gave on that.Patrick: ... spikes in traffic.Jeremy: Yes, absolutely.Patrick: Really cool.Jeremy: I know all about it. Any final advice for companies like you that are trying to bite off a piece of the serverless apple, I guess, That's really bad. Anyways, any advice for people looking to get into this?Patrick: Yeah, totally. I would say start small. I think we were wise to just try it out. It might not land with your development team. If you don't really buy in, it's one of those things that could just end up unnecessarily messy, so start small, see if you like it in-shop, and then reevaluate, once you hit a certain point. That, and I would say shared boilerplate packages sooner than later. I know shared code is a problem, but it is nice to have an un-opinionated starter pack, that you're at least not doing anything really crazy. Even just things like having opinions around logging. In our industry, it's really important that you're not logging sensitive details.For us doing things like wrapping our HTTP clients to make sure we're not logging sensitive details, or having short Lambda packages that make sure out-of-the-box you're opinionated about not doing something terribly awful. I would say those two things. Start small and a boiler package, and maybe the third thing is just pay attention to the code smell of a growing Lambda. If you are doing three API calls in one Lambda, chances are you could probably break that up, and think about it in a more resilient way. If any one of those pieces fail, now you could have retry ability in each one of those. Those are the three things I would say. I could probably talk forever about the rest of our journey.Jeremy: I think that was great advice, and I love hearing about how companies are going through this process, what that process looks like, and I hope, I hope, I hope that companies listen to this and can skip a lot of these mistakes. I don't want to call them all mistakes, and I think it's just evolution. The stuff that you've done, we've all made them, we've all gone through that process, and the more we can solidify these practices and stuff like that, I think that more companies will benefit from hearing stories like these. Thank you very much for sharing that. Again, thank you so much for spending the time to do this and sharing all of this knowledge, and this journey that you've been on, and are continuing to be on. It would great to continue to get updates from you. If people want to contact you, I know you're not on Twitter, but what's the best way to reach out to you?Patrick: I almost wish I had a Twitter. It's the developer thing to have, so maybe in the future. Just on LinkedIn would be great. LinkedIn would be great, as well as if anybody's interested in working with our team, and just figuring out how to take serverless to the next level, just hit me up on LinkedIn or look at our careers page at northone.com, and I could give you a warm intro.Jeremy: That's great. Just your last name is spelled S-T-R-Z-E-L-E-C. How do you say that again? Say it in Polish, because I know I said it wrong in the beginning.Patrick: I guess for most people it would just be Strzelec, but if there are any Slavs in the audience, it's "Strzelec." Very intense four consonants last name.Jeremy: That is a lot of consonants. Anyways again, Patrick, thanks again. This was great.Patrick: Yeah, thank you so much, Jeremy. This has been awesome.
Taylor Morgan and the Captain's Lifestyle: Living the Captain's Lifestyle means that you are in control of every aspect of your life and are constantly striving to improve yourself. You accept nothing shy of excellence. You control what you put into your body. You control the amount of time you spend working towards your goals. You realize success doesn't happen overnight. You stick to the process day in and day out no matter how hard it gets. No matter how much you don't want to get up out of bed, you do, and you put in the work. You live for the challenge. You realize what you have control over and don't stress about the things you do not. You take control of your own mind and don't let it control you. You don't react to a situation, you respond. You don't let your emotions or impulses control the situation. You are a leader and an inspiration to those around you. You have a dominating presence when you enter a room because you know that you can handle any situation. You are confident and assertive. You don't let people push you around and you know to ask for help when you need it. You don't have all the answers and are always willing to learn. You are aware of the person you want to become and you don't stray from the path to success, no matter how difficult it seems, no matter how others may try to influence you in another direction. You are obsessed with growth. You are The Captain of Your Own Life. Social Media Sharable Quotes: - Success comes if you are willing to learn… which means stepping into an opportunity willing to fail! – Jeremy - It's not about me, nobody gives a shit about Taylor. I have to help other succeed! - Taylor - You only fail if you don't learn from your experience.- Taylor - Society has gotten soft and is now afraid of a challenge and getting uncomfortable. Most people cannot mentally stand in a cold shower… it not going to hurt you, its just uncomfortable. – Taylor - The power to choose is our superpower has humans.- Jeremy - If you are spending money(investing) in yourself, you should not think of that as an expense!- Taylor - Discipline equals Freedom! - Taylor Show Notes: 0:00- Intro and re-cap from Jeremy guesting on Taylor show recently 1:16- Listen to Taylor explain what the “Captains Lifestyle” is all about! 7:44 Taylor describes life after the service and quitting drinking for 2 years 10:06- The decision to become an entrepreneur 16:02- The Right of Passage & Getting Uncomfortable is key! 24:05 – The Power of Choice and Perspective 35:02- Taylor formula for making buying decisions (business and personal) 47:03- Jeremy's “Quick Hitters” 51:03- Wrap Up Connect with Taylor Morgan: Website: https://www.thecaptainslifestyle.com/ Facebook: https://www.facebook.com/thecaptainslifestyle Instagram: https://www.instagram.com/6captainmorgan9/ TikTok: https://www.tiktok.com/@captain_taylor_morgan?lang=en YouTube: https://www.youtube.com/channel/UCWaLLCQfG2JGWUh2L8kWKaQ/featured Connect with Jeremy and Optimal Self: Links: (We LOVE to be tagged in your posts, please share our content and tag us!) - Main Page: www.OptimalSelf.Today - Links to our Podcast, all social media, PLUS join our Private Facebook Group, Free "Identity Creator" Course, and more! - YouTube: https://www.youtube.com/channel/UCAkydziqrlYZIFmOgD1kTPA - Facebook: https://www.facebook.com/OptimalSelf1 - Instagram: https://www.instagram.com/optimal_self/ - TikTok: https://www.tiktok.com/@optimalself
Change For The Better Is Possible, Small Steps Add Up To Big Losses with The Fit Mess Guys In this world of instant gratification, we want to take action today and see the results tomorrow. It usually takes us a while to get to the point we feel we need to make a change. We have to realize it takes time to see results. Change is possible, and taking small measured action is generally better for sustainable change. Get started today, it's never too late. About Jeremy and Zach Zach Tucker and Jeremy Grater are the founders and hosts of The Fit Mess. For nearly a decade, they have pushed themselves to learn more about their own physical, emotional, and mental health. This has created a passion for using their acquired knowledge to help others. As hosts of the show for over 2 years, they have had the opportunity to speak to a wide range of guests, including some of the biggest names in health and wellness. Zach Tucker, along with his wife and young daughter resides in Albany, NY. Zach has a passion for helping people define and meet their wellness goals. He thinks that every person is different and there is no one size fits all solution for someone's wellness. He is on a mission to share his story and some of the tools that helped him on his own wellness journey. Zach is certified to teach yoga and Insanity® Live.Jeremy Grater is a married father of two young girls and also lives in Seattle. He's spent the majority of the last decade experimenting with a variety of wellness tools to improve his mental health, lose 70 pounds and share what's helped along the way. He's also been in the broadcasting and podcasting business for about two decades. www.thefitmess.com www.feedingfatty.com Full Transcript Below Change For The Better Is Possible, Small Steps Add Up To Big Losses with The Fit Mess Guys 00:00:15 Roy Hello, and welcome to another episode of feeding fatty. I'm your host, Roy Terry. So we're the podcasts. That's chronicling my journey, Terry, my helper through this journey of wellness, losing some weight, getting in better shape. And, from time to time, we have, professionals in their field that come on and today is no different than Terry. I'll let you make our introduction of Jeremy and Zach. All right, 00:00:38 Terry Zach Tucker and Jeremy Grater are the founders and host of The Fit Mess for nearly a decade. They've pushed themselves to learn more about their own physical and emotional and mental health. This has created a passion for using their acquired knowledge to help others as hosts of the show. For over two years, they've had the opportunity to speak to a wide range of guests, including some of the biggest names in health and wellness, Zach and Jeremy. Welcome to the show. 00:01:12 Roy Yeah. Thanks guys. Thanks for taking time out of y'all's day to be with us. We just, I guess we'll throw it out there and see kind of what's new, as were talking in pre-show, some different new weight equipment and things out there, and Jeremy said he has started running, so we'll just kinda first off. It'd be nice just to find out, kind of how you guys found yourself here. 00:01:36 Zach Yeah. I'll start off because I think, my story goes all the way back to being a baby, of just being set up on a, poor, starting line in life. I had some heart defects. I had an absent mother, just, lots of issues, lots of trauma as a child, which led tons and tons of overeating. And, at one point in my life, I was, close to 300 pounds and eating terrible, not exercising. I was, not in great shape. Over the last 20 years, I've made small little changes to turn the health around, to make myself look better, feel better. I had to focus on the mental health and it was a long journey. Jeremy was also following behind on that as well. At some point I was giving him some advice and, we sat down one day and we're like talking about being vulnerable about, the journey that we're on and talking about the struggle and how hard it is. 00:02:42 Zach And, we came to the conclusion that, we need to get this out there and we need to share these conversations with other people, especially men who are sometimes afraid to share their feelings. Yeah. 00:02:56 Roy Wow. That's yeah. That's a, basically a carbon copy of where were, I've struggled. I've had, I can definitely go back and see, I'm kind of the opposite as a kid, I was very skinny, like to the point, people were like, oh my gosh, you got to eat to live. As an adult, definitely four or five stages where, put on 20 pounds, 25 pounds at this stage for this life change. Then, now I find myself here and it's just, it's hard because, we do good sporadically. We can do good for a couple months. It's like, we have an event change and, then things change. I typically go back to my old ways. So, we talk a lot about that. Surgery may be an option for people, but for me, I always thought if I don't change the way I think then I'll never, I'll just go back to my old ways. 00:03:50 Roy Anyway, but thanks for relating that story. I mean, it is, I think it is good to be vulnerable and that's why, Terry encouraged me. She's like, Hey, you need to get this out there because people are struggling. So anyway, Jeremy, what's your story? 00:04:05 Jeremy Similar, not quite the same trauma as a child, mind was much more garden variety, alcohol in the family and kind of absent father stuff. Yeah. Both parents working. A lot of, latchkey kid or the eighties thing. And it is funny. I remember I was around third grade when I really developed some really bad eating habits and it was like, my best friend would come over and we would just hang out and watch TV and raid the pantry during every commercial break. Right. That set me on a course of doing that for far too long. Yo-yo dieted most of my life and, got into, my career and about midway through my career. I really started recognizing a lot of imposter syndrome and really feeling like man, one of these days, they're going to figure out they made a huge mistake hiring me, and they're gonna, they're going to show me the door, know, and that lasted for about 10 years. 00:04:53 Jeremy I finally started getting into some therapy and that turned my life around. My therapist introduced me to meditation. That really helped, calm all of that noise and quiet. A lot of those voices that told me it wasn't good enough. I still don't get me wrong. I, I battle every single day I've fought depression my entire life. Meditation was the thing that set me on the course to doing other things. Along the way I had a bike crash got injured pretty badly. And, but I was finding that through biking. I was, I was also meditating. It was just this very in the moment experience where the whole point is to not die on the way to work. You have to be so in the moment and so focused on what's happening right now that I started trying to push that into other areas of my life. 00:05:41 Jeremy Like Zach said, along the way he and I met through, just through parent groups, we are our friends, our kids are we're friends, and we started hanging out and were just having these really authentic conversations. That's something I've always looked for in a relationship with any of my is who can I have real conversations with and who am I talking about the Mariners with? Who do I want to spend my time with? Especially because the Mariners suck. So, but like Zach said, we, the more we have these conversations, just, camping and whatever, were just like, we don't hear enough guys talking like this. So, like I said, we just felt like this is a show that needs to exist. 00:06:19 Roy Yeah. For the rest of the baseball world out there, you may want to tell them who the Mariners are. 00:06:31 Speaker 4 The Rangers, I mean, come on. Yeah. Right. Oh yeah. 00:06:37 Roy Yeah. That's why we holler for the red Sox or the Yankees, for winter. So, let's talk about that because, your ride at, the good thing about me I'm to an age that it's like, I am who I am. I mean, just because I don't admit that I'm overweight to myself, it doesn't mean that other people that look at me can't I can't figure that out. So, I mean, at some point you just have to say, Hey, I got to own this, but it's the funny thing for me is I don't think about myself as being overweight or, I picture, and I don't picture myself as old either. I'm thinking like that 25 year old in better shape self that's, just who I am until, you walk by a mirror or try to put some clothes on after being in quarantine for a year. And it's like, oh my goodness. 00:07:28 Roy Things are different, but so, let's talk about the difference in Mindshift body, habit shifts, things like that. Was there a point that for y'all either one that the, it was the, your mind engaged and then that's where your habits followed or did you kind of get on that path to habits and then the mind followed after that or some form of that? 00:07:56 Zach My first, my first, real big change was, so I used to smoke cigarettes as well. Okay. And, ate a McDonald's every day. I mean, it was, there was some pretty bad habits there, and it was, my mind shifted because of a comment that my boss made. And, I interviewed for the job and I decided to wear a nicotine patch that day. So I didn't smell like cigarette smoke. I got the job and I got hired in my first day, my boss looked at me and said, oh, you smoke. If I had known that I would have never hired you. Oh, wow. Right. Like that hit me really hard. I was like, wow, this habit, this unhealthy thing is now going to be a, a detriment to my professional career. Yeah. That was the first step of like, well, these are gone and my mind started shifting of what else am I doing? That's bad for me that will, not look in my professional career and right. 00:08:57 Zach That's when I started running and doing the little things, but that was the main shift for me, was this external judgment from somebody who said something like that. It just completely 180 degree my thought process of what I was doing to myself. Yeah. 00:09:14 Terry Yeah. Somebody else may have, you want, you always want to be in control. You want to think like, you're, you feel like you're in control, but it's for you to be able to know, to recognize that and actually act on it. That's those are the keys right there, just going ahead and act in on something that was a judgment call to you. That's that's good. 00:09:40 Zach Yeah. Acting on it was, I, I say, I quit smoking, right. That was probably one of the hardest things I ever did in my entire life. Like that is no joke, not easy. So, it's easy to say now. Right. But, at the time it was incredibly difficult, very painful and a big struggle, but it was worth it to make that change. That's awesome. 00:10:07 Jeremy I think I've had probably three really significant, moments that really changed everything for me. And, one was when I, I had the dumbest knee injury you've ever heard of in your life. We, I don't know if you guys have this out there, but Amazon, they deliver groceries. Yeah. We are, our daughter was very young. She was like, still in the crib. One morning the Amazon guy shows up at like six in the morning and he's dropping the groceries off and the dog loses his mind, starts barking. If you've ever had kids, that anyone who wakes up your kid deserves to be. 00:10:41 Speaker 4 Punished. Yes. I just, 00:10:43 Jeremy I rolled out of bed to like quickly try and quiet my dog. Somehow like rolled my knee and just collapsed on the ground. Couldn't couldn't walk, totally hurt my knee, literally getting out of bed. And it was the stupidest injury. And, so I started going to physical therapy for it. The physical therapist learned about my background and all that. She said, if you don't get on a bike, you're going to end up replacing both of your knees. Now. I was like, wow. Okay. I can do that. I bought a bike on Craigslist and started biking to work. And, and it was funny. I was having a conversation with my brother about it. I was like, yeah, I don't know if I'm gonna be able to, it's a 10 mile ride. I don't know if we'll be able to do this every day. He's like, dude, you just need to decide. 00:11:20 Jeremy You're that weird guy, that bikes to work every day, just make that mental shift and you'll do it. And he was absolutely right. Literally the next day I started biking to, and from work every day. So that was the first one. Another one was like I mentioned, yo-yo dieted my entire life. The conversations I was having with Zach, were camping one weekend sitting around the campfire and he was talking about how he had just lost, like, I don't know, 40 pounds or something in a few months doing the keto diet and like most conversations I often have with Zach, I started with, you're crazy. How do you do that? That's insane. Okay. I gotta try it. I tried it and I lost 70 pounds using the keto diet and just like some light exercise and of fasting and came off in a few months. So that was the other one. 00:12:07 Jeremy The other was, I've battled depression, my entire life on and off of various meds, to just to try and curb it. None of them really worked for me. And, it was shortly after my bike crash. I was on some opioids for awhile. I was like, man, these are really good. I stopped them after like a week. Cause like, that's, this is a dangerous road to go down. Once I stopped taking those, I also stopped taking my antidepressants and then it was new years. I had just a few beers, like nothing crazy woke up the next day with a hangover and just was like, I am just done. Like, those few beers were not worth feeling like this. Yeah. Literally quit drinking. That was like three or four years ago now. Those three things have been it, there's just, this really locked in mental shift where I just went, I'm done living that way. 00:12:57 Jeremy Yeah. I'm going to live this way now. Those three things I've never really looked back on it. 00:13:03 Roy Yeah. I'll just go, I can relate to the Amazon incident because I had almost a similar one. Usually they come in the afternoon or whatever. We've got a little, we live out in kind of in the wilderness. So, the front camera went off and usually it's like a varmint Armadillo or raccoon or something walking across. I just rolled over, pulled up my phone and looked at it and there was this car sitting up on the road that just won't leave. So, I did the same thing. I catapulted out of bed over both dogs and, threw the shoes and, slipped on the floor and getting out there. And it's just the Amazon grocery. I'm like doodles. She was at cigar in our space. Yeah. He delivers groceries at six 15 in the morning. Good. 00:13:47 Speaker 4 Tell him, I forgot to tell him, 00:13:51 Roy Talk about, Zach mentioned the opinions of others. It's funny because I being a heavy person, when I look at heavy people, I still have, negative thoughts. Let me just put it that way. I don't ever think about people thinking that of me. You really stop and think about, oh my gosh, all these, negative opinions that people form of me just because they see me without even meeting me or knowing anything. Now I try not to make the cover of the Walmart people page on Facebook with my pants riding down and my shirt riding up. I do try to stay, totally covered up, but still, I mean, it's just like people view you as inferior or damaged or something, but I don't know. I think about that, hasn't been enough to change me and it's like, I still continue on doing these things. So I don't know. 00:14:51 Roy It's I gotta give you credit for being able to, make that change based on that, because I, I wished I could, it's just been a struggle, finding that thing that works, that continues. We talked a little pre-show about, I'm good for about two, three months of something. If we have a little change in the way life goes, that, were doing good back in the fall and then Terry was gone for about three weeks. And, yeah. I mean, then McDonald's and taco bell became my best friend again, driving up there to try to get something to eat. Instead of cooking in, anyway, that's just kind of my downfall. It just be nice to be able to string together six months or a year, and stay on that path. Any advice either, but any, either one of y'all want to throw out about that would be very helpful. 00:15:41 Zach Yeah. A couple things. So, so the mindset of like what you look like. I do have like a quick, I I've, being 300 pounds, I have always felt as though I was a big guy. And internally it was never quite enough. Like I would push myself so hard to like work out, to eat, right. To the point where I made a comment to my wife one day that, man, I'm still, really fat. She was like, dude, you realize that I can see your abs. Right. She made me take a picture and like, they weren't showing much, but you could see a couple of ad muscles. That was a moment where like in our heads, we, for me anyway, even though I wasn't really that big anymore, I still felt really big. I was working really hard on it. Like that internal mindset of like what you think of yourself is really important to make sure that you're telling yourself the truth there. 00:16:43 Zach Yeah. To the other question of like, how do you stick to it? You can't like, that's what I had to accept. I would go really hard for three months and then I would cave. Yeah. I would beat myself up because I caved and cave more because I beat myself up and it would be this never ending spiral. Yeah. Three months later, two months of those games were gone. I've really just come back to like the 80, 20 principle. Right. If you're doing the right thing, 80% of the time, it's okay to go wild 20% of the time. Yeah. Right. Be okay with that and be forgiving of yourself for it. 00:17:24 Roy The thing is that forgiveness, because you're exactly right. When you fall off the, whatever you're doing, the Eaton exercise. I, I realized to lose weight exercise, doesn't need to be, we can lose weight with our diets 70, 80% or whatever, but I just feel like I've got to have that exercise. It makes me feel so much better. Anyway, it doesn't matter if we're talking about diet exercise or whatever. It's like, once you fall off, then it's like, so hard on ourself and then the non forgiveness. It's like, well, I've already, had three tacos that, what's it going to hurt? I'll have another, I'm going to go ahead and eat bad today. And then tomorrow I'm going to change. Tomorrow goodness knows something else pops up to where, it just, you just kicked that can down the road further and further. 00:18:12 Zach Yeah. I also try and schedule things too. So, ing that I'm going to be 80, 20. Saturday is kind of my, and I know some people don't like cheat days, but this is for me works well. Yeah. On Saturdays. I do whatever I want. If I don't want to work out, I don't work out if I want to eat pizza and ice cream, I do that. Having that schedule for me is actually really helpful knowing that I'm going to have a 20% of going crazy. Yeah. On Wednesday when I have that craving, I, I just go, okay, let's write that down. You're going to have that on Saturday. 00:18:44 Roy That's a, that's a good tip. I like that. 00:18:48 Terry Yeah. Just having something to look forward to that helps. 00:18:52 Zach The, the problem with that is once you do have the cheat day though. For me on Saturday, I eat all, I have sugar and junk food in your body. On Sunday you have that craving and it's really hard to go back into it. It doesn't work for everyone, but it definitely works for me. I wouldn't w it's something you can try. 00:19:13 Roy Yeah. Yeah. I've, I'm that way about, I guess I feel sometimes like I have to be totally strict and can't let anything creep back in because just that one, that little door opening for me, it's like back in the day when they came out with the little skinny blue, the skinny bell ice cream sandwiches, I mean, those are great. They're probably work well if you eat one, but if you eat a whole box of was like, well, that was so good. Let me just have six of them, and I, I'm an ice cream fanatic too. That's, that's even harder to give up something that is, and we talked about this with the, more of a psychologist type person the other day that, I, I grew up with ice cream, it was a reward. Now I'm thinking about that instead of thinking about, Hey, let's go celebrate and have some ice cream. 00:20:07 Roy It's like, what I get on my, TX band and do, 25 pull-ups or something, trying to shift that mindset from it's a reward because I think it goes back to the validation of us is that's what growing up, that was always the reward or the treat is, Hey, let's stop by dairy queen and let's go up to the soda fountain and, get a banana split. Trying to change that from, we can still celebrate, but now, it needs to be a physical activity, either walking or pulling up doing something to better ourselves, better myself. 00:20:43 Terry Jeremy, you were talking about, I think it was you, did you say something about meditating? 00:20:48 Jeremy Yeah. I was just going to say kind of two things on what you're talking about there. One I know for me, I look at my weight issues as being a symptom of my emotional and mental health issues. I can tell by looking in the mirror, how much I still have to do inside. That's where for me, the more I meditate, the more that I do that inner work, the more strength I find to do the outer work, to do the running and the other things. That's something to consider, but also, I just want to commend you on the fact that you're on this journey. This is an incredibly difficult journey at any stage of your life. Well, thanks. But, but especially in a system where the food that is affordable and accessible is garbage, right. Much of what you have available to eat goes against your body's biology and the way that it wants to live. 00:21:44 Jeremy You're fighting a losing game almost every bite fall. Yeah. To the amount of knowledge I think you need from a nutrition standpoint is almost impossible. I think for most people who have busy lives and things to do, because it's just not something that we're taught in a way that makes sense as we're growing up. Yeah. Every ad is, oh, you deserve a treat today. Well, yeah, maybe, but maybe I don't, maybe I'm just lazy. Maybe I just want to eat garbage because it tastes good. That makes me want to eat more garbage. So, so that, so two things there, but one, I think that is really important. I do think that for a lot of people, food is an escape from whatever the issue is that we're struggling with whatever trauma we haven't dealt with from our childhood, whatever. I do think that the, at least in my experience, and I'm no doctor here. 00:22:38 Jeremy The more work you can do, dealing with what's going on inside will allow you the freedom and the desire to do the work on the outside. And, and for me, exercise is almost never about building muscle or getting stronger, or it's all in my head. The more I run, the more I bike, the harder, the yoga, whatever I'm doing to push my body is all about releasing those demons. I like the phrase I like to say is a tired muscles, quiet, dark voices, because the more you quiet those dark voices, the more you're going to be able to live a healthier life and make better choices. 00:23:13 Roy Yeah. No, and I think you're right. And that's something, yeah. I don't think I've told, we haven't really put this out there, but what, cause I think back about that, what am I not dealing with because it's just been so difficult. I just I've become to feel that if I wasn't dealing with some, or wasn't not dealing with something, if there was an unresolved issue, it would be a lot easier. I'm actually going to do, I'll let Terry say the name of it. Reiki, Reiki. 00:23:41 Terry I did my first Reiki session yesterday. 00:23:43 Roy I'm actually going to go try that. And, supposedly it can, it's supposed to be a big release with some things like that. So, I'm open to try and I just I'm to the point in life that I want to make changes and it's, things that I've done in the past just haven't really worked or they've worked. Then, like Zach said, you put it all back on eventually. And, I'm just ready to make a change, for a lot of reasons, but just to get all this behind me. So. 00:24:13 Jeremy Something, something to consider too, like you seem to be aware of the pattern, right? Like it two or three months of this is going to fail me. Yeah. Just when you go with, go into whatever you're going into go, I'm going to do this for 30. I'm going to do this for a week next week. I'm going to do that. Like, just give yourself smaller goals because none of us is going to stick to anything for a year, for 10 years for it's never going to happen too much is going to get in the way. Right. Today I'm going to decide every day, this week I'm going to go walk for 20 minutes next week, it'll be 30 minutes, whatever it is, but just give yourself those smaller goals. And, and the more you pick up those little wins, the confidence grows and you'll be able to score those bigger wins. 00:24:53 Jeremy That's. 00:24:53 Roy Great. Yeah, that's a good point. Cause I, I am too much in that, looking at a year lifetime or whatever it is instead of just, and I guess this gets back to the meditation and being in the moment is just take it one meal at a time, one day at a time, one step at a time. It's, I guess it's the other part I, I have to say is it's daunting because it's like, the impatience is all I can say is like, it, and I think why haven't I been impatient, putting on all this weight now, all of a sudden I'm here now, all of a sudden I'm impatient. I want it all gone. It took years to get here. It may take years to get away from here, but it's like, nah, if I do something, if I go out and walk around the block, I expect to come home and I've lost 15 pounds or something ridiculous like that. 00:25:46 Roy It's like, it's just take it that whatever I did today, exercise wise and eating wise, that's better than what I was yesterday. I, trying to break it down into those smaller wins is definitely something I can work on for sure. Sure. 00:26:00 Terry Yep. Have you guys done a plant-based diet where we're delving into that now? Do much about the plant-based? 00:26:12 Zach I can I'll let Jeremy talk about that because I am a carnivore and I love hamburgers and steaks and chicken. Yeah. I've, I think I've tried it once or twice for maybe a couple of days. And, while I'm sure there are some health benefits and I'm sure there's some good stuff about it. I just really enjoy hamburgers. Jeremy's the vegetarian though, so we can talk. Okay. 00:26:39 Jeremy Yeah. I've been a vegetarian for probably 25. Oh, w w with occasional cheats here and there. Yeah. Any diet, if you don't do it right. You're, it's just a mess. When I talked to him nutrition at one point and a nutritionist at one point, and they said, I kind of told them what I, and oh, you're not a vegetarian, you're a cheese and bread. Attarian, you know, that's not good. You don't want to combine your fats and your carbs at every meal because that's how you put on a bunch of weight. So, definitely I think any diet, if you do it well, is going to beneficial. There are loads and loads of studies that will tell you a plant-based diet is ideal, is what you should be doing. I, I read a book, man, I'm forgetting the author's name now, but he broke down diet in a really simple way. 00:27:29 Jeremy It was just like, eat food, not too much. Oh, what's the third thing, eat food, not too much. Mostly plants. Yeah. His whole point was like, so much of what we eat is not food. Much of what is in the store is not food. If it didn't grow out of ground or it doesn't walk on the ground, it's not food. Right. You know, I, I eat impossible burgers. I eat, I eat tons of like processed fake meats to get my protein because I'm lazy. Because I have childhood associations with, a meat and potatoes diet. It's a lot of just a conditioning that I need to break. Yeah. But if you can eat, yeah. I mean the more locally sourced and plant-based, and not too much is a pretty simple rule to live by. And, and, I definitely think it's worth experimenting with, if you haven't before. 00:28:17 Jeremy Yeah. Why not? 00:28:18 Roy I haven't in a, we're in a touch second week and I feel like we're doing good and we're not the we'll never eat meat again. Were talking the other day that, if we get hungry for Terry was craving a hamburger yesterday and out so bad and she had to go somewhere and I'll say, well, just get it on, stop by and get one on your way. It's not a big deal. We, I think because the other part of this is, I think the more you tell yourself, oh, you can't have that. The more, psychologically, we want that. It's like, if we want to eat a piece of meat or a piece of fish, just we can do it, but I just, we're trying, I want to eliminate that because I've gotten to feel how, when I eat beef, especially it just, it seems to weigh me down and bother me the next day. 00:29:01 Roy Like being, not being able to get up. I'm telling you that, I felt my inflammation go down the last couple of weeks. Also just being, much, easier flinging up out of bed with a lot of energy and feeling good, but that's, and it's have to be fair to say, that's not meat or beef or proteins fault. That was, that was my fault for eating at the wrong time of day. That's another thing that we kind of have to talk about that goes with this. We, we're doing the intermittent fasting, so we try to eat our last meal by seven and then we're not eating again until lunch. So, I feel like that has been the most beneficial for me because I'm a late night eater. I mean, at nine, 10 o'clock at night, man, I am ready. Before, before Terri, man, I would physically get in the car at nine o'clock at night and go up to the convenience store and raid the shell, and get the little nacho bowl and a candy bar and come home and eat it. 00:30:03 Roy It's something about going to bed, feeling that full, satisfied feeling. Trying to get rid of that as well as the other thing, I kind of laugh about is that if I get just a little twinge of hunger and empty stomach, I'm like, oh my God, that must be death knocking at my door. It's like trying to realize that feeling can be there for a couple of hours and I'm probably not going to pass out or have any negative reactions. So, that's something that's like, oh my God, I felt my stomach. I need to run to the cabinet and load up on something, ? 00:30:36 Zach Yeah. I I've so I intermittent fast most days. It's actually 1:30 PM here right now and I still haven't eaten anything. I probably won't until dinner at this point, just because, if I eat now, my dinner will be ruined. Like my dad would always tell me. But interim and fasting is great. It really teaches you the difference between I am actually hungry for food and my body is craving food and I need the energy from food and the, I have something emotional or mental going on that I want to go crack the cupboard open for it. I did a three-day fast one day, or over three days, I did three days. That was such an eyeopening moment because you go three days without actually eating anything. All of these little, I had all these moments of like, I need to go eat Y oh, you're about to do a task that is hard or something that you want to avoid or remind you of something. 00:31:44 Zach I had all these connections in those three days of why I wanted to go eat. None of it had anything to do with being hungry. Yeah. It was, it was a really great realization. 00:31:54 Roy That's awesome. I had, I I'm going to brag. I don't usually do that. I want to brag about last night. I was sitting here putting together one of our episodes and, I don't even know why I just got up, went to the cabinet, opened it. This is like, what? Nine 30 got up, went to cabinet, opened it up and it was chickpeas. So, I mean, I have to say it wasn't like Doritos, but, and I had the chickpeas out. I had them open. I had my hand in it and I thought, why am I eating these it's nine o'clock I'm not supposed to be, I don't want to be doing this because it'll make me and I actually put them up without eating them. For me, that's a huge victory because what I have found too, is that it's that mindless eating, like in the past, I would have gone over there, ate a handful of, and then, 10 minutes, 15 minutes later realized, wow, I wish I hadn't had done that. 00:32:43 Roy Or, you know why I wasn't hungry. It was just a habit. So, yeah, I'm kind of fighting that too is just breaking these mindless habits of always feeling like you have to have something in your hand, eating. 00:32:56 Zach Good for you though. You were at the point of no return. That's, that's hard to turn back from that point. 00:33:01 Roy I, it was so bad. I actually had to wash my hands to get all the salt off of my hands. I have my eye on that board. 00:33:11 Jeremy We had a really interesting conversation. A few episodes ago. We had a guest, Dr. Judson brewer, and he's really big on curiosity when it comes to breaking habits and whether it's addiction, food, whatever. And we talked about that specific thing. Because I'm the same way I have to fast, otherwise I will nine, 10 o'clock whereas the popcorn where something quick that I can just emotionally escape into. Yep. And he raised the point. He's like, just get really curious every time that those urges come up, rather than giving into them, rather than fighting them, rather than like having this volatile relationship with that experience. Just get really curious with why do I need eat right now? What does is my body sending me a signal that says, Hey, you're really hungry. You're about to snap somebodies head off, or are you bored? Are you sad? Are you lonely? What's driving this? And it is amazing how just asking yourself, why am I doing this? Yeah. 00:34:05 Jeremy Will completely shift your relationship with that moment. To put you on a course, to your bigger, better offer, right? Your bigger, better goal. If I want to feel better, I don't want to wake up with this Dorito hangover. I want to wake up clear of brain fog and I'm ready to take on the day and know that I don't need to eat until lunch because I'm not going to starve. I'm in one of the wealthiest countries in the world, I'll find foods. 00:34:28 Roy And the paramedics are at nine one. They're just a moment. Give me an Abbey and get me back up on the ground. 00:34:34 Jeremy I don't think they delivered Doritos. I mean, 00:34:38 Speaker 4 By the way, I go by QT and grab us some bags and stuff. 00:34:43 Roy Yeah. That's a, I guess a good question for you guys since y'all have y'all are pretty far down the journey, but one of the, I was just thinking about the name of our podcast is feeding fatty. It was kind of a irreverent comment when were kicking it around, cause I just said, we're trying to find a name and all the healthy ones are taken or sound too corny. Were like, eh, and I just said, yeah, we could just say something like, feed no fatty. And Terry said, yeah, that's it. The other thing I think about is that, I think I will always be, even if I lost weight and got to where I want to be, I feel like I will always be that heavy person inside that I always have to be on guard. It's like, and I'm going to ask, I asked this question of both of y'all, but it's like being a reformed smoker, being a reformed drinker, because I, I'm not, I never smoked like packs and packs a day, but on the may have one and there are times that cigarettes, you smell very good. 00:35:41 Roy I mean, they smell good enough. You could eat one. It's like, I'm not even a, really a smoker, but that temptation is always there. I assume that temptation is always going to be here with food. That it's something you got to fight forever or not fight, but deal with put it that way. 00:35:57 Zach Yeah, it is. I mean, it's always there's a lake Jeremy side, right? There's a whole industry on making sure that, this kind of food is there and there's marketing and it's made to make you want more. The way I've tried to live is, for every, all of every single attempt that I've made at eating healthier, of it has stuck. The next time, a little more stuck and the next time, a little more stuck. Now if I look back like, I had to take my mom somewhere one day and she wanted to go to McDonald's and I had been eating healthy for three months and I ate McDonald's and I felt so bad after eating. McDonald's like brain fog. My body hurt my stomach was in doing somersaults. Even the next day for a couple of days, I didn't feel good. I thought about it and I was like, okay, I have now conditioned myself to feel good when I eat good food, because 20 years ago I would eat McDonald's for lunch and dinner and then I'd go back for a snack. 00:37:09 Zach And that was just normal for me. Every time I've tried to eat healthy, right. You're just going to reinforce it more and you're gonna fail and you're always going to go backwards. For me, that's always been the case like now where I'm at now, while I still don't feel like I eat as well as I want to eat, I look back at the journey and how much it's different. Yeah. How much change there is, how much the, those little steps have now added up to this one big thing where I'm doing pretty well. I could still grow, but I'm doing pretty well. Yeah. 00:37:46 Terry It's good that you realize that now because you guys, I mean, you guys have young kids too, right? I mean that you have to factor all a nine-year-old, you have to factor all of that in and what your world can handle and, how much time you have and trying to do, that's what we just get caught up in the rat race, going through the drive-through having everything right there at our Beck and call. That's gotta be an issue too. I mean, that part of it. 00:38:19 Zach Yeah. Well, and also, I mean, having my daughter watch what I'm doing, right. It's for me, it's, I watched my dad, I watched my mom and it was poor choices. Those poor choices lived on in me. It's my responsibility kind of break that chain and have my daughter watch me make good choices most of the time yeah. With the occasional reward. Right. And, and break that chain. She doesn't grow up in the same way, having those, poor relationship with food that I always have. Yeah. 00:38:51 Terry Right. Yeah. I always, I have, my daughters are almost 23 and 29 now. I used to tell them all the time, I thought you were only three. I'm sorry, did I say 29? And. 00:39:07 Speaker 4 Let the cat out of the bag there. But. 00:39:11 Terry I used to tell him all the time and I still do just joking with him, add that to your list for therapy, for your future therapist. That's just something that you're going to have to, but the more that you, like you were saying, your daughter's nine and she needs to emulate you and your decision, your choices. She doesn't have to deal with this later on in life. Yeah. 00:39:35 Zach Trust me that there's plenty of other things that I'm doing that is going to need therapy later. She has, she'll. 00:39:41 Terry Have a running list. It'll go forever. 00:39:44 Zach She has a little notebook that says notes to my future therapist. 00:39:48 Terry Get rid of that. I mean, gold frame it, 00:39:51 Roy Well, the other thing is that we're, I'm getting to a point of, we start thinking about outliving our wellness and that's a new little catch phrase that we like to use is because, you see so many people that they age and, either they're, they've got a good mind and their body's broken down or their body's broken down and they still have a good mind. A lot of times they have to have intensive care from somebody else, a family member typically. So, at some point I've started really thinking that one through that, I wish I'd have started earlier, but it's never too late to start, but the sooner we can think about what are we going to look like when we're 80, because, nowadays they talk about, diabetes or they talk about dementia being the, type three diabetes. And, just some of the things that we've done with the quality of food that we've eaten and, it really can lead to our detriment. 00:40:51 Roy Sometimes that doesn't manifest it until later in life. 00:40:56 Terry Yeah. The closer we get to that's something I, 00:40:59 Speaker 5 Go ahead. Sorry. 00:41:01 Jeremy Yeah. I was just gonna say that's something that I think about a lot too. I've had a number of friends and family members that have had cancer. I always think it's so interesting how we need that. You're going to die really soon unless you start eating this way. I, I constantly say to myself, get online and Google what your doctor would prescribe. If you were diagnosed with cancer and start eating that right now, it seems really simple. There there's an outline, there's a nutrition plan to fight off cancer, but we don't start eating it until we have it. Exactly. Yeah, I think about that a lot. I also think that is one of those things similar to, I'm going to do this for a year. I'm going to do this for five years. Yeah. If I worry about how I'm going to feel in 30 years, I'm going to lose sight of what do I need to do today. 00:41:48 Jeremy Right. To me, it's just, it's those baby steps. It's whatever I can do today to better than I was yesterday is ultimately what's going to happen when I'm 65, 70, whatever I look back and go, oh, those are the, I made good choices. I did the best I could with. 00:42:02 Terry I know. That's what we just got a, book is called how not to die. It's, it's amazing, but it talks about all those different diseases, the type two diabetes cancers, I just, all of that and inflammation. That's why we decided to kind of go with the plant-based diet because, we have different medications that we're on, for different things. And, just trying to get off of those, you can get off of those medications through eating properly, what you eat. Yeah. It's, that's what kinda turned us in toward that direction. Not only that, but, because it's better for us, not to pack on the pounds and all of that. I know we're. 00:42:49 Roy Way long on time guys, but just one more topic I want to bring up is the emotional, cause we're talking about this and, one, another big thing I'm struggling with and trying to break is that, not necessarily like the bad stuff, but more the good stuff, the celebrations, everything is emotional. Like let's go eat or get the ice cream for this to celebrate, but also, factoring in or thinking about it as fun because going out with friends and family and you go somewhere and you eat and chat and the reality is we can go eat healthy, but we can go chat with people and not have to eat bad or eat food that is not as good for us as we would like. So, not tell the story that it's very fresh in my mind that Terry was out running around one day and she called and said, I'm on my way home. 00:43:46 Roy Have you eaten yet? And I said, no. I started welling up inside, like, she's going to say, great. I am going by Chick-fil-A to pick up some stuff. She's like, okay, well there's some salmon and some asparagus in their fridge. I just felt like I just was deflated. It was like, all the air just blew out of me. That again, it's a realization that, oh my gosh, you have this, such an attachment to food that it, what does it matter? Does it really matter if I ate the chick? whatever I eat it's as long as it's healthy and it gives me fuel to live for another day. That's really all this is about, but these, all these attachments that we have, it's just crazy. 00:44:31 Jeremy I know in my case, all of that links back to sugar, the more processed and sugary foods I have, the way easier it is to cave into those cravings, to cave, to those emotions and eat that way. I, I mentioned that I, I started doing the keto diet after a conversation with Zach, and it wasn't even that strict about it. I just went, what, I'm just a hundred carbs a day. That's it, that's my limit. I'm going to experiment with that. And we'll play with that. See where that leads me. I got more and more strict about it. I started working out every day and doing these things. It was so funny because I distinctly remember this day at work when, one of my colleagues was eating wheat thins. She's just sitting at her desk snacking. I mean, she was like a cheerleader for the Houston rockets. 00:45:13 Jeremy I mean, she's in fantastic shape and she's, she can eat whatever she wants. She offered me some and I looked at it and it was as though she was offering me a hockey puck was just like, I was like, that's not even food. Like how, what you're asking by offering me this. I can't even process that as a question because you're not offering me food. My relationship just completely changed with those kinds of foods because I had just so completely cut them out of my diet and was feeling so good. They're just like, it just doesn't I two and three makes 47. That does not compute. I can't do that. Yeah. Just changing that relationship was huge for me. Again, not to be repetitive, but I just think that why question is going to be the thing that is a game changer for so many people. 00:45:58 Jeremy When I, when I still get an occasional, craving to drink a beer, I love beer. Love it, delicious, amazing. It just, it's, it causes more problems for me than solves them, although it does solve some problems, but by shifting to non-alcoholic beers, I've found some really high end ones that are really good, that tastes like real beer. You mentioned those reward systems and like the hanging out with friends, I can drink those and have that in my hand. It feels exactly the same as it used to only I don't wake up feeling horrible the next day. 00:46:36 Zach Yeah. Yeah. I quit drinking probably five years ago now, too. I was gonna use that as an example, the, it was a very hard thing to do because so of all of my friend group, I was the first one to do it. We would, but one of the things we would do is we would meet at a pub to socialize and everyone would drink beer. I was showing up and not drinking beer and I was drinking water. It was really hard to do, mentally, right. Because you go, you're going to drink beer. From the food perspective, I will say, I started earlier, like I did a three-day fast and having, that data of really reflective moments of why am I hungry? Yeah. Like what is the real here? I know I'm not going to die. What's the real reason. And, and just exploring that and being curious about it. 00:47:37 Zach I think that's one of the things that's really helped me is the curiosity, the, having the courage and to be brave enough to explore that stuff. Because if we're all being honest, right, you open some of those doors, you don't want to look inside. Right. Right. You want to keep them closed. If you can get to the underlying problem as to what's going on, right. It, it really does change your relationship now. Now my reward for, Hey, I want to go eat something. My reward is I go do 10 pushups. Yeah. I switched it. If I can. 00:48:14 Jeremy Jump on something that you said there too, even it doesn't always have to be the dark demon in the closet. I know for me, I have a habit of, during my Workday, I just, I need a reason to get up and walk away from the desk. Right. Way too often, it's go grab a snack from the kitchen. It used to be, go across and get another cup of coffee and a snack from the kitchen or whatever. When I get real honest with myself, the reason I'm doing it is I don't like my job. I don't want to be doing it. I won't come up with any distraction to go do something else, even if it's for two minutes. And even if it poisons my body. That's not like, dad beat me up when I was three. That's just, Hey, I got to find another job. 00:48:53 Jeremy This isn't working out for me. It doesn't always have to be basing your deepest, darkest fear. Sometimes it's just overcoming whatever the small hurdle is. That's right in front of your face. Yep. 00:49:02 Roy Yeah. Are feeling like we need that reason. Cause I'm the same way of being like, I love my job. Thank goodness. It's like, task within that, you bump up against something that's kind of hard. It makes you have to sit and think, and it, and I'm the same. It's like, well, let me just get up and get something to eat while I think about this. The other thing too is I, I feel so much better if I just go for a walk. If I take the same five minutes and go outside fresh air and clear my head, I would come back and even perform better, but not eating and then feeling bad. And, talking about the beer and stuff, around here going and having some, Mexican food with margarita and some chips, but I'm telling you, I could, and it's it, wasn't a hangover, but I could drink one margarita and the chips and I could feel so bad the next morning, till 10 or 11, o'clock it just a cloud and feel like, for my eyes and above was just full of congestion. 00:50:00 Roy So, that's been a big reason too, for me to switch some things and not to go do that it's because I just got where it makes me so feel so bad the next day, I'm trying to get out from under it got worse and worse. So. 00:50:14 Jeremy Yeah, your body's going to be the best teacher in all of this. It's just pay attention to attention or do whatever it is you're going to do and you'll make them, you'll make the right. 00:50:21 Roy Choices, guys. I know we're way late, for, we go couple things. What is a tool, a habit? What is something that each of y'all do in your daily life that adds a lot of value, professional, personal whichever. 00:50:34 Zach Yeah. I'll I want to make sure I mentioned something that I haven't mentioned already. So, as weird as this sounds journaling for me is a huge one. I, I currently use a, a product called the full focus planner and it's just a kind of a methodology and this planner that you get, your three biggest things done and you schedule everything. Within that, it's professionally personally, right? I schedule my healing time. I schedule my work time. I schedule my, family time and it allows me to be productive and not put things off, but it also gives me a place to get my thoughts out on a piece of paper, because once they're out of my head, they're not circling around and causing trouble anymore. So, and that's my own preference for journal. If you can just spend a couple of minutes with yourself, getting the thoughts out of your head onto a piece of paper and being grateful about it can make a huge difference in your day. 00:51:38 Zach Yeah. Way to steal my thunder. And you. 00:51:43 Jeremy Say the exact same thing. It is, it is so important to me every day to envision the day, the way I want it to go so that when I do run up against those roadblocks and I feel like, oh, I need to, I want to eat something I want to not work out. I can look back and go, well, what did I tell myself this morning when I was alert and on it and focused and knew what I wanted out of life. Yeah. And I can refer to that. It just, it really keeps me accountable. Most days what I wrote down doesn't happen. A lot of it does some of it doesn't and that's again, getting comfortable with forgiving yourself and forgiving that you cannot create the exact life you want, but you can work toward goals. Yeah. The closer you get, the better you'll feel along the way. 00:52:22 Jeremy Then, just in terms of something practical or something more tangible that I have been experimenting with, and it might sound weird, and this is probably a whole other show, but I've been experimenting with using CBD as a supplement. Because I've found that it really regulates my anxiety and my depression and it helps keep me focused. It's not, there's no high, there's no psychotropic effect. It's just, it's about balancing your body's natural cannabinoids to a level that is the way they should be functioning. That so many things like diet and busy lifestyle center. 00:52:56 Roy Okay. Interesting. Yeah. The journaling, it's funny, you mentioned it cause I've been trying to do better about that. And, not just, and I think like Zach said, it seemed like just getting things. It doesn't have to be stressed, but just getting the thought, whatever it is out of my head and on paper, it just seems to be so much more clearing. I feel like I've had a clear head, doing it too. So, 00:53:21 Terry Yeah. Zach, you mentioned it's so important to be grateful. I mean, just think about being grateful at least a few times a day, that has a lot to do with it. Just keeping that positivity go. And. 00:53:37 Roy Most of us have a lot to be thinking, yes, we do. You get it instead of getting focused on that negative and why we want to go eat, because let's focus on the, all the great things. We talk a lot about that too. If you've got 10 things on your to-do list today, and you get seven done, we beat herself up over these other three, but let's celebrate the seven. Let's take away some gratitude. Anyway, I'm going to wrap it up. You guys, we could talk for a lot longer, so thank y'all tell everybody course, how can they reach out and get a hold of, y'all talk about your, podcast. 00:54:10 Jeremy Yeah, the website is, thefitmess.com and we're fitness guys on pretty much every social platform that's out. 00:54:17 Roy There. Okay. All right. Well, great. Well, thanks so much. I can find us, of course, at www.feedingfatty.com. We're on all the major social media platforms, as well as the major podcast platforms, iTunes, Stitcher, Google, Spotify. If we're not one that you listened to, please reach out, be glad to get it added. So till next time I'm rolling. I'm Terry take care of yourself and take care of your family. Thanks guys. Thank you. Thank you. www.thefitmess.com www.feedingfatty.com
Description: Today we welcome to the podcast Jeremy Grant of the Better Identity Coalition. Jeremy's roots in identity go back all the way to his college days at University of Michigan —one of the earliest adopters in the higher education space of the Smart Card. He has been involved since the early days of government internet regulation working with Bill Clinton, Virginia senator Chuck Robb, the Obama administration, the Department of Defense, NIST, and doing various legislative work as a staffer. In addition to being the Coordinator for the Better Identity Coalition, Jeremy now works for DC-based law firm Venable as well as a consultant to clients in several sectors. His focus is primarily in financial services, healthcare, IT, and recently in unemployment fraud due to billions of dollars lost during the pandemic. Jeremy dives into the specifics of why digital identity and cybersecurity are national issues that the private sectors simply cannot tackle on their own. Richard and Jeremy share their sentiments on creating a centralized and holistic approach to protecting and regulating identity in the United States. Key Takeaways: [2:26] Jeremy's background and how he came to be working in the identity space. [7:57] What is Jeremy's day-to-day work like? [11:29] Where is DC's attention in terms of identity? [13:45] Jeremy's thoughts on the landscape of digital identity.[18:30] What is the tipping point for when action takes place in legislation? [22:15] How much can any private organization do to push the needle for digital identity and cybersecurity? [29:56] What does Jeremy see for state-based privacy initiatives? Quotes: ●“People tell me all the time I have a dream job.” —Richard ●“I do have a great job. I really love it.” —Jeremy ●“How does stuff get done in DC? I mean you've got a mix of things in the executive branch and the legislative branch in and around identity where there's just a ton of attention these days.” —Jeremy ●“We've now seen bipartisan legislation introduced through the Digital Identity Act that's getting a lot more attention partially this past year with what we've been going through with the pandemic and digital becoming that much more important.” —Jeremy ●“A lot of regulators are just interested in getting perspective on how we look at identity.” —Jeremy ●“People are being recognized for these transformative changes and a lot of this stuff is being driven off of identity.” —Richard ●“How do we solve this nationally at a digital level in a way that might actually work? You can't just solve it in UI, and you can't just solve it in banking, and you can't just solve it in-house. You need a more holistic approach where people can do this everywhere.” —Jeremy ●“It is a challenge at times to get people to sort of take things up a level and look at this more of a national priority as opposed to a sector priority.” —Jeremy ●“At the end of the day when it comes to the identity proofing side of things, the government is the only authoritative assurer of identity. And everybody in the industry who sells an identity verification product is trying to guess what only the government knows.” —Jeremy ●“You cannot solve this without government help.” —Jeremy ●“It almost seems like we have elevated the digital capabilities of everything in this world except for identity. It's like we left identity behind.” —Richard ●“One of the things that I've found challenging in my digital identity evangelizing and proselytizing is this absence of a national data privacy standard here in the United States.” —Richard ●“If you keep protecting the stuff but not protecting the people, all I gotta do is be you and I get your stuff.” —Richard ●“Industry has come around to the idea that we need a national privacy law probably five years too late.” —Jeremy ●“Doing nothing is also a policy choice.” —Jeremy Mentioned in This Episode: The Better Identity Coalition Indentiverse NIST Venable LLP
About Patrick McFadinPatrick McFadin is the VP of Developer Relations at DataStax, where he leads a team devoted to making users of Apache Cassandra successful. He has also worked as Chief Evangelist for Apache Cassandra and consultant for DataStax, where he helped build some of the largest and exciting deployments in production. Previous to DataStax, he was Chief Architect at Hobsons and an Oracle DBA/Developer for over 15 years.Twitter: @PatrickMcFadinLinkedIn: Patrick McFadin DataStax website: datastax.comK8ssandra: k8ssandra.ioStargate: stargate.ioDataStax Astra: Cassandra-as-a-ServiceWatch this episode on YouTube: https://youtu.be/-BcIL3VlrjEThis episode sponsored by CBT Nuggets and Fauna.TranscriptJeremy: Hi everyone, I'm Jeremy Daly and this is Serverless Chats. Today I'm chatting with Patrick McFadin. Hey Patrick, thanks for joining me.Patrick: Hi Jeremy. How are you doing today?Jeremy: I am doing really well. So you are the VP of Developer Relations at DataStax, so I'd love it if you could tell the listeners a little bit about yourself and what DataStax is all about.Patrick: Sure. Well, I mean mostly I'm just a nerd with a cool job. I get to talk about technology a lot and work with technology. So DataStax, we're a company that was founded around Apache Cassandra, just supporting and making it awesome. And that's really where I came to the company. I've been working with Apache Cassandra for about 10 years now. I've been a part of the project as a contributor.But yeah, I mean mostly data infrastructure has been my life for most of my career. I did this in the dotcom era, back when it was really crazy when we had dozens of users. And when that washed out, I'm like, oh, then real scale started and during that period of time I worked a lot in just trying to scale infrastructure. It seems like that's been what I've been doing for like 30 years it seems like, 20 years, 20 years, I'm not that old. Yeah. But yeah, right now, I spend a lot of my time just working with developers on what's next in Kubernetes and I'm part of CNCF now, so yeah. I just can't to seem to stay in one place.Jeremy: Well, so I'm super interested in the work that DataStax is doing because I have had the pleasure/misfortune of managing a Cassandra ring for a start-up that I was at. And it was a very painful process, but once it was set up and it was running, it wasn't too, too bad. I mean, we always had some issues here and there, but this idea of taking a really good database, because Cassandra's great, it's an excellent data store, but managing it is a nightmare and finding people who can manage it is sort of a nightmare, and all that kind of stuff. And so this idea of taking these services and DataStax isn't the only one to do this, but to take these open-source services and turn them into these hosted solutions is pretty fantastic. So can you tell me a little bit more, though? What this shift is about? This moving away from hosting your own databases to using databases as a service?Patrick: Yeah. Well, you touched on something important. You want to take that power, I mean Cassandra was a database that was built in the scale world. It was built to solve a problem, but it was also built by engineers who really loved distributed computing, like myself, and it's funny you say like, "Oh, once I got it running, it was great," well, that's kind of the experience with most distributed databases, is it's hard to reason around having, "Oh, I have 100 mouths to feed now. And if one of them goes nuts, then I have to figure it out."But it's the power, that power, it's like stealing fire from the gods, right? It's like, "Oh, we could take the technology that Netflix and Apple and Facebook use and use it in our own stuff." But you got to pay the price, the gods demand their payment. And that's something that we've been really trying to tackle at DataStax for a couple of years now, actually three, which is how ... Because the era of running your own database is coming to an end. You should not run your own database. And my philosophy as a technologist is that proper, really important technology like your data layer should just fade into the background and it's just something you use, it's not something you have to reason through very much.There's lots of technology that's like that today. How many times have you ... When was the last time you managed your own memory in your code?Jeremy: Right. Right. Good point. I know.Patrick: Thank god, huh?Jeremy: Exactly.Patrick: Whew.Jeremy: But I think that you make a really good point, because you do have these larger companies like Facebook or whatever that are using these technologies and you mentioned data layers, which I don't think I've worked for a single company, I don't think I actually ... I founded a start-up one time and we built a data layer as well, because it's like, the complexity of understanding the transaction models and the routing, especially if you're doing things like sharding and all kinds of crazy stuff like that, hiding that complexity from your developers so that they can just say, "I need to get this piece of information," or, "I need to set this piece of information," is really powerful.But then you get stuck with these data layers that are bespoke and they're generally fragile and things like that, so how is that you can take data as a service and maybe get rid of some of that, I don't know, some of that liability I guess?Patrick: Yeah. It's funny because you were talking about sharding and things like that. These are things that we force on developers to reason through, and it's just cognitive load. I have an app to get out, and I have some business desire to get this application online, the last thing I need to worry about is my sharding algorithm. Jeremy, friends don't let friends shard.Jeremy: Right. That's right. That's a good point.Patrick: But yeah, I mean I think we actually have all the parts that we need and it's just about, this is closer than you think. Look at where we've already started going, and that is with APIs, using REST. Now GraphQL, which I think is deserving its hotness, is starting to bring together some things that are really important for this kind of world we want to live in. GraphQL is uni-fettering data and collecting and actual queries, it's a QL, and why they call it Graph, I have no idea. But it gives you this ability to have this more abstract layer.I think GraphQL will, here's a prediction is that it's going to be like the SQL of working with data services on the internet and for cloud-native applications. And so what does that mean? Well, that means I just have to know, well, I need some data and I don't really care what's underneath it. I don't care if I have this field indexed or anything like that. And that's pretty exciting to me because then we're writing apps at that point.Jeremy: Right. Yeah. And actually, that's one of the things I really like about GraphQL too is just this idea that it's almost like a universal data access layer in a sense because it does, you still have to know it, you have to know what you're requesting if you're an end developer, but it makes it easier to request the things that you need and have those mutations set and have some of those other things standardized across the company, but in a common format because isn't that another problem? Where it's like, I'm working with company A and I move to company B maybe and now company B is using a different technology and a different bespoke data layer and some of these other things.So, I think data as a service for one, maybe with GraphQL in front of it is a great way to have this alignment across companies, or I guess, just makes it easier for developers to switch and start developing right away when they move into a new company.Patrick: Yeah, and this is a concept I've been trying to push pretty hard and it's driven by some conversations I've had with some friends that they're engineering leaders and they have this common desire. We want to have a zero day dev, which is the first day that someone starts, they should be producing production code. And I don't think that's crazy talk, we can do this, but there's a lot of things that are in front of it. And the database is one of them. I think that's one of the first things you do when you show up at company X is like, "Okay, what database are you using? What flavor of SQL or GRPC or CQL, Cassandra query language? What's the data model? Quick, where's that big diagram on the wall with my ERD? I got to go look at that for a while."Jeremy: How poorly did you structure your Git repositories? Yeah.Patrick: Yeah, exactly. It's like all these things. And no, I would love to see a world where the most troublesome part of your first day is figuring out where the coffee and the bathroom are, and then the rest of it is just total, "Hey, I can do this. This is what I get paid to do."Jeremy: Right. Yeah. So that idea of zero day developer, I love that idea and I know other companies are trying to do that, but what enables that? Is it getting the idea of having to understand something bespoke? Is it getting that off of the table? Or not having to deal with the low-level database aspect of things? I mean because APIs, I had this conversation with Rob Sutter, actually, a couple weeks ago. And we were talking about the API economy and how everything is moving towards APIs. And even data, it was around data as well.So, is that the interface, you think, of the future that just says, "Look, trying to interface directly with a database or trying to work with some other layer of abstraction just doesn't make sense, let's just go straight from code right to the data, with a very simple API interface?"Patrick: Yeah, I think so. And it's this idea of data services because if you think of if you're doing React, or something like a front-end code, I don't want to have a driver. Drivers are a total impediment. It's like, driver hell can be difficult at large organizations, getting the matching right. Oh, we're using this database so you have to use this driver. And if you don't, you are now rejected at the gate. So it's using HTTP protocols, but it's also things like when you're using React or Angular, View, whatever you're using on the front-end, you have direct access.But most times what you're needing is just a collection or an object. And so just do a get, "I need this thing right now. I'm doing a pick list. I need your collection." I don't need a complicated setup and spend the first three days figuring out which driver I'm using and make sure my Gradle file is just perfect. Yeah. So, I think that's it.Jeremy: Yeah. No, I'd be curious how you feel about ORMs, or O-R-Ms, certainly for relational databases, I know a lot of people love them. I can't stand them. I think it adds a layer of abstraction and just more complexity where I just want access to the database. I want to write the query myself, and as soon as you start adding in all this extra stuff on top of it to try to make it easier, I don't know, it just seems to mess it up for me.Patrick: All right. So yeah, I think we have an accord. I am really not a fan of ORMs at all. And I mean this goes back to Hibernate. Everyone's like, "Oh, Hibernate's going to be the end of databases." No, it's not. Oh yeah, it was the end of the database at the other side because it would create these ridiculous queries. It's like, why is every query a full table scan?Jeremy: Exactly.Patrick: Because that's the way Hibernate wanted it. Yeah. I actually banned Hibernate at one company I was working at. I was Chief Architect there and I just said, "Don't ever put Hibernate in our production." Because I had more meetings about what it was doing wrong than what it was doing right.Jeremy: Right. Right. Yeah. No, that's sounds, yeah.Patrick: Is that a long answer? Like, no.Jeremy: No, I've had the same experience where certain ORMs you're just like, no. Certain things, you can't do this because it's going to one, I think it locks you in in a sense, I mean there's all kind of lock-in in the cloud, and if you're using a data service or an API or you're using something native in AWS, or IBM Cloud, you're still going to be locked in in some way, but I do feel like whenever you start going down that path of building custom things, or forcing developers to get really low level, that just builds up all kinds of tech debt, right? That you eventually are going to have to work down.Patrick: Well, it's organizational inertia. When you start getting into this, when you start using annotations in Hibernate where you're just cutting through all the layers and now you're way down in the weeds, try to move that. There's a couple of companies that I've worked with now that are looking at the true reality of portability in their data stores. Like, "Oh, we want to move from one to a different, from a key value to a document without developers knowing." Well, how do you get to that point?Jeremy: Right. Yeah.Patrick: And it's just, that's not giving access to those things, first of all, but this is that tech debt that's going to get in your way. We're really good, technologists, we're really good at just wracking up the charges on our tech debt credit card, especially whenever we're trying to get things out the door quickly. And I think that's actually one of the problems that we all face. I mean, I don't think I've ever talked to a developer who was ahead of schedule and didn't have somebody breathing down their neck.Jeremy: Very true.Patrick: You take shortcuts. You're like, "We've got to shift this code this week. Skip the annotations and go straight into the database and get the data you need." Or something. You start making trade-offs real fast.Jeremy: What can we hard code that will just get us past.Patrick: Yeah. Is it green? Shift it. Yeah.Jeremy: Yeah, no, I totally, totally agree. All right. So let's talk a little bit more about, I guess, skillsets and things like that. Because there are so many different databases out there. Cassandra is just one and if you're a developer working just at the driver level, I guess, with something like Cassandra, it's not horrible to work with. It's relatively easy once a lot of these things are set up for you.Same is true of MongoBD, or I mean, DynamoDB, or any of these other ones where the interface to it isn't overly difficult, but there's always some sort of something you want to build on top of it to make it a little bit easier. But I'm just curious, in terms of learning these different things and switching between organizations and so forth, there is a cognitive load going from saying, "I'm working on Cassandra," to going to saying, "I'm working on DynamoDB," or something like that. There's going to be a shift in understanding of how the data can be brought back, what the limitations are, just a whole bunch of things that you kind of have to think about. And that's not even including managing the actual thing. That's a whole other thing.So, hiring people, I guess, or hiring developers, how much do we want developers to know? Are you on board with me where it's like, I mean I like understanding how Cassandra works and I like understanding how DynamoDB works, and I like knowing the limits, but I also don't want to think about them when I'm writing code.Patrick: Yeah. Well, it's interesting because Cassandra, one of the things I really loved about Cassandra initially was just how it works. As a computer scientist, I was like, "This is really neat." I mean, my degree field is in distributed computing, so of course, I'm going to nerd out.Jeremy: There you go.Patrick: But that doesn't mean that it doesn't have mass appeal because it's doing the thing that people want. And I think that's going to be the challenge of any properly built service layer. I think I've mentioned to you before we started this, I work on a project called Stargate. And Stargate is a project that is meant to build a data layer on top of databases. And right now it's with Cassandra. And it's abstracting away some of the harder to understand or reason things.For instance, with distributed computing, we're trying to reduce the reliance on coordination. There is a great article about this by Pat Helland about how coordination is the last really expensive thing that we have in development. Memory, CPU, super cheap. I can rent that all day long. Coordination is really, really hard, and I don't expect a new programmer to understand, to reason through coordination problems. "Oh, yeah, the just in time race conditions," and things like that.And I think that's where distributed computing, it's super powerful, but then whenever people see what eventual consistency are, they freak out and they're like, "I just want my SQL Lite on my laptop. It's very safe." But that's not going to get you there. That's not a global database, it's not going to be able to take you to a billion users. Come on, don't cut ...Jeremy: Maybe you don't need to be.Patrick: ... your apps short Jeremy. You're going to have a billion users.Jeremy: You should strive for it, at least, is how I feel about it. So that's, I guess, the point I was trying to get to is that if the developers are the ones that you don't want learning some of this stuff, and there's ways to abstract it away again, going like we talked about data as a service and APIs and so forth. And I think that's where I would love to see things shifting. And as you said earlier, that's probably where things are going.But if you did want to run your own database cluster, and you wanted to do this on your own, I mean you have to hire people that know how to do this stuff. And the more I see the market heating up for this type of person, there is very, very few specialists out there that are probably available. So how would you even hire somebody to run your Cassandra ring? They probably all work at DataStax.Patrick: No, not all of them. There's a few that work at Target and FedEx, Apple, the biggest Cassandra users in the world. Huawei. We just found out lately that Huawei now has the biggest cluster on the planet. Yeah. They just showed up at ApacheCon and said, "Oh yeah, hold my beer." But I mean, you're right, it's a specialized skillset and one of the things we're doing at DataStax, we feel, yeah, you should just rent that. And so we have Astra, which is our database as a service.It's fully compatible with open-source Cassandra. If you don't like it, you can just take it over and use open-source. But we agree and we actually can run Cassandra cheaper than you can, and it's just because we can do it at scale. And right now Astra, the way we run it is truly serverless, you only pay for what you need, and that's something that we're bringing to the open-source side of Cassandra as well, but we're getting Cassandra closer to Kubernetes internally.So if you don't want to think about Kubernetes, if you don't want to think about all that stuff, you can just rent it from us, or you could just go use it in open-source, either way. But you're right. I mean, it should not be a 2020s skillset is, "Get better at running Cassandra." I think those days should be, leave it to, if you want to go work at DataStax and run Cassandra, great, we're hiring right now, you will love it. You don't have to. Yeah.Jeremy: So the idea of it being open-source, so again, I'm not a huge fan of this idea of vendor lock-in. I think if you want to run on AWS Lambda, yeah, most of what you can do can only run on AWS Lambda, but changing the compute, switching that over to Azure or switching that over to GCP or something like that, the compute itself is probably not that hard to move, right? I think especially depending on what you're doing, setting up an entire Kubernetes cluster just to run a few functions is probably not worth it. I mean, obviously, if you've got a much bigger implementation, that's a little different.But with data, data is just locked in. No matter where you go, it is very hard to move a lot of data. So even with the open-source flair that you have there, do you still see a worry about lock in from a data side?Patrick: Yeah. And it's becoming more of a concern with larger companies too, because options, #options. There was a pretty famous story a few years ago where the CEO of Target said, "I am not paying Amazon any more money," and they just picked up shop and moved from AWS to Google Cloud. And the CEO made a technical decision. It was like everybody downstream had to deal with that. And I think that luckily Target's a huge Cassandra shop and they were just like, "Okay, we'll just move it over there."But the thing is that you're right, I mean, and I love talking about this because back when cloud was first starting and I was talking about it and thinking about it, just what do the clouds promise you? Oh, you get commodity scale of CPU and network and storage. And that's what they want to sell you because that what they're building. Those big buildings in north Virginia, they are full of compute network and storage, but the thing they know they need to hook you in and the way that they're hooking you in, there's some services that are really handy, they're great, but really the hook is the data.Once you get into the database, the bespoke database for the cloud, one of the features of that database is it will not connect to any other database outside of that cloud, and they know that. I mean, and this is why I really strongly am starting to advocate this idea of this move towards data on Kubernetes is a way where open-source gets to take back the cloud. Because now we're deploying these virtual data centers and using open-source technology to create this portability. So we can use the compute network and storage, a Google, Amazon, Azure, OnPrem wherever, doesn't matter.But you need to think of like, "All right. How is that going to work?" And that's why we're like, "If you rent your Cassandra from DataStax with Astra, you can also use the open-source Cassandra as well." And if we aren't keeping you happy, you should feel totally fine with moving it to an open-source workload. And we're good with that. One way or the other, we would love for you to use a database that works for you.Jeremy: Right. And so this Stargate project that you're working on, is that the one that allows you to basically route to multiple databases?Patrick: That's the dream. Right now it just does Cassandra, but there's been some really interesting ... There's some folks coming out of the woodwork that really want to bring their database technology to Stargate. And that's what I'm encouraged by. It's an open-source project, Stargate.io, and you can contribute any of the connectors for underlying data store, but if we're using GraphQL, if you're using GRPC, if you're using REST, the underlying data store is really somewhat irrelevant in that case. You're just doing gets and puts, or gets and sets. Gets and puts, yeah, that's right. Gets, sets, puts, it's a lot of words.Jeremy: Whatever words. Yeah. Exactly.Patrick: That's what I love about standard, Jeremy, there's so many to pick from.Jeremy: Right, because there are ... Exactly, which standard do you choose? Yeah. So, because that's an interesting thing for me too, is just this idea of, I mean, it would be great to live in a perfect little cloud where you could say like, "Oh, well AWS has all the services I need. And I can just keep all my stuff there, whatever." But best of breed services, or again, the cost of hosting something in AWS maybe if you're hosting a Cassandra cluster there, versus maybe hosting it in GCP or maybe hosting it with you, you said you could host it cheaper than those could, or that we could host it ourselves.And so I do think that there is ... and again, we've had this conversation about multi-cloud and things like that where it's not about agnostic, it's not about being cloud agnostic, it's about using the best of breed for any service that you want to use. And APIs seem to be the way to get you there. So I love this idea of the Stargate project because it just seems like that's the way where it could be that standard across all these different clouds and onto all these different databases, well I mean, right now Cassandra, but eventually these other ones. I don't know, that seems like a pretty powerful project to me.Patrick: Well, the time has come. It's cloud native ... I work a lot with CNCF and cloud-native data is a kind of emerging topic. It's so emerging that I'm actually in the middle of writing a book, an O'Reilly book on it. So, yeah. Surprise. I just dropped it. This just in.Yeah, because I can see that this is going to be the future, but when we build cloud-native, cloud applications, cloud-native applications, we want scale, we want elasticity, and we want self-healing. Those are the three cloud-native things that we want. And that doesn't give us a whole lot ... So if I want to crank out a quick REACT app, that's what I'm going to use. And Netlify's a great example, or Vercel, they're creating this abstraction layer. But Netlify and Vercel are both working, they've been partnering with us on the Stargate project, because they're seeing like, "Okay, we want to have that very light touch, developers just come in and use it," in building cloud-native applications.And whenever you're building your application, you're just paying for what you use. And I think that's really key, not spinning up a bunch of infrastructure that you get a monthly bill for. And that bill can be expensive.Jeremy: It seems crazy. Doesn't it seem crazy nowadays? Actually provisioning an EC2 instance and paying for it to run even if it does nothing. That seems crazy to me.Patrick: There are start-ups around the idea of finding the instance that's running that's causing you money that you're not using.Jeremy: Which is crazy, isn't it? It's crazy. All right. So let's go a little bit more into standards, because you mentioned standards. So there are standards now for a lot of things, and again, GraphQL being a great example, I think. But also from a database perspective, looking at things like TSQL and developers come into an organization and they're familiar with MySQL, or they're familiar with PostgreSQL, whatever it is. Or maybe they're familiar with Cassandra or something like that, but I think most people, at least from what I've seen, have been very, very comfortable with the TSQL approach to getting data. So, how do you bring developers in and start teaching them or getting them to understand more of that NoSQL feel?Patrick: I think it's already happened, it's just the translation hasn't happened in a lot of minds. When you go to build an application, you're designing your application around the workflows your application's going to have. You're always thinking about like, "I click on this. I go there." I mean, this is where we wireframe out the application. At that point, your database is now involved and I don't think a lot of folks know that.It's like, at every point you need to put data or get data. And I think this is where we've taught could be anybody building applications, which makes it really difficult to be like, "No, no, no, start with your data domain first and build out all those models. And then you write your application to go against those models." And I'll tell you, I've been involved in a few of these application boot camps, like JavaScript boot camps and things, they don't go into data modeling. It's just not a part of it.Jeremy: Really?Patrick: And I think this is that thing where we have to acknowledge like, "Yeah, we don't really need that anymore as much, because we're just building applications." If I build a React app, and I have a form and I'm managing the authentication and I click a button and then I get a profile information, I just described every database interaction that I need and the objects that I need. And I'm going to put my user profile at some point, I'm going to click my ID and get that profile back as an object. Those are the interactions that I need. At no point did I say, "And then I'm going to write select from where." No, I just need to get that data.Jeremy: And I love thinking about data as objects anyways. It makes more sense, rather than rows of spreadsheets essentially that you join together, describing an object even if it's got nested data, like a document form or things like that, I think makes a ton of sense. But is SQL, is it still relevant do you think? I mean, in the world we're moving into? Should I be teaching my daughters how to write TSQL? Or would I be wasting my time?Patrick: Yeah. Well, yes and no. Depends on what your kid's doing. I think that SQL will go to where it originally started and where it will eventually end, which is in data engineering and data science. And I mean, I still use SQL every once in a while, Bigtable, that sort of thing, for exploring my data. I mean for an analytics career or reporting data and things like that, SQL is very expressive. I don't see any reason to change that. But this is a guy who's been writing SQL for a million years.But I mean, that world is still really moving. I mean, like a Presto and Snowflake and all these, Redshift, they all use Bigtable, they all use SQL to express the reporting capabilities. But ... And I think this is how you and I got sucked into this is like, well that was the database that we had, so we started using reporting languages to build applications. And how'd that work out?Jeremy: Yeah. Well, it certainly didn't scale very well, I can tell you that, going back to sharding, because that is always something that was very hard to do. So I guess, I get the point that essentially if you're going to be in the data sciences and you actually need to analyze that data and maybe you do need to do joins, or maybe you need to work with big data in a way, that's a specialized aspect of it and I think people could dabble in that if they were just regular developers and they didn't want to go too deep.But it sounds like the bigger, or the end goal here, maybe altruistic, is to just give people access to data. So even if they don't know SQL or they don't know something complex, just make it so that whatever data is there that anybody, with whatever level is, they can consume it.Patrick: Yeah. And move fast with the thing that you're building. Actually, I use a Facebook term, but Facebook does do this. Internally there's a system called Occhio that provides gets and puts for your data, but it abstracts things like geographics and things like that. But the companies that are trying to move quickly, they understood this a long time ago. If you have to reason through, "Am I doing a full table scan? Is that an efficient interjoin?" If you have to reason through that, you're not moving fast anymore.Jeremy: Right. Right. All right. Cool. All right, so let's talk about Astra a little bit more and this whole idea of, because Astra is the serverless version, the hosted version, the serverless version of Cassandra, right? Through DataStax?Patrick: Right. And ...Jeremy: Did I get that right?Patrick: You got it right. And so it gives you full access. You could do Port 9042 if you still want to use a driver, but it gives you access via GraphQL, REST, and there's also a document API. So if you just want to persist your JavaScript API or JavaScript and then pull it back out your JSON, it does full documents. So it emulates what a MongoDB or DocumenDB does. But the important thing, and this is the somewhat revolutionary side of this, and again, this is something that we're looking to put into open-source, is the serverless nature of it.You only pay for what you use. And when you want to create a Cassandra database, we don't even call it a Cassandra database on the Astra panel anymore. We just create a database. You give it a name. You click. And it's ready. And it will scale infinitely. As long as we can find some compute and network for you to use somewhere, it'll just keep scaling and that's kind of that true portion of serverless that we're really trying to make happen. And for me, that's exciting because finally, all that power that I feel like I've been hoarding for a long time is now available for so many more people.And then if you do a million writes per second for 10 minutes and then you turn it off, you only pay for that little short amount of time. And it scales back. You're not paying a persistent charge forever.Jeremy: I'm just curious from a technical implementation, because I'm thinking about PTSD or nightmares back of my days running Cassandra, and so I'm just trying to think how this works. Is it a shared tenancy model? Or is there a way to do single tenancy if you wanted that as a service?Patrick: Under the covers, yes, it is multi-tenant, but the way that we are created ... so we had to do some really interesting engineering inside. So my RCO's going to kill me if I talk about this, but hey, you know what, Jeremy? We're friends, we can do this. He's like, "Don't talk about the underlying architecture." I'm talking about the underlying architecture. The thing that we did was we took Cassandra and we decomposed it into microservices mostly. That's probably, it's still Cassandra, it's just how we run it makes it way more amenable to doing multi-tenant and scale in that fashion where the queries are separated from the storage and things that are running in the background, like if you're familiar with Cassandra because it's a log structure storage, you ask to do compactions and things like that, all that's just kind of on the side. It doesn't impact your query.But it gives us the ability to, if you create a database and all of a sudden you just hammer it with a million writes per second, there's enough infrastructure in total to cover it. And then we'll spin up more in the back to cover everything else. And then whenever you're done, we retract it back. That's how we keep our costs down. But then the storage side is separated and away from the compute side, and the storage side can scale its own way as well.And so whenever you need to store a petabyte of Cassandra data, you're just storing, you're just charged for the petabyte of storage on disk, not the thousandth of a cluster that you just created. Yeah.Jeremy: No. I love that. Thank you for explaining that though, because that is, every time I talk to somebody who's building a database or running some complex thing for a database, there's always magic. Somebody has to build some magic to make it actually work the way everyone hopes it would work. And so if anybody is listening to this and is like, "Ah, I'm just getting ready to spin up our own Cassandra ring," just think about these things because these are the really hard problems that are great to have a team of people working on that can solve this specific problem for you and abstract all of that crap away.Patrick: Yeah. Well, I mean it goes back to the Dynamo paper, and how distributed databases work, but it requires that they have a certain baseline. And they're all working together in some way. And Cassandra is a share-nothing architecture. I mean you don't have a leader note or anything like that. But like I said, because that data is spread out, you could have these little intermittent problems that you don't want to have to think about. Just leave that to somebody else. Somebody else has got a Grafana dashboard that's freaking out. Let them deal with it. But you can route around those problems really easily.Jeremy: Yeah. No, that's amazing. All right. So a couple more technical questions, because I'm always curious how some of these things work. So if somebody signs up and they set up this database and they want to connect to it, you mentioned you could use the driver, you mentioned you can use GraphQL or the REST API, or the Document API. What's the authentication method look like for that?Patrick: Yeah. So, it's a pretty standard thing with tokens. You create your access tokens, so when you create the database, you define the way that you access it with the token, and then whenever you connect to it, if you're using JavaScript, there's a couple of collection libraries that just have that as one of the environment variables.And so it's pretty standard for connecting the cloud databases now where you have your authentication token. And you can revoke that token at any time. So for instance, if you mistakenly commit that into your Git ...Jeremy: Say GitHub. We've never done that before.Patrick: No judging. You can revoke it immediately. But it also gives you our back, the controls over it's a read or write or admin, if you need to create new tables and that sort of thing. You can give that level of access to whatever that token is. So, very simple model, but then at that point, you're just interacting through a REST call or using any of the HTTP protocols or SQL protocol.Jeremy: And now, can you create multiple tokens with different levels of permission or is it all just token gives you full access?Patrick: No, it's multiple levels of protection and actually that's probably the best way to do it, for instance, if your CI/CD system, has the ability to, it should be able to create databases and tear them down, right? That would be a good use for that, but if you have, for instance, a very basic application, you just want it to be able to read and write. You don't want to change any of the underlying data structures.Jeremy: Right. Right.Patrick: That's a good layer of control, and so you can have all these layers going on one single database. But you can even have read-only access too, for ... I think that's something that's becoming more and more common now that there's reporting systems that are on the side.Jeremy: Right. Right. Good.Patrick: No, you can only read from the database.Jeremy: And what about data backups or exporting data or anything like that?Patrick: Yeah, we have a pretty rudimentary backup now, and we will probably, we're working on some more sophisticated versions of it. Data backup in Cassandra is pretty simple because it's all based on snapshots because if you know Cassandra the database, the data you write is immutable and that's a great way to start when you come to backup data. But yeah, we have a rudimentary backup system now where you have to, if you need to restore your data, you need to put in a ticket to have it restored at a certain point.I don't personally like that as much. I like the self-service model, and that's what we're working towards. And with more granularity, because with snapshots you can do things like snapshot, this is one of the things that we're working on, is doing like a snapshot of your production database and restoring it into a QA cluster. So, works for my house, oh, try it again. Yeah.Jeremy: That's awesome. No, so this is amazing. And I love this idea of just taking that pain of managing a database away from you. I love the idea of just make it simple to access the data. Don't create these complex things where people have to build more, and if people want to build a data access layer, the data access layer should maybe just be enforcing a model or something like that, and not having to figure out if you're on this shard, we route you to this particular port, or whatever. All that stuff is just insane, so yeah, I mean maybe go back to kind of the idea of this whole episode here, which is just, stop using databases. Start using these data services because they're so much easier to use. I mean, I'm sure there's concerns for some people, especially when you get to larger companies and you have all the compliance and things like that. I'm sure Astra and DataStax has all the compliance things and things like that. But yeah, just any final words, advice to people who might still be thinking databases are a good idea?Patrick: Well, I have an old 6502 on a breadboard, which I love to play with. It doesn't make it relevant. I'm sorry. That was a little catty, wasn't it?Jeremy: A little bit, but point well taken. I totally get what you're saying.Patrick: I mean, I think that it's, what do we do with the next generation? And this is one of the things, this will be the thought that I leave us with is, it's incumbent on a generation of engineers and programmers to make the next generation's job easier, right? We should always make it easier. So this is our chance. If you're currently working with database technology, this is your chance to not put that pain on the next generation, the people that will go past where you are. And so, this is how we move forward as a group.Jeremy: Yeah. Love it. Okay. Well Patrick, thank you so much for sharing all this and telling us about DataStax and Astra. So if people want to find out more about you or they want to find out more about Astra and DataStax, how do they do that?Patrick: All right. Well, plenty of ways at www.datastax.com and astra.datastax.com if you just want the good stuff. Cut the marketing, go to the good stuff, astra.datastax.com. You can find me on LinkedIn, Patrick McFadin. And I'm everywhere. If you want to connect with me on LinkedIn or on Twitter, I love connecting with folks and finding out what you're working on, so please feel free. I get more messages now on LinkedIn than anything, and it's great.Jeremy: Yeah. It's been picking up a lot. I know. It's kind of crazy. Linked in has really picked up. It's ...Patrick: I'm good with it. Yeah.Jeremy: Yeah. It's ...Patrick: I'm really good with it.Jeremy: It's a little bit better format maybe. So you also have, we mentioned the Stargate project, so that's just Stargate.io. We didn't talk about the K8ssandra project. Is that how you say that?Patrick: Yeah, the K8ssandra project.Jeremy: K8ssandra? Is that how you say it?Patrick: K8ssandra. Isn't that a cute name?Jeremy: It's K-8-S-S-A-N-D-R-A.io.Patrick: Right.Jeremy: What's that again? That's the idea of moving Cassandra onto Kubernetes, right?Patrick: Yeah. It's not Cassandra on Kubernetes, it's Cassandra in Kubernetes.Jeremy: In Kubernetes. Oh.Patrick: So it's like in concert and working with how Kubernetes works. Yes. So it's using Cassandra as your default data store for Kubernetes. It's a very, actually it's another one of the projects that's just taking off. KubeCon was last week from where we're recording now, or two weeks ago, and it was just a huge hit because again, it's like, "Kubernetes makes my infrastructure to run easier, and Cassandra is hard, put those together. Hey, I like this idea."Jeremy: Awesome.Patrick: So, yeah.Jeremy: Cool. All right. Well, if anybody wants to find out about that stuff, I will put all of these links in the show notes. Thanks again, Patrick. Really appreciate it.Patrick: Great. Thanks, Jeremy.
About Amy Arambulo NegretteWith over ten years industry experience, Amy Arambulo Negrette has built web applications for a variety of industries including Yahoo!, Fantasy Sports, and NASA Ames Research Center. One of her projects modernized two legacy systems impacting the entire research center and won her a Certificate of Excellence from the Ames Contractor Council. She has built APIs for enterprise clients for cloud consulting firms and led a team of Cloud Software Engineers. Currently, she works as a Cloud Economist at the Duckbill Group doing bill analyses and leading cost optimization projects. Amy has survived acquisitions, layoffs, and balancing life with two small children.Website: www.amy-codes.comTwitter: @nerdypawsLinkedin: linkedin.com/in/amycodesWatch this episode on YouTube: https://youtu.be/xc2rkR5VCxoThis episode sponsored by CBT Nuggets and Lumigo.TranscriptJeremy: Hi everyone, I'm Jeremy Daly, and this is Serverless Chats. Today, I'm joined by Amy Arambulo Negrette. Hey, Amy thanks for joining me.Amy: Thank you, glad to be here.Jeremy: You are a Cloud Economist at the Duckbill Group, so I'd love it if you could tell the listeners a little bit about yourself and your background and what you do at the Duckbill Group.Amy: Sure thing. I used to be an application developer, I did a bunch of AWS stuff for a while, and now at the Duckbill Group, a cloud economist is someone who goes through cost explorer and your usage report and tries to figure out where you're spending too much money and how the best to help you. It is the best-known use of a small skill I have, which is about being able to dig through someone's receipts and find out what their story is.Jeremy: Sounds like a forensic accountant, maybe forensic cloud economist or something to that effect.Amy: Yep. That's basically what we do.Jeremy: Well, I'm super excited to have you here. First of all, I have to ask this question, I've known Corey for quite some time, and I can imagine that working with him is either amazing or an absolute nightmare. I'm just curious, which one is it?Amy: It is not my job to control Corey, so it's great. He's great to talk to. He really is fully engaged in any conversation you have with him. You've talked to him before, I'm sure you know that. He loves knowing what other people think on things, which I think is a really healthy attitude to have.Jeremy: I totally agree, and hopefully he will subtweet this episode. Anyways, getting into this episode, one of the things that I've noticed that you've done quite a bit, is you create technical content. I've seen a lot of the talks that you've given, and I think that's something that you've done such a great job of not only coming up with content and making content interesting.Sometimes when you put together technical content, it's not super exciting. But you have a very good way of taking that technical content and making it interesting. But then also, following up with it. You have this series of talks where you started talking about managing FaaS, and then you went to the whole frenemies thing with Fargate versus Lambda. Now we're talking about, I think the latest one you did was about Lambda and the container support within Lambda. Maybe we can just go back, or start at a point where, for people who are interested in maybe doing talks, what is the reason for even creating some of these talks in the first place?Amy: I feel a lot of engineers have the same problem, just day-to-day where they will run into a bug, and then they'll go hit the all-knowing software engineer, which is the Google search engine, and have absolutely either nothing come up or have six posts that say, I'm having this problem, but you won't ever get an answer. This is just a fast way of answering those questions before someone has to ask.Jeremy: Right. When you come up with these ... You run into this bug, and you're thinking to yourself, you can't find the answer. So, you do the research, you spend the time digging through, and finding the right way to solve it. When you put these talks together, do you get a sense that it's helping people and then that it's just another way to connect with the community?Amy: Yeah. When I do it, it's really great, because after our talk, I'll see people either in the hallway, or I'll meet someone at a booth, and they'll even say, it's like, I ran into this exact same problem, and I gave up because it was such a strange edge case that it was too hard to fix, and we just moved on to another solution, which is entirely possible.I also get to express to just the general public that I do, in fact, know what I'm talking about, because someone has given me a stage to talk for 30 minutes, and just put up all of my proofs. That's an actually fun and weirdly empowering place to be.Jeremy: Yeah. I actually think that's really interesting. Again, for me, I loved your talks, and some of those things are ... I put those things at the back of my mind, but I know for people who give talks, who maybe get judged for other reasons or whatever, that it certainly is empowering. Is that something where you certainly shouldn't have to do it. There certainly should be that same level of respect. But is that something that you found that doing these talks really just sets the tone, right off the bat?Amy: Yeah, I feel it does. It helps that when someone Googles you, a bunch of YouTube videos on how to solve their problem comes up, that is extremely helpful, especially ... I do a lot of consulting, so if I ever have to go onsite, and someone wants to know what I do, I can pull up an actual YouTube playlist of things that I've done. It's like being in developer relations without having to write all of that content, I get to write a fraction of that content.Jeremy: Right. Unfortunately, that is a fact that we live with right now, which is, it is completely unfair, but I think that, again, the fact that you do that, you put that out there, and that gives you that credibility, which again, you should have from your resume, but at the same time, I think it's an interesting way to circumvent that, given the current world we live in.Amy: It also helps when there are either younger engineers or even other younger professionals who are looking at the tech industry, and the tech industry, especially right now, it does not have the best reputation to be able to see that there are people who are from different backgrounds, either educationally or financially, or what have you, and are able to go out and see someone who has something similar being a subject matter expert in whatever it is that they're talking about.Jeremy: Right. I definitely agree with that. That's that thing, where the more that we can amplify those types of voices and make sure that people can see that diversity, it's incredibly important. Good for you, obviously, for pushing through that, because I know that I've heard a lot of horror stories around that stuff that makes my blood boil.Let's talk to some of these people out here who potentially want to do some of these talks, and want to use this as a way to, again, sell themselves. Because I can tell you one thing, once I started writing blog posts and doing talks and doing those sorts of things, clearly, I have a very different background, but it just gave me a bunch of exposure; job offers and consulting clients and things like that, those just become much easier to get when you can actually go out there and do some of this stuff.If you're interested in doing that, I think one of the hard things for most people is, what even makes a good talk? You've come up with some really great talks. What's that secret sauce? How do you do that?Amy: I think it can also be very intimidating since a lot of the talks that get a lot of promotion are always huge vendor events that they're trying to push their product, they're trying to push a solution. That usually takes up a lot of advertising real estate, essentially, where that's what you see, that's what you see all the threads and everything. When you actually get to these community conferences, or even when I would speak at AWS Summit, it was ... I had a very specific problem that I needed to solve. I ran into a bug, the bug was not in the documentation, because why would it be?Jeremy: Why would you put that in there, right?Amy: Of course. Then Google, three pages down, maybe put me on the path to finding the right answer, and it's the journey of trying to put all of the bug fixes in place to make it work for your specific environment and then being able to share that.Jeremy: Right, yeah. That idea of taking these experiences that you've had, or trying to solve a problem, and then finding the nuances maybe in solving the problem as opposed to the happy path, which it's always great when you're following a blog post and it says, run this command, then run this command, then run this command. Well, what happens on that third command when the thing blows up, and you have no idea what to do? Then you end up Googling for five hours trying to find your way out of that.You take this path of, find those bugs or find that non-happy path and solve it. Then what do you do around there? How do you then take that ... You got to make that interesting somehow.Amy: Yes. A lot of people use gifs and memes. I use pictures of food and screencaps from Dungeons and Dragons. That's usually just different enough that it'll snap someone just out of their phone going, "Why is there a huge elf on my screen trying to attack people screaming elf errors." Well, that's because that's what they thought it would be great to call it. It's not a great error code. It doesn't explain what it is, and it makes you very confused.Jeremy: Right. Part of that is, and again, there's that relatability when you create talks, and you want to connect with the audience in some way. But you also ... This is the other thing that I've always found the hardest when I'm creating talks, is trying to find the right level. Because AWS always does this thing where they're like, it's a 200 level, or it's a 400 level, and so forth. I think that's helpful, but you're going to get people of all different skill levels, and so forth. How do you take a problem like that, and then make it relatable, or understandable, probably? Find that right level?Amy: The way I see it, there's going to be at least one person of these two types in the room that are not going to be your target audience, someone who doesn't know what you're talking about, but sees that a tool that they're considering is going to pose a problem, and they want to know how difficult it is to fix it. Or there's going to be a business person who has no technical background, and they just want to know if what they're evaluating is worth evaluating, if this error is going to be so difficult to narrow down and try to resolve that, yes, why would we go through something that my engineers are going to spend hours to try to fix something that's essentially a configuration issue?When I write any section of a talk, I make sure that it addresses a person who may not have come into that with that exact problem in mind. For the people who have, they'll understand the ... In animation, it's called key images, where there are very specific slots where you understand the topic of what is happening and the context around it. I always produce more verbose notes that go with my presentation. I usually release it either at the end of the day, or later on that week, once everyone has had time to settle, and it provides a tutorial-esque experience where this is what you saw, this is how you would actually do it if you were in front of a screen.Jeremy: Yeah.Amy: There are people who go to technical talks with a laptop on their lap because they're also working while they're trying to do it. But most of the time, they're not going to have the console open while you're walking through the demo. So, how are you going to address that issue? It's just easier that way.Jeremy: I like that idea too, of ... I try to do high-level bullet points, and then talk about the bullet point. Because one thing that I try to do, and I'd love to hear your thoughts on this as well. Here I am picking your brain trying to make my own talks better. But basically, I do a bullet point, and then I talk through it. I actually animate the bullet points coming in.I'm not a huge fan of showing an entire slide with all the bullet points and then letting people read ahead, I bring a bullet point in, talk about the bullet point, bring another bullet point in. Is that something you recommend doing too? Or do you just present all the concepts and then walk people through it?Amy: I think it depends. I tend to have very dense slides, which is not great for reading, especially if you're several rows back. I truly understand that. But the way I see it, because I also talk very fast when I'm on stage that I want there to be enough context around what's happening, so that if I gloss over a concept, then you visually can understand what's happening.That said, if that's because the entire bullet block on my slide is going to be about a very specific thing that's happening. It's not something that you have to view step-by-step. Now, I do have a few where, especially in a more workshop scenario, where you're going, I want you to think about this first and then go on to this next concept. I totally hide stuff. I just discovered for a talk that I was constructing the other day, that there's an animation that drops them down like index cards, and that's now my favorite animation right now.Jeremy: When you're doing that, like because this is the other thing, just for people who have ever ... If you're out there and you've ever written a talker or you've given a talk, the first iteration of it is never going to be the right one. You have to go through and you have to revise. It is sort of weird, and I don't know, maybe you felt this way too, in the pre-pandemic world, when you would give talks in person, most of the time, you'd give it to a relatively small audience, a couple of hundred people or whatever, as opposed to now, when we do talks, post-pandemic, and they're online, it's like, they're immediately available online.It's hard to give the same talk over and over and over and over again, without somebody potentially having seen it. A lot of work goes into a single talk. Not being able to use the same time over and over again, is not great. But, how do you refine it? Is it that you tested it with a live audience, or do you use a family member or a friend, or a colleague? How do you test and refine your talks?Amy: I'm actually an organizer at a meetup group, and specifically built around giving people of marginalized gender identities, and a place to stage and write technical content. It is a very specific audience.Jeremy: I can imagine.Amy: But it addresses that issue I had earlier about visibility, it also does help you ... If you don't have a lot of contacts in this industry, just as an aside, technical speaking is a way to do it, because everyone loves talking to each other after the stress has worn off, and you become the friendliest person after you've done that.But also, there are meetup groups out there, specifically about doing technical feedback, or just general speaking feedback. If you want to do something general, Toastmasters is a great organization to do. If you want to do strictly technical, if you do any cloud-related stuff, the DevOps communities are super friendly, even if it's not specifically about DevOps. I'm not a DevOps person, but I have a lot of DevOps friends. Some of my best friends are DevOps people.And you can get on a meetup or a Zoom call and just burn through your slides for about 10 or 15 minutes and see ... Your friends will be very honest with you, in a small group.Jeremy: Right. One of the things I did notice, too, giving a speech in person or giving your talk in person versus giving a talk via Zoom call, is sometimes when you don't hear any laughs or chuckles from a little joke that you make in there, it can feel very lonely in that space after you're waiting for something in there, but. It's a little bit ...Amy: It's worse when there are people in the room. I assure you, it is so much worse.Jeremy: That is very true. If something falls flat, that's a good point. Just going back to more this idea of creating good talks, and what makes a good talk. Where do you find ... You mentioned, maybe it's a vendor conference or something and you maybe install the vendor stuff, and you find the bugs and so forth. But is there any other places that you get inspiration from? Are there any resources you use to sort build some of these talks?Amy: Again, the communities help. The communities will tell you, really, it's like, I don't understand this thing, can someone hop on a call with me for real quick minute and explain why this concept is so hard? That's a very good place to base your talk off. As far as making them engaging, and interesting, I tend to clone video gaming videos, just because that's what I watch. I know, if it's going to be interesting to me, then it will probably be at least different than the content that's out there.Jeremy: Right. That's a good way to think of things too, is if it's something that you find interesting, chances are, there are lots of other people that will find that interesting. All right, let's go back to just this idea of creating new talks. You had mentioned this idea of, again, finding the bugs and so forth. But one of the things that I think we see quite a bit is always that bleeding edge stuff. People always want to write content about something new that happened.I'm guilty of this, I would think from a serverless standpoint where you're talking about things that are really, really bleeding edge. It's useful and they're interesting. Certainly, if you go to a conference about serverless, then it's really nice to see you have these talks and what might be possible. But sometimes when you're going to more practical type things. Again, even DevOps Days, and some of those other things, I think you've got attendees or talk listeners who are looking for very practical advice.I guess the question is like, how do you take a new piece of content, one of these problems, whatever it is. I guess, how do you keep finding new content is probably the better way to ask that question?Amy: Well, to just roll back just a little bit. My problem with bleeding edge content, I love watching it, but bleeding edge content will almost always be a product demo because it's someone who developed a new solution, and they want to share with everybody, which is just going to walk you through how it's used, which is great, except, and this is just a nature of what the cloud industry is like, all of this stuff, it changes day-to-day.These tools may not be applicable in a few months, or they may become the new standard. There's no way to tell until you're already six months out, and by then, they've already gone through several product revisions. I once did a talk where I was talking about best practices, and AWS released their updated best practices the day before my talk, and I had to update three slides. It threw off my timing, it was great.That's just one of those kind of pitfalls that you have to roll with. As far as getting new content, though, especially if you're dealing ... It depends who your audience is, because my audience tends to be either ICs or technical leads, and by then you're usually in a company ... If you're not developing these bleeding edge solutions, you're just using the tools that's out there already.You had brought up my "Serverless Frenemies," which is still my favorite title of any talk that I've ever made, because when I did the managing containers one, and I love all my Devro friends, but they all got into my mentions about why don't you just use Fargate? If you're at the containerization stage, why don't you just use Fargate, because it's not even close to the same thing, it is closer to Kubernetes than it is to Lambda, and I'm looking for a Lambda-like solution. That's what that whole deal was about, and I was able to stretch that out into I think 30 minutes because Twitter will tell you what's wrong, whether or not it's accurate or not, and whether or not they're actually your friends. They are my friends, but come on.Jeremy: Twitter can definitely be brutal. I think that, and maybe unpack a little bit what you were saying, is you're creating content around existing tools. One way to do it is, you're using existing tools, you're creating content around that, or you can create content around that. Looking at those solutions, you introduce a new solution to something, or you're even using an existing tool, nothing's perfect. You had mentioned that idea of bugs and so forth. But just, I guess new solutions, or just solutions, in general, maybe higher-level abstractions, everything creates some new type of problem that you have to deal with, and that's probably a pretty effective way to generate new content.Amy: It is. If you ever have to write down an RCA, which, for those who have not had the pleasure of doing one is called a root cause analysis, where you took down production, and you had to explain why.Jeremy: Yep.Amy: Or you ever did this, hopefully, in stage, or hopefully, in development where you ran into a situation where ... I had a situation once where Lambda would not delete itself. I call it my Skynet problem where it just hit a stage where it was both trying to save and delete at the same time. It would lock itself and I had to destroy the entire stack and send that command several times just to force that command through.If you ever have a problem like that, that is a thing that you write up instantly, and then you turn it into slide decks, and then you go to SlidesCarnival, you throw a very flashy background on it, and next thing you know, you have a TED talk, or a technical talk.Jeremy: Right. The other thing too, is, I find use cases to be an interesting, just like ... Non-traditional use cases are kind of fun too, how can I use this in a way that it wasn't meant to be used, and do something like that?Amy: I love those. Those are my favorite. I love watching people break away from what the tutorial says you have to do, and I'm going to get a little weird with it, and that to me is totally fascinating. When the whole, I fed these scripts into a computer meme came out, I thought that was super fascinating because that was something a company I had worked for did, they used analytics ... I used to work for Fantasy Sports, to write color commentary for your Fantasy Football team, and they would send it out.If you did really well, you would get a really raving review, and if you did really poorly, you would get roasted by a computer, and then that gets sent to everyone in the league, and it's hilarious. But that is not a thing that you would just assume a computer would do, is just write hot takes on your Fantasy Football team.Jeremy: That's ... Sure, go ahead.Amy: It's so much fun. I love watching people get weird with the tools that are there.Jeremy: There are times where you could do something like that, you could maybe create a content around some strange use case or whatever, and I love that idea of getting weird with that. The other part of it, though, is that, I guess, if you're sitting through a talk, and it's some super interesting problem that you're listening to, and again, I don't know, maybe it's some database replication thing, that you're just really into, whatever. That makes sense. But I think the majority of problems that developers have, are not that interesting, they're just frustrating.Probably the worst thing to do is wanting to sit through a talk that talks about some frustrating issue you have. Is there a way to basically say, "Look, I have a problem that I want to talk about. It's not the most interesting problem, but how can you flip that and take a problem that's not interesting and make it interesting?Amy: The batching containers and the frenemies talk was all based off of a bin library error from within the Lambda AMI. That, on paper is extremely boring, and should be a thing that you can easily look up, it is not. When I went around it trying to make tracking down library errors interesting, just saying it is very slow and can drain the energy out of your voice.But, I put a lot of energy into my work in general, and that's just how I had to approach pulling these talk is like, I like what I do, just, generally. When I try to explain what I do to people, it sounds super boring, and I own that. Now I'm doing it with spreadsheets, which is much, much worse. But when I tell people, it's not about the error itself, it's about everything that happened to make this one particular error happen. The reason why this error happened was because Lambda uses AWS's very specific Linux AMI when they did not used to, and they left stuff out for either security or performance purposes.Whether or not we as a group agree with that, that's a business decision that they made. How does their business decision affect your future business decisions and your future technical ones? Well, that becomes a way more interesting conversation, because it's like, we know this is going to break at this part, do we still want to use SSH? Do we still need it for this reason? You can approach it more from a narrative standpoint of, I wasted way too much time with this, did I need to? It's like, well, you shouldn't have, this should not have happened, but no bug should have happened, right?Jeremy: Right.Amy: You work through your process of finding a solution instead of concentrating on what the solution is because the solution they can look up in your show notes later.Jeremy: Right. No, I love that idea of documenting your process as opposed to just the solution itself. You find the problem, you pull the thread and where does that take you? I think to myself, a lot of times I go down the rabbit hole on trying to find the solution to a problem that I have or a bug fix, whatever. Sometimes, the resolution is underwhelming. Maybe it's not worth sharing. But other times, there's a revelation in there. I think you're right, with a little bit of storytelling, you can usually take that and turn that into a really interesting talk.Amy: One of the things it will also do, if you look at it from a process and from a narrative standpoint, is that when you take this video, and you send it to either a technical lead or a product manager, they'll understand what the problem was because you did not bog it down with code. There's very little live code in mine because I understand that people build things differently, just because every code is as different as every person. I get that and I've come to terms with it. This is the best way to share that information.Jeremy: Absolutely. All right, let's wrap up the idea of building talks. What is your advice to someone who is starting out new? What's the best way for them to get started, or what's just some general advice for people starting to build talks?Amy: The best content new engineers can do, and that's mostly because this is never the standpoint from which tutorials are ever written in, is that, as someone who knows very little of the way a language or a framework should work, write down your process, the entire thing on you getting either a framework onboarded, how you build, and a messaging system, things that people have written a billion times because chances are, one, you got that work from someone else's blog post or their documentation, and you can cite that. And two, when you do it that way, you not only get into the habit of writing, but you get in the habit of editing it in a way that makes it more palatable for people who are not in your specific experience.When you do it this way, people can actually see, from an outsider's perspective, exactly what is hard about the thing that they built, or what people who do not have a different level of experience are going through. If a tutorial is targeted at engineers who know where the memory leaks in PHP are, that's the thing that comes with experience, that is not the thing that can be trained.When a new engineer hits that point, and they found it in a new framework where you fix it, then you start knowing where to fix other problems. That way more senior engineers and more vetted people can learn from your experience, and then they will contact you and they will teach you how to find these issues, so you don't run into them again, and you end up with someone you can just bounce ideas off of. That's how you get pulled into these technical communities. It's a really self-healing process.Jeremy: Yeah. I love that. I think this idea of you approaching something from a slightly different angle, your experience, the way that you do it, the way that you see it, the way that you perceive the word or the next prompt that comes back, or how you read an error message or any of those things, you sharing your experience around that is hugely valuable to the people that are building these things. But also, you may run into problems that other people like you run into, and it's just ... Sometimes, all it takes is just a tiny twisting of the words, rearranging a sentence in a way that now that clicks with somebody where the other time it didn't. I love that.That's why I always encourage people, just even if somebody has written his content 100 times before, whatever slight difference there is in your content, that could have a powerful effect on someone else.Amy: Yeah, it really can.Jeremy: Awesome. All right, let me ask you a couple of questions about Lambda and Functions as a Service because I know that you spent quite a bit of time on this stuff. I guess a question, especially, maybe even from a cloud economist, what's next for Lambda and Functions as a Service? Because I know you've written about the Lambda containers, but what's maybe that next evolution?Amy: What AWS did recently when they released Lambda Containers is basically put it at feature parity with Azure and GCP, which already had that ability, they had either a function service or a function to Json service where you could upload your own container. They finally released the base image, where, granted, if you knew where to look, you could get it before, but they actually released it, and announced it to the general public, so you don't have to know someone in order to be able to use it.What I see a lot of people being able to do with this now is they really want to do local development testing, so they don't have to push anything to their account and rack up those charges, when all that you want to do is make sure that whatever one line update you made, actually worked and you didn't put the space or the cab in the wrong place, which is, I guess, how it works now and it takes down the entire stack, which again, we've all done at least once, so don't worry about it. If you've ever taken down production, don't worry, you're not the only one, I promise you. You can't throw a t-shirt into an empty conference room and not hit a dude who took down production. I'm going to save that for later.Local development testing, live simulation is a really big thing. I've seen asked to do full-on data science just on Lambda containers, so they don't have to use Kubernetes anymore, because speaking of cost stuff, it's easier to track cost-wise than Kubernetes is, because Kubernetes is purely consumption-based, and you have to tie a bunch of stuff together in order to make that tracking work. That would be great.I think from here on, and a lot of the FaaS changes, they're not going to be front ends anymore, it's all going to be optimizations by the providers, you're not going to see much of that anymore. It's not like before, where they would add three more fields and make a blog post about it. I think everything is just going to be tuning just from Lambda's perspective now. That and hooking it to more things, because they love their integrations. What good is Lambda if you can't integrate it yourself?Jeremy: Right, if you can't hook it up to events. It's interesting, though, this move to support containers as a packaging format. You're right, I think this has been available in IBM, it's been available in Google, it's been available in Microsoft, these capabilities have existed for a while to use a container, and again, that's a very overloaded word, I know, but to use that as a packaging format. But moving to that, the parity there with the other cloud providers is one thing, but who's that conversation for? Whose mind does that change about serverless, or FaaS, I guess.Amy: The security team.Jeremy: Security, okay.Amy: Because if you talk to any engineer, if it's a technical problem, they'll find a way to fix it. That's just the way, especially at the individual contributor level, that's how the brain works is like, oh, this is a small thing, I bet I can fix it with a few days, or a weekend. Weekend turns into a month, but that's a completely different problem. I've had clients who did not want to use Lambda because they could not control the containerization system. You would be pushing your code into containers that were owned by Amazon, and the way they saw that, they saw that as liability.While it does have some very strong technical implications, because you're now able to choose the kind of runtime you do, easier than trying to hamstring layers together, because I know layers is supposed to fix this problem, but it's so hard. It's so hard for something that you should be able to download off of Docker and then play with it and then put it back. It's so unnecessarily hard, and it makes me so angry.If you're willing to incur that responsibility, you can tweak your memory and you have more technical control, but also you have more control at a business level too, and that is a conversation that will go way easier as far as adoption.Jeremy: Right. The other thing, in terms of, I guess the complexity of running K8s or running Kubernetes is one of those things where that just seems like a lot of complexity. You mentioned the billing aspect of it and trying to track cost. Not that everyone's trying to narrow down exactly how much this Lambda container ran them, maybe you have more insight into that than I do, but the idea of just the complexity.It seems to me that if you start thinking about cost, that the total cost of ownership of running a container and a Lambda function or running it in Fargate, versus having to install and maintain ... I would say, even if you're using one of the managed services like EKS, or something like that, that the total cost of ownership of going down the serverless route has got to be better.Amy: Yeah, especially if you're one of these apps that are very user generater based. You're tracking mostly events and content, and not even a huge amount of content, you're not streaming video, you're sharing pictures, or sharing ... If you were trying to rebuild Foursquare, you would just be sharing Geo data, which is comparatively an extremely small piece of data.You don't need an entire instance, or an entire container to do that. You can do that on a very small scale, and build that out really quickly. That said, if you go from one of these three-person teams, and then there's interest in your product, for whatever reason, and it explodes, then not just your cost, but if you had to manage the traffic of that, if you had to manage the actual resources of that, and you did not think your usage would stick with your bill, that's not great.Being able to, at least in the first few years of the company, just use Lambda for everything, that's probably just a safer solution, because you're still rapidly iterating, and you're still changing things very quickly, and you're still transmitting very small bits of data. That said, it's like there are also large enterprise companies that are heavy Lambda users, and even their Lambda bill compared to their Kubernetes bill, it is ... If you round it to down there Kubernetes bill, you would get their Lambda bill.Jeremy: Right. Gotcha. I think that's really interesting because I do ... I actually would love to know your thoughts and whether you even see this. I don't know if we have enough data yet to know this, but this idea of using Lambda, especially early on in startups, or even projects within an enterprise, being able to have that flexibility and the low operational overhead and so forth, I think is really great. But do you see that, or is that something that you think will happen is, you'll get to a point where you'll say we've found some sort of stability point with this product, where we now need to move it over to something like Kubernetes, or a container management system because overall, it's going to end up being cheaper in the long run.Amy: What usually happens when you're making that transition from Lambda to either even ECS or Fargate, or eventually Kubernetes is that your business logic has now become so complex, or your infrastructure requirements have become so complex that Lambda can't do it cleanly anymore. You end up maxing out on either memory or CPU utilization, or because you're ... Apparently Lambda has a limit on how many times you can invoke it at the same time, which some people have hit in real life.Those are times when it stops being a cheaper solution, and it stops being a target solution because you can run your own FaaS environment within instances, and then you can have a similar environment to what you're building so you don't have to rebuild everything, but you don't have to incur that on-demand cost anymore. That's one path I've seen someone take, and that's usually the decision is that Lambda, before, when it was limited, can't hold it.Now that you can put your own container, so long as it fits in that requirement, you can pad that runway out a little bit, and you can stretch out how long you have before you do a full conversion to ECS environment. But that is usually how it is because you just try to overload or you have, maybe, 50 Lambdas trying to support one application, which is totally a thing you can do, it may not be the best ... Even with Step, even with everything else. When that becomes too complex, and you end up just going through containers, anyway.Jeremy: Right. I think that's interesting, and I think any company that grows to the point where that they need to start thinking about that next little infrastructure, it's probably a good thing. It's a good point to start having those conversations.All right, I got just one more question for you, because I'm really interested. You mentioned what you do as a cloud economist, reading through people's bills and things like that. Now, I thought Corey just made this thing up. I didn't even know this thing existed until, Corey comes out, and he probably coined the term. But in terms of that ...Amy: That's what he tells people.Jeremy: He does tell people that, right. I think he did. So, I will definitely give him credit there. But in terms of that role, of being a cloud economist and having to look through people's bills, and trying to find them ways to save it, that's pretty insane that we need people like you to do that, isn't it?Amy: Yes, it's a bananas job. I cannot believe this is a job that I'm actually doing. It's also a lot of fun. But if you think about it, that when I was starting out, and everything was LAMP stack, when I started. That was a hot new tech when I started, was the LAMP stack. The solution to all of those problems were we're going to throw more hardware at it. Then the following question was, why are we spending so much on hardware?Their solution to that problem was, we're going to buy real estate to store all of the hardware on. Now that you don't have to do that, you still have the problem of, I'm going to solve this problem by throwing more hardware at it. That's still a mindset that is alive and well, and you still end up with the same problem, except now you don't have the excuse that at least we own the facility that data is in because you don't anymore.Since you don't actually own the cases and the plates and everything, you don't have to worry about disposing of them and having to use stuff that you don't actually use anymore. A lot of my problems are, one of our services has gone out of control, we don't know why. Then I will tell you, who is spending that money. I will talk to that team to make sure that they know that it's happening because sometimes they don't even know what's happening. Something got spun up into their account, and maybe it was a testbed, maybe it was a demo, maybe they hired a vendor to load something into their environment and those costs got out of control.It's not like I'm going out trying to tell you that you did something wrong. It's like, this is where the problem is, let's go find out what happened. Forensic cloud bill person, I'm going to workshop that into a business card, because that sounds way better than the title that Corey uses.Jeremy: Forensic cloud accountant or something like that.Amy: Yes.Jeremy: I think it's also interesting that billing is, and the bills you get from AWS are a leading indicator of things that are potentially going wrong. Interesting, because I don't know if people connect this. Maybe I'm underestimating people here, but the idea that a bill that runs, or that you're seeing EC2 instances cost spiking, or you're seeing a higher load or higher bandwidth or things like that. Those can all be indicators of poorly written code, it can be indicators of the bad compression or missing compression settings, all kinds of things that it can jump out at you. Unless somebody is paying attention to those bills, I don't think most developers and most teams, they're not going to see that.Amy: Yeah. The only time they pay attention when things start spiraling out of control, and ... Okay, this sounds like an intuitive issue, and first thing people will do, will go, "We're going to log everything, and we're going to find out where the problem is."Jeremy: It'll cost you more money.Amy: There is a threshold where cloud watch becomes very expensive.Jeremy: Right, absolutely.Amy: Then they hit that threshold, and now their bill is four times as much.Jeremy: Right.Amy: A lot of the times it's misconfiguration, it's like, very rarely does any product get to the point where they just can't ... It's built so poorly that it can barely hold itself up. That's never been the case. It's always been, this has been turned off, or AWS also offers S3 analytics. You have to turn them on per bucket, that's not a policy that's usually written in anyone's AWS config. When they launch it, they just launch it without any analytics. They don't know if the thing is supposed to be sending things to Glacier, if it's highly used data, there's no way to tell.It's trying to find little holes like that, where it seems like it shouldn't be a problem, but the minute it becomes a problem, it's because you spent $20,000.Jeremy: Right. Yeah. No, you can spend money very, very fast in the cloud. I think that is a lesson learned by many, many people.Amy: The difference between being on metal and throwing hardware at a problem and being on the cloud and throwing hardware at a problem is that you can throw hardware at a problem at scale on the cloud.Jeremy: Exactly. Right. There's no stopping point like we have to go by using servers ...Amy: No one will stop you.Jeremy: No one will stop you. Just maybe the credit card company or whatever. Anyways, Amy, you are doing some amazing work with that, because I actually find that to be very, very fascinating. I think, in terms of what that can do, and the need for it, it's a fascinating field, and super interesting. Good for Corey for really digging into that and calling it out. Then again, for people like you who are willing to take that job, because that seems to me like poring through those numbers can't be the most interesting thing to do. But it must feel good when you do find a way to save somebody some money.Amy: Spreadsheets can be interesting. Again, it's like everything else about my job. If I try to explain why it's interesting, I just make it sound more boring.Jeremy: Awesome. All right. Well, let's leave it there. Amy, thank you again, for joining me, this was awesome. If people want to find out more about you, or maybe they have horribly large AWS cloud bills, and they want to check out the Duckbill Group, how do they do that?Amy: Honestly, if you search for Corey Quinn, you can find the Duckbill Group real fast. If you want to go talk to me because I like doing community engagement, and I like doing talks, and I like roasting people on Twitter just about different stuff, you can hit me up on Twitter @nerdypaws. If you want to be a professional, I'm also on LinkedIn under Amy Codes.Jeremy: All right, and then you also have a website, Amy-codes.com.Amy: Amy-codes.com is the archive of all my talks. It's currently only showing the talks from last year because for some reason, it's somehow became very hard to find a spot for the past year. Who knew?Jeremy: A lot of people doing talks. But anyways, all right, Amy, thank you again. Appreciate it.Amy: Thank you. Had so much fun.
About Rebecca MarshburnRebecca's interested in the things that interest people—What's important to them? Why? And when did they first discover it to be so? She's also interested in sharing stories, elevating others' experiences, exploring the intersection of physical environments and human behavior, and crafting the perfect pun for every situation. Today, Rebecca is the Head of Content & Community at Common Room. Prior to Common Room, she led the AWS Serverless Heroes program, where she met the singular Jeremy Daly, and guided content and product experiences for fashion magazines, online blogs, AR/VR companies, education companies, and a little travel outfit called Airbnb.Twitter: @beccaodelayLinkedIn: Rebecca MarshburnCompany: www.commonroom.ioPersonal work (all proceeds go to the charity of the buyer's choice): www.letterstomyexlovers.comWatch this episode on YouTube: https://youtu.be/VVEtxgh6GKI This episode sponsored by CBT Nuggets and Lumigo.Transcript:Rebecca: What a day today is! It's not every day you turn 100 times old, and on this day we celebrate Serverless Chats 100th episode with the most special of guests. The gentleman whose voice you usually hear on this end of the microphone, doing the asking, but today he's going to be doing the telling, the one and only, Jeremy Daly, and me. I'm Rebecca Marshburn, and your guest host for Serverless Chats 100th episode, because it's quite difficult to interview yourself. Hey Jeremy!Jeremy: Hey Rebecca, thank you very much for doing this.Rebecca: Oh my gosh. I am super excited to be here, couldn't be more honored. I'll give your listeners, our listeners, today, the special day, a little bit of background about us. Jeremy and I met through the AWS Serverless Heroes program, where I used to be a coordinator for quite some time. We support each other in content, conferences, product requests, road mapping, community-building, and most importantly, I think we've supported each other in spirit, and now I'm the head of content and community at Common Room, and Jeremy's leading Serverless Cloud at Serverless, Inc., so it's even sweeter that we're back together to celebrate this Serverless Chats milestone with you all, the most important, important, important, important part of the podcast equation, the serverless community. So without further ado, let's begin.Jeremy: All right, hit me up with whatever questions you have. I'm here to answer anything.Rebecca: Jeremy, I'm going to ask you a few heavy hitters, so I hope you're ready.Jeremy: I'm ready to go.Rebecca: And the first one's going to ask you to step way, way, way, way, way back into your time machine, so if you've got the proper attire on, let's do it. If we're going to step into that time machine, let's peel the layers, before serverless, before containers, before cloud even, what is the origin story of Jeremy Daly, the man who usually asks the questions.Jeremy: That's tough. I don't think time machines go back that far, but it's funny, when I was in high school, I was involved with music, and plays, and all kinds of things like that. I was a very creative person. I loved creating things, that was one of the biggest sort of things, and whether it was music or whatever and I did a lot of work with video actually, back in the day. I was always volunteering at the local public access station. And when I graduated from high school, I had no idea what I wanted to do. I had used computers at the computer lab at the high school. I mean, this is going back a ways, so it wasn't everyone had their own computer in their house, but I went to college and then, my first, my freshman year in college, I ended up, there's a suite-mate that I had who showed me a website that he built on the university servers.And I saw that and I was immediately like, "Whoa, how do you do that"? Right, just this idea of creating something new and being able to build that out was super exciting to me, so I spent the next couple of weeks figuring out how to do HTML, and this was before, this was like when JavaScript was super, super early and we're talking like 1997, and everything was super early. I was using this, I eventually moved away from using FrontPage and started using this thing called HotDog. It was a software for HTML coding, but I started doing that, and I started building websites, and then after a while, I started figuring out what things like CGI-bins were, and how you could write Perl scripts, and how you could make interactions happen, and how you could capture FormData and serve up different things, and it was a lot of copying and pasting.My major at the time, I think was psychology, because it was like a default thing that I could do. But then I moved into computer science. I did computer science for about a year, and I felt that that was a little bit too narrow for what I was hoping to sort of do. I was starting to become more entrepreneurial. I had started selling websites to people. I had gone to a couple of local businesses and started building websites, so I actually expanded that and ended up doing sort of a major that straddled computer science and management, like business administration. So I ended up graduating with a degree in e-commerce and internet marketing, which is sort of very early, like before any of this stuff seemed to even exist. And then from there, I started a web development company, worked on that for 12 years, and then I ended up selling that off. Did a startup, failed the startup. Then from that startup, went to another startup, worked there for a couple of years, went to another startup, did a lot of consulting in between there, somewhere along the way I found serverless and AWS Cloud, and then now it's sort of led me to advocacy for building things with serverless and now I'm building sort of the, I think what I've been dreaming about building for the last several years in what I'm doing now at Serverless, Inc.Rebecca: Wow. All right. So this love story started in the 90s.Jeremy: The 90s, right.Rebecca: That's an incredible, era and welcome to 2021.Jeremy: Right. It's been a journey.Rebecca: Yeah, truly, that's literally a new millennium. So in a broad way of saying it, you've seen it all. You've started from the very HotDog of the world, to today, which is an incredible name, I'm going to have to look them up later. So then you said serverless came along somewhere in there, but let's go to the middle of your story here, so before Serverless Chats, before its predecessor, which is your weekly Off-by-none newsletter, and before, this is my favorite one, debates around, what the suffix "less" means when appended to server. When did you first hear about Serverless in that moment, or perhaps you don't remember the exact minute, but I do really want to know what struck you about it? What stood out about serverless rather than any of the other types of technologies that you could have been struck by and been having a podcast around?Jeremy: Right. And I think I gave you maybe too much of a surface level of what I've seen, because I talked mostly about software, but if we go back, I mean, hardware was one of those things where hardware, and installing software, and running servers, and doing networking, and all those sort of things, those were part of my early career as well. When I was running my web development company, we started by hosting on some hosting service somewhere, and then we ended up getting a dedicated server, and then we outgrew that, and then we ended up saying, "Well maybe we'll bring stuff in-house". So we did on-prem for quite some time, where we had our own servers in the T1 line, and then we moved to another building that had a T3 line, and if anybody doesn't know what that is, you probably don't need to anymore.But those are the things that we were doing, and then eventually we moved into a co-location facility where we rented space, and we rented electricity, and we rented all the utilities, the bandwidth, and so forth, but we had Blade servers and I was running VMware, and we were doing all this kind of stuff to manage the infrastructure, and then writing software on top of that, so it was a lot of work. I know I posted something on Twitter a few weeks ago, about how, when I was, when we were young, we used to have to carry a server on our back, uphill, both ways, to the data center, in the snow, with no shoes, and that's kind of how it felt, that you were doing a lot of these things.And then 2008, 2009, as I was kind of wrapping up my web development company, we were just in the process of actually saying it's too expensive at the colo. I think we were paying probably between like $5,000 and $7,000 a month between the ... we had leases on some of the servers, you're paying for electricity, you're paying for all these other things, and we were running a fair amount of services in there, so it seemed justifiable. We were making money on it, that wasn't the problem, but it just was a very expensive fixed cost for us, and when the cloud started coming along and I started actually building out the startup that I was working on, we were building all of that in the cloud, and as I was learning more about the cloud and how that works, I'm like, I should just move all this stuff that's in the co-location facility, move that over to the cloud and see what happens.And it took a couple of weeks to get that set up, and now, again, this is early, this is before ELB, this is before RDS, this is before, I mean, this was very, very early cloud. I mean, I think there was S3 and EC2. I think those were the two services that were available, with a few other things. I don't even think there were VPCs yet. But anyways, I moved everything over, took a couple of weeks to get that over, and essentially our bill to host all of our clients' sites and projects went from $5,000 to $7,000 a month, to $750 a month or something like that, and it's funny because had I done that earlier, I may not have sold off my web development company because it could have been much more profitable, so it was just an interesting move there.So we got into the cloud fairly early and started sort of leveraging that, and it was great to see all these things get added and all these specialty services, like RDS, and just taking the responsibility because I literally was installing Microsoft SQL server on an EC2 instance, which is not something that you want to do, you want to use RDS. It's just a much better way to do it, but anyways, so I was working for another startup, this was like startup number 17 or whatever it was I was working for, and we had this incident where we were using ... we had a pretty good setup. I mean, everything was on EC2 instances, but we were using DynamoDB to do some caching layers for certain things. We were using a sharded database, MySQL database, for product information, and so forth.So the system was pretty resilient, it was pretty, it handled all of the load testing we did and things like that, but then we actually got featured on Good Morning America, and they mentioned our app, it was the Power to Mobile app, and so we get mentioned on Good Morning America. I think it was Good Morning America. The Today Show? Good Morning America, I think it was. One of those morning shows, anyways, we got about 10,000 sign-ups in less than a minute, which was amazing, or it was just this huge spike in traffic, which was great. The problem was, is we had this really weak point in our system where we had to basically get a lock on the database in order to get an incremental-ID, and so essentially what happened is the database choked, and then as soon as the database choked, just to create user accounts, other users couldn't sign in and there was all kinds of problems, so we basically lost out on all of this capability.So I spent some time doing a lot of research and trying to figure out how do you scale that? How do you scale something that fast? How do you have that resilience in there? And there's all kinds of ways that we could have done it with traditional hardware, it's not like it wasn't possible to do with a slightly better strategy, but as I was digging around in AWS, I'm looking around at some different things, and we were, I was always in the console cause we were using Dynamo and some of those things, and I came across this thing that said "Lambda," with a little new thing next to it. I'm like, what the heck is this?So I click on that and I start reading about it, and I'm like, this is amazing. We don't have to spin up a server, we don't have to use Chef, or Puppet, or anything like that to spin up these machines. We can basically just say, when X happens, do Y, and it enlightened me, and this was early 2015, so this would have been right after Lambda went GA. Had never heard of Lambda as part of the preview, I mean, I wasn't sort of in that the re:Invent, I don't know, what would you call that? Vortex, maybe, is a good way to describe the event.Rebecca: Vortex sounds about right. That's about how it feels by the end.Jeremy: Right, exactly. So I wasn't really in that, I wasn't in that group yet, I wasn't part of that community, so I hadn't heard about it, and so as I started playing around with it, I immediately saw the value there, because, for me, as someone who again had managed servers, and it had built out really complex networking too. I think some of the things you don't think about when you move to an on-prem where you're managing your stuff, even what the cloud manages for you. I mean, we had firewalls, and we had to do all the firewall rules ourselves, right. I mean, I know you still have to do security groups and things like that in AWS, but just the level of complexity is a lot lower when you're in the cloud, and of course there's so many great services and systems that help you do that now.But just the idea of saying, "wait a minute, so if I have something happen, like a user signup, for example, and I don't have to worry about provisioning all the servers that I need in order to handle that," and again, it wasn't so much the server aspect of it as it was the database aspect of it, but one of the things that was sort of interesting about the idea of Serverless 2 was this asynchronous nature of it, this idea of being more event-driven, and that things don't have to happen immediately necessarily. So that just struck me as something where it seemed like it would reduce a lot, and again, this term has been overused, but the undifferentiated heavy-lifting, we use that term over and over again, but there is not a better term for that, right?Because there were just so many things that you have to do as a developer, as an ops person, somebody who is trying to straddle teams, or just a PM, or whatever you are, so many things that you have to do in order to get an application running, first of all, and then even more you have to do in order to keep it up and running, and then even more, if you start thinking about distributing it, or scaling it, or getting any of those things, disaster recovery. I mean, there's a million things you have to think about, and I saw serverless immediately as this opportunity to say, "Wait a minute, this could reduce a lot of that complexity and manage all of that for you," and then again, literally let you focus on the things that actually matter for your business.Rebecca: Okay. As someone who worked, how should I say this, in metatech, or the technology of technology in the serverless space, when you say that you were starting to build that without ELB even, or RDS, my level of anxiety is like, I really feel like I'm watching a slow horror film. I'm like, "No, no, no, no, no, you didn't, you didn't, you didn't have to do that, did you"?Jeremy: We did.Rebecca: So I applaud you for making it to the end of the film and still being with us.Jeremy: Well, the other thing ...Rebecca: Only one protagonist does that.Jeremy: Well, the other thing that's interesting too, about Serverless, and where it was in 2015, Lambda goes GA, this will give you some anxiety, there was no API gateway. So there was no way to actually trigger a Lambda function from a web request, right. There was no VPC access in Lambda functions, which meant you couldn't connect to a database. The only thing you do is connect via HDP, so you could connect to DynamoDB or things like that, but you could not connect directly to RDS, for example. So if you go back and you look at the timeline of when these things were released, I mean, if just from 2015, I mean, you literally feel like a caveman thinking about what you could do back then again, it's banging two sticks together versus where we are now, and the capabilities that are available to us.Rebecca: Yeah, you're sort of in Plato's cave, right, and you're looking up and you're like, "It's quite dark in here," and Lambda's up there, outside, sowing seeds, being like, "Come on out, it's dark in there". All right, so I imagine you discovering Lambda through the console is not a sentence you hear every day or general console discovery of a new product that will then sort of change the way that you build, and so I'm guessing maybe one of the reasons why you started your Off-by-none newsletter or Serverless Chats, right, is to be like, "How do I help tell others about this without them needing to discover it through the console"? But I'm curious what your why is. Why first the Off-by-none newsletter, which is one of my favorite things to receive every week, thank you for continuing to write such great content, and then why Serverless Chats? Why are we here today? Why are we at number 100? Which I'm so excited about every time I say it.Jeremy: And it's kind of crazy to think about all the people I've gotten a chance to talk to, but so, I think if you go back, I started writing blog posts maybe in 2015, so I haven't been doing it that long, and I certainly wasn't prolific. I wasn't consistent writing a blog post every week or every, two a week, like some people do now, which is kind of crazy. I don't know how that, I mean, it's hard enough writing the newsletter every week, never mind writing original content, but I started writing about Serverless. I think it wasn't until the beginning of 2018, maybe the end of 2017, and there was already a lot of great content out there. I mean, Ben Kehoe was very early into this and a lot of his stuff I read very early.I mean, there's just so many people that were very early in the space, I mean, Paul Johnson, I mean, just so many people, right, and I started reading what they were writing and I was like, "Oh, I've got some ideas too, I've been experimenting with some things, I feel like I've gotten to a point where what I could share could be potentially useful". So I started writing blog posts, and I think one of the earlier blog posts I wrote was, I want to say 2017, maybe it was 2018, early 2018, but was a post about serverless security, and what was great about that post was that actually got me connected with Ory Segal, who had started PureSec, and he and I became friends and that was the other great thing too, is just becoming part of this community was amazing.So many awesome people that I've met, but so I saw all this stuff people were writing and these things people were doing, and I got to maybe August of 2018, and I said to myself, I'm like, "Okay, I don't know if people are interested in what I'm writing". I wasn't writing a lot, but I was writing a little bit, but I wasn't sure people were overly interested in what I was writing, and again, that idea of the imposter syndrome, certainly everything was very early, so I felt a little bit more comfortable. I always felt like, well, maybe nobody knows what they're talking about here, so if I throw something into the fold it won't be too, too bad, but certainly, I was reading other things by other people that I was interested in, and I thought to myself, I'm like, "Okay, if I'm interested in this stuff, other people have to be interested in this stuff," but it wasn't easy to find, right.I mean, there was sort of a serverless Twitter, if you want to use that terminology, where a lot of people tweet about it and so forth, obviously it's gotten very noisy now because of people slapped that term on way too many things, but I don't want to have that discussion, but so I'm reading all this great stuff and I'm like, "I really want to share it," and I'm like, "Well, I guess the best way to do that would just be a newsletter."I had an email list for my own personal site that I had had a couple of hundred people on, and I'm like, "Well, let me just turn it into this thing, and I'll share these stories, and maybe people will find them interesting," and I know this is going to sound a little bit corny, but I have two teenage daughters, so I'm allowed to be sort of this dad-jokey type. I remember when I started writing the first version of this newsletter and I said to myself, I'm like, "I don't want this to be a newsletter." I was toying around with this idea of calling it an un-newsletter. I didn't want it to just be another list of links that you click on, and I know that's interesting to some people, but I felt like there was an opportunity to opine on it, to look at the individual links, and maybe even tell a story as part of all of the links that were shared that week, and I thought that that would be more interesting than just getting a list of links.And I'm sure you've seen over the last 140 issues, or however many we're at now, that there's been changes in the way that we formatted it, and we've tried new things, and things like that, but ultimately, and this goes back to the corny thing, I mean, one of the first things that I wanted to do was, I wanted to basically thank people for writing this stuff. I wanted to basically say, "Look, this is not just about you writing some content". This is big, this is important, and I appreciate it. I appreciate you for writing that content, and I wanted to make it more of a celebration really of the community and the people that were early contributors to that space, and that's one of the reasons why I did the Serverless Star thing.I thought, if somebody writes a really good article some week, and it's just, it really hits me, or somebody else says, "Hey, this person wrote a great article," or whatever. I wanted to sort of celebrate that person and call them out because that's one of the things too is writing blog posts or posting things on social media without a good following, or without the dopamine hit of people liking it, or re-tweeting it, and things like that, it can be a pretty lonely place. I mean, I know I feel that way sometimes when you put something out there, and you think it's important, or you think people might want to see it, and just not enough people see it.It's even worse, I mean, 240 characters, or whatever it is to write a tweet is one thing, or 280 characters, but if you're spending time putting together a tutorial or you put together a really good thought piece, or story, or use case, or something where you feel like this is worth sharing, because it could inspire somebody else, or it could help somebody else, could get them past a bump, it could make them think about something a different way, or get them over a hump, or whatever. I mean, that's just the kind of thing where I think people need that encouragement, and I think people deserve that encouragement for the work that they're doing, and that's what I wanted to do with Off-by-none, is make sure that I got that out there, and to just try to amplify those voices the best that I could. The other thing where it's sort of progressed, and I guess maybe I'm getting ahead of myself, but the other place where it's progressed and I thought was really interesting, was, finding people ...There's the heavy hitters in the serverless space, right? The ones we all know, and you can name them all, and they are great, and they produce amazing content, and they do amazing things, but they have pretty good engines to get their content out, right? I mean, some people who write for the AWS blog, they're on the AWS blog, right, so they're doing pretty well in terms of getting their things out there, right, and they've got pretty good engines.There's some good dev advocates too, that just have good Twitter followings and things like that. Then there's that guy who writes the story. I don't know, he's in India or he's in Poland or something like that. He writes this really good tutorial on how to do this odd edge-case for serverless. And you go and you look at their Medium and they've got two followers on Medium, five followers on Twitter or something like that. And that to me, just seems unfair, right? I mean, they've written a really good piece and it's worth sharing right? And it needs to get out there. I don't have a huge audience. I know that. I mean I've got a good following on Twitter. I feel like a lot of my Twitter followers, we can have good conversations, which is what you want on Twitter.The newsletter has continued to grow. We've got a good listener base for this show here. So, I don't have a huge audience, but if I can share that audience with other people and get other people to the forefront, then that's important to me. And I love finding those people and those ideas that other people might not see because they're not looking for them. So, if I can be part of that and help share that, that to me, it's not only a responsibility, it's just it's incredibly rewarding. So ...Rebecca: Yeah, I have to ... I mean, it is your 100th episode, so hopefully I can give you some kudos, but if celebrating others' work is one of your main tenets, you nail it every time. So ...Jeremy: I appreciate that.Rebecca: Just wanted you to know that. So, that's sort of the Genesis of course, of both of these, right?Jeremy: Right.Rebecca: That underpins the foundational how to share both works or how to share others' work through different channels. I'm wondering how it transformed, there's this newsletter and then of course it also has this other component, which is Serverless Chats. And that moment when you were like, "All right, this newsletter, this narrative that I'm telling behind serverless, highlighting all of these different authors from all these different global spaces, I'm going to start ... You know what else I want to do? I don't have enough to do, I'm going to start a podcast." How did we get here?Jeremy: Well, so the funny thing is now that I think about it, I think it just goes back to this tenet of fairness, this idea where I was fortunate, and I was able to go down to New York City and go to Serverless Days New York in late 2018. I was able to ... Tom McLaughlin actually got me connected with a bunch of great people in Boston. I live just outside of Boston. We got connected with a bunch of great people. And we started the Serverless Days Boston for 2019. And we were on that committee. I started traveling and I was going to conferences and I was meeting people. I went to re:Invent in 2018, which I know a lot of people just don't have the opportunity to do. And the interesting thing was, is that I was pulling aside brilliant people either in the hallway at a conference or more likely for a very long, deep discussion that we would have about something at a pub in Northern Ireland or something like that, right?I mean, these were opportunities that I was getting that I was privileged enough to get. And I'm like, these are amazing conversations. Just things that, for me, I know changed the way I think. And one of the biggest things that I try to do is evolve my thinking. What I thought a year ago is probably not what I think now. Maybe call it flip-flopping, whatever you want to call it. But I think that evolving your thinking is the most progressive thing that you can do and starting to understand as you gain new perspectives. And I was talking to people that I never would have talked to if I was just sitting here in my home office or at the time, I mean, I was at another office, but still, I wasn't getting that context. I wasn't getting that experience. And I wasn't getting those stories that literally changed my mind and made me think about things differently.And so, here I was in this privileged position, being able to talk to these amazing people and in some cases funny, because they're celebrities in their own right, right? I mean, these are the people where other people think of them and it's almost like they're a celebrity. And these people, I think they deserve fame. Don't get me wrong. But like as someone who has been on that side of it as well, it's ... I don't know, it's weird. It's weird to have fans in a sense. I love, again, you can be my friend, you don't have to be my fan. But that's how I felt about ...Rebecca: I'm a fan of my friends.Jeremy: So, a fan and my friend. So, having talked to these other people and having these really deep conversations on serverless and go beyond serverless to me. Actually I had quite a few conversations with some people that have nothing to do with serverless. Actually, Peter Sbarski and I, every time we get together, we only talk about the value of going to college for some reason. I don't know why. It has usually nothing to do with serverless. So, I'm having these great conversations with these people and I'm like, "Wow, I wish I could share these. I wish other people could have this experience," because I can tell you right now, there's people who can't travel, especially a lot of people outside of the United States. They ... it's hard to travel to the United States sometimes.So, these conversations are going on and I thought to myself, I'm like, "Wouldn't it be great if we could just have these conversations and let other people hear them, hopefully without bar glasses clinking in the background. And so I said, "You know what? Let's just try it. Let's see what happens. I'll do a couple of episodes. If it works, it works. If it doesn't, it doesn't. If people are interested, they're interested." But that was the genesis of that, I mean, it just goes back to this idea where I felt a little selfish having conversations and not being able to share them with other people.Rebecca: It's the very Jeremy Daly tenet slogan, right? You got to share it. You got to share it ...Jeremy: Got to share it, right?Rebecca: The more he shares it, it celebrates it. I love that. I think you do ... Yeah, you do a great job giving a megaphone so that more people can hear. So, in case you need a reminder, actually, I'll ask you, I know what the answer is to this, but do you know the answer? What was your very first episode of Serverless Chats? What was the name, and how long did it last?Jeremy: What was the name?Rebecca: Oh yeah. Oh yeah.Jeremy: Oh, well I know ... Oh, I remember now. Well, I know it was Alex DeBrie. I absolutely know that it was Alex DeBrie because ...Rebecca: Correct on that.Jeremy: If nobody, if you do not know Alex DeBrie, not only is he an AWS data hero, as well as the author of The DynamoDB Book, but he's also like the most likable person on the planet too. It is really hard if you've ever met Alex, that you wouldn't remember him. Alex and I started communicating, again, we met through the serverless space. I think actually he was working at Serverless Inc. at the time when we first met. And I think I met him in person, finally met him in person at re:Invent 2018. But he and I have collaborated on a number of things and so forth. So, let me think what the name of it was. "Serverless Purity Versus Practicality" or something like that. Is that close?Rebecca: That's exactly what it was.Jeremy: Oh, all right. I nailed it. Nailed it. Yes!Rebecca: Wow. Well, it's a great title. And I think ...Jeremy: Don't ask me what episode number 27 was though, because no way I could tell you that.Rebecca: And just for fun, it was 34 minutes long and you released it on June 17th, 2019. So, you've come a long way in a year and a half. That's some kind of wildness. So it makes sense, like, "THE," capital, all caps, bold, italic, author for databases, Alex DeBrie. Makes sense why you selected him as your guest. I'm wondering if you remember any of the ... What do you remember most about that episode? What was it like planning it? What was the reception of it? Anything funny happened recording it or releasing it?Jeremy: Yeah, well, I mean, so the funny thing is that I was incredibly nervous. I still am, actually a lot of guests that I have, I'm still incredibly nervous when I'm about to do the actual interview. And I think it's partially because I want to do justice to the content that they're presenting and to their expertise. And I feel like there's a responsibility to them, but I also feel like the guests that I've had on, some of them are just so smart, and the things they say, just I'm in awe of some of the things that come out of these people's mouths. And I'm like, "This is amazing and people need to hear this." And so, I feel like we've had really good episodes and we've had some okay episodes, but I feel like I want to try to keep that level up so that they owe that to my listener to make sure that there is high quality episode that, high quality information that they're going to get out of that.But going back to the planning of the initial episodes, so I actually had six episodes recorded before I even released the first one. And the reason why I did that was because I said, "All right, there's no way that I can record an episode and then wait a week and then record another episode and wait a week." And I thought batching them would be a good idea. And so, very early on, I had Alex and I had Nitzan Shapira and I had Ran Ribenzaft and I had Marcia Villalba and I had Erik Peterson from Cloud Zero. And so, I had a whole bunch of these episodes and I reached out to I think, eight or nine people. And I said, "I'm doing this thing, would you be interested in it?" Whatever, and we did planning sessions, still a thing that I do today, it's still part of the process.So, whenever I have a guest on, if you are listening to an episode and you're like, "Wow, how did they just like keep the thing going ..." It's not scripted. I don't want people to think it's scripted, but it is, we do review the outline and we go through some talking points to make sure that again, the high-quality episode and that the guest says all the things that the guest wants to say. A lot of it is spontaneous, right? I mean, the language is spontaneous, but we do, we do try to plan these episodes ahead of time so that we make sure that again, we get the content out and we talk about all the things we want to talk about. But with Alex, it was funny.He was actually the first of the six episodes that I recorded, though. And I wasn't sure who I was going to do first, but I hadn't quite picked it yet, but I recorded with Alex first. And it was an easy, easy conversation. And the reason why it was an easy conversation was because we had talked a number of times, right? It was that in a pub, talking or whatever, and having that friendly chat. So, that was a pretty easy conversation. And I remember the first several conversations I had, I knew Nitzan very well. I knew Ran very well. I knew Erik very well. Erik helped plan Serverless Days Boston with me. And I had known Marcia very well. Marcia actually had interviewed me when we were in Vegas for re:Invent 2018.So, those were very comfortable conversations. And so, it actually was a lot easier to do, which probably gave me a false sense of security. I was like, "Wow, this was ... These came out pretty well." The conversations worked pretty well. And also it was super easy because I was just doing audio. And once you add the video component into it, it gets a little bit more complex. But yeah, I mean, I don't know if there's anything funny that happened during it, other than the fact that I mean, I was incredibly nervous when we recorded those, because I just didn't know what to expect. If anybody wants to know, "Hey, how do you just jump right into podcasting?" I didn't. I actually was planning on how can I record my voice? How can I get comfortable behind a microphone? And so, one of the things that I did was I started creating audio versions of my blog posts and posting them on SoundCloud.So, I did that for a couple of ... I'm sorry, a couple of blog posts that I did. And that just helped make me feel a bit more comfortable about being able to record and getting a little bit more comfortable, even though I still can't stand the sound of my own voice, but hopefully that doesn't bother other people.Rebecca: That is an amazing ... I think we so often talk about ideas around you know where you want to go and you have this vision and that's your goal. And it's a constant reminder to be like, "How do I make incremental steps to actually get to that goal?" And I love that as a life hack, like, "Hey, start with something you already know that you wrote and feel comfortable in and say it out loud and say it out loud again and say it out loud again." And you may never love your voice, but you will at least feel comfortable saying things out loud on a podcast.Jeremy: Right, right, right. I'm still working on the, "Ums" and, "Ahs." I still do that. And I don't edit those out. That's another thing too, actually, that one of the things I do want people to know about this podcast is these are authentic conversations, right? I am probably like ... I feel like I'm, I mean, the most authentic person that I know. I just want authenticity. I want that out of the guests. The idea of putting together an outline is just so that we can put together a high quality episode, but everything is authentic. And that's what I want out of people. I just want that authenticity, and one of the things that I felt kept that, was leaving in, "Ums" and, "Ahs," you know what I mean? It's just, it's one of those things where I know a lot of podcasts will edit those out and it sounds really polished and finished.Again, I mean, I figured if we can get the clinking glasses out from the background of a bar and just at least have the conversation that that's what I'm trying to achieve. And we do very little editing. We do cut things out here and there, especially if somebody makes a mistake or they want to start something over again, we will cut that out because we want, again, high quality episodes. But yeah, but authenticity is deeply important to me.Rebecca: Yeah, I think it probably certainly helps that neither of us are robots because robots wouldn't say, "Um" so many times. As I say, "Uh." So, let's talk about, Alex DeBrie was your first guest, but there's been a hundred episodes, right? So, from, I might say the best guest, as a hundredth episode guests, which is our very own Jeremy Daly, but let's go back to ...Jeremy: I appreciate that.Rebecca: Your guests, one to 99. And I mean, you've chatted with some of the most thoughtful, talented, Serverless builders and architects in the industry, and across coincident spaces like ML and Voice Technology, Chaos Engineering, databases. So, you started with Alex DeBrie and databases, and then I'm going to list off some names here, but there's so many more, right? But there's the Gunnar Grosches, and the Alexandria Abbasses, and Ajay Nair, and Angela Timofte, James Beswick, Chris Munns, Forrest Brazeal, Aleksandar Simovic, and Slobodan Stojanovic. Like there are just so many more. And I'm wondering if across those hundred conversations, or 99 plus your own today, if you had to distill those into two or three lessons, what have you learned that sticks with you? If there are emerging patterns or themes across these very divergent and convergent thinkers in the serverless space?Jeremy: Oh, that's a tough question.Rebecca: You're welcome.Jeremy: So, yeah, put me on the spot here. So, yeah, I mean, I think one of the things that I've, I've seen, no matter what it's been, whether it's ML or it's Chaos Engineering, or it's any of those other observability and things like that. I think the common thing that threads all of it is trying to solve problems and make people's lives easier. That every one of those solutions is like, and we always talk about abstractions and, and higher-level abstractions, and we no longer have to write ones and zeros on punch cards or whatever. We can write languages that either compile or interpret it or whatever. And then the cloud comes along and there's things we don't have to do anymore, that just get taken care of for us.And you keep building these higher level of abstractions. And I think that's a lot of what ... You've got this underlying concept of letting somebody else handle things for you. And then you've got this whole group of people that are coming at it from a number of different angles and saying, "Well, how will that apply to my use case?" And I think a lot of those, a lot of those things are very, very specific. I think things like the voice technology where it's like the fact that serverless powers voice technology is only interesting in the fact as to say that, the voice technology is probably the more interesting part, the fact that serverless powers it is just the fact that it's a really simple vehicle to do that. And basically removes this whole idea of saying I'm building voice technology, or I'm building a voice app, why do I need to worry about setting up servers and all this kind of stuff?It just takes that away. It takes that out of the equation. And I think that's the perfect idea of saying, "How can you take your use case, fit serverless in there and apply it in a way that gets rid of all that extra overhead that you shouldn't have to worry about." And the same thing is true of machine learning. And I mean, and SageMaker, and things like that. Yeah, you're still running instances of it, or you still have to do some of these things, but now there's like SageMaker endpoints and some other things that are happening. So, it's moving in that direction as well. But then you have those really high level services like NLU API from IBM, which is the Watson Natural Language Processing.You've got AP recognition, you've got the vision API, you've got sentiment analysis through all these different things. So, you've got a lot of different services that are very specific to machine learning and solving a discrete problem there. But then basically relying on serverless or at least presenting it in a way that's serverless, where you don't have to worry about it, right? You don't have to run all of these Jupiter notebooks and things like that, to do machine learning for a lot of cases. This is one of the things I talk about with Alexandra Abbas, was that these higher level APIs are just taking a lot of that responsibility or a lot of that heavy lifting off of your plate and allowing you to really come down and focus on the things that you're doing.So, going back to that, I do think that serverless, that the common theme that I see is that this idea of worrying about servers and worrying about patching things and worrying about networking, all that stuff. For so many people now, that's just not even a concern. They didn't even think about it. And that's amazing to think of, compute ... Or data, or networking as a utility that is now just available to us, right? And I mean, again, going back to my roots, taking it for granted is something that I think a lot of people do, but I think that's also maybe a good thing, right? Just don't think about it. I mean, there are people who, they're still going to be engineers and people who are sitting in the data center somewhere and racking servers and doing it, that's going to be forever, right?But for the things that you're trying to build, that's unimportant to you. That is the furthest from your concern. You want to focus on the problem that you're trying to solve. And so I think that, that's a lot of what I've seen from talking to people is that they are literally trying to figure out, "Okay, how do I take what I'm doing, my use case, my problem, how do I take that to the next level, by being able to spend my cycles thinking about that as opposed to how I'm going to serve it up to people?"Rebecca: Yeah, I think it's the mantra, right, of simplify, simplify, simplify, or maybe even to credit Bruce Lee, be like water. You're like, "How do I be like water in this instance?" Well, it's not to be setting up servers, it's to be doing what I like to be doing. So, you've interviewed these incredible folks. Is there anyone left on your list? I'm sure there ... I mean, I know that you have a large list. Is there a few key folks where you're like, "If this is the moment I'm going to ask them, I'm going to say on the hundredth episode, 'Dear so-and-so, I would love to interview you for Serverless Chats.'" Who are you asking?Jeremy: So, this is something that, again, we have a stretch list of guests that we attempt to reach out to every once in a while just to say, "Hey, if we get them, we get them." But so, I have a long list of people that I would absolutely love to talk to. I think number one on my list is certainly Werner Vogels. I mean, I would love to talk to Dr. Vogels about a number of things, and maybe even beyond serverless, I'm just really interested. More so from a curiosity standpoint of like, "Just how do you keep that in your head?" That vision of where it's going. And I'd love to drill down more into the vision because I do feel like there's a marketing aspect of it, that's pushing on him of like, "Here's what we have to focus on because of market adoption and so forth. And even though the technology, you want to move into a certain way," I'd be really interesting to talk to him about that.And I'd love to talk to him more too about developer experience and so forth, because one of the things that I love about AWS is that it gives you so many primitives, but at the same time, the thing I hate about AWS is it gives you so many primitives. So, you have to think about 800 services, I know it's not that many, but like, what is it? 200 services, something like that, that all need to kind of connect together. And I love that there's that diversity in those capabilities, it's just from a developer standpoint, it's really hard to choose which ones you're supposed to use, especially when several services overlap. So, I'm just curious. I mean, I'd love to talk to him about that and see what the vision is in terms of, is that the idea, just to be a salad bar, to be the Golden Corral of cloud services, I guess, right?Where you can choose whatever you want and probably take too much and then not use a lot of it. But I don't know if that's part of the strategy, but I think there's some interesting questions, could dig in there. Another person from AWS that I actually want to talk to, and I haven't reached out to her yet just because, I don't know, I just haven't reached out to her yet, but is Brigid Johnson. She is like an IAM expert. And I saw her speak at re:Inforce 2019, it must have been 2019 in Boston. And it was like she was speaking a different language, but she knew IAM so well, and I am not a fan of IAM. I mean, I'm a fan of it in the sense that it's necessary and it's great, but I can't wrap my head around so many different things about it. It's such a ...It's an ongoing learning process and when it comes to things like being able to use tags to elevate permissions. Just crazy things like that. Anyways, I would love to have a conversation with her because I'd really like to dig down into sort of, what is the essence of IAM? What are the things that you really have to think about with least permission? Especially applying it to serverless services and so forth. And maybe have her help me figure out how to do some of the cross role IAM things that I'm trying to do. Certainly would love to speak to Jeff Barr. I did meet Jeff briefly. We talked for a minute, but I would love to chat with him.I think he sets a shining example of what a developer advocate is. Just the way that ... First of all, he's probably the only person alive who knows every service at AWS and has actually tried it because he writes all those blog posts about it. So that would just be great to pick his brain on that stuff. Also, Adrian Cockcroft would be another great person to talk to. Just this idea of what he's done with microservices and thinking about the role, his role with Netflix and some of those other things and how all that kind of came together, I think would be a really interesting conversation. I know I've seen this in so many of his presentations where he's talked about the objections, what were the objections of Lambda and how have you solved those objections? And here's the things that we've done.And again, the methodology of that would be really interesting to know. There's a couple of other people too. Oh, Sam Newman who wrote Building Microservices, that was my Bible for quite some time. I had it on my iPad and had a whole bunch of bookmarks and things like that. And if anybody wants to know, one of my most popular posts that I've ever written was the ... I think it was ... What is it? 16, 17 architectural patterns for serverless or serverless microservice patterns on AWS. Can't even remember the name of my own posts. But that post was very, very popular. And that even was ... I know Matt Coulter who did the CDK. He's done the whole CDK ... What the heck was that? The CDKpatterns.com. That was one of the things where he said that that was instrumental for him in seeing those patterns and being able to use those patterns and so forth.If anybody wants to know, a lot of those patterns and those ideas and those ... The sort of the confidence that I had with presenting those patterns, a lot of that came from Sam Newman's work in his Building Microservices book. So again, credit where credit is due. And I think that that would be a really fascinating conversation. And then Simon Wardley, I would love to talk to. I'd actually love to ... I actually talked to ... I met Lin Clark in Vegas as well. She was instrumental with the WebAssembly stuff, and I'd love to talk to her. Merritt Baer. There's just so many people. I'm probably just naming too many people now. But there are a lot of people that I would love to have a chat with and just pick their brain.And also, one of the things that I've been thinking about a lot on the show as well, is the term "serverless." Good or bad for some people. Some of the conversations we have go outside of serverless a little bit, right? There's sort of peripheral to it. I think that a lot of things are peripheral to serverless now. And there are a lot of conversations to be had. People who were building with serverless. Actually real-world examples.One of the things I love hearing was Yan Cui's "Real World Serverless" podcast where he actually talks to people who are building serverless things and building them in their organizations. That is super interesting to me. And I would actually love to have some of those conversations here as well. So if anyone's listening and you have a really interesting story to tell about serverless or something peripheral to serverless please reach out and send me a message and I'd be happy to talk to you.Rebecca: Well, good news is, it sounds like A, we have at least ... You've got at least another a hundred episodes planned out already.Jeremy: Most likely. Yeah.Rebecca: And B, what a testament to Sam Newman. That's pretty great when your work is referred to as the Bible by someone. As far as in terms of a tome, a treasure trove of perhaps learnings or parables or teachings. I ... And wow, what a list of other folks, especially AWS power ... Actually, not AWS powerhouses. Powerhouses who happened to work at AWS. And I think have paved the way for a ton of ways of thinking and even communicating. Right? So I think Jeff Barr, as far as setting the bar, raising the bar if you will. For how to teach others and not be so high-level, or high-level enough where you can follow along with him, right? Not so high-level where it feels like you can't achieve what he's showing other people how to do.Jeremy: Right. And I just want to comment on the Jeff Barr thing. Yeah.Rebecca: Of course.Jeremy: Because again, I actually ... That's my point. That's one of the reasons why I love what he does and he's so perfect for that position because he's relatable and he presents things in a way that isn't like, "Oh, well, yeah, of course, this is how you do this." I mean, it's not that way. It's always presented in a way to make it accessible. And even for services that I'm not interested in, that I know that I probably will never use, I generally will read Jeff's post because I feel it gives me a good overview, right?Rebecca: Right.Jeremy: It just gives me a good overview to understand whether or not that service is even worth looking at. And that's certainly something I don't get from reading the documentation.Rebecca: Right. He's inviting you to come with him and understanding this, which is so neat. So I think ... I bet we should ... I know that we can find all these twitter handles for these folks and put them in the show notes. And I'm especially ... I'm just going to say here that Werner Vogels's twitter handle is @Werner. So maybe for your hundredth, all the listeners, everyone listening to this, we can say, "Hey, @Werner, I heard that you're the number one guest that Jeremy Daly would like to interview." And I think if we get enough folks saying that to @Werner ... Did I say that @Werner, just @Werner?Jeremy: I think you did.Rebecca: Anyone if you can hear it.Jeremy: Now listen, he did retweet my serverless musical that I did. So ...Rebecca: That's right.Jeremy: I'm sort of on his radar maybe.Rebecca: Yeah. And honestly, he loves serverless, especially with the number of customers and the types of customers and ... that are doing incredible things with it. So I think we've got a chance, Jeremy. I really do. That's what I'm trying to say.Jeremy: That's good to know. You're welcome anytime. He's welcome anytime.Rebecca: Do we say that @Werner, you are welcome anytime. Right. So let's go back to the genesis, not necessarily the genesis of the concept, right? But the genesis of the technology that spurred all of these other technologies, which is AWS Lambda. And so what ... I don't think we'd be having these conversations, right, if AWS Lambda was not released in late 2014, and then when GA I believe in 2015.Jeremy: Right.Rebecca: And so subsequently the serverless paradigm was thrust into the spotlight. And that seems like eons ago, but also three minutes ago.Jeremy: Right.Rebecca: And so I'm wondering ... Let's talk about its evolution a bit and a bit of how if you've been following it for this long and building it for this long, you've covered topics from serverless CI/CD pipelines, observability. We already talked about how it's impacted voice technologies or how it's made it easy. You can build voice technology without having to care about what that technology is running on.Jeremy: Right.Rebecca: You've even talked about things like the future and climate change and how it relates to serverless. So some of those sort of related conversations that you were just talking about wanting to have or having had with previous guests. So as a host who thinks about these topics every day, I'm wondering if there's a topic that serverless hasn't touched yet or one that you hope it will soon. Those types of themes, those threads that you want to pull in the next 100 episodes.Jeremy: That's another tough question. Wow. You got good questions.Rebecca: That's what I said. Heavy hitters. I told you I'd be bringing it.Jeremy: All right. Well, I appreciate that. So that's actually a really good question. I think the evolution of serverless has seen its ups and downs. I think one of the nice things is you look at something like serverless that was so constrained when it first started. And it still has constraints, which are good. But it ... Those constraints get lifted. We just talked about Adrian's talks about how it's like, "Well, I can't do this, or I can't do that." And then like, "Okay, we'll add some feature that you can do that and you can do that." And I think that for the most part, and I won't call it anything specific, but I think for the most part that the evolution of serverless and the evolution of Lambda and what it can do has been thoughtful. And by that I mean that it was sort of like, how do we evolve this into a way that doesn't create too much complexity and still sort of holds true to the serverless ethos of sort of being fairly easy or just writing code.And then, but still evolve it to open up these other use cases and edge cases. And I think that for the most part, that it has held true to that, that it has been mostly, I guess, a smooth ride. There are several examples though, where it didn't. And I said I wasn't going to call anything out, but I'm going to call this out. I think RDS proxy wasn't great. I think it works really well, but I don't think that's the solution to the problem. And it's a band-aid. And it works really well, and congrats to the engineers who did it. I think there's a story about how two different teams were trying to build it at the same time actually. But either way, I look at that and I say, "That's a good solution to the problem, but it's not the solution to the problem."And so I think serverless has stumbled in a number of ways to do that. I also feel EFS integration is super helpful, but I'm not sure that's the ultimate goal to share ... The best way to share state. But regardless, there are a whole bunch of things that we still need to do with serverless. And a whole bunch of things that we still need to add and we need to build, and we need to figure out better ways to do maybe. But I think in terms of something that doesn't get talked about a lot, is the developer experience of serverless. And that is, again I'm not trying to pitch anything here. But that's literally what I'm trying to work on right now in my current role, is just that that developer experience of serverless, even though there was this thoughtful approach to adding things, to try to check those things off the list, to say that it can't do this, so we're going to make it be able to do that by adding X, Y, and Z.As amazing as that has been, that has added layers and layers of complexity. And I'll go back way, way back to 1997 in my dorm room. CGI-bins, if people are not familiar with those, essentially just running on a Linux server, it was a way that it would essentially run a Perl script or other types of scripts. And it was essentially like you're running PHP or you're running Node, or you're running Ruby or whatever it was. So it would run a programming language for you, run a script and then serve that information back. And of course, you had to actually know ins and outs, inputs and outputs. It was more complex than it is now.But anyways, the point is that back then though, once you had the script written. All you had to do is ... There's a thing called FTP, which I'm sure some people don't even know what that is anymore. File transfer protocol, where you would basically say, take this file from my local machine and put it on this server, which is a remote machine. And you would do that. And the second you did that, magically it was updated and you had this thing happening. And I remember there were a lot of jokes way back in the early, probably 2017, 2018, that serverless was like the new CGI-bin or something like that. But more as a criticism of it, right? Or it's just CGI-bins reborn, whatever. And I actually liked that comparison. I felt, you know what? I remember the days where I just wrote code and I just put it to some other server where somebody was dealing with it, and I didn't even have to think about that stuff.We're a long way from that now. But that's how serverless felt to me, one of the first times that I started interacting with it. And I felt there was something there, that was something special about it. And I also felt the constraints of serverless, especially the idea of not having state. People rely on things because they're there. But when you don't have something and you're forced to think differently and to make a change or find a way to work around it. Sometimes workarounds, turn into best practices. And that's one of the things that I saw with serverless. Where people were figuring out pretty quickly, how to build applications without state. And then I think the problem is that you had a lot of people who came along, who were maybe big customers of AWS. I don't know.I'm not going to say that you might be influenced by large customers. I know lots of places are. That said, "We need this." And maybe your ... The will gets bent, right. Because you just... you can only fight gravity for so long. And so those are the kinds of things where I feel some of the stuff has been patchwork and those patchwork things haven't ruined serverless. It's still amazing. It's still awesome what you can do within the course. We're still really just focusing on fast here, with everything else that's built. With all the APIs and so forth and everything else that's serverless in the full-service ecosystem. There's still a lot of amazing things there. But I do feel we've become so complex with building serverless applications, that you can't ... the Hello World is super easy, but if you're trying to build an actual application, it's a whole new mindset.You've got to learn a whole bunch of new things. And not only that, but you have to learn the cloud. You have to learn all the details of the cloud, right? You need to know all these different things. You need to know cloud formation or serverless framework or SAM or something like that, in order to get the stuff into the cloud. You need to understand the infrastructure that you're working with. You may not need to manage it, but you still have to understand it. You need to know what its limitations are. You need to know how it connects. You need to know what the failover states are like.There's so many things that you need to know. And to me, that's a burden. And that's adding new types of undifferentiated heavy-lifting that shouldn't be there. And that's the conversation that I would like to have continuing to move forward is, how do you go back to a developer experience where you're saying you're taking away all this stuff. And again, to call out Werner again, he constantly says serverless is about writing code, but ask anybody who builds serverless applications. You're doing a lot more than writing code right now. And I would love to see us bring the conversation back to how do we get back there?Rebecca: Yeah. I think it kind of goes back to ... You and I have talked about this notion of an ode to simplicity. And it's sort of what you want to write into your ode, right? If we're going to have an ode to simplicity, how do we make sure that we keep the simplicity inside of the ode?Jeremy: Right.Rebecca:So I've got ... I don't know if you've seen these.Jeremy: I don't know.Rebecca: But before I get to some wrap-up questions more from the brainwaves of Jeremy Daly, I don't want to forget to call out some long-time listener questions. And they wrote in a via Twitter and they wanted to perhaps pick your brain on a few things.Jeremy: Okay.Rebecca: So I don't know if you're ready for this.Jeremy: A-M-A. A-M-A.Rebecca: I don't know if you've seen these. Yeah, these are going to put you in the ...Jeremy: A-M-A-M. Wait, A-M-A-A? Asked me almost anything? No, go ahead. Ask me anything.Rebecca: A-M-A-A. A-M-J. No. Anyway, we got it. Ask Jeremy almost anything.Jeremy: There you go.Rebecca: So there's just three to tackle for today's episode that I'm going to lob at you. One is from Ken Collins. "What will it take to get you back to a relational database of Lambda?"Jeremy: Ooh, I'm going to tell you right now. And without a doubt, Aurora Serverless v2. I played around with that right after re:Invent 2000. What was it? 20. Yeah. Just came out, right? I'm trying to remember what year it is at this point.Rebecca: Yes. Indeed.Jeremy: When that just ... Right when that came out. And I had spent a lot of time with Aurora Serverless v1, I guess if you want to call it that. I spent a lot of time with it. I used it on a couple of different projects. I had a lot of really good success with it. I had the same pains as everybody else did when it came to scaling and just the slowness of the scaling and then ... And some of the step-downs and some of those things. There were certainly problems with it. But v2 just the early, early preview version of v2 was ... It was just a marvel of engineering. And the way that it worked was just ... It was absolutely fascinating.And I know it's getting ready or it's getting close, I think, to being GA. And when that becomes GA, I think I will have a new outlook on whether or not I can fit RDS into my applications. I will say though. Okay. I will say, I don't think that transactional applications should be using relational databases though. One of the things that was sort of a nice thing about moving to serverless, speak
About Rob SutterRob Sutter, a Principal Developer Advocate at Fauna, has woven application development into his entire career, from time in the U.S. Army and U.S. Government to stints with the Big Four and Amazon Web Services. He has started his own company – twice – once providing consulting services and most recently with WorkFone, a software as a service startup that provided virtual digital identities to government clients. Rob loves to build in public with cloud architectures, Node.js or Go, and all things serverless!Twitter: @rts_robPersonal email: rob@fauna.com Personal website: robsutter.comFauna Homepage Learn more about Fauna Supported Languages and Frameworks Try Fauna for FreeThe Calvin PaperThis episode sponsored by CBT Nuggets: https://www.cbtnuggets.com/Watch this video on YouTube: https://youtu.be/CUx1KMJCbvkTranscriptJeremy: Hi, everyone. I'm Jeremy Daly, and this is Serverless Chats. Today, I'm joined by Rob Sutter. Hey, Rob. Thanks for joining me.Rob: Hey, Jeremy. Thanks for having me.Jeremy: So you are now the or a Principal Developer Advocate at Fauna. So I'd love it if you could tell the listeners a little bit about your background and what Fauna is all about.Rob: Right. So as you've said, I'm a DA at Fauna. I've been a serverless user in production since 2017, started the Serverless User Group in Dubai. So that's how I got into serverless in general. Previously, I was a DA on the Serverless Team at AWS, and I've been a SaaS startup co-founder, a government employee, an IT auditor, and like a lot of serverless people I find, I have a lot of Ops in my background, which is why I don't want to do it anymore. There's a lot of us that end up here that way, I think. Fauna is the data API for modern applications. So it's a database that you access as an API just as you would access Stripe for payments, Twilio for messaging. You just put your data into Fauna and access it that way. It's flexible, serverless. It's transactional. So it's a distributed database with asset transactions, and again, it's as simple as accessing any other API that you're already accessing as a developer so that you can simplify your code and ship faster.Jeremy: Awesome. All right. Well, so I want to talk more about Fauna, but I want to talk about it actually in a broader ... I think in the broader ecosystem of what's happening in the cloud right now, and we hear this term "multicloud" all the time. By the way, I'm super excited to have you on. I wanted to have you on for the longest time, and then just schedules, and it's like ...Rob: Yeah.Jeremy: You know how it is, but anyways.Rob: Thank you.Jeremy: No. But seriously, I'm super excited because your tweets, and everything that you've written, and the things that you were doing at AWS and things like that I think just all reinforced this idea that we are living in this multicloud world, right, and that when people think of multicloud ... and this is something I try to be very clear on. Multicloud is not cloud-agnostic, right?Rob: Right.Jeremy: It's a very different thing, right? We're not talking about running the same work load in parallel on multiple service providers or whatever.Rob: Right.Jeremy: We're talking about this idea of using the best services that are available to you across the spectrum of providers, whether those are cloud service providers, whether those are SaaS companies, or even to some degree, some open-source projects that are out there that make up this strategy. So let's start there right from the beginning. Just give me your thoughts on this idea of what multicloud is.Rob: Right. Well, it's sort of a dirty word today, and people like to rail against it. I think rightly so because it's that multicloud 1.0, the idea of, as you said, cloud-agnostic that "write once, run everywhere." All that is, is a race to the bottom, right? It's the lowest common denominator. It's, "What do I have available on every cloud service provider? And then let me write for that as a risk management strategy." That's a cost center when you want to put it in business terms.Jeremy: Right.Rob: Right? You're not generating any value there. You're managing risk by investing against that. In contrast, what you and I are talking about today is this idea of, "Let me use best in class everywhere," and that's a value generation strategy. This cloud service provider offers something that this team understands, and wants to build with, and creates value for the customer more quickly. So they're going to write on that cloud service provider. This team over here has different needs, different customers. Let them write over there. Quite frankly, a lot of this is already happening today at medium businesses and enterprises. It's just not called multicloud, right?Jeremy: Right.Rob: So it's this bottom-up approach that individual teams are consuming according to their needs to create the greatest value for customers, and that's what I like to see, and that's what I like to promote.Jeremy: Yeah, yeah. I love that idea of bottom-up because I think that is absolutely true, and I don't think you've seen this as aggressively as you have in the last probably five years as more SaaS companies have become or SaaS has become a household name. I mean, probably 10 years ago, I think Salesforce was around, and some of these other things were around, right?Rob: Yeah.Jeremy: But they just weren't ... They weren't the household names that they are now. Now, you watch any sport, any professional sport, and you see advertisements for all these SaaS companies now because that seems to be the modern economy. But the idea of the bottom-up approach, that is something where you basically give a developer or maybe you don't give them, but the developer takes the liberties, I would say, to maybe try and experiment with something new without having to do years of research, go through procurement, get approval to use some platform. Even companies trying to move to AWS, or on to Azure, or something like that, they have to go through hoops. Basically, jump through hoops in order to get them there. So this idea of the bottom-up approach, the developers are the ones who are experimenting. Very low-risk experiments, by the way, with some of these other services. That approach, that seems like the right marketing approach for companies that are building these services, right?Rob: Yeah. It seems like a powerful approach for them. Maybe not necessarily the only one, but it is a good one. I mean, there's a historical lesson here as well, right? I want to come back to your point about the developers after, but I think of this as shadow cloud. Right? You saw this with the early days of SaaS where people would go out and sign up for accounts for their business and use them. They weren't necessarily regulated, but we saw even before that with shadow IT, right, where people were bringing their own software in?Jeremy: Right.Rob: So for enterprises that are afraid of this that are heavily risk-focused or control-focused top-down, I would say don't be so afraid because there's an entire set of lessons you can learn about this as you bring it, as you come forward to it. Then, with the developers, I think it's even more powerful than the way you put it because a lot of times, it's not an experiment. I mean, you've seen the same things on Twitter I've seen, the great tech turnover of 2021, right? That's normal for tech. There's such a turnover that a lot of times, people are coming in already having the skills that they know will enhance delivery and add customer value more quickly. So it's not even an experiment. They already have the evidence, and they're able to get their team skilled up and building quickly. If you hire someone who's coming from an AWS shop, you hire someone who's coming from an Azure shop on to two different teams, they're likely going to evolve that excellence or that capability independently, and I don't necessarily think there's a reason to stop that as long as you have the right controls around it.Jeremy: Right. I mean, and you mentioned controls, and I think that if I'm the CTO of some company or whatever, or I'm the CIO because we're dealing in a super enterprise-y world, that you have developers that are starting to use tools ... Maybe not Stripe, but maybe like a Twilio or maybe they're using, I don't know, ChaosSearch or something, something where data that is from within their corporate walls are going out somewhere or being stored somewhere else, like the security risk around that. I mean, there's something there though, right?Rob: Yeah, there absolutely is. I think it's incumbent on the organizations to understand what's going on and adapt. I think it's also imcu,bent on the cloud service providers to understand those organizational concerns and evolve their product to address them, right?Jeremy: Right.Rob: This is one thing. My classic example of this is data exfiltration in a Lambda function. Some companies get ... I want to be able to inspect every packet that leaves, and they have that hard requirement for reasons, right?Jeremy: Right.Rob: You can't argue with them that they're right or wrong. They made that decision as a company. But then, they have to understand the impact of that is, "Okay. Well, every single Lambda function that you ever create is going to run inside of VPC or is going to run connected to a VPC." Now, you have the added complexity of managing a VPC, managing your firewall rules, your NACLs, your security groups. All of this stuff that ... Maybe you still have to do it. Maybe it really is a requirement. But if you examine your requirements from a business perspective and say, "Okay. There's another way we can address this with tightly-scoped IAM permissions that only allow me to read certain records or from certain tables, or access certain keys, or whatever." Then, we assume all that traffic goes out and that's okay. Then, you get to throw all of that complexity away and get back to delivering value more quickly. So they have to meet together, right? They have to meet.Jeremy: Right.Rob: This led to a lot of the work that AWS did with VPC networking for Lambda functions or removing the cold start because a lot ... Those enterprises weren't ready to let go of that requirement, and AWS can't tell them, "You're wrong." It's their business. It's their requirement. So AWS built that for them to reduce the cold start so that Lambda became a viable platform for them to build against.Jeremy: Right, and so if you're a developer and you're looking at some solution because ... By the way, I mean, like you said, choosing the best of breed. There are just a lot of good services out there. There are thousands and thousands of SaaS companies, and I think ... I don't know if we made this point, but I certainly consider SaaS companies themselves to be part of the cloud. I would think you would probably agree with that, right?Rob: Yeah.Jeremy: It might as well be cloud providers themselves. Most of them run on top of the cloud providers anyways, but they found ...Rob: But they don't have to, and that's interesting to me and another truth that you could be consuming services from somebody else's data center and that's still multicloud.Jeremy: Right, right. So, anyway. So my thought here or I guess the question I have is if you're a developer and you're trying to choose something best in breed, right? Whatever that is. Let's say I'm trying to send text messages, and I just think Twilio is ... It's got all the features that I need. I want to go with Twilio. If you're a developer, what are the things that you need to look for in some of these companies that maybe don't have ... I mean, I would say Twilio does, but like don't necessarily have the trust or the years of experience or I guess years under their belts of providing these services, and keeping data secure, and things like that. What's the advice that you give to developers looking to choose something like that to be aware of?Rob: To developers in particular I think is a different answer ...Jeremy: Well, I mean, yeah. Well, answer it both ways then.Rob: Yeah, because there's the builder and the buyer.Jeremy: Right.Rob: Right?Jeremy: Right.Rob: Whoever the buyer is, and a lot of times, that could just be the software development manager who's the buyer, and they still would approach it different ways. I think the developer is first going to be concerned with, "Does it solve my problem?" Right? "Overall, does it allow me to ship faster?" The next thing has to be stability. You have to expect that this company will be around, which means there is a certain level of evidence that you need of, "Okay. This company has been around and has serviced," and that's a bit of a chicken and an egg problem.Jeremy: Right.Rob: I think the developer is going to be a lot less concerned with that and more concerned with the immediacy of the problem that they're facing. The buyer, whether that's a manager, or CIO, or anywhere in between, is going to need to be concerned with other things according to their size, right? You even get the weird multicloud corner cases of, "Well, we're a major supplier of Walmart, and this tool only runs on a certain cloud service provider that they don't want us to use. So we're not going to use it." Again, that's a business decision, like would I build my software that way? No, but I'm not subject to that constraint. So that means nothing in that equation.Jeremy: Right. So you mentioned a little bit earlier this idea of bringing people in from different organizations like somebody comes in and they can pick up where somebody else left off. One of the things that I've noticed quite a bit in some of the companies that I've worked with is that they like to build custom tools. They build custom tools to solve a job, right? That's great. But as soon as Fred or Sarah leave, right, then all of a sudden, it's like, "Well, who takes over this project?" That's one of the things where I mentioned ... I said "experiments," and I said "low-risk." I think something that's probably more low-risk than building your own thing is choosing an API or a service that solves your problem because then, there's likely someone else who knows that API or that service that can come in, and can replace it, and then can have that seamless transition.And as you said, with all the turnover that's been happening lately, it's probably a good thing if you have some backup, and even if you don't necessarily have that person, if you have a custom system built in-house, there is no one that can support that. But if you have a custom ... or if you have a system you've used, you're interfacing with Twilio, or Stripe, or whatever it is, you can find a lot of developers who could come in even as consultants and continue to maintain and solve your problems for you.Rob: Yeah, and it's not just those external providers. It's the internal tooling as well.Jeremy: Right.Rob: Right?Jeremy: Right.Rob: We're guilty of this in my company. We wrote a lot of stuff. Everybody is, right, like you like to do it?Jeremy: Right.Rob: It's a problem that you recognized. It feels good to solve it. It's a quick win, and it's almost always the wrong answer. But when you get into things like ... a lot of cases it doesn't matter what specific tool you use. 10 years ago, if you had chosen Puppet, or Chef, or Ansible, it wouldn't be as important which one as the fact that you chose one of those so that you could then go out and find someone who knew it. Today, of course, we've got Pulumi, Terraform, and all these other things that you could choose from, and it's just better than writing a bunch of Bash scripts to tile the stuff together. I believe Bash should more or less be banned in the cloud, but that's another ... That's my hot take for another time. Come at me on Twitter if you don't like that one.Jeremy: So, yeah. So I think just bringing up this idea of tooling is important because the other thing that you potentially run into is with the variety of tooling that's out there, and you mentioned the original IAC. I guess they would... Right? We call those like Ansible and those sort of things, right?Rob: Right.Jeremy: All of those things, the Chefs and the Puppets. Those were great because you could have repeatable deployments and things like that. I mean, there's still work to be done there, but that was great because you made the choice to not building something yourself, right?Rob: Right.Jeremy: Something that somebody else could jump in on. But now with Terraform and with ... You mentioned Pulumi. We've got CloudFormation and even Microsoft has their own ... I think it's called ARM or something like that that is infrastructure as code. We've got the Serverless Framework. We've got SAM. We've got Begin. You've got ... or Architect, right? You've got all of these choices, and I think what happens too is that if teams don't necessarily ... If they don't rally around a tool, then you end up with a bunch of people using a bunch of different tools. Maybe not all these tools are going to be compatible, but I've seen really interesting mixes of people using Terraform, and CloudFormation, and SAM, and Serverless Framework, like binding it all together, and I think that just becomes ... I think that becomes a huge mess.Rob: It does, and I get back to my favorite quote about complexity, right? "Simplicity before complexity is worthless. Simplicity beyond complexity is priceless." I find it hard to get to one tool that's like artificial, premature optimization, fake simplicity.Jeremy: Yeah.Rob: If you force yourself into one tool all the time, then you're going to find it doing what it wasn't built to do. A good example of this, you talked about Terraform and the Serverless Framework. My opinion, they weren't great together, but your Terraform comes for your persistent infrastructure, and your Serverless Framework comes in and consumes the outputs of those Terraform stacks, but then builds the constantly churning infrastructure pieces of it. Right? There's a blast radius issue there as well where you can't take down your database, or S3 bucket, or all of this from a bad deploy when all of that is done in Terraform either by your team, or by another team, or by another process. Right? So there's a certain irreducible complexity that we get to, but you don't want to have duplication of effort with multiple tools, right?Jeremy: Right.Rob: You don't want to use CloudFormation to manage your persistent data over here and Terraform to manage your persistent data over here because then you're not ... That's like that agnostic model where you're not benefiting from the excellent features in each. You're only using whatever is common between them.Jeremy: Right, right, and I totally agree with you. I do like the idea of consuming. I mean, I have been using AWS for a very, very long time like 2007, 2008.Rob: Yeah, same. Oh, yeah.Jeremy: Right when EC2 instances were a thing. I guess 2008. But the biggest thing for me looking at using Terraform or something like that, I always felt like keeping it in, keeping it in the family. That's the wrong way to say it, but like using CloudFormation made a lot of sense, right, because I knew that CloudFormation ... or I thought I knew that CloudFormation would always support the services that needed to be built, and that was one of my big complaints about it. It was like you had this delay between ... They would release some service, and you had to either do it through the CLI or through the console. But then, CloudFormation support came months later. The problem that you have with some of that was then again other tools that were generating CloudFormation, like a Serverless Framework, that they would have to wait to get CloudFormation support before they could support it, and that would be another delay or they'd have to build something custom, which is not always the cleanest way to do it.Rob: Right.Jeremy: So anyways, I've always felt like the CloudFormation route was great if you could get to that CloudFormation, but things have happened with CDK. We didn't even mention CDK, but CDK, and Pulumi, and Terraform, and all of these other things, they've all provided these different ways to do things. But the thing that I always thought was funny was, and this is ... and maybe you have some insight into this if you can share it, but with SAM, for example, SAM wasn't extensible, right? You would just run into issues where you're like, "Oh, I can't do that with SAM." Whereas the Serverless Framework had this really great third-party plug-in system that allowed you to do some of these other things. Now, granted not all third-party plug-ins were super stable and were the best way to do something, right, because they'd either interact with APIs directly or whatever, but at least it gave you ... It unblocked you. Whereas I felt like with SAM and even CloudFormation when it didn't support something would block you.Rob: Yeah. Yeah, and those are just two different implementation philosophies from two different companies at two different stages of their existence, right? Like AWS ... and let's separate the reality from the theory here. The theory is that a large company can exert control over release cycles and limit what it delivers, but deliver it with a bar of excellence. A small company can open things up, and it depends on its community members for contributions to solve problems. It's very much like this is the cathedral and the Bazaar of cloud tooling, right?AWS has that CloudFormation architecture that they're working around with its own goals and approach, the one way to do it. Serverless Framework is, "Look, you need to ... You want to set up a stall here and insert IAM policies per function. Set up a stall. It will be great. Maybe people come and maybe they don't," and the system inherently sorts or bubbles up the value, right? So you see things like the Step Functions plug-in for Serverless Framework. It was one of the early ones that became very popular very quickly, whereas Step Functions supporting SAM trailed, but eventually came in. I think that team, by the way, deserves a lot of credit for really being focused on developers, but that's not the point of the difference between the two.A small young company like Serverless Framework that is moving very quickly can't have that cathedral approach to it, and both are valid, right? They're both just different strategies and good for the marketplace, quite frankly. I have my preferred approach, which is not about AWS or SAM vs Serverless Framework. It's the extensibility of plug-in frameworks to me are a key component of tooling that adapts as quickly as the clouds change, and you see this. Like Terraform was the first place that I really learned about plug-ins, and their plug-in framework is fantastic, the way they do providers. Serverless Framework as well is another good example, but you can't know how developers are going to build with your services. You just can't.You do customer development. You talk to them ahead of time. You get all this research. You talk to a thousand customers, and then you release it to 14 million customers, right? You're never going to guess, so let them. Let them build it, and if people ... They put the work in. People find there's value in it. Sometimes you can bring it in. Sometimes you leave it up to the community to maintain, but you just ... You have to be willing to accept that customers are going to use your product in different ways than you envisioned, and that's a good thing because it means customers are using your product.Jeremy: Right, right. Yeah. So I mean, from your perspective though ... because let's talk about SAM for a minute because I was excited when SAM came out. I was thinking to myself. I'm like, "All right. A simplified tooling that is focused on serverless. Right? Like gives me all the things that I think I'm going to need." And then I did ... from a developer experience standpoint, and let's call out the elephant in the room. AWS and developer experience are not always the same. They don't always give you that developer experience that you would want. They give you tons of tools, right, but they don't always give you that ...Rob: Funny enough, you can spell "developer experience" without AWS.Jeremy: Right. So I mean, that's my ... I was disappointed when I started using SAM, and I immediately reverted back to the Serverless Framework. Not because I thought that it wasn't good or that it wasn't well-thought-out. Like you said, there was a level of excellence there, which certainly you cannot diminish, It just didn't do the things I needed it to do, and I'm just curious if that was a consistent feedback that you got as being someone on the dev advocate team there. Was that something that you felt as well?Rob: I need to give two answers to this to be fair, to be honest. That was something that I felt as well. I never got as comfortable with SAM as I am with the Serverless Framework, but there's another side to this coin, and that's that enterprise uptake of SAM CLI has been really strong.Jeremy: Right.Rob: Enterprise it, it does what they need it to do, and it addresses their concerns, and they liked getting tooling from AWS. It just goes back to there being a place for both, right?Jeremy: Right. Rob: Enterprises are much more likely to build cathedrals. They want that top-down, "Okay, everybody. This is how you define something. In fact, we've created a module for you. Consume it here. Thou shalt not write new S3 to web server configuration in your SAM templates. Thou shalt consume this." That's not wrong, and the usage numbers don't lie with SAM. It's got a lot of fans, and it's got a lot of uptake, but that's an entirely different answer from how I feel about it. I think it also goes back to I'm not running an enterprise. I've never run an enterprise. The biggest I've got in terms of responsibility is at best a small company, right? So I think it's natural for me to feel that way when I try to use a tool that has such popularity amongst enterprise. Now, of course, you have the switch, right? You have enterprises using Serverless Framework, and you have small builders using SAM. But in general, I think the success there was with the enterprise, and it's a validation of their strategy.Jeremy: Right, right. So let's talk about enterprises for a second because this is where we look at tools like the CDK and SAM, Serverless Framework, things like that. You look at all those different tools, and like you said, there's adoption across some of those. But at the end of the day, most of those tools are compiling down to a CloudFormation or they're compiling down to ... What's it called? The Azure Resource Manager Language or whatever the heck it is, right?Rob: ARM templates.Jeremy: ARM templates. What's the value now in CloudFormation and those sort of things that the final product that you get to ... I mean, certainly, it's so much easier to build those using these frameworks, but do we need CloudFormation in those things anymore? Do we need to know those? Does an individual developer need to be able to understand those, or can they just basically take a step back and say, "Look, CDK does it for me," or, "Pulumi does it for me. So why do I need to know what's baked into those templates?"Rob: Yeah. So let's set Terraform aside and talk about it after because it's different. I think the choice of JSON and YAML as implementation languages for most of this tooling, most of this tooling is very ... It was a very effective choice because you don't necessarily have to know CloudFormation to look at a template and define what it's doing.Jeremy: Right.Rob: Right? You don't have to understand transforms. You don't have to understand parameter replacement and all of this stuff to look at the final transformed template in CloudFormation in the console and get a very quick reasoning about what's happening. That's good. Do I think there's value in learning to create multi-thousand-line CloudFormation templates by hand? I don't. It's the assembly language of the cloud, right?Jeremy: Right.Rob: It's there when you need it, and just like with procedural languages, you might want to look underneath at the instructions, how it unrolled certain loops, how it decided not to unroll others so that you can make changes at the next level. But I think that's rare, and that's optimization. In terms of getting things done and getting things shipped and delivered, to start, I wouldn't start with plain CloudFormation for any of these, especially of anything for any meaningful production size. That's not a criticism of CloudFormation. It's just like you said. It's all these other tooling is there to help us generate what we want consistently.The other benefit of it is once you have that underlying lingua franca of the cloud, you can build visualization, and debugging, and monitoring, and like ... I mean, all of these other evaluatory forensic. "Evaluatory?" Is that a word? It's a word now. You heard it here first on this podcast. Like forensic, cloud forensic type tooling that lets you see what's going on because it is a universal language among all of the tools.Jeremy: Yeah, and I want to get back to Terraform because I know you mentioned that, but I also want to be clear. I don't suggest you write CloudFormation. I think it is horribly verbose, but probably needs to be, right?Rob: Yeah.Jeremy: It probably needs to have that level of fidelity there or that just has all that descriptive information. Yeah. I would not suggest. I'm with you, don't suggest that people choose that as their way to go. I'm just wondering if it's one of those things where we don't need to be able to look at ones and zeroes anymore, and understand what they do, right?Rob: Right.Jeremy: We've got higher-level constructs that do that for us. I wouldn't quite put ... I get the assembly language comparison. I think that's a good comparison, but it's just that if you are an enterprise, right, is that ... Do you trust? Do you trust something like CDK to do everything you need it to do and make sure that it's covering all its bases because, again, you're writing layers of abstraction on top of a layer of abstraction that then abstracts it even more. So yeah, I'm just wondering. You had mentioned forensic tools. I think there's value there in being able to understand exactly what gets put into the cloud.Rob: Yeah, and I'd agree with that. It takes 15 seconds to run into the limit of my knowledge on CDK, by the way. But that knowledge includes the fact that CDK Synth is there, which generates the CloudFormation template for you, and that's actually the thing, which is uploaded to the CloudFormation service and executed. You'd have to bring in somebody like Richard Boyd or someone to talk about the guard rails that are there around it. I know they exist. I don't know what they are. It's wildly popular, and adoption is through the roof. So again, whether I philosophically think it's a good idea or not is irrelevant. Developers want it and want to build with it, right?Jeremy: Yeah.Rob: It's a Bazaar-type tool where they give you some basic constructs, and you can write your own constructs around it and get whatever you need. But ultimately, that comes back to CloudFormation, which is then subject to all the controls that your organization puts around CloudFormation, so it is ... There's value there. It can't be denied.Jeremy: Right. No, and the thing that I like about the CDK is the idea of being able to create those constructs because I think, especially from a ... What's the right word? Compliance standpoint or something like that, that you can write in these constructs that you say, "You need to use these constructs when you deploy a microservice or you deploy this," or whatever it is, and then you have those guard rails as you mentioned or whatever, but those ... All of those checkboxes are ticked because you can put that all into one construct. So I totally think that's great. All right. So let's talk about Terraform.Rob: Yeah, so there's ... First, it's a completely different model, right?Jeremy: Right.Rob: This is an interesting discussion to have because it's API calls. You write your provider, whatever your infrastructure is, and anything that can be an API call can now be a Terraform declarative resource. So it's that mapping between declarative and imperative that I find fascinating. Well, also building the dependency graph for you. So it handles all of those aspects of it, which is a really powerful tool. The thing that they did so well ... Terraform is equally verbose as CloudFormation. You've got to configure all the same options. You get the same defaults, et cetera. It can be terribly verbose, but it's modular. Every Terraform file that you have in one directory is concatenated, and that is a huge distinction between how CloudFormation wants everything in one template, or well, you can refer to something in an S3 bucket, but that's not actually useful to me as a developer.Jeremy: Right, right.Rob: I can't mount an S3 bucket as a drive on my workstation and compose all of these independent files at once and do them that way. Sidebar here. Maybe I can. Maybe it supports that, and I haven't been able to discover it, right? Whereas Terraform by default, out of the box put everything in its own file according to function. It's very easy to look in your databases.tf and understand what's in there, look in your VPC.tf and understand what's in there, and not have to go through thousands of lines of code at once. Yes, we have find and replace. Yes, we have search, and you ... Anybody who's ever built any of this stuff knows that's not the same thing. It's not the same thing as being able to open a hundred lines in your text editor, and look at everything all at once, and gain an understanding of it, and then dive into the next level of detail a hundred lines at a time and understand that.Jeremy: Right. But now, just a question here, without... because the API thing, I love that idea, and actually, Serverless Components used an API thing to do it and bypass CloudFormation. Actually, I believe Architect originally was using APIs, and then switched to CloudFormation, but the question I have about that is, if you don't have a CloudFormation template, if you don't have that assembly language of the web, and that's not sitting in your CloudFormation tool built into the dashboard, you don't get the drift protection, right, or the detection, and you don't get ... You don't have that resource map necessarily up there, right?Rob: First, I don't think CloudFormation is the assembly language of the web. I think it's the assembly language of AWS.Jeremy: I'm sorry. Right. Yes. Yeah. Yeah.Rob: That leads into my point here, which is, "Okay. AWS gives you the CloudFormation dashboard, but what if you're now consuming things from Datadog, or from Fauna, or from other places that don't map this the same way?Jeremy: Right.Rob: Terraform actually does manage that. You can do a plan against your existing file, and it will go out and check the actual existing state of all of your resources, and compare them to what you've asked for declaratively, and show you what the changeset will be. If it's zero, there's no drift. If there is something, then there's either drift or you've added new functionality. Now, with Terraform Cloud, which I've only used at a basic level, I'm not sure how automatic that is or whether it provides that for you. If you're from HashiCorp and listening to this, I would love to learn more. Get in touch with me. Please tell me. But the tooling is there to do that, but it's there to do it across anything that can be treated as an API that has ... really just create and retrieve. You don't even necessarily need the update and delete functionality there.Jeremy: Right, right. Yeah, and I certainly ... I am a fan of Terraform and all of these services that make it easier for you to build clouds more easily, but let's talk about APIs because you mentioned anything with an API. Well, everything has APIs now, right? I mean, essentially, we are living in a ... I mentioned SaaS, but now we're sort of ... This whole idea of the API economy. So just overall, what are your thoughts on this idea of basically anything you want to do is available now via an API?Rob: It's not anything you want to do. It's everything you want to do short of fulfilling your customer's needs, short of solving your customer's specific problem is available as an API. That means that you get to choose best-in-class for everything, right? Your customer's need isn't, "I want to spend $25 on my credit card." Your customer's need is, "I need a book."Jeremy: Right.Rob: So it's not, "I want to store information about books in a database." It's, "I need a book." So everything and every step of the way there can now be consumed from an API. Again, it's like serverless in general, right? It allows you to focus purely or as close to purely as we can right now on generating customer value and addressing customer problems so that you can ship faster, and so that you have it as a competitive advantage. I can write a payment processing program. I know I can because I've done it back in 2004, and it was horrible, and it was awful. It wasn't a very good one, and it worked. It took your money, but this was like pre-PCIDSS.If I had to comply with all of those things, why would I do that? I'm not a credit card payment processor. Stripe is, and they have specialists in all of the areas related to the problem of, "I need to take and process payments." That's the customer problem that they're solving. The specialization of labor that comes along with the API economy is fantastic. Ops never went away. All the ops people work at the cloud service providers now.Jeremy: Right.Rob: Right? Audit never went away. All the auditors have disappeared from view and gone into internal roles in payments companies. All of this continues to happen where the specialists are taking their deep, deep knowledge and bringing it inside companies that specialize in that domain.Jeremy: Right, and I think the domain expertise value that you get from whatever it is, whether it's running a database company or whether it's running a payment company, the number of people that you would need to hire to have a level of specialization for what you're paying for two cents per transaction or whatever, $50 a month for some service, you couldn't even begin. The total cost of ownership on those things are ... It's not even a conversation you would want to have, but I also built a payment processing system, and I did have to pass PCI, which we did pass, but it was ...Rob: Oh, good for you.Jeremy: Let's put it this way. It was for a customer, and we lost money on that customer because we had to go through PCI compliance, but it was good. It was a good experience to have, and it's a good experience to have because now I know I never want to do it again.Rob: Yeah, yeah. Back to my earlier point on Ops and serverless.Jeremy: Right. Exactly.Rob: These things are hard, right?Jeremy: Right, right.Rob: Sorry.Jeremy: No, no. Go ahead.Rob: Not to interrupt, but these are all really hard problems that people with graduate degrees and post-graduate research who have ... They're 30 years old when they start working on the problem are solving. There's a supply question there as well, right? There's just not enough people, and so you and I can like ... Well, I'm not going to project this on to you. I can stumble through an implementation and check off the requirements just like I worked in an optical microscopy lab in college, and I could create computer programs that modeled those concepts, but I was not an optical microscopist. I was not a PhD-level generating understandings of these things, and all of these, they're just so hard. Why would you do that when customer problems are equally hard and this set is solved?Jeremy: Right, right.Rob: This set of problems over here is solved, and you can't differentiate yourself by solving it better, and you're not likely to solve it better either. But even if you did, it wouldn't matter. This set of problems are completely unsolved. Why not just assemble the pieces from best-in-class so that you can attack those problems yourself?Jeremy: Again, I think that makes a ton of sense. So speaking about expertise, let's talk about what you might have to pay say a database administrator. If you were to hire a database administrator to maintain all the databases for you and keep all that uptime, and maybe you have to hire six database administrators in order for them to ... Well, I'm thinking multi-region and all that kind of stuff. Maybe you have to hire a hundred, depending on what it is. I mean, I'm getting a little ahead of myself, but ... So if I can buy a service like Fauna, so tell me a little bit more about just how that works.Rob: Right. Well, I mean, six database engineers in the US, you're over a million dollars a year easily, right?Jeremy: Right.Rob: I don't know what the exact number is, but when you consider benefits, and total cost, and all of that, it's a million dollars a year for six database engineers. Then, there are some very difficult problems in especially distributed databases and database scaling that Fauna solves. A number of other products or services solve some of them. I'm biased, of course, but I happen to think Fauna solves all of them in a way that no other product does, but you're looking ... You mentioned distributed transactions. Fauna is built atop the Calvin paper, which came out of Yale. It's a very brief, but dense academic research paper. It's a PHC research paper, and it talks about a model for distributed transactions and databases. It's a layer, a serialization layer, that sits atop your database.So let's say you wanted to replicate something like Fauna. So not only do you need to get six database engineers who understand the underlying database, but you need to find engineers that understand this paper, understand the limitations of the theory in the paper, and how to overcome them in operations. In reality, what happens when you actually start running regions around the world, replicating transactions between those regions? Quite frankly, there's a level of sophistication there that most of the set of people who satisfy that criteria already work at Fauna. So there's not much of a supply there. Now, there are other database competitors that solve this problem in different ways, and most of the specialists already work at those companies as well, right? I'm not saying that they aren't equally competent database engineers. I'm just saying there's not a lot of them.Jeremy: Right.Rob: So if you're thing is to sell books at a certain scale like Amazon, then that makes sense to have them because you are a database creator as well. But if your thing is to sell books at some level below that, why would you compete for that talent rather than just consuming it?Jeremy: Right. Yeah, and I would say unless you're a horse with a horn on your head, it's probably not worth maintaining your own database and things like that. So let's talk a little bit more, though, about that. I guess just this idea of maybe a shortage of people, like if you're ... You're right. There's a limited number of resources, right? I'm sure there's brilliant database engineers all around the world, and they have the experience where, right, they could come in and they could probably really help you maintain your database. Even if you could afford six of them and you wanted to do that, I think the problem is it's got to be the interestingness of the problem. I don't think "interestingness" is a word either, but like if I'm a database engineer, wouldn't I want to be working on something like Fauna that I could help millions and millions of people as opposed to helping some trucking company maintain their internal database or something like that?Rob: Yeah, and I would hope so. I hope it's okay that I mention we're hiring. So come to Fauna.com and look at our roles database engineers.Jeremy: You just read that Calvin paper first. Go ahead.Rob: But read the Calvin paper first. I think it's only like 12 pages, and even just the first page is enough. I'm happy to talk about that at any length because I find it fascinating and it's public. It is an interesting problem and the ... It's the reification or the implementation of theory. It's bringing that theory to the real world and ... Okay. First off, the theory is brilliant. This is not to take away from it, but the theory is conceived inside someone's mind. They do some tests, they prove it, and there's a world of difference between that point, which is foundational, and deploying it to production where people are trusting their workloads on it around the world. You're actually replicating across multiple cloud providers, and you're actually replicating across multiple regions, and you're actually delivering on the promise of the paper.What's described in the paper is not what we run at Fauna other than as a kernel, as a nugget, right, as the starting point or the first principle. That I think is wildly interesting for that class of talent like you talked about, the really world-class engineers who want to do something that can't be done anywhere else. I think one thing that Fauna did smartly early was be a remote-first company, which means that they can take advantage of those world-class engineers and their thirst for innovation regardless of wherever Fauna finds them. So that's a big deal, right? Would you rather work on a world-class or global problem or would you rather work on a local problem? Now, look, we need people working on local problems too. It's not to disparage that, but if this is your wheelhouse, if innovation is the thing that you want to do, if you want to be doing things with databases that nobody else is doing, this is where you want to be. So I think there's a strong argument there for coming to work in a place like Fauna.Jeremy: Yeah, and I want to make sure I apologize to any database engineer working at a trucking company because I'm sure there are actually probably really interesting problems with logistics and things like that that they are solving. So maybe not the best example. Maybe. I don't know. I can't think of another example. I don't want to offend anybody who's chosen a more local problem because you're right. I mean, there are local problems that need to be solved, but I do think that there are people ... I mean, even someone like me. I want to work on a bigger problem. You know what I mean? I owned a web development company for 12 years, and I was solving other people's problems by building them a website or whatever, and it just got to a point where I'm like, "I'm not making enough of an impact here." You're not solving a big enough problem. You want to work on something more interesting.Rob: Yeah. Humans crave challenge, right? Challenge is a necessary precondition for growth, and at least most of us, we want to grow. We want to be better at whatever it is we're doing or just however we think of ourselves next year that we aren't today, and you can't do that with challenge. If you build other people's websites for 12 years, eventually, you get to a point where maybe you're too good at it. Maybe that's great from a business perspective, but it's not so great from a personal fulfillment perspective.Jeremy: Right.Rob: If it's, "Oh, look, another brochure website. Okay. Here you go. Oh, you need a contact form?" Again, it's not to disparage this. It's the fact that if you do anything for 12 years, sometimes mastery is stasis. Not always.Jeremy: Right, and I have nightmares of contact forms, of building contact forms, by the way, but...Rob: It makes sense. Yeah. You know what you should do is just put all of those directly into Fauna and don't worry about it.Jeremy: Easy enough. Easy enough.Rob: Yeah, but it's not necessarily stasis, but I think about craftsmen and people who actually make things with their hands, physical builders, and I think a lot of that ... Like if you're making furniture, you're a cabinet maker. I think a lot of that is every time, it's just a little bit wrong, right? Not wrong, but just a little bit off from your optimum no matter how long you do it, and so everything has a chance to evolve. That's there with software to a certain extent, but the problem is never changing.Jeremy: Right.Rob: So, yeah. I can see both sides of it, but for me, I ... You can see it when I was on serverless four years ago and now that I'm on a serverless database now. I like to be out at the edge, pushing that edge out for everyone who's coming behind. It can be challenging because sometimes there's just no way forward, and sometimes everybody is not ready to come with you. In a lot of ways, being early is the same as being wrong.Jeremy: Right. Well, I've been ...Rob: Not an original statement, but ...Jeremy: No, but I've been early on many things as well where like five years after we tried to do something, like then, all of a sudden, it was like this magical thing where everybody is doing it, but you mentioned the edge. That would be something ... or you said on the edge. I know you mean this way, but the edge in terms of the actual edge. That's going to be an interesting data problem to solve.Rob: Oh, that's a fascinating data problem, especially for us at Fauna. Yeah, compute, and Andy Jassy, when he was at AWS, talked about how compute was bifurcating, right? It's either moving all the way out to the edge or it's moving all the way into the cloud, and that's true. But I think at Fauna, we take that a step further, right? The edge part is true, and a lot of the work that we've done recently, announcements with CloudFlare workers. We're ready for that. We believe in it, and we like pushing that out as close to the user as possible. One thing that we do uniquely is we have this concept of user-defined functions, and anybody who's written T-SQL back in the day, who wrote store procedures is going to be familiar with this, but it's ... You bring that business logic and that code to your data. Not near your data, to your data.Jeremy: Right.Rob: So you bring the compute not just to the cloud where it still needs to pass through top-of-rack and all of this. You bring it literally on to the same instance as your data where these functions execute against them there. So you get not just the database, but you get a compute layer in there, and this helps for things like filtering for things like the equivalent of joins, stuff that just ... If you've got to load gigabytes of data and move it somewhere, compute against it, reduce it to something, and then store that back, the speed of light still matters. Even if it's the speed of light across a couple switches, it still matters, and so there are some really interesting things that you can begin to do as you pull more and more of that logic into your data layer, and you also protect that logic from other components of your application.So I like that because things like GraphQL that endpoints already speak and already understand, just send it over, and again, they don't care about the architectural, quite frankly, genius--I can say that because I didn't create it--the genius behind all of this stuff. They just care that, "Look, I send this request over and I get it back," and entire workflows, and complex processes, and everything are executing behind the scenes just so that the endpoints can send and retrieve what they need more effectively and more quickly. The edge is fascinating. The thing I regret the most about the edge is I have no hardware skills, right? So I can't make fun things to do fun things in my house. I have to buy them, but you can't do everything.Jeremy: Yeah. Well, no. I think you make a good point though about bringing the compute to the data side, and other people have said there's no ... Ben Kehoe has been talking about this for a while too where like it just makes sense. Run the compute where the data is, and then send that data somewhere else, right, because there's more things that can be done with data after that initial bit of compute. But certainly, like you said, filtering it down or getting the bits that are relevant and moving a small amount of data as opposed to a large amount of data I think is hugely important.Now, the other thing I just want to mention before I let you go or I want to talk about quickly is this idea of going back to the API economy aspect of things and buying versus building. If you think about what you've had to do at Fauna, and I know you're relatively recent there, but you know what they've done and the work that had to go in in order to build this distributed system. I mean, I think about most systems now, and I think like anything I'm going to build now, I got to think about scale, right?I don't necessarily have to build to scale right away, especially if I'm doing an MVP or something like that. But if I was going to build a service that did something, I need to think about multi-region, and I need to think about failover, and I need to think about potentially providing it at the edge, and all these other things. So you come down to this thing, and I will just use the database example. But even if you were say using like MySQL, or Postgres, or something like that, that's going to scale. That's going to scale pretty well to get to a certain point, and then you're going to have to start sharding, right? When data gets hard, it's time to shard, right? You just have to start sharding everything.Rob: Yeah.Jeremy: Essentially, what you end up doing is rebuilding DynamoDB, or trying to rebuild Fauna, or something like that. So just thinking about that, anything you're building ... Maybe you have some advice for developers who ... I know we've talked about this a little bit, but I just go back to this idea of like, if you think about how complex some of these SaaS companies and these services that are being built out right now, why would you ever want to take that complexity on yourself?Rob: Pride. Hubris. I mean, the correct answer is you wouldn't. You shouldn't.Jeremy: People do.Rob: Yeah, they do. I would beg and plead with them like, "Look, we did take a lot of that on. Fauna scales. You don't need to plan for sharding. You don't need to plan for global replication. All of these things are happening." I raise that as an example of understanding the customer's problem. The customer didn't want to think about, "Okay, past a thousand TPS, I need to create a new read replica. Past a million TPS, I need to have another region with active-active." The customer wanted to store some data and get that data, knowing that they had the ASA guarantees around it, right, and that's what the customer has.So get that good understanding of what your customer really wants. If you can buy that, then you don't have a product yet. This is even out of software development and into product ideation at startups, right? If you can go ... Your customer's problem isn't they can't send text messages programmatically. They can do that through Twilio. They can do that through Amazon. They can do that through a number of different services, right? Your customer's problem is something else. So really get a good understanding of it. This is where knowing a little ... Like Joe Emison loves to rage against senior developers for knowing not quite enough. This is where knowing like, "Oh, yeah, Postgres. You can just shard it." "Just," the worst word in computer science, right?Jeremy: Right.Rob: "You can just shard it." Okay. Now, we're back to those database engineers that you talked about, and your customer doesn't want to shard a database. Your customer wants to store and retrieve data.Jeremy: Right.Rob: So any time that you can really focus in, and I guess I really got this one, this customer obsession beaten into me from my time at AWS. Really focus in on what the customer is asking you to do or what the customer needs even if they don't know how to express it, and build for that.Jeremy: Right, right. Like the saying. I forgot who said it. Somebody from Harvard Business Review, but, "Your customers don't want a quarter-inch drill. They want a quarter-inch hole."Rob: Right, right.Jeremy: That's basically true. I mean, the complexity that goes behind the scenes are something that I think a vast majority of customers don't necessarily want, and you're right. If you focus on that product ideation thing, I think that's a big piece of that. All right. Well, anyway. So I have one more question for you just to ...Rob: Please.Jeremy: We've been talking for a while here. Hopefully, we haven't been boring people to death with our talk about APIs and stuff like that, but I would like to get a little bit academic here and go into that Calvin paper just a tiny bit because I think most people probably will not want to read it. Not because they don't want to, but because people are busy, right, and so they're listening to the podcast.Rob: Yeah.Jeremy: Just give us a quick summary of this because I think this is actually really fascinating and has benefits beyond just I think solving data problems.Rob: Yeah. So what I would say first. I actually have this paper on my desk at all times. I would say read Section 1. It's one page, front and back. So if you're interested in it, you don't have to read the whole paper. Read that, and then listeners to this podcast will probably understand when I say this. Previously, for distributed databases and distributed transactions, you had what was called a two-phase commit. The first was you'd go out to all of your replicas, and you say, "Hey, I need lock." When everybody comes back, and acknowledges, and says, "Okay. You have the lock," then you do your transaction, and then you replicate it, and then you say, "Hey, everybody. I'm done. Release the lock." So it's a two-phase commit. If something went wrong, you rolled it all the way back and you said, "Hey, everybody. Forget it."Calvin is event-sourcing for databases. So if I could distill the entire paper down into one concept, that's it. Right? Instead of saying, "Hey, everybody. Give me a lock, I'm going to do something," you say, "Hey, everybody. Here's what we're going to do." It's a deterministic application of the transaction so that you can ... You both create the lock and execute the transaction at the same time. So rather than having this outbound round trip, and then doing the thing in an outbound round trip, you have the outbound round trip, and you're done.They all apply it independently, and then it gets into how you structure the guarantees around that, which again is very similar to event-sourcing in that you use snapshotting or checkpointing. "So, hey. At this point, we all agree. So we can forget all of our old transactions, and we roll forward from here." If somebody leaves the cluster, they come back in at that checkpoint. They reapply all of the events that occurred prior to that. Those events are transactions. They'd get up to working speed, and then off they go. The paper I think uses Paxos. That's an implementation detail, but the really interesting thing about it is you're not having a double round trip.Jeremy: Yeah.Rob: Again, I love the idea of event-sourcing. I think Amazon EventBridge is the best service that they've released in the past couple years.Jeremy: Totally.Rob: If you understand all of that and are already building serverless applications that way, well, that's what we're doing, just event-sourcing for database. That's it. That's it.Jeremy: Just event-sourcing. It's easy. Simple. All right. All the words you never want to hear. Simple, easy, just. Right. Yeah. Perfect.Rob: Yeah, but we do the hard work, so you don't have to. You don't care about all of that. You want to write your data somewhere, and you want to retrieve your data from an API, and that's what Fauna gives you.Jeremy: Which I think is the main point here. So awesome. All right. Well, Rob, listen. This was great, and I'm super happy that I finally got you on the show. Congratulations for the new role at Fauna and on what's happening over there because it is pretty exciting.Rob: Thank you.Jeremy: I love companies that are innovating, right? It's not just another hosted database. You're actually building something here that is innovative, which is pretty amazing. So if people want to find out more about you, follow you on Twitter, or find out more about Fauna, how do they do that?Rob: Right. Twitter, rts_rob. Probably the easiest way, go to my website, robsutter.com, and you will link to me from there. From there, of course, you'll get to fauna.com and all of our resources there. Always open to answer questions on Twitter. Yeah. Oh, rob@fauna.com. If you're old-school like me and you prefer the email, there you go.Jeremy: All right. Awesome. Well, I will get all that into the show notes. Thanks again, Rob.Rob: Thank you, Jeremy. Thanks for having me.
About Daniel KimDaniel Kim (He/Him) is a Senior Developer Relations Engineer at New Relic and the founder of Bit Project, a 501(c)(3) nonprofit dedicated to making tech accessible to underserved communities. He wants to inspire generations of students in tech to be the best they can be through inclusive, accessible developer education. He is passionate about diversity & inclusion in tech, good food, and dad jokes.Twitter: @learnwdanielVolunteer with Bit Project: bitproject.org/volunteerLearn Serverless with Bit Project: bitproject.org/course/serverlessWatch this video on YouTube: https://youtu.be/oDdrbDXQG6wThis episode sponsored by, CBT Nuggets.Transcript:Jeremy: Hi, everyone. I'm Jeremy Daly and this is Serverless Chats. Today I'm chatting with Daniel Kim. Hey, Daniel. Thanks for joining me.Daniel: Hi, Jeremy. How's it going?Jeremy: It's going real ...Daniel: I'm glad to be here.Jeremy: Well, I'm glad that you're here. So, you are a Senior Developer Relations Engineer at New Relic, but you're also the founder of Bit Project. So, I would love it if you could tell the listeners a little bit about yourself and your background and what Bit Project is all about.Daniel: That sounds great, Jeremy. My name is Daniel. I'm a Senior Developer Relations Engineer at New Relic, which means I get to help the community and go find developers and help them become better developers. And I got into developer relations because I founded a school club and now it's a nonprofit, but it started as a school club, called Bit Project, where me and my friends gathered together to teach each other awesome web technologies. And yeah, that's how I got my start. And I am still running Bit Project as a nonprofit to help students around the world build and ship projects using awesome technologies and help them learn and become better developers.Jeremy: Right. And one of those awesome technologies is serverless. And that's what I want to talk to you about today because this is a really great program that you're running here that helps make Serverless more accessible to more people, which is what I'm all about, right? So, I absolutely love this. So, let's go back and talk a little bit about Bit Project and just get into how it got started. You mentioned it was a project you were doing with some college friends, but how did it go from that to what it is now?Daniel: Yeah. So, I started this, I think, late freshman year when I was still in school at UC Davis. I was not a computer science major, actually. I was an electrical engineering major, but as I got into technology and seeing all the possibilities of things you can build with cool tech, I was like, "I really need to get into web development because this is so awesome. I can make changes on the fly. I can see awesome things. I can build awesome things with my hands." Well, with my computer. So, yeah, I got a couple of friends together because I'm a very social person so I like to build and learn things together with my friends. So, I got a couple of them together. We rented a lecture hall and then we just taught each other everything we knew to each other. For example, I was super into Gatsby and React, so I was teaching my friends React. Other friends were super into backend development, so they were teaching me things like how to design APIs and how to connect a frontend to a backend, like really awesome things to each other.And it started like that until I decided to scale the program so I could help more and more of my fellow students. So, instead of doing four-person meetups, I would organize a workshop. And those workshops turned into sponsored workshops with funding, which meant a lot of free food, which meant more people, and it just ballooned into this awesome student organization where we always had the best food. We had free Boba, free pizza, and we would share with each other all these awesome technologies and tools that we learned how to work with using in our projects. So, that's how it started.Jeremy: Right. And then, so once you got this thing rolling, obviously you're seeing some success with it, then you get into developer relations?Daniel: Yeah, definitely. So, that's when I understood what I wanted to do with them for the rest of my life. I didn't want to be that production engineer on-call all the time. I wanted to be that engineer that helped other engineers become more successful and find the joy in programming. I love seeing when developers find that "aha moment" when they're learning something new and help them become better developers. And I found that out when I was teaching my friends how to program because I got more joy out of seeing other people succeed than me succeeding myself. So, I was like, "Developer relations is the path for me." So, that's why I directly entered developer relations right out of college, because I was like, "This is what I'm meant to do." Because one of my favorite things to do is figure out how to break down really complex ideas and concepts into more fun, easy-to-understand chunks so everyone can succeed and have a good time. That's my thing.Jeremy: No, I love that. I love that because I feel like, especially people who are maybe not traditional tech people or don't have a traditional tech background, sometimes it just takes a little bit of twisting of the presentation for them to really understand that. And I love that idea of just reaching out and trying to help more people because I'm on the total same page with you here. So, now you go and so you get into developer relations and you've got this Bit Project thing. And so is this something that you wanted to keep as a side project? What was the next evolution of that?Daniel: Yeah, definitely. So, I think Bit Project is an extension to the advocacy work I do at New Relic. Because at New Relic, my job is not to push New Relic the product. We have amazing product marketing managers and other folks who do that. My job is to make it easy for people to level up the community, like the people in the community to level up as developers and help the community. And one way I do that is through Bit Project. So, a lot of the work I do at New Relic mirrors or is parallel to the work I'm doing at Bit Project, where I help make complex ideas more accessible to developers. So, in a way, it's not more of a side project. It's like a parallel project of what I'm doing at New Relic, what I'm doing at Bit Project.Jeremy: Right. And so in terms of the things that you're teaching at Bit Project too because that's the other thing too. I think leveling up developers is one of those things where, I mean, if somebody wants to go learn HTML or CSS or one of those things, there's probably plenty of resources for them to go and do that. There's probably nine million YouTube tutorials out there, right?Daniel: Definitely.Jeremy: But for concepts like Serverless, right? And I mean even Serverless with Azure and AWS and some of these other things, these are newer things. I've actually interviewed quite a few candidates for a recent position that I'm trying to fill and not a lot of them are learning this stuff in college.Daniel: Definitely. Something that we really wanted to instill to our students was that this is not your average bootcamp or course. We're not promising any six-figure salary after our bootcamps. That's not what we're promising. What we're promising is the opportunity to learn a concept that is foreign to many developers, even seasoned developers, because it's a relatively new technology, and we teach you the tools we give you and teach you the ways to become successful. So, we won't teach you everything you need to know, but we will teach you how to find the things you need to know to become successful developers. So, we help establish a good foundation for developers to learn new things and then build things on their own.Jeremy: Right. And this is ...Daniel: That's the focus of our program.Jeremy: Yeah. And this is completely free, right?Daniel: It's completely free. We're run thanks to the generosity of our corporate sponsors. So, shout out to them. Yeah. So, it's completely free for all students. So, please go and apply if you're interested and you are a student.Jeremy: So, one of the major things that you focus on, and I know that you have different courses or different workshops that you're going through. And I know some of the other ones are a little bit earlier like the DevOps one. But you have a pretty robust serverless. I mean, that's the main thing, right? Teaching people to build serverless applications on Microsoft Azure. So, I'm curious, especially having somebody jump in from maybe a non-traditional tech background or no tech background at all, and also students of all ages, right? We're not just talking about high school or college kids here, that jumping into something like serverless, what makes serverless such a good, I guess, jumping in point for the types of candidates that you're looking for?Daniel: Yeah. This is actually a great question because I have this conversation a lot with my colleagues at New Relic because when seasoned engineers hear about serverless, they jump straight into the, "How is this scalable for my enterprise use case? How is this going to integrate with my 70,000 other microservices?" They get into those questions immediately. But if you really boil down what serverless is, it's basically running code without thinking about infrastructure. That's the crux of what serverless is. And if you think about it from that perspective and not worry about all the other technical hurdles into implementing it in scale, it becomes a lot easier to digest for students. And it becomes a really friendly medium to get started with coding a project because you just have to code a small JavaScript or Python function that you just deploy to the cloud.It just magically works. We try not to overwhelm students with all the infrastructure talk and more focus on the code that they're writing. And I was really inspired because one of my mentors for my career is Chloe Condon from Microsoft, and I remember her writing a lot of blogs around getting started with serverless. She built this fake boyfriend app with a Twilio and serverless. And I was like, "Hey, this is not that unapproachable for students to get started with serverless functions," because it was only maybe 40, 50 lines of code. It integrated multiple APIs. So, I was like, "This is the perfect medium," because it's relatively simple to understand the idea of just writing code and deploying it to a magical kingdom where the magical kingdom controls everything, you know?Jeremy: Right.Daniel: So, that's my inspiration for using serverless as a medium to teach people how the modern full-stack app works, if that makes sense.Jeremy: Yeah. No, I totally agree, and I use this quite a bit where I tell people when I was a kid when I first started programming in the late 1990s, everything was CGI bins, right? So, we were just uploading code using FTP, but it was seriously magical. Now, again, it wouldn't scale, right. But it was magical in terms of how that happened. But even if it didn't scale, the point where you can get to that, what do we call it? The "aha moment," right? Where you're like, "Oh, this is how that works," or, "Oh, I get it now." I think you just get there faster with serverless.Daniel: Exactly. I think that's one of the reasons I love serverless is that we have students spin up a serverless function day one of the camp. We don't wait until day three or day four to teach them how to build with serverless. We're like, "Hey, this is the environment that you're going to work in," and then we have them write their own serverless functions based on a boilerplate code that we have written already. So, we try to make the barrier to entry as low as possible, so students don't get intimidated by the word "serverless."Jeremy: Right. Right. Yeah. And I think also it's probably a good place to get people started thinking about just what the cloud is and how the cloud works in general.Daniel: Yeah. Definitely. Some of our students have never even heard of what an API is. So, we really take students from zero to understanding how different services work on the internet and how we can take advantage of services and other code that other people have written to write our own applications. Because a lot of students, especially junior developers, don't realize how little you have to code to actually get an app working. Because most likely there's someone in the world who's coded something that you're looking for to implement already. So, it's more like a jigsaw puzzle than trying to build something yourself.Jeremy: Right. It's that whole Lego concept, just sticking those building blocks together. So, you mentioned, though, some of your students they've never even heard of an API or they don't know what an API is. So, I'm just thinking from the perspective of an absolute beginner, how do you scope a project for an absolute beginner to get them to somewhere where they actually have something that gets them to that "aha moment," makes them feel like, "Hey, I've actually done something interesting here," but not overwhelm them with things like open API spec 3.0? You know what I mean? All this kind of stuff.Daniel: Yeah. I think one of the most important things when you're designing a curriculum is understanding the pain points of the student. So, this curriculum was designed by a bunch of students. I'm not the only one that wrote this curriculum. This curriculum had a lot of contributors from all over the world who are high school and college students. We knew that we didn't want to go too in-depth from the beginning because we have a lot of students from non-traditional backgrounds that don't have a lot of previous knowledge. So, what we try to do is set up guide rails and have boilerplates and things like that to ensure that they're successful. Because the worst thing you can do when you're working with a junior developer is just overwhelm them with information and have really, really hard assignments that lead to frustration.So, we try to make that path really, really easy. But instead, what we try to do is have stretch goals or have extra-curricular assignments where they can apply what they have learned. So, if they're a little bit more advanced and they're getting the concepts and they're understanding at a deeper level how things work, they're able to practice and hone those skills. So, what we do is we try to work with our mentors, our fabulous mentors who are engineers in the industry, to help students code those stretch goals and help them understand at a deeper level if they have the capacity to do so. So, we try to customize the experience for every student based on their previous experience.Jeremy: Right. And I think another important thing is setting expectations with the students as well. I mean, you mentioned earlier that this isn't a bootcamp that you're guaranteeing $100,000 salaries when you walk out. I think that that is something, to me, where I think that level of honesty and truth is really important because I think there are a lot of these eight to 12-week boot camps that over-promise. And I don't know. I mean, I've been doing this for 24 years, and I don't feel like I'm an expert on anything and I've been doing it for a very long time. So, eight weeks doesn't get you to be an expert in anything, but if you can become productive, that's pretty exciting.Daniel: Yeah. Our goal is not to get you a six-figure job. Because that would be nice, but I feel like that's straight-up lying. Because I don't know all the students before they start personally, and I can't promise them a six-figure job. That's just ridiculous to me. But what I can promise is that you will ship an app. That's what I can promise. And I feel like when you're shipping an app and you're writing code to build an actual app that will work, you learn so much. You learn how to plan for a software project, how to ask questions, how to look for things on Google. So, that's the things we promise is the experiences, not necessarily the shiny six-figure salary. Even though I wish I could promise that. That would be amazing.Jeremy: Right. Yeah. And I think probably the greatest skill you can teach anyone as a developer is how to Google and how to use stack overflow.Daniel: Definitely.Jeremy: All right. So, you mentioned something about customizing, trying to make sure that the curriculum is adapted for the particular student. So, tell me a little bit more about that because that sounds really interesting.Daniel: Yeah. So, one of the reasons that I find our content and curriculum really special is that it's open-ended. It's not like they're programming exactly what every other student programs. So, for the first four weeks, we teach how serverless functions work, how to set up your development environment, everything through pair programming. So students, instead of having lectures, we have senior engineers actually pair program with junior developers, younger students, or students with less experience, so they can ask questions in the chat to learn as they are doing it with a mentor. And during the last four weeks, we actually have the students apply the things they've learned in the first four weeks through pair programming into their own applications. So, we teach them, "Hey, by week one, you should have this part of your project done. Week two, you should have this part of your project done." But we don't really specify exactly what their project should be. So, at the end of the camp, every single student has a different project they have built based on the interests they have, which has been really awesome to see.Jeremy: Well, that's also great, too. It's one of those things where, when your English teacher forces you to read Romeo and Juliet and you're not interested in Shakespeare, it's really hard to excel in that sometimes. So, letting people pick and choose where they go, I think is, again, is just a really good motivator and an excellent way. And again, just not over-promising. Just teaching people some of the basics, and then you have something to work on, something to iterate on, something to go a little bit deeper on and start understanding. If you just know that there are headers when you call an API, then you can maybe start doing some research as to what the other headers are and what I can do with those. And I think that level of curiosity would be really great for somebody and again, would excite them and get them going down that path.Daniel: Definitely. And I think the best way that students learn is actually trying to implement the things they have in their head. Because some of these projects that students have built for their capstone projects have been very, very complicated using serverless functions. One of the students actually built a Dropbox clone using serverless functions, and it was actually amazing. I couldn't do that, honestly, but she built it in three weeks, I think. So, I think it's the creativity that really, really I find impressive and amazing every cohort we have, is the variance in projects that we have for every single student.Jeremy: Right. Yeah. So, what are some of those projects? Because I think that'd be really interesting. Just give some examples of the sort of things you can build, right? Because the "Hello, World" tutorials are out there. People can go and probably cobble something together, but it sounds to me like the students that you have are building something that is actually, maybe not-production ready, but it is something that solves a real problem and it's a real solution to that. So, what are some of those different projects?Daniel: Definitely. One of our students, Bo, built an IoT heart rate monitor that connected to a serverless function. So, every time that the heartbeat went over a certain number, it would send a Twilio text message to the family members of whoever was subscribed to that particular heartbeat monitor. And he built that because his grandfather was suffering with some heart issues, and it was really important to his family that they knew that he was doing okay. They got alerted every time his heartbeat got too fast. So, he actually built this whole thing using a Raspberry PI. He had a heartbeat sensor that was attached to a bracelet and it actually connected to a Serverless function. And he demoed it and he actually did jumping jacks to get his heart rate up. It actually worked, which was super awesome. We got to demo during our demo day.Another student built a face mask detector. So, she would have someone take a picture on her website of someone wearing a face mask. And it would tell, using some cognitive APIs, if someone was wearing a mask or not. And she designed that because she knew a lot of local businesses who didn't have staff directly in the entrance of the business, and she wanted to make sure there was a solution where the owners could make sure someone was wearing a mask before they entered the establishment. So, that was a really cool project. There was another student who was actually in his forties who was a mining engineer who wanted to make a career change. So, he actually built this awesome serverless function that sent out earthquake notifications based on the data from the government, which was really, really awesome as well. So, there's so many projects that students have built with serverless functions, ranging everything from IoT to big data and so many things that I've learned actually, by watching all these projects being built.Jeremy: Yeah. That's amazing. And actually I think that something that's really interesting, you mentioned the gentleman with the career change, is that developers, I think, especially career developers, I mean, we get narrowly focused on solving software problems, right?Daniel: Exactly.Jeremy: And we maybe don't think so much about some of these other real-world problems that exist. So, that idea of taking your existing life experiences and problems that you've been dealing with and have a solution maybe in your head, but you can't express that. That's really frustrating, right? So, being able to do something like this and being able to express that, I think that's absolutely amazing.Daniel: Definitely. And I think this is one of the reasons why I find this program really rewarding for both students and the people who actually run the program because they see folks who have zero experience getting to the point where they can build the things that are in their head, which I think is magical.Jeremy: Yeah. No, I totally agree. Also, I think you said there's some other case studies on the blog?Daniel: Yeah. So, if you go to bitproject.org and go to the blog, we have a bunch of case studies that are still being uploaded. So, every week we're going to have new student projects that are going to be uploaded there. So, if you want to see some of the cool stuff that our students have built, feel free to go check it out.Jeremy: Awesome. All right. So, you just mentioned that this is a really rewarding thing. And I know for me, I do a lot of open source projects. I try to help as many people as I can. I don't run a nonprofit that runs courses. Maybe someday. But I do get exactly what you're saying because it is great to get that feedback, to see someone be successful because you've helped enable that. So, I know you're looking for mentors, right?Daniel: Yeah, definitely. We're looking for mentors who have previous experience or passion with serverless to mentor students, to get them to that point where they can build their own apps. So, we'd love to have you if you are interested and have a couple of hours per week to spare.Jeremy: Right. What's the requirement or the time commitment? It's just a few hours a week?Daniel: We recommend four to five hours a week to just work directly one-on-one with the student, and previous experience in serverless or just regular full-stack development is quite encouraged because we want to make sure that you are able to answer some of the technical questions that students might have around the content.Jeremy: Right. And you mentioned that, again, just going back to the mining example, but it sounds like that gentlemen was a little bit older. So, what's the age range of the students that you have in this program?Daniel: We don't have a minimum or maximum age that we accept. We just care about passion and the willingness to complete the program. Because the program is completely free, the standard that we set for our applicants is not of experience, but more of passion and desire to learn and become a successful developer.Jeremy: Right, right. Yeah. So, what about for mentors or people who are looking to do this? Again, I know it's rewarding to work with people and to help people. You know it's rewarding. What can you tell people, though, that might be interested in this? What are some of the other benefits, I guess, of being a mentor?Daniel: Yeah. Some of the really cool benefits I've seen is that we've been working directly with the Azure Functions team at Microsoft to mentor our students because they are using Azure Functions as the platform to host their serverless functions. And we've actually had PMs that are building as their functions, work with our students to get new ideas for product features, as well as engineers getting direct feedback on the features they worked on only a couple of weeks prior. Which I think is quite magical because I've seen these older PMs who are building that product the students are using and the students are very blunt, let me tell you. So they're like, "This feature makes no sense." So, a couple of weeks later it's magically fixed for some reason. I don't know how that could have happened, but things get resolved quite quickly when the student feedback comes in.Jeremy: Yeah. And also the other thing is, is that again, it's feedback that's, I guess, untainted from the experience of being a developer, right?Daniel: Definitely.Jeremy: So, it's like that childhood honesty that is what probably every product management team needs to figure that stuff out. So, all right. Well, so where are you going with this? What do you hope to do with Bit Project? I mean, is this something you want to grow or you want to add more courses? What's the future?Daniel: Definitely. That's a great question. So, as I work for New Relic, we are pivoting to create more content and more courses and more interactive learning materials and experiences in the DevOps field. So, right now we're creating content around observability, around container orchestration, things like that, that are more niche skills that students could learn to better their chances of getting a job as a site reliability engineer or a DevOps engineer. But most importantly, right now what we're trying to do is make sure that we're ready to scale as soon as possible because we feel like we have something really special here where we're teaching students how to ship apps, not to learn specific concepts like HTML or CSS. I think we have a really unique model here of how we're teaching students and how we're working with industry, leveraging cloud advocates and engineers who want to volunteer their specialized skill to better the community. So, right now I see the future as us helping make and lead more engineers of the future so we can have better services and better internet, hopefully, in a couple of years or a couple of decades.Jeremy: Well, it's a very noble goal. And so what about data science? I know there's a thing on the site about data science and I think you're doing some work with universities around that, right?Daniel: Yeah, definitely. So, we have a program called Bit University where we create these really easy-to-integrate data science courses for humanities classrooms, because there's a huge demand right now for humanities students to get data science experience, to get research opportunities as well as job opportunities. But a lot of them actually don't have access to data science courses because they're a humanities major, especially at smaller schools. So, what we do is we partner with universities like Cal State Fullerton and Sacramento State University to provide data science courses specifically tailored for humanities majors at these schools partnering with professors. So, yeah, that's the program and it's been super successful and we've had so many humanities students learn the basic skills they need to get these internships and these research opportunities, which has been really rewarding.Jeremy: Yeah. That's awesome. So Daniel, is there anything else you want to tell the listeners about Bit Project?Daniel: Definitely. Yeah. So, if you or your company want to help us make more technical content, like let's say you work in DevOps or you even work in Serverless functions that you want to extend the work we're doing, especially if you're an advocate, please reach out to me. I'm on Twitter. I'm on email. So, please reach out to me to work together on more technical content because my job is to make things more assessable. So, if you want to make anything, whether it's your area of expertise or something you think could be more accessible, I'd love to work with you to make sure that happens. And that is a free resource that's available to the community. That's my plug.Jeremy: That's awesome.Daniel: Reach out to me.Jeremy: That's awesome. No, I love it. Daniel, I appreciate, one, you being here and sharing this with everybody, but also the work that you're doing with the community is just amazing. The more people we can get into serverless and the more people we can get to understand this next generation of, I don't know, applications, I guess you want to call it, is absolutely a very, very noble goal. So, you mentioned Twitter. So, it's just learnwdaniel, right?Daniel: Definitely. Yeah.Jeremy: And then also the Bit Project has a Twitter, just bitPRJ. And then if you're interested in volunteering, you go to bitproject.org/volunteer. And students, if students want to sign up, how do they do that? They just go to bitproject.org?Daniel: Yeah. You can go directly to apply at bitproject.org, or if you want more information about the program, just go to bitproject. There's a huge banner at the top that will lead you directly to that website.Jeremy: Awesome. All right. Well, I will make sure I get all that into the show notes. Thanks again, Daniel.Daniel: Thank you.
About Gojko AdzicGojko Adzic is a partner at Neuri Consulting LLP. He one of the 2019 AWS Serverless Heroes, the winner of the 2016 European Software Testing Outstanding Achievement Award, and the 2011 Most Influential Agile Testing Professional Award. Gojko’s book Specification by Example won the Jolt Award for the best book of 2012, and his blog won the UK Agile Award for the best online publication in 2010.Gojko is a frequent speaker at software development conferences and one of the authors of MindMup and Narakeet.As a consultant, Gojko has helped companies around the world improve their software delivery, from some of the largest financial institutions to small innovative startups. Gojko specializes in agile and lean quality improvement, in particular impact mapping, agile testing, specification by example, and behavior driven development.Twitter: @gojkoadzicNarakeet: https://www.narakeet.comPersonal website: https://gojko.netWatch this video on YouTube: https://youtu.be/kCDDli7uzn8This episode is sponsored by CBT Nuggets: https://www.cbtnuggets.com/TranscriptJeremy: Hi everyone, I'm Jeremy Daly and this is Serverless Chats. Today my guest is Gojko Adzic. Hey Gojko, thanks for joining me.Gojko: Hey, thanks for inviting me.Jeremy: You are a partner at Neuri Consulting, you're an AWS Serverless Hero, you've written I think, what? I think 6,842 books or something like that about technology and serverless and all that kind of stuff. I'd love it if you could tell listeners a little bit about your background and what you've been working on lately.Gojko: I'm a developer. I started developing software when I was six and a half. My dad bought a Commodore 64 and I think my mom would have kicked him out of the house if he told her that he bought it for himself, so it was officially for me.Jeremy: Nice.Gojko: And I was the only kid in the neighborhood that had a computer, but didn't have any ways of loading games on it because he didn't buy it for games. I stayed up and copied and pasted PEEKs and POKEs in a book I couldn't even understand until I made the computer make weird sounds and print rubbish on the screen. And that's my background. Basically, ever since, I only wanted to build software really. I didn't have any other hobbies or anything like that. Currently, I'm building a product for helping tech people who are not video editing professionals create videos very easily. Previously, I've done a lot of work around consulting. I've built a lot of product that is used by millions of school children worldwide collaborate and brainstorm through mind-mapping. And since 2016, most of my development work has been on Lambda and on team stuff.Jeremy: That's awesome. I joke a little bit about the number of books that you wrote, but the ones that you have, one of them's called Running Serverless. I think that was maybe two years ago. That is an excellent book for people getting started with serverless. And then, one of my probably favorite books is Humans Vs Computers. I just love that collection of tales of all these things where humans just build really bad interfaces into software and just things go terribly.Gojko: Thank you very much. I enjoyed writing that book a lot. One of my passions is finding edge cases. I think people with a slight OCD like to find edge cases and in order to be a good developer, I think somebody really needs to have that kind of intent, and really look for edge cases everywhere. And I think collecting these things was my idea to help people first of all think about building better software, and to realize that stuff we might glance over like, nobody's ever going to do this, actually might cause hundreds of millions of dollars of damage ten years later. And thanks very much for liking the book.Jeremy: If people haven't read that book, I don't know, when did that come out? Maybe 2016? 2015?Gojko: Yeah, five or six years ago, I think.Jeremy: Yeah. It's still completely relevant now though and there's just so many great examples in there, and I don't want to spent the whole time talking about that book, but if you haven't read it, go check it out because it's these crazy things like police officers entering in no plates whenever they're giving parking tickets. And then, when somebody actually gets that, ends up with thousands of parking tickets, and it's just crazy stuff like that. Or, not using the middle initial or something like that for the name, or the birthdate or whatever it was, and people constantly getting just ... It's a fascinating book. Definitely check that out.But speaking of edge cases and just all this experience that you have just dealing with this idea of, I guess finding the problems with software. Or maybe even better, I guess a good way to put it is finding the limitations that we build into software mostly unknowingly. We do this unknowingly. And you and I were having a conversation the other day and we were talking about way, way back in the 1970s. I was born in the late '70s. I'm old but hopefully not that old. But way back then, time-sharing was a thing where we would basically have just a few large computers and we would have to borrow time against them. And there's a parallel there to what we were doing back then and I think what we're doing now with cloud computing. What are your thoughts on that?Gojko: Yeah, I think absolutely. We are I think going in a slightly cyclic way here. Maybe not cyclic, maybe spirals. We came to the same horizontal position but vertically, we're slightly better than we were. Again, I didn't start working then. I'm like you, I was born in late '70s. I wasn't there when people were doing punch cards and massive mainframes and time-sharing. My first experience came from home PC computers and later PCs. The whole serverless thing, people were disparaging about that when the marketing buzzword came around. I don't remember exactly when serverless became serverless because we were talking about microservices and Lambda was a way to run microservices and execute code on demand. And all of a sudden, I think the JAWS people realized that JAWS is a horrible marketing name, and decided to rename it to serverless. I think it most important, and it was probably 2017 or something like that. 2000 ...Jeremy: Something like that, yeah.Gojko: Something like that. And then, because it is a horrible marketing name, but it's catchy, it caught on and then people were complaining how it's not serverless, it's just somebody else's servers. And I think there's some truth to that, but actually, it's not even somebody else's servers. It really is somebody else's mainframe in a sense. You know in the '70s and early '80s, before the PC revolution, if you wanted to be a small software house or a small product operator, you probably were not running your own data center. What you would do is you would rent it based on paying for time to one of these massive, massive, massive operators. And in fact, we ended up with AWS being a massive data center. As far as you and I are concerned, it's just a blob. It's not a collection of computers, it's a data center we learn something from and Google is another one and then Microsoft is another one.And I remember reading a book about Andy Grove who was the CEO of Intel where they were thinking about the market for PC computers in the late '70s when somebody came to them with the idea that they could repurpose what became a 8080 processor. They were doing this I think for some Japanese calculator and then somebody said, "We can attach a screen to this and make this a universal computer and sell it." And they realized maybe there's a market for four or five computers in the world like that. And I think that that's ... You know, we ended up with four or five computers, it's just the definition of a computer changed.Jeremy: Right. I think that's a good point because you think about after the PC revolution, once the web started becoming really big, people started building data centers and collocation facilities like crazy. This is way before the cloud, and everybody was buying racks and Dell was getting really popular because people buying servers from Dell, and installing these in their data centers and doing this. And it just became this massive, whole industry built around doing that. And then you have these few companies that say, "Well, what if we just handled all that stuff for you? Rather than just racking stuff for you," but started just managing the software, and started managing the networking, and the backups, and all this stuff for you? And that's where the cloud was born.But I think you make a really good point where the cloud, whatever it is, Amazon or Google or whatever, you might as well just assume that that's just one big piece of processing that you're renting and you're renting some piece of that. And maybe we have. Maybe we've moved back to this idea where ... Even though everybody's got a massive computer in their pocket now, tons of compute power, in terms of the real business work that's being done, and the real global value, and the things that are powering global commerce and everything else like that, those are starting to move back to run in four, five, massive computers.Gojko: Again, there's a cyclic nature to all of this. I remember reading about the advent of power networks. Because before people had electric power, there were physical machines and movement through physical power, and there were water-powered plants and things like that. And these whole systems of shafts and belts and things like that powering factories. And you had this one kind of power load in a factory that was somewhere in the middle, and then from there, you actually have physical belts, rotating cogs in other buildings, and that was rotating some shafts that were rotating other cogs, and things like that.First of all, when people were able to package up electricity into something that's distributable, and they were running their own small electricity generators next to these big massive machines that were affecting early factories. And one of the first effects of that was they could reuse 30% of their factories better because it was up to 30% of the workspace in the factory that was taken up by all the belts and shafts. And all that movement was producing a lot of air movement and a lot of dust and people were getting sick. But now, you just plug a cable and you no longer have all this bad air and you don't have employees going sick and things like that. Things started changing quite a lot and then all of a sudden, you had this completely new revolution where you no longer had to operate your own electric generator. You could just plug in and get power from the network.And I think part of that is again, cyclic, what's happening in our industry now, where, as you said, we were getting machines. I used to make money as a Linux admin a long time ago and I could set up my own servers and things like that. I had a company in 2007 where we were operating our own gaming system, and we actually had physical servers in a physical server room with all the LEDs and lights, and bleeps, and things like that. Around that time, AWS really made it easy to get virtual machines on EC2 and I realized how stupid the whole, let's manage everything ourself is. But, we are getting to the point where people had to run their own generators, and now you can actually just plug into the electricity network. And of course, there is some standardization. Maybe U.S. still has 110 volts and Europe has 220, and we never really get global standardization there.But I assume before that, every factory could run their own voltage they wanted. It was difficult to manufacture for these things but now you have standardization, it's easier for everybody to plug into the ecosystem and then the whole ecosystem emerged. And I think that's partially what's happening now where things like S3 is an API or Lambda is an API. It's basically the electric socket in your wall.Jeremy: Right, and that's that whole Wardley maps idea, they become utilities. And that's the thing where if you look at that from an enterprise standpoint or from a small business standpoint if you're a startup right now and you are ordering servers to put into a data center somewhere unless you're doing something that's specifically for servers, that's just crazy. Use the cloud.Gojko: This product I mentioned that we built for mind mapping, there's only two of us in the whole company. We do everything from presales, to development testing supports, to everything. And we're competing with companies that have several orders of magnitude more employees, and we can actually compete and win because we can benefit from this ecosystem. And I think this is totally wonderful and amazing and for anybody thinking about starting a product, it's easier to start a product now than ever. And, another thing that's totally I think crazy about this whole serverless thing is how in effect we got a bookstore to offer that first.You mentioned the world utility. I remember I was the editor of a magazine in 2001 in Serbia, and we had licensing with IDG to translate some of their content. And I remember working on this kind of piece from I think PC World in the U.S. where they were interviewing Hewlett Packard people about utility computing. And people from Hewlett Packard back then were predicting that in a few years' time, companies would not operate their own stuff, they would use utility and things like that. And it's totally amazing that in order to reach us over there, that had to be something that was already evaluated and tested, and there was probably a prototype and things like that. And you had all these giants. Hewlett Packard in 2001 was an IT giant. Amazon was just up-and-coming then and they were a bookstore then. They were not even anything more than a bookstore. And you had, what? A decade later, the tables completely turned where HP's ... I don't know ...Jeremy: I think they bought Compaq at some point too.Gojko: You had all these giants, IBM completely missed it. IBM totally missed ...Jeremy: It really did.Gojko: ... the whole mobile and web and everything revolution. Oracle completely missed it. They're trying to catch up now but fat chance. Really, we are down to just a couple of massive clouds, or whatever that means, that we interact with as we're interacting with electricity sockets now.Jeremy: And going back to that utility comparison, or, not really a comparison. It is a utility now. Compute is offered as a utility. Yes, you can buy and generate compute yourself and you can still do that. And I know a lot of enterprises still will. I think cloud is like 4% of the total IT market or something. It's a fraction of it right now. But just from that utility aspect of it, from your experience, you mentioned you had two people and you built, is it MindMup.com?Gojko: MindMup, yeah.Jeremy: You built that with just two people and you've got tons of people using it. But just from your experience, especially coming from the world of being a Linux administrator, which again, I didn't administer ... Well, I guess I was. I did a lot of work in data centers in my younger days. But, coming from that idea and seeing how companies were building in the past and how companies are still building now, because not every company is still using the cloud, far from it. But not taking advantage of that utility, what are those major disadvantages? How badly do you think that's going to slow companies down that are trying to innovate?Gojko: I can give you a story about MindMup. You mentioned MindMup. When was it? 2018, there was the Intel processor vulnerabilities that were discovered.Jeremy: Right, yes.Gojko: I'm not entirely sure what the year was. A few years ago anyway. We got a email from a concerned university admin when the second one was discovered. The first one made all the news and a month later a second one was discovered. Now everybody knew that, they were in panic and things like that. After the second one was discovered, we got a email from a university admin. And universities are big users, they need to protect the data and things like that. And he was insisting that we tell him what our plan was for mitigating this thing because he knows we're on the cloud.I'm working on European time. The customer was in the U.S., probably somewhere U.S. Pacific because it arrived in the middle of the night. I woke up, I'm still trying to get my head around and drinking coffee and there's this whole sausage CV number that he sent me. I have no idea what it's about. I took that, pasted it into Google to figure out what's going on. The first result I got from Google was that AWS Lambda was already patched. Copy, paste, my day's done. And I assume lots and lots of other people were having a totally different conversation with their IT department that day. And that's why I said I think for products like the one I'm building with video and for the MindMup, being able to rent operations as a utility, but really totally rent ops as a utility, not have to worry about anything below my unique business level is really, really important.And yes, we can hire people to work on that it could even end up being slightly cheaper technically but in terms of my time and where my focus goes and my interruptions, I think deploying on a utility platform, whatever that utility platform is, as long as it's reliable, lets me focus on adding value where I can actually add value. That makes my product unique rather than the generic stuff.Jeremy: You mentioned the video product that you're working on too, and something that is really interesting I think too about taking advantage of the cloud is the scalability aspect of it. I remember, it was maybe 2002, maybe 2003, I was running my own little consulting company at the time, and my local high school always has a rivalry football game every Thanksgiving. And I thought it'd be really interesting if I was to stream the audio from the local AM radio station. I set up a server in my office with ReelCast Streaming or something running or whatever it was. And I remember thinking as long as we don't go over 140 subscribers, we'll be okay. Anything over that, it'll probably crash or the bandwidth won't be enough or whatever.Gojko: And that's just one of those things now, if you're doing any type of massive processing or you need bandwidth, bandwidth alone ... I remember T1 lines being great and then all of a sudden it was like, well, now you need a T3 line or something crazy in order to get the bandwidth that you need. Just from that aspect of it, the ability to scale quickly, that just seems like such a huge blocker for companies that need to order provision servers, maybe get a utility company to come in and install more bandwidth for them, and things like that. That's just stuff that's so far out of scope for building a business to me. At least building a software business or building any business. It's crazy.When I was doing consulting, I did a bit of work for what used to be one of the largest telecom companies in the world.Jeremy: Used to be.Gojko: I don't want to name names on a public chat. Somewhere around 2006, '07 let's say, we did a software project where they just needed to deploy it internally. And it took them seven months to provision a bunch of virtual machines to deploy it internally. Seven months.Jeremy: Wow.Gojko: Because of all the red tape and all the bureaucracy and all the wait for capacity and things like that. That's around the time where Amazon when EC2 became commercially available. I remember working with another client and they were waiting for some servers to arrive so they can install more capacity. And I remember just turning on the Amazon console. I didn't have anything useful to running it then but just being able to start up a virtual machine in about, I think it was less than half an hour, but that was totally fascinating back then. Here's a new Linux machine and in less than half an hour, you can use it. And it was totally crazy. Now we're getting to the point where Lambda will start up in less than 10 milliseconds or something like that. Waiting for that kind of capacity is just insane.With the video thing I'm building, because of Corona and all of this remote teaching stuff, for some reason, we ended up getting lots of teachers using the product. It was one of these half-baked experiments because I didn't have time to build the full user interface for everything, and I realized that lots of people are using PowerPoint to prepare that kind of video. I thought well, how about if I shorten that loop, so just take your PowerPoint and convert it into video. Just type up what you want in the speaker notes, and we'll use these neurometrics to generate audio and things like that. Teachers like it for one reason or the other.We had this influential blogger from Russia explain it on his video blog and then it got picked up, my best guess from what I could see from Google Translate, some virtual meeting of teachers of Russia where they recommended people to try it out. I woke up the next day, the metrics went totally crazy because a significant portion of teachers in Russia tried my tool overnight in a short space of time. Something like that, I couldn't predict it. It's lovely but as you said, as long as we don't go over a hundred subscribers, we're fine. If I was in a situation like that, the thing would completely crash because it's unexpected. We'd have a thing that's amazingly good for marketing that would be amazingly bad for business because it would crash all our capacity we had. Or we had to prepare for a lot more capacity than we needed, but because this is all running on Lambda, Fargate, and other auto-scaling things, it's just fine. No sweat at all. It was a lovely thing to see actually.Jeremy: You actually have two problems there. If you're not running in the cloud or not running on-demand compute, is the fact that one, you would've potentially failed, things would've fallen over and you would've lost all those potential customers, and you wouldn't have been able to grow.Gojko: Plus you've lost paying customers who are using your systems, who've paid you.Jeremy: Right, that's the other thing too. But, on the other side of that problem would be you can't necessarily anticipate some of those things. What do you do? Over-provision and just hope that maybe someday you'll get whatever? That's the crazy thing where the elasticity piece of the cloud to me, is such a no-brainer. Because I know people always talk about, well, if you have predictable workloads. Well yeah, I know we have predictable workloads for some things, but if you're a startup or you're a business that has like ... Maybe you'd pick up some press. I worked for a company that we picked up some press. We had 10,000 signups in a matter of like 30 seconds and it completely killed our backend, my SQL database. Those are hard to prepare for if you're hosting your own equipment.Gojko: Absolutely, not even if you're hosting your own.Jeremy: Also true, right.Gojko: Before moving to Lambda, the app was deployed to Heroku. That was basically, you need to predict how many virtual machines you need. Yes, it's in the cloud, but if you're running on EC2 and you have your 10, 50, 100 virtual machines, whatever running there, and all of a sudden you get a lot more traffic, will it scale or will it not scale? Have you designed it to scale like that? And one of the best things that I think Lambda brought as a constraint was forcing people to design this stuff in a way that scales.Jeremy: Yes.Gojko: I can deploy stuff in the cloud and make it all distributed monolith, so it doesn't really scale well, but with Lambda because it was so constrained when it launched, and this is one thing you mentioned, partially we're losing those constraints now, but it was so constrained when it launched, it was really forcing people to design things that were easy to scale. We had total isolation, there was no way of sharing things, there was no session stickiness and things like that. And then you have to come up with actually good ways of resolving that.I think one of the most challenging things about serverless is that even a Hello World is a distributed transaction processing system, and people don't get that. They think about, well, I had this DigitalOcean five-dollar-a-month server and it was running my, you know, Rails up correctly. I'm just going to use the same ideas to redesign it in Lambda. Yes, you can, but then you're not going to really get the benefits of all of this other stuff. And if you design it as a massively distributed transaction processing system from the start, then yes, it scales like crazy. And it scales up and down and it's lovely, but as Lambda's maturing, I have this slide deck that I've been using since 2016 to talk about Lambda at conferences. And every time I need to do another talk, I pull it out and adjust it a bit. And I have this whole Git history of it because I do markdown to slides and I keep the markdown in Git so I can go back. There's this slide about limitations where originally it's only ... I don't remember what was the time limitation, but something very short.Jeremy: Five minutes originally.Gojko: Yeah, something like that and then it was no PCI compliance and the retries are difficult, and all of this stuff basically became sold. And one of the last things that was there, there was don't even try to put it in a VPC, definitely, you can but it's going to take 10 minutes to start. Now that's reasonably okay as well. One thing that I remember as a really important design constraint was effectively it was a share nothing platform because you could not share data between two Lambdas running at the same time very easily in the same VM. Now that we can connect Lambdas to EFS, you effectively can do that as well. You can have two Lambdas, one writing into an EFS, the other reading the same EFS at the same time. No problem at all. You can pump it into a file and the other thing can just stay in a file and get the data out.As the platform is maturing, I think we're losing some of these design constraints, and sometimes constraints breed creativity. And yes, you still of course can design the system to be good, but it's going to be interesting to see. And this 15-minute limit that we have in Lamdba now is just an artificial number that somebody thought.Jeremy: Yeah, it's arbitrary.Gojko: And at some point when somebody who is important enough asks AWS to give them half-hour Lamdbas, they will get that. Or 24-hour Lambdas. It's going to be interesting to see if Lambda ends up as just another way of running EC2 and starting EC2 that's simpler because you don't have to manage the operating system. And I think the big difference we'll get between EC2 and Lambda is what percentage of ops your developers are responsible for, and what percentage of ops Amazon's developers are responsible for.Because if you look at all these different offerings that Amazon has like Lightsail and EC2 and Fargate and AWS Batch and CodeDeploy, and I don't know how many other things you can run code on in Lambda. The big difference with Lambda is really, at least until very recently was that apart from your application, Amazon is responsible for everything. But now, we're losing design constraints, you can put a Docker container in, you can be responsible for the OS image as well, which is a bit again, interesting to look at.Jeremy: Well, I also wonder too, if you took all those event sources that you can point at Lambda and you add those to Fargate, what's the difference? It seems like they're just merging into two very similar products.Gojko: For the video build platform, the last step runs in Fargate because people are uploading things that are massive, massive, massive for video processing, and just they don't finish in 15 minutes. I have to run to Fargate, and the big difference is the container I packaged up for Fargate takes about 40 seconds to actually deploy. A new event at the moment with the stuff I've packaged in Fargate takes about 40 seconds to deploy. I can optimize that, but I can't optimize it too much. Fargate is still order of magnitude of tens of seconds to process an event. I think as Fargate gets faster and as Lambda gets more of these capabilities, it's going to be very difficult to tell them apart I think.With Fargate, you're intended to manage the container image yourself. You're responsible for patching software, you're responsible for patching OS vulnerabilities and things like that. With Lambda, Amazon, unless you use a container image, Amazon is responsible for that. They come close. When looking at this video building for the first time, I was actually comparing code. I was considering using CodeBuild for that because CodeBuild is also a way to run things on demand and containers, and you actually can get quite decent machines with CodeBuild. And it's also event-driven, and Fargate is event-driven, AWS Batch is event-driven, and all of these things are converging to each other. And really, AWS is famous for having 10 products that do the same thing effectively and you can't tell them apart, and maybe that's where we'll end.Jeremy: And I'm wondering too, the thing that was great about Lambda, at least for me like you said, the shared nothing architecture where it was like, you almost didn't have to rely on anything other than the event that came in, and the processing of that Lambda function. And if you designed your systems well, you may have some bottleneck up front, but especially if you used distributed transactions and you used async invocations of downstream functions, where you could basically take some data that you needed to pass into it, and then you wouldn't necessarily need that to communicate with anything other than itself to process that data. The scale there was massive. You could just keep scaling and scaling and scaling. As you add things like EFS and that adds constraints in terms of the number of transactions and connections that, that can make and all those sort of things. Do these things, do they become less reliable? By allowing it to do more, are we building systems that are less reliable because we're not using some of those tried-and-true constraints that were there?Gojko: Possibly, but every time you add a new moving part, you create one more potential point of failure there. And I think for me, one of the big lessons when I was working on ... I spent a few years working on very high throughput transaction processing systems. That's why this whole thing rings a bell a lot. A lot of it really was how do you figure out what type of messages you send and where you send them. The craze of these messages and distributed transaction processing systems in early 2000s, created this whole craze of enterprise service buses later that came. We now have this... What is it called? It's not called enterprise service bus, it's called EventBridge, or something like that.Jeremy: EventBridge, yes.Gojko: That's effectively an enterprise service bus, it's just the enterprise is the Amazon cloud. The big challenge in designing things like that is decoupling. And it's realizing that when you have a complicated system like that, stuff is going to fail. And especially when we were operating around hardware, stuff is going to fail badly or occasionally, and you need to not bring the whole house down where some storage starts working a bit slower. You create circuit breakers, you create layers and layers of stuff that disconnect things. I remember when we were looking originally at Lambdas and trying to get the head around that and experimenting, should one Lambda call another? Or should one Lambda not call another? And things like that.I realized, let's say for now, until we realize we want to do something else, a Lambda should only ever talk to SNS and nothing else. Or SQS or something like that. When one Lambda completes, it's going to track a message somewhere and we need to design these messages to be good so that we can decouple different parts of the process. And so far, that helps too as a constraint. I think very, very few times we have one Lambda calling another. Mostly when we actually need a synchronized response back, and for security reasons, we wanted to isolate something to a single Lambda, but that's effectively just a black box security isolation. Since creating these isolation layers through messages, through queues, through topics, becomes a fundamental part of designing these systems.I remember speaking at the conference to somebody. I forgot the name of the person who was talking about airline. And he was presenting after me and he said, "Look, I can relate to a lot of what you said." And in the airline community basically they often talk about, apparently, I'm not an airline programmer, he told me that in the airline community, talk about designing the protocol being the biggest challenge. Once you design the protocol between your components, the message is who sends what where, you can recover from almost any other design flaw because it's decoupled so if you've made a mess in one Lambda, you can redesign that Lambda, throw it away, rewrite it, decouple things a different way. If the global protocol is good, you get all the flexibility. If you mess up the protocol for communication, then nothing's going to save you at the end.Now we have EFS and Lambda can talk to an EFS. Should this Lambda talk directly to an EFS or should this Lambda just send some messages to a topic, and then some other Lambdas that are maybe reserved, maybe more constrained talk to EFS? And again, the platform's evolved quite a lot over the last few years. One thing that is particularly useful in that regard is the SQS FIFO queues that came out last year I think. With Corona ...Jeremy: Yeah, whenever it was.Gojko: Yeah, I don't remember if it was last year or two years ago. But one of the things it allows us to do is really run lots and lots of Lambdas in parallel where you can guarantee that no two Lambdas access the same kind of business entity that you have in the same type. For example, for this mind mapping thing, we have lots and lots of people modifying lots and lots of files in parallel, but we need to aggregate a single map. If we have 50 people over here working with a single map and 60 people on a map working a different map, aggregation can run in parallel but I never ever, ever want two people modifying the same map their aggregation to run in parallel.And for Lambda, that was a massive challenge. You had to put Kinesis between Lambda and other Lambdas and things like that. Kinesis' provision capacity, it costs a lot, it doesn't auto-scale. But now with SQS FIFO queues, you can just send a message and you can say the kind of FIFO ID is this map ID that we have. Which means that SQS can run thousands of Lambdas in parallel but they'll never run more than one Lambda for the same map idea at the same time. Designing your protocols like that becomes how you decouple one end of your app that's massively scalable and massively parallel, and another end of your app that we have some reserved capacity or limits.Like for this kind of video thing, the original idea of that was letting me build marketing videos easier and I can't get rid of this accent. Unfortunately, everything I do sounds like I'm threatening someone to blackmail them. I'm like a cheap Bond villain, and that's not good, but I can't do anything else. I can pay other people to do it for me and we used to do that, but then that becomes a big problem when you want to modify tiny things. We paid this lady to professionally record audio for a marketing video that we needed and then six months later, we wanted to change one screen and now the narration is incorrect. And we paid the same woman again. Same equipment, same person, but the sound is totally different because two different equipment.Jeremy: Totally different, right.Gojko: You can't just stitch it up. Then you end up like, okay, do we go and pay for the whole thing again? And I realized the neurometric text-to-speech has learned so much that it can do English better than I can. You're a native English speaker so you can probably defeat those machines, but I can't.Jeremy: I don't know if I could. They're pretty good now. It's kind of scary.Gojko: I started looking at one like why don't they just put stuff in a Markdown and use Markdown to generate videos and things like that? All of these things, you get quota limits still. I thought we were limited on Google. Google gave us something like five requests per second in parallel, and it took me a really long time to even raise these quotas and things like that. I don't want to have lots of people requesting stuff and then in parallel trashing this other thing over there. We need to create these layers of running things in a decent limit, and I think that's where I think designing the protocol for this distributed system becomes an importance.Jeremy: I want to go back because I think you bring up a really good point just about a different type of architecture, or the architectural design of decoupling systems and these event-driven things. You mentioned a Lambda function processes something and sends it to SQS or sends it to SNS to it can do a fan-out pattern or in the case of the FIFO queue, doing an ordered pattern for sequential processing, which those were all great patterns. And even things that AWS has done, such as add things like Lambda destination. Now if you run an asynchronous Lambda function, you still have to write some code or you used to have to write some code that said, "When this is finished processing, now call some other component." And there's just another opportunity for failure there. They basically said, "Well, if it succeeds, then you can actually just forward it off to one of these other services automatically and we'll handle all of the retries and all the failures and that kind of stuff."And those things have been added in to basically give you that warm and fuzzy feeling that if an event doesn't reach where it's supposed to go, that some sort of cloud trickery will kick in and make sure that gets processed. But what that is introduced I think is a cognitive overload for a lot of developers that are designing these systems because you're no longer just writing a script that does X, Y, and Z and makes a few database calls. Now you're saying, okay, I've got to write a script that can massively scale and take the transactions that I need to maybe parallelize or that I maybe need to queue or delay or throttle or whatever, and pass those down to another subsystem. And then that subsystem has to pick those up and maybe that has to parallelize those or maybe there are failure modes in there and I've got all these other things that I have to think about.Just that effect on your average developer, I think you and I think about these things. I would consider myself to be a cloud architect, if that's a thing. But essentially, do you see this being I guess a wall for a lot of developers and something that really requires quite a bit of education to ramp them up to be able to start designing these systems?Gojko: One of the topics we touched upon is the cyclic nature of things, and I think we're going back to where moving from apps working on a single machine to client server architectures was a massive brain melt for a lot of people, and three-tier architectures, which is later, we're not just client server, but three-tier architectures ended up with their own host of problems and then design problems and things like that. That's where a lot of these architectural patterns and design patterns emerged like circuit breakers and things like that. I think there's a whole body of knowledge there for people to research. It's not something that's entirely new and I think you can get started with Lambda quite easily and not necessarily make a mess, but make something that won't necessarily scale well and then start improving it later.That's why I was mentioning that earlier in the discussion where, as long as the protocol makes sense, you can salvage almost anything late. Designing that protocol is important, but then we're going to good software design. I think teaching people how to do that is something that every 10 years, we have to recycle and reinvent and figure it out because people don't like to read books from more than 10 years ago. All of this stuff like designing fault tolerance systems and fail-safe systems, and things like that. There's a ton of books about that from 20 years ago, from 10 years ago. Amazon, for people listening to you and me, they probably use Amazon more for compute than they use for getting books. But Amazon has all these books. Use it for what Amazon was originally intended for and then get some books there and read through this stuff. And I think looking at design of distributed systems and stuff like that becomes really, really critical for Lambdas.Jeremy: Yeah, definitely. All right, we've got a few minutes left and I'd love to go back to something we were talking about a little bit earlier and that was everything moving onto a few of these major cloud providers. And one of the things, you've got scale. Scale is a problem when we talked about oh, we can spin up as many VMs as we want to, and now with serverless, we have unlimited capacity really. I know we didn't say that, but I think that's the general idea. The cloud just provides this unlimited capacity.Gojko: Until something else decides it's not unlimited.Jeremy: And that's my point here where every major cloud provider that I've been involved with and I've heard the stories of, where you start to move the needle at all, there's always an SA that reaches out to you and really wants to understand what your usage is going to be, and what your patterns were going to be. And that's because they need to make sure that where you're running your applications, that they provision enough capacity because there is not enough capacity, or there's not unlimited capacity in the cloud.Gojko: It's physically limited. There's only so much buildings where you can have data centers on the surface of Earth.Jeremy: And I guess that's where my question comes in because you always hear these things about lock-in. Like, well serverless, if you use Lambda, you're going to be locked in. And again, if you're using Oracle, you're locked in. Or, you're using MySQL you're locked in. Or, you're using any of the other things, you're locked in.Gojko: You're actually not locked in physically. There's a key and a lock.Jeremy: Right, but this idea of being locked in not to a specific cloud provider, but just locked into a cloud in general and relying on the cloud to do that scaling for you, where do you think the limitations there are?Gojko: I think again, going back to cyclic, cyclic, cyclic. The PC revolution started when a lot more edge compute was needed on mainframes, and people wanted to get stuff done on their own devices. And I think probably, if we do ever see the limitations of this and it goes into a next cycle, my best guess it's going to be driven by lots of tiny devices connected to a cloud. Not necessarily computers as we know computers today. I pulled out some research preparing for this from IDC. They are predicting basically from 18.3 zettabytes of data needed for IOT in 2019, to be 73.1 zettabytes by 2025. That's like times three in a space of six years. If you went to Amazon now and told them, "You need to have three times more data space in three years," I'm not sure how they would react to that.This stuff, everything is taking more and more data, and everything is more and more connected to the cloud. The impact of something like that going down now is becoming totally crazy. There was a case in 2017 where S3 started getting a bit more latency than usual in U.S. East 1, in I think February of 2018, or something like that. There were cases where people couldn't turn the lights on in their houses because the management software was working on S3 and depending on S3. Expecting S3 to be indestructible. Last year, in November, Kinesis pretty much went offline as far as everybody else outside AWS concerend for about 15 hours I think. There were people on Twitter that they can't go back into their house because their smart lock is no longer that smart.And I think we are getting to places where there will be more need for compute on the edge. First of all, there's going to be a lot more demand for data centers and cloud power and I think that's going to keep going on for the next five, ten years. But then people will realize they've hit some limitation of that, and they're going to start moving towards the edge. And we're going from mainframe back into client server computing I think. We're getting these products now. I assume most of your listeners have seen one like all these fancy ubiquity Wi-Fi thingies that are costing hundreds of dollars and they look like pieces of furniture that's just sitting discretely on the wall. And there was a massive security breach yesterday published. Somebody took their AWS keys and took all the customer data and everything.The big advantage over all the ugly routers was that it's just like a thin piece of glass that sits on your wall, and it's amazing and it looks good, but the reason why they could do a very thin piece of glass is the minimal amount of software is running on that piece of glass, the rest is running the cloud. It's not just locking in terms of is it on Amazon or Google, it's that it's so tightly coupled with something totally outside of your home, where your network router needs Amazon to be alive now in a very specific region of Amazon where everybody's been deploying for the last 15 years, and it's running out of capacity very often. Not very often but often enough.There's some really interesting questions that I guess we'll answer in the next five, ten years. We're on the verge of IOT I think exploding because people are trying to come up with these new products that you wouldn't even think before that you'd have smart shoes and smart whatnot. Smart glasses and things like that. And when that gets into consumer technology, we're no longer going to have five or ten computer devices per person, we'll have dozens and dozens of computing. I guess think about it this way, fifteen years ago, how many computer devices were you carrying with yourself? Probably mobile phone and laptop. Probably not more. Now, in the headphones you have there that's Bose ...Jeremy: Watch.Gojko: ... you have a microprocessor in the headphones, you have your watch, you have a ton of other stuff carrying with you that's low-powered, all doing a bit of processing there. A lot of that processing is probably happening on the cloud somewhere.Jeremy: Or, it's just sending data. It's just sending, hey here's the information. And you're right. For me, I got my Apple Watch, my thermostat is connected to Wi-Fi and to the cloud, my wife just bought a humidifier for our living room that is connected to Wi-Fi and I'm assuming it's sending data to the cloud. I'm not 100% sure, but the question is, I don't know why we need to keep track of the humidity in my living room. But that's the kind of thing too where, you mentioned from a security standpoint, I have a bunch of AWS access keys on my computer that I send over the network, and I'm assuming they're secure. But if I've got another device that can access my network and somebody hacked something on the cloud side and then they can get in, it gets really dangerous.But you're right, the amount of data that we are now generating and compute that we're using in the cloud for probably some really dumb things like humidity in my living room, is that going to get to a point where... You said there's going to be a limitation like five years, ten years, whatever it is. What does the cloud do then? What does the cloud do when it can no longer keep up with the pace of these IOT devices?Gojko: Well, if history is repeating and we'll see if history is repeating, people will start getting throttled and all of a sudden, your unlimited supply of Lambdas will no longer be unlimited supply of Lambdas. It will be something that you have to reserve upfront and pay upfront, and who knows, we'll see when we get there. Or, we get things that we have with power networks like you had a Texas power cut there that was completely severe, and you get a IT cut. I don't know. We'll see. The more we go into utility, the more we'll start seeing parallels between compute and power networks. And maybe power networks are something that you can look at and later name. That's why I think the next cycle is probably going to be some equivalent of client server computing reemerging.Jeremy: Yeah. All right, well, I got one more question for you and this is just something where it may be a little bit of a tongue-in-cheek question. Because we talked it a little bit ... we talked about the merging of Lambda, and of Fargate, and some of these other things. But just from your perspective, serverless in five years from now, where do you see that going? Do you see that just becoming the main ... This idea of utility computing, on-demand computing without setting up servers and managing ops and some of these other things, do you see that as the future of serverless and it just becoming just the way we build applications? Or do you think that it's got a different path?Gojko: There was a tweet by Simon Wardley. You mentioned Simon Wardley earlier in the talk. There was a tweet a few days ago where he mentioned some data. I'm not sure where he pulled it from. This might be unverified, but generally Simon knows what he's talking about. Amazon itself is deploying roughly 50% of all new apps they're building on serverless. I think five years from now, that way of running stuff, I'm not sure if it's Lambda or some new service that Amazon starts and gives it some even more confusing name that runs in parallel to everything. But, that kind of stuff where the operator takes care of all the ops, which they really should be doing, is going to be the default way of getting utility compute out.I think a lot of these other things will probably remain useful for specialists' use cases, where you can't really deploy it in that way, or you need more stability, or it's not transient and things like that. My best guess is first of all, we'll get Lambda's that run for longer, and I assume that after we get Lambdas that run for longer, we'll probably get some ways of controlling routing to Lambdas because you already can set up pre-provisioned Lambdas and hot Lambdas and reserved capacity and things like that. When you have reserved capacity and you have longer running Lambdas, the next logical thing there is to have session stickiness, and routing, and things like that. And I think we'll get a lot of the stuff that was really complicated to do earlier, and you had to run EC2 instances or you had to run complicated networks of services, you'll be able to do in Lambda.And Lambda is, I wouldn't be surprised if they launch a totally new service with some AWS cloud socket, whatever. Something that is a implementation of the same principle, just in a different way, that becomes a default we are running computer for lots of people. And I think GPUs are still a bit limited. I don't think you can run GPU utility anywhere now, and that's limiting for a whole host of use cases. And I think again, it's not like they don't have the technology to do it, it's just they probably didn't get around to doing it yet. But I assume in five years time, you'll be able to do GPUs on-demand, and processing GPUs, and things like that. I think that the buzzword itself will lose really any special meaning and that's going to just be a way of running stuff.Jeremy: Yeah, absolutely. Totally agree. Well, listen Gojko, thank you so much for spending the time chatting with me. Always great to talk with you.Gojko: You, too.Jeremy: If people want to get in touch with you, find out more about what you're doing, how do they do that?Gojko: Well, I'm very easy to find online because there's not a lot of people called Gojko. Type Gojko into Google, you'll find me. And gojko.networks, gojko.com works, gojko.org works, and all these other things. I was lucky enough to get all those domains.Jeremy: That's G-O-J-K-O ...Gojko: Yes, G-O-J-K-O.Jeremy: ... for people who need the spelling.Gojko: Excellent. Well, thanks very much for having me, this was a blast.Jeremy: All right, yeah. And make sure you check out ... You mentioned Narakeet. It's a speech thing?Gojko: Yeah, for developers that want to build videos without hassle, and want to put videos in continuous integration, and things like that. Narakeet, that's like parakeet with an N for narration. Check that out and thanks for plugging it.Jeremy: Awesome. And then, check out MindMup as well. Awesome stuff. I've got all the stuff in the show notes. Thanks again, Gojko.Gojko: Thank you. Bye-bye.
It was January of 2020 in Birmingham, Alabama. Jeremy woke to a noise in the middle of the night and went outside to investigate. He could see three men coming out of the woods behind his house. One of the men had something in his arms. Jeremy told them to stop, an altercation ensued, the man dropped what he was carrying and all three ran off. Jeremy walked to the edge of the woods to see what the man had left behind. It was a horse, a small foal. When Jeremy got closer, he realized the foal had wings. Today on the podcast, Mark sits down with Jeremy Richter, insurance defense lawyer, author, and host of the Lawyerpreneur podcast, to discuss his writing, the importance of attorney wellness, following your dreams, and some of his own stranger-than-fiction stories. Transcript: MARK BASSINGTHWAIGHTE: Okay. Hello. I'm Mark Bassingthwaighte and welcome to ALPS In Brief, the podcast that comes to you from the historic Florence building in beautiful downtown Missoula, Montana. I'm very pleased to have join us today on the podcast, Jeremy Richter, and he is an attorney, a shareholder in fact, with Webster Henry at their Birmingham, Alabama location. So Jeremy, first off, welcome. It's a pleasure to have you join us. JEREMY RICHTER: Well, thanks. I'm really happy to be here. MARK: My interest, folks, in having Jeremy join us today is not so much in terms of what he's doing with his practice in Alabama. It's what he's doing in addition to his practice. And, boy, is there a lot of stuff that this guy has got going on. I mean, it's just... So, Jeremy, before we jump into some of this, I'd love to have you just take a few moments and share a little bit about yourself. What do people want to know? What would you like us to know, perhaps? JEREMY: Well, let me tell you how we got to where I am as far as all the things outside of my daily billing that I do. So I'm an insurance defense lawyer here in Birmingham, and I started practicing in 2012. I've been at the same firm the whole time. In 2016 I had about four years under my belt, and my mentor, who I was hired to work with, and it's almost exclusively who I worked with, he had always involved me in his marketing efforts, but he was a very extroverted, gregarious person who loved going to conferences and in talking to tons of people, and that's not me. And so I realized fairly early on that that did not play to my strengths and I needed to figure out how to be able to market myself in a way that was achievable over the long-term, and something that I could just continue to pour time and effort into that wouldn't deplete my reserves of energy. And so, I have always been a writer and I started a law blog where at the outset I blogged about appellate decisions in Alabama that affected my little insurance defense world. After about six months of that, I started wanting to write about other topics, and I had one particular idea that I guess was the catalyst for everything that came afterwards, about three things that associates can do to be better associates. And so I wrote about that. And after that, I started writing a lot about practice management ideas and case management and relationships with clients, and it was all coming from a perspective of, "Look, I'm only four years in." Five years in at that point. "These are the things I'm learning along the way." I'm not positioning myself as some guru because there's lots of folks who have been doing this a lot longer than me, but I wanted to help the people who are coming behind me to maybe graduate that learning curve a little bit more than what I had. And so that's what I started doing, and then I formed a relationship with some folks at the ABA Journal and wrote for them. And then the ABA published my first book and since then I've published two more books, one in each year in 2018, '19 and '20. And I started a podcast this year. And then actually this will be totally new to anybody, I guess, that's not immediate family, I am one chapter away from finishing the first draft of my first novel that I wrote. MARK: Awesome. And what is the topic of the novel? Is it law-based or is it completely different? I love it. JEREMY: Actually I don't read legal thrillers. I mean, I have, in the past, and there are some real titans who have built their names in that. MARK: Right. JEREMY: But, no, it's totally off... It's a contemporary fantasy book that takes place in Birmingham, and it's about this little family who lives south of Birmingham and the dad, as far as he knows, is living in a normal world as the rest of us know it. MARK: Uh-huh (affirmative). JEREMY: And then some really weird things happen and he figures out there's a whole bunch of things that exist in the world around him that he had never known existed. And it all got started on this really bizarre dream that I had one night and wrote it down and it kind of went from there. MARK: I have to come back to this. I find this inspiring in some ways. It's very interesting. You and I have a lot more in common than I would have guessed initially. It's great. But you started out talking about moving in this direction, in terms of blogging and then evolving a bit here, initially, just to market yourself. JEREMY: Yeah. MARK: Was that successful? Did you have the results that you looked for or hoped for? JEREMY: It was successful, but not in the way that I expected. When I started writing about appellate decisions in Alabama, I thought, "Well, this will be a way for clients to find me and my firm and for us to establish our expertise." MARK: Yes. JEREMY: And while that was true, and it did that, my insurance clients weren't my readers as it turned out. It was other lawyers who were coming across these things and dealing with them. And even folks in my own firm would say, "Hey, I was looking up this topic and I came across your blog. Let's talk about this random thing." And so, in that way, it wasn't what I thought it was going to be from the outset. But what it did do is allow me to get more involved in industry organizations like CLM and DRI and present at conferences. It gave me the confidence in my practice areas to make those presentations and also to reach out to people who were attending those conferences and say, "Hey, we don't know each other really, but we're going to be at this place, and if you are looking for additional counsel in Alabama, I'd love to get together and meet." And so between that and other relationships that I've formed in communities that I've become a part of, I can say with certainty that I have business relationships now and have obtained clients that wouldn't have been the case without it. So it formed differently than I expected, but it absolutely had the result that I wanted. MARK: Okay. And then what took you into becoming an author in terms of writing the books? And share the... I think you have three out, right, in terms of law- JEREMY: Yeah. I do. MARK: Feel free to share the names and just a little bit about the books and... JEREMY: Okay. So the first book that I wrote that the ABA published is called Building a Better Law Practice, and both it and the second book I have thought of, from their inception, as almost like a devotional for lawyers. The topics are fairly short. Most of them are somewhere between 1,000 and 2,000 words. They can be read in five to 10 minutes a day, and it's really practical, grounded ideas, suggestions, advice for lawyers. And I think it's particularly useful for younger lawyers about managing your clients and your caseload and your practice itself, and growing those things so that you establish your expertise, you can handle your work better, more productively, more efficiently, and get more out of your day. And so, the first book is Building a Better Law Practice. The second book is called Stop Putting Out Fires. And then this year I wrote a book called Level Up Your Law Practice, and about 40% of the book focuses a lot on mindset. It's not something that I was particularly comfortable with because it put me in a place to have to be more vulnerable in writing and on paper than I really cared to be. But I thought that it was an important topic because we deal with... And look, when I wrote most of it in 2019 and early 2020, I had no idea what 2020 was going to be. MARK: Yeah, right. JEREMY: But we deal with so much adversity on a daily basis that if we don't focus some attention on making sure that we have mental and emotional health, then we aren't going to be able to do the work that we do over the course of 30 years without having to come apart. MARK: Yeah. Yeah. You are preaching to the choir on this one. I absolutely agree with you. This whole attorney wellness movement is so, so critical. And again, the pandemic has really underscored just how important this is. Did the act of becoming an author... Again, did you accomplish what you had hoped to accomplish with this? How did it impact your practice? I mean, I find for instance that as I... I've been writing for, oh, gosh, 25 years now, and it's just, the more you do it, I find it enhances me. I learn a lot and it makes me just better at what I do, but I'd be curious about, again, the experience of writing. Again, did it accomplish what you had hoped it would? How did it impact your career? JEREMY: I think that the answer is, yes, it has helped me. There's a lot of times that I don't really know what I think about something until I have taken the time and energy to write about it. And so it has helped me become more focused on efficiency and productivity, which is something that is important to my clients that I do well since they're paying me by the hour. And also, with my firm, they certainly want me to be productive. And then all of the... I've done so much writing about client relationships that it's really... I've had to live it. MARK: Yes. Right. JEREMY: And so, I've had to focus and learn about what do my clients want so that we can have a better relationship, not just for this one particular case, because things might go well or poorly on one individual case. But how can we have a relationship that can withstand any adversity and that we're communicating effectively enough, both about the good things and the bad things, that there's a trusting relationship that hopefully is going to last a career. And so the writing has helped me be a better lawyer because it's helped me focus on the things that I need to do to be successful. MARK: Very good. Before I get to your non-legal writing for a moment, I did note, too, that you're involved in a book for children, moving in this other direction. Can you fill us in a little bit about this whole project? JEREMY: All right. So, in March I posted on LinkedIn, because I'd seen... It was probably late March when I posted this because I'd seen that people have been locked down for a few weeks and there were a lot of really interesting, innovative things that I was seeing lawyers do on LinkedIn to help, whether it's communicate with clients. At that point Zoom was still pretty novel. I think in a lot of ways, we're all really well acquainted with it now, but at that point, most of us hadn't engaged with that medium before. And so I just saw a lot of things, and so I posted, "Hey, if you're doing anything interesting, let's share it and encourage each other." And a lawyer that I knew, Becky Lee, she's an intellectual property lawyer in Atlanta, we're a part of an online lawyer community called Lawyer Slack, LawyerSmack. MARK: Yes. JEREMY: And so, she posted that she had just written a children's book idea. And so I reached out to her directly and said, "Hey, I want to hear more about this. Have you got a publisher?" Like just curiosity at this point. And she said, "No. All I've done is written the text for it." And I said, "I want to publish this through my publishing imprint that I use for my own books," because after that first book with the ABA, and we had a good relationship and I really enjoyed it, but I realized that I wanted to have a lot more control over the final product than- MARK: Yeah. JEREMY: ... what is able to be done through a traditional publisher. And so I formed my own publishing company. And so she and I talked about it and she was interested in doing that. And so the book that she wrote is called, Do You Draw Pictures? And it's a picture book for kids who are basically four to eight-years-old, introducing them to what intellectual property is, what are patents and trademarks and copyrights, because there's so much misinformation [crosstalk] in pop culture- MARK: Oh, absolutely. JEREMY: ... that she realized there's a need for just a basic introduction into what these things are. And so it uses really fun illustrations to just introduce these ideas, and now we've got more ideas for a whole series of books that she plans to write. And then the illustrator is somebody that she's known for years and years, and they were in a band together back in their 20s and he's a cartoonist. And so we have a whole series of books that we want to do for kids that talk about whether it's contracts or first amendment stuff, or just introducing them to ideas that they are going to engage with as they get older. MARK: What I love about this, and I want to comment on it more here in a little bit, you're an example of something that I have been sharing in terms of a personal story in our podcasts. It's a two-part series right now and I will probably add to it over time. I just refer to it as Listening To Your Life. And there's a lot that I hear happening here that you do very, very well in terms of listening. And so I want to come back to that in a moment. The non-law related book, is this a continuation of the evolution of your writing? I mean, what took you in this direction? JEREMY: The answer to the first part is, I'm not really sure yet, but I have written creatively ever since really I was in high school. I was one of those dark, brooding, angsty teenagers, and so I wrote a lot of poetry back then, and then that kind of fell off in my 20s. And then I didn't write any fictional stuff for a long time. And then a few years ago, I learned about this really messy part of my family history several generations ago that nobody ever talked about, and I thought about it and did some research about it and started writing a novelized form of it that occurs in the 1940s, or I guess in 1940, where my grandfather who grew up in Wichita Falls, Texas, which is a mid-sized town out in about two hours northwest of Dallas. It was the midst of the depression. There was no jobs, and so he goes to work for one of the Civilian Conservation Corps camps up in Colorado, where a lot of young men who couldn't find work, the government, the Works Progress Administration under Roosevelt was hiring them to build state parks and national parks. And so he goes to do that. While he's gone, his father kills his stepmother and then himself. And it was just... Nobody ever talked about it. I didn't learn it until well into adulthood, but I thought that there could be a historical fiction novel. Like, this is that sort of thing. So I started writing that and it got real heavy and I've kind of laid it by the wayside for almost a year-and-a-half now and haven't touched it. Then I had another idea for a novel that I wrote a quarter of, and that kind of fell off. But then I just had this dream back in January of 2020 that was really weird. I'll go ahead... The story is, it was me in the dream, certainly, heard a noise in the middle of the night and went outside to check it out. And there were these three guys coming out of the woods from behind my house, and one of them was carrying something in its arms and I couldn't quite tell what it was. And so I told them to stop and they did, and there ended up being an altercation and what they were carrying was this Pegasus, a winged horse. MARK: Right. Right. Yeah. JEREMY: And so, then, they run off and there's this horse laying in my driveway that has wings. And so I take it into the woods to find its mother. And so I had that dream and I wrote all of that down and I had some other ideas that popped up over the next several months and I would write those down. And then in mid August, I figured out, "I can tie all these things together and this can be a novel." So, in August I just started writing and I've been writing almost every single day ever since, writing this story out. And I've just had as much fun doing it as anything else I've ever written, which isn't to say it's been easy. It certainly hasn't, but it's been just really rewarding and fun, and I've just thoroughly enjoyed the process. And I want to do more fiction writing like it, so we'll see. But I also have more non-fiction stuff that I want to write. My podcast that we've mentioned is called Lawyerpreneur, and it's about lawyers who are doing interesting and innovative things, some within the practice of law, others who are doing it in maybe a legal tech or things that are related to law. And then some people who have gotten out of law altogether and just have their own businesses and are doing interesting things. That Was a book idea before it was the podcast idea and I knew that I was going to have to do all of these interviews to be able to get what I wanted. I was having a hard time making myself do the interviews because I just don't like reaching out to folks like that. So I thought, "Well, if I start a podcast, I have to do it." And so, here we are. I started it at the end of March, been doing it for about eight months now. I've done over 30 interviews with lawyers, and it's been really interesting and rewarding. And if for no one else, it's certainly been rewarding for me to talk to all of these folks who are just pursuing dreams and ideas that are really... It's really cool. MARK: Let me respond to some of this. I hear all kinds of things that I just underscore why I wanted to spend a little time together. You talk about the writing being hard but very fulfilling, and trying to do the podcast and the difficulty of reaching out. I get that. But to me, I like to say, and I've said this to my kids over the years, life begins once you push beyond your comfort zone. A lot of people don't want to do things because it's too uncomfortable and they never really challenge and grow. And in my mind, life begins the exciting, rewarding stuff when we take those risks. And you're a great example of how you have continued to grow with this. I also like the fact, referring to listeners back to this, listening to your life podcast topic that I've been doing, I also hear that you do, in my mind, as I see it, listen to your life. You have these things, these opportunities. You're on LinkedIn and you see... Here's an opportunity. I think so many people have these opportunities, whether they're small, large, and they don't even take the time to recognize or think about, "What can I do with this?" And it certainly seems like your practice is, we're successful. That you're a better attorney. I mean, that's what I'm hearing, that you have improved your skillset, lecturing, writing, intake, all these kinds of things. But the big takeaway for me, just spending a little time together, it's circling back to this wellness thing. It seems to me you're a very well-rounded individual and happier and healthier as a result of pursuing these other interests. It's a full life. I have worked with so many lawyers over the years, literally. I've worked literally with thousands of lawyers, but the number of them that do nothing other than just focus on law and never have what I would call a full life. The excuse I hear at times, they'll say, "Law is a jealous mistress," and that becomes a limiting thing. So, to those of you listening out there, I love Jeremy's story and it seems like, Jeremy, there's so many exciting things ahead of you. I'm excited to see where all this goes. Before I sign us off on this, do you have any final thoughts? Anything else you'd like to share? And I'll just give you a minute. I mean... JEREMY: Yes, sure. Something I thought of while you were talking there, is that all of this is a choice. If you want to pursue other things and have a more fulfilling life than just work, you have to make the choice, but then you have to continue making the choice. MARK: Exactly. JEREMY: All my writing, I have done basically between the hours of 5:00 AM and 6:30 every day. And that's when I could make the time to fit it, because it's not going to just happen. You're not going to have the time. If you don't choose it every day, then it's not going to be there. And so whether it's hobbies that you've put to the side, or whether it's something else that you want to pursue and see what you can create, you've got to make a conscious decision and continue to make it to cause those things to happen. MARK: Yeah. Yeah. Very, very good. Well, it's been a pleasure. To all of you listening, again, I hope you found something of value today listening to Jeremy's story. I want to leave you with the thought again, because I so firmly believe it. Life begins at the edge of your comfort zone. You'll take risks, folks. It's worth it. I really believe that deeply. So, again, thanks for joining us. If you have additional topics or some feedback, questions, concerns on risk management, ethics, you don't have to be an ALPS insured to visit with me. Please don't hesitate to reach out. My email address is mbass, M-B-A-S-S, @alpsinsurance.com. Thanks for listening folks. And again, Jeremy, it indeed has been a pleasure and I look forward to seeing what other things come out. I want to take a look at that non-lawyer book when it's published. That sounds quite interesting, so, thanks again. JEREMY: Well, thanks so much for having me on.
What comes to mind when you think about the relationship with your manufacturers? Chances are you have the same picture in your head as so many other brands. You see a series of events that starts with opening a purchase order, and goes down the line of tasks including paying for your items, getting them shipped and then starting the process all over again. It’s a transactional relationship that has seen very little disruption through the years. But the times are changing, and a company called Italic is leading the charge when it comes to developing a new framework around partnering with manufacturers. Italic is a membership-based brand that gives customers access to products produced by the same manufacturers of the top brands in the world. Jeremy Cai is the CEO of Italic, and he likes to say that Italic is a marketplace-inspired supply chain. On this episode of Up Next in Commerce, he explains exactly what that means. Jeremy describes new and different kinds of partnerships with manufacturers that, for the first time, makes them true partners in business. Plus, he explains why that partnership is leading to a better end product and happier customers. He also dives into new ways you can leverage manufacturers that many aren’t aware of, and details the metrics and strategies that subscription companies need to be focused on to rise above the competition.Main Takeaways:Getting in on the Action – Traditionally, manufacturers have not had to put much at stake financially when working with brands. But, with a company like Italic, the manufacturers take on a financial risk. In doing so, they also become more involved partners which leads to a better end product.It’s Deeper Than You Think – There is now a partnership opportunity between manufacturers and brands when it comes to designs and in-house pattern design capabilities t In the past, much of the design and pattern work was done solely by brands. But today, many manufacturers have high-quality design and R&D talent inhouse and create showrooms of products that brands can tap into.Meaty Membership Metrics – For membership-based companies, there needs to be less value placed on the traditional metrics that have so often defined ecommerce companies. Tune in to hear which ones are crucial to pay attention to.For an in-depth look at this episode, check out the full transcript below. Quotes have been edited for clarity and length.---Up Next in Commerce is brought to you by Salesforce Commerce Cloud. Respond quickly to changing customer needs with flexible Ecommerce connected to marketing, sales, and service. Deliver intelligent commerce experiences your customers can trust, across every channel. Together, we’re ready for what’s next in commerce. Learn more at salesforce.com/commerce--- Transcript:Stephanie:Welcome to another episode of Up Next in Commerce. This is your host, Stephanie Postles, cofounder of mission.org. Today, we have Jeremy Cai on the show, the CEO of Italic. Jeremy, welcome.Jeremy:Thanks so much for having me.Stephanie:I'm excited to have you on the show. I was mentioning earlier, but I've read quite a bit about you guys. I see you in a lot of the eCommerce newsletters that I follow, so it seems like you're growing in popularity at least when it comes to people writing about you right now.Jeremy:I don't know if that's a good success metric, but we're doing I think a good job on media coverage right now.Stephanie:There you go. I think it's a pretty good one. Tell me a bit about Italic for anyone who hasn't heard about it, doesn't know what it is. I would love you to give a brief overview of what it is.Jeremy:Sure, so Italic is an annual membership that costs $100 a year and our members get access to hundreds of products that we design and develop inhouse, ranging from cookware to bedding to towels to apparel and accessory, footwear and many more coming soon, but the difference is we sell them at prices where Italic it doesn't actually make a profit. This actually results in pricing that is dramatically lower than both direct-to-consumer companies as well as traditional incumbents, oftentimes in the 40% to 50% to sometimes 70% to 80% range. We've been around for about two and a half years, but we've only launched the membership about a month and a half ago, and so far, it's been a pretty good start.Stephanie:Very cool. You have membership and you're not making money on the actual products. Tell me more about what would be an example of something you're selling and how are you encouraging people to sign up for a membership to get access to everything that you just mentioned.Jeremy:Sure. One example of the product that we sell, and this applies to all their products, is let's just take our slumber cotton sheet set, for example. The sheet set sells anywhere from I think ... Actually, I might have to actually look at this for cross reference, but I think it's like anywhere from $80 to $120. Those are prices where we're not actually making money. Those prices do include things like freight and warehousing and fulfillment fees, but generally it still comes out substantially lower than the prices that our competitors would set. Then in terms of how we're actually attracting new members, really I'd say it's from two general ways.Jeremy:One is I think the goal is for our members to be saving money on their first purchase. This oftentimes comes through the lens of product marketing. If we would do a great job of really letting the products tell their own story of saying how great quality they are, the same manufacturers of so and so brands are, which certifications these manufacturers have, what specific details of the products really sell the product itself, I think that actually helps sell the membership for us because we don't really have to say like, "Hey, with this membership, you're saving all this money." instead it's like, "Hey, this product is obviously really great and it's really high quality."Jeremy:Then once you look at the price point, the perceived value is like, "Oh, I'm going to save pretty much the entirety of my membership fee in one or two purchases," which we see in the vast majority of cases. Typically, 93% of our new members will break even on their $100 fee in one order, but on the flipside on the membership, this is different than the standard transactional model in which you have to be a paying member in order to purchase anything. I think we do have do a fair amount of education in terms of showing to our members or showing to our audience who might become members, "Hey, this product, you can only buy it if it's a membership. This is how the platform works. This is why it's different than a brand. I think we have to put out a lot of content in terms of actually sharing like, this is how we were able to put together this offering that doesn't really exist elsewhere."Jeremy:We do a little bit of both, but I would say right now we lean a little bit heavier towards product marketing since we have a lot of new exciting launches coming up.Stephanie:That's awesome. Talk to me through a bit about what was your thinking behind creating a membership program for because I think I saw you started out with it and then maybe you stopped doing it and they started again and feel free to correct me if that's not right, but tell me about what was that journey like.Jeremy:It was not easy. I would say the way I like to view it is the first two and a half years of our business, we've really been focused on the supply side of operations, building out that product assortment, and exactly like you said, we did launch in 2018 with a membership product. Within basically a month or two, we decided very, very early on like, "Hey, we had three manufacturers in three categories at the time, handbags, scarves and eyewear. As you can imagine, those are not necessarily high frequency purchases to substantiate a membership value proposition.Jeremy:We actually never actually charged anyone for the membership. It was always a test to see how the response would be. Overwhelmingly, we saw that the product response was great, the quality was great, but I think the offering was too limited at the time. Instead for the following two years, we ran a transactional model in which we made money through marking up our products, albeit not as much as a brand would. Our products might be marked up two to two and a half times, whereas our competitors will mark them up five, 10, 15 times sometimes. That's how we made our money.Jeremy:Really the incentive was, "How do we build a product assortment that's large enough, so I guess wide enough and deep enough to attract the member to actually convert?" Around, I would say, Q4 of 2019, to be totally honest, I think we saw two things happen. One was the structural, I guess, implosion of the venture direct-to-consumer model in which a lot of brands, I think, who had been raising money and then going out with this one playbook that hadn't been set maybe back in 2013 to 2017, I think suddenly realized, like, "Hey, we are not technology companies. We are a brand and we make money through transactional volume." Basically, I'm just trying to say we saw the writing on the wall if we were to continue that model.Jeremy:Then in Q1, we also took a hard look in terms of our user behavior. We saw frequencies of purchases, our lifetime values get to a place, our product reviews, our NPS scores all get to a place where we felt confident in our product assortment to date. When we first started, we might have had maybe 30 or so skews. Now, we have over 1,000 skews. It finally got to a point where the product assortment felt mature enough to launch a membership product. We tested that, and then basically right when we started testing it, that's also when COVID hit.Jeremy:We figured there's either two options. One was we just pull that and just focus on building the transactional model again and getting it into a sustainable place which is still the goal, right? We don't want to build an unsustainable growth model or alternatively stress test the model in the peak of, I think, consumer uncertainty in which we would see like, "Hey, does this value proposition of saving money resonate in the time when it would matter the most. Thankfully, it did and I think from April to May, June and July, we monitored our cohorts and user behavior really closely and wanted to make sure that the membership was something that we had conviction in.Jeremy:Eventually, we got to a point where we realized like, "Hey, this is ..." I guess the way I like to put it is our customers always liked us, but our members absolutely loved us. We decided to go all in and then finally released the public version of the product in July.Stephanie:That's great. That's good seeing quick pivots and seeing like, "What is the market telling us? Where are things headed?" and trying out different models. How are you going about building out maybe a financial model because I'm thinking if you have only a membership subscription-type model, there's probably only a limited market? You can't scale indefinitely. There's only a certain people who will be on that versus making profits off of each product. I'm sure those are two very different models. How to do think about it financially when trying the two different ones out?Jeremy:That's a very valid point and I think we knew going into it that there is a lot of subscriptions out there and a lot of subscription fatigue and at least the states in the US in which everyone has a Prime membership or a Spotify subscription or Netflix and to add one more to that is always asking a lot. I think we knew going into it like, "Hey, this is all or nothing in which you can't launch a half-baked type of membership product." I think to the financial level, I think two things are worth noting before we decided to do this. One was the fact that we are capping our upside to $100 very literally for pretty much the extent of the year and the incentive in that case is, one, can we launch products and provide a service that our members love so much that they'll stay for years to come in which our LTV or lifetime value in that case would become quite substantial and hopefully our churn would be low and retention would be high and so on and so forth?Jeremy:I guess that's one area is we really were aware of the fact that if we cap our financial upside that the immediate short term would be that we're limited to $100 for the year, but the amount of utility and value that we could provide to a member would be so great that they hopefully stay for years to come in which our LTV would grow to a point where we would actually outperform our transactional type of behavior. Then the second point, exactly like you said, memberships aren't for everyone. We're very well aware of that, but I think something that has been exciting for us to see is if we're able to build this type of product, I think it is genuinely massively different than anything close to us.Jeremy:Whereas most of these direct-to-consumer brands, they're basically providing products and a story to a customer which is an incredibly, incredibly competitive market. We have a product where it's like, "Hey, for $100, you get access to all the products we sell at a price where we don't make money. I think that's a genuinely differentiated product in which we know it's not for everyone, but we think value-driven commerce, it's not sexy per se, but it is something that is very attractive to a very large segment of the American consumer base. I think we were willing to take that bet.Jeremy:Of course, we wanted to monitor really closely so that we weren't losing money on transactions at least and at least that we were breakeven and we were able to accomplish that within the months of the pilot, so we felt confident in rolling it out more broadly, but I think to answer that more directly, if we didn't see user traction, if we didn't see members using the platform or membership or if we saw our NPS or product reviews drop or if we saw an increase complaint rate, increase return rate, etcetera, then I think we would have actually probably returned back to the transactional model, but it was something that we felt confident enough in just off of a couple months of data that we've decided to go all in.Stephanie:That's awesome. I think that's so great, because it really shows a longer term vision and commitment to be around where I think actually a lot of B2C companies right now are missing that. I don't know if it's because of the VC stage where it was like grow really quickly, but it seems like a lot of people are more ready to just quickly make as much money as possible, maybe sell the company off, see what happens afterwards, but I really like the idea of actually telling your customers, "Hey, we're only going to make $100 profit for the year off you that essentially cover some of our costs." I could see that really helping a customer want to also support you guys along with just wanting it because maybe it's a very good service and some platform they use.Jeremy:Thanks. That was pretty much the bat. The reality of the business right now is if you're a direct-to-consumer brand and you're starting out nowadays, you might raise one round of financing, let's say anywhere from $500,000 all the way to like $3.5 million or something of the sort if you want to pursue that route. That's pretty much all you're going to be able to raise or at least assume that's the last capital you're going to raise, and then subsequently, you're going to try to sell. Nowadays, what I've seen whether it's a PE firm or a conglomerate or a larger direct-to-consumer brand that might be interested in acquiring one of these assets, it's now valued off of EBITDA, as opposed to revenues or run rates which is what we saw in between 2014, let's say in 2019.Jeremy:I think the reality is nowadays if you're trying to build a venture scale business in this model, it's really, really tough. I think the actual advantage of doing so is doing so sustainably with growing off the business off of cash flow as opposed to equity raises and going that route. Then, I think for the companies that have already raised that are in this tricky spot where we were for sure, we had to look ourselves in the mirror and just say like, "Hey, what is something that would be significantly differentiated in the market that has technology scale outcomes that would be potentially accessible if we were to do everything perfectly right.Jeremy:I think that's the only reality where we can actually like continue as a venture scale business. I think that's what we had to really just operate with the mentality of. I think in terms of like the customer empathy too, we always knew that our prices were good, that we always came maybe 15% to 20% lower than the next direct-to-consumer brand, but truth be told, if you were to compare our products which were objectively great products next to a brand's products that built all of their community messaging, advertising, copy, etcetera off of that single category, 15% to 20% off might not be enough to sway one of their customers to decide to purchase the value option, whereas nowadays to go much, much lower into the 60% to 70% range, that's a lot more powerful sway.Jeremy:I think for us we knew that it was a risky bet, but I think the customer would ultimately like it a lot more and so would the investors and I guess, business community at large. I know the brands don't like us, but that's another story.Stephanie:Well, that's actually a good segue. I wanted to hear some of the behind the scenes of partnering with these manufacturers and thinking about the psychology behind, "This is also bought," or let's see, "It's manufactured at a factory that also produces Prada." I saw that on your website mentioning like, "It also manufacturers this, this and this," and I was curious to figure out like, "What was the process to partner with these manufacturers and then also be allowed to say, 'These brands are also built or manufactured at this factory as well'?" It seems like that'd be a tricky area to play in.Jeremy:I can't deny that. I think we have a unique value proposition in that case. That's really what drove I think, a lot of our early interest in the brand over the first two years. In full transparency early on, I was personally quite nervous about it since it is a pretty radical statement, especially since like we position ourselves not so much as an individual brand, so much as, say, a platform or a marketplace or a retailer. I think in the early days we were very careful. All these things, it's not to say that we've loosened up on this. We're still very, very careful about auditing all of our partners, making sure that we're working with the best of the best in each category, regardless of where they are in the world.Jeremy:Oftentimes, that comes along with saying, "Hey, this product is made in the same manufacturer as X, Y and Z brands." That's part of the selling points of the product. I think in terms of the tricky part was obviously on the manufacturer side. We have an interesting relationship with our manufacturers in which it's not like a normal brand in which they're a vendor and we're a client, where we just place a PO and then we'll mark up their products and then that's how we profit. The best we can do in that case is like get letters of credit or Net30, Net90, etcetera.Jeremy:Instead we actually have a financial relationship with our manufacturers in which they actually are taking on inventory risk and we're taking on the marketing risk of this inventory in which their incentive is to take inventory risk for a higher yield or higher rate of return on the inventory that they're producing and owning. Then our risk, of course, is making sure that we can sell that to our members at a price point that is still radically lower than the competition, but at a place where they'd be happy with the profits. I think that was actually the tricky part because manufacturing, and this is actually my personal like family background is a really hard business and margins are already razor thin.Jeremy:On a final sale, a DTC brand might take like 80% of the margin and cost might be like 20% and the manufacturer might actually take like 5% of that cost. That's honestly how it works. It doesn't matter if you're like a legacy brand or a direct-to-consumer brand. Manufacturers treat them all the same because it is the same for them. I think on the flip side for the manufacturer, they are not oriented to take capital risk. They have predictable revenue. If you place a PO, we expect payment certain date, whereas on Italic, there is no legitimate end date for a certain PO to be paid.Jeremy:It's a little bit nuanced and that was actually the hardest part I would say of convincing these manufacturers to join. It really wasn't the brand piece. The brand piece we're always very careful of ... We always do very careful audits to make sure that they're factual claims. We always do audits with our general counsel as well to make sure that we're making claims that are factual. On the trademark side and then on the copyright side, we have a development system when we're merchandising that there's at least a number of differentiating points on the product, but we've actually never really run into major issues on this.Jeremy:Perhaps that's because we're a smaller brand right now. As we grow, the issues might pile up, but at least for now, it hasn't really been, that the legal side hasn't been a big issue. I would say it's actually more so convincing the manufacturers to take on this new type of model, but I think now that we've been around, we have over 50 manufacturers we work with. I think we've had a really good relationship with all them thus far. Yeah, I think other brands always come into question, but it's never actually been like a point of contention.Stephanie:I could see that being really beneficial for you having the background in manufacturing for those manufacturers to also feel like, "Hey, this guy gets me he understands. He knows that we don't have big margins." I want to talk a little bit more about that piece. I could see a lot of the manufacturers really liking that you have a background in manufacturing because you understand that tight margins and you're not trying to maybe push them too far. I was wondering, one, had they ever done this model before where they're taking on inventory risk? Then two, were any of them scared to work with you because they didn't want to make the brands that they work with upset?Jeremy:I can answer the second one first, which I think it's actually pretty straightforward. That has never been a reason why a manufacturer wouldn't work with us. I thought it would be, I guess in actual practice, I think it hasn't been. The reality is most of these manufacturers have a number of clients and I think they will readily offer new clients the current client list and say like, "Hey, this is who we work with. You should trust us," as part of the vetting process. What we're doing is bringing that information that all the brands already know and offering that to a customer as well, so one more layer of information that a normal brand would never offer.Jeremy:The bigger issue with the manufacturer is actually more so just capital. It's like, "Hey, you got to fund hundreds of thousands of dollars for this first run and you're not going to see a payback until we start selling it, and depending on when we decide to launch it or decide to really invest in growing that category or product offering, the return might not be immediate." I think that was actually the biggest problem. Every so often what we'll hear that'd come up is like, "Hey, we prefer that not to happen," but with regards to the brand names being mentioned, it's never been a reason as to why a manufacturer wouldn't work with us. It's always been capital related.Jeremy:Then I think to the point of the model itself, I think people have tried different approaches to this over the years. In the States, at least, there is really no one doing anything like us right now because it is an extremely ... I would say like you really have to be aware of how manufacturing works, how to communicate with them, how to work with them, also how to partner with them. That's not something that like the vast majority of American brands will ever understand and for good reason. They really have no reason to because the entire business model of commerce is built on markups, as opposed to us where you can basically just treat them as a vendor. If it's not working out, if you need better pricing, you can always counter source and so on and so forth.Jeremy:The relationship there was always rather fragile, whereas for us it's very strong from day one because we have to be in which we become basically financial partners immediately. I think they haven't necessarily ... We work with manufacturers in Asia predominantly, in Europe, in the US and for the majority of them, these are not small mom and pop merchants or artisanal shops. They are pretty professional large scale production houses for very large runs. We work with like five different public listed manufacturers. I think for them, this model is, I like to call it like a private label as a service in which they can experiment very rapidly if it works.Jeremy:We do all the design and development in house, so we take care of pretty much all the heavy lifting on the stuff that they don't have, but if it works, great. If it doesn't, the downside is basically the capital that they put into it. We haven't had that happen yet. I think it's a new ... We like to think of it as like a marketplace inspired supply chain which none of these manufacturers have encountered before, but it is something that I think has promise.Stephanie:It's so interesting thinking about everything that's going on behind the scenes and I honestly have not even gone deep into the world of manufacturing, so I have so many questions, but one that comes to mind which is probably maybe a more basic one, but how did you even go about finding out who manufactured what products? If I owned Prada, which I do not, I definitely don't, but if I did, and I was like, "Hey, who makes this? This is really nice," I want to find out what factory it's coming from or who's actually behind the scenes making it, how did you even start that process of finding that out and then finding the next one, the next one and maybe getting referrals?Jeremy:Well, you just named it. Sourcing is a weird business in which it's still and this ... Not just sourcing, but a lot of the supply chain is still heavily relationships based in which it's like, "Who do you know? Who do you know? Who do you know?" and that's who you're able to work with. In the early days, I personally met and lived between China and Italy for the first year of the business and I met with hundreds of manufacturers, many of whom are now our partners, but in the beginning, were very skeptical, "Who is this guy? Who is this company?" I think the best way to put it, it's like in terms of sourcing, the best way to do it is through referrals.Jeremy:We've tried everything from digital platforms to sourcing companies to even trading companies just to see what type of quality and price point we can achieve, but ultimately, we've always found the best option would be to do direct sourcing ourselves. We actually have an internal team coming from the likes of Patagonia, Arc'teryx, Zulily and Amazon, really focused on sourcing the world's best manufacturers in each given category. Each time we want to enter a new category, we will always ask for referrals from our existing manufacturers. There's digital products that help you find manufacturers through other sources but generally we found the best have always come through referral.Stephanie:I think I've looked online before looking into, maybe this is a 3PL that I was looking at. Either way, that whole world seems pretty behind the times when it comes to trying to find things online and get details about it. It does seem like referrals would be the best bet in that industry.Stephanie:I was going to ask when it comes to inventory risk, you were mentioning that the manufacturers take on the inventory risk, do they also have a say when it comes to the pricing of the product?Jeremy:Yup, they definitely do. We are hand in hand with their manufacturers at every single point in the development journey, from material selection, color dyes and sample reviews and so on and so forth in which if we are talking about cost structures and cost payments, or sorry, sample reviews, we're always thinking about price and we're always very transparent with our manufacturers in terms of what our research tells us. If we believe a certain price threshold is too high, we'll tell them, and vice versa, they'll tell us like, "Hey, this is getting expensive. Do you think your customers or members will still want that?"Jeremy:Ultimately, the incentive for manufacturers to earn a higher than normal profit margin on Italic sales because they're taking on the inventory risk, so there, we're able to pay them out substantially more than they would ordinarily make. I think they're very in tune with our orders, sometimes even more than we are in terms of the performance. We've also built a lot of internal dashboards that we'll share with all of our manufacturing partners for them to log into, review the performance. Sometimes, we'll need to set price points that are lower, so that will encourage a product to move faster and they're able to cut down on their margin, but still again, it's at price points that are pretty much close to cost.Jeremy:It doesn't really moving the needle too much nowadays that we're past the transactional model. It's easier to do that on the development side when we're actually developing these products, or on the flip side, if a product is actually performing way too well, they might actually ask for us to develop a more premium version or a version that uses a high quality or a more expensive material, not necessarily higher quality, just a different material. For example, we started with cotton sheets. It was sateen. Now we offer percale and we're looking into linen. Then we also offer eucalyptus lyocell sheet set as well. Those were examples of where we saw their consumer demand really expand what our manufacturers want to develop and as a result their price points were able to change quite a bit depending on the product.Stephanie:I was thinking about that these manufacturers probably have a ton of insights into what's selling with their other brands, what consumers are interested in. I'm wondering, are they even allowed to share that and help influence your guys product designs and say like, "Hey, we see this plain shirt with like a lion on it and selling really well with Anine Bing," which we just had on the show?Jeremy:I guess there's two ways to look at it. One way really is from the lens of like, "Hey, the manufacturer has what I call like extraordinarily delayed insights into performance," in which the only time the manufacturer actually knows about how well a certain skew or style is doing. We're primarily talking about fashion and apparel and other soft goods and home for example. It's a little less seasonal or trend driven, but in apparel for example, a manufacturer will only know the performance of the line after the season or after the client comes back and places the reorder in which their insight is already delayed by a whole, let's say six to nine months.Jeremy:By then, it could already be out of stock or out of favor with the client. The second point is actually much more interesting in which this is the dirty secret of a lot of these brands is the manufacturers nowadays have significantly improved and really, really sophisticated design and development inhouse capabilities. Historically, let's say 30-40 years ago, a lot of the design and development and pattern making and so on and so forth was always done on the brand side. Nowadays, I really call it more of a partnership in which the design and R&D talent inhouse at a manufacturer is so great that sometimes, and this is like extraordinarily ...Jeremy:This is not just like startups. This is like huge multinational brands, all the way to brands just starting out in which their buyers and merchandisers or product developers or designers will walk into a showroom that a manufacturer has made for a season. They'll pick like four or five styles from the manufacturer's design books or pattern books and then say like, "Okay, let's make some small tweaks, but pretty much, it's the manufacturer's design that we're iterating on."Stephanie:Oh, wow. I definitely would never have thought that.Jeremy:It saves a lot of time if you think about it because developing patterns from scratch is really time intensive. You have to ship samples back and forth all the time, whereas if a manufacturer already had a lot of these samples ready to go for you and you just had to tweak, let's say, the material or stitching or whatever it is on apparel specifically that it cuts down development time significantly. It happens pretty much everywhere and really the designers at that point in time are not really designers, but they're just iterating on the final versions of products. I think-Stephanie:That's a good secret that I never knew about.Jeremy:[crosstalk 00:33:15].Stephanie:When you're thinking about getting maybe inspiration though and you're looking around at some of the more luxury brands, how much of that can you actually take and use? Because when I'm thinking about, there's certain things that without a logo on it, you probably be like, "Is that from Walmart?" Sometimes the logo makes it where if it didn't have that, I don't know, personally, why anyone would ever buy it. I sometimes don't know why they would buy it either way have you ever had an experiment like that where you've been trying to maybe let a brand or popular brand influence products where then you're like, "Oh, actually, the logo kind of made that one."Jeremy:I think the way I would respond, one thing we really care about a lot at Italic is having a data-driven sense of merchandising in which we're using our customer insights to really drive the product decisions that we're making, both on the technology front as well as the product development front for our physical products. I think what we realized is, to your point of, "Does a logo make a product or does the product make the logo?" which is actually maybe a good way to think about it, is the fact that logos matter to some people and it doesn't matter to other people, but everyone has a specific category in their lives in which they care about having a logo and then vice versa like that same person might not care about having logos on other products that other people might.Jeremy:I guess a better way to put it is let's say you really care about having a logo on your handbag, but you actually, and I don't know if this is true or not, but let's say you don't actually care about having like the top of the line logo on your bedding or all-clad cookware or Le Creuset Dutch ovens or what have you, right? Let's say that's actually the mentality. On the flipside, I think there's a lot of people out there who would actually have the alternative approach which is like, "I don't care if I have a big fancy handbag, but I am really into cooking and I want the fanciest cookware and I need to have like X, Y, Z brands cookware in order to feel good about my purchase.Jeremy:What we found through a lot of our, I guess, our surveying is, one, the main reason why people buy from us is quality in terms of the product and the second is design and overarching, I guess, the main reason why you sign up is because you're getting quality at cost. The price point and the value you're getting out of your products is really, really high relative to pretty much any other option out there because we're not making money on the products that we sell. I think what we found is the people who sign up, if you're a fashionista for example, you're probably not going to buy our fashion products, but you might actually sign up for your home goods and then vice versa, someone who really cares about that specific type of bedding or having really great towels or candles or what have you, but doesn't really care about having a logo or the next trendy thing.Jeremy:The way we look at merchandising is really anti-seasonal in which we're trying to find products that are always evergreen. They might not be always in style or in vogue, but we know that they're consistent things that people will always want to buy. That's why we try not to fall too hard into having a specific branded look on our products. The product should be able to stand for their own.Stephanie:I like that. I'm just going to say quality always matters, I would think and I'm definitely your person because I'm a logo-less person. I don't care about the brand or where they come from. If the quality is good, it doesn't matter to me who makes it as long as the quality is good and something lasts. I like that. When we're thinking about metrics for subscription business, yours is very unique, of course, because right now, you're like, "We're not going to need more than $100 per person," but how are you guys tracking things? What metrics are you looking at right now to see if things are going well?Jeremy:We've changed our metrics a lot as we transition from a transactional model into a subscription basis as you can imagine, but what was interesting for me is because we run this type of membership in which it's not a ... I guess before I get there, in my mind, there's three types of consumer subscription products. One is you get something in a box every month and it's on a set frequency that you can customize. Secondly is you're paying a subscription for a discount. Then thirdly, as you're paying subscription for access to a certain product, whether it's digital or offline or whatever it is. I think we fall into the latter two in which you're paying for Italic because you want a discount on your products, but you're also paying for access to even shop those products in the first place.Jeremy:I think when we actually transitioned into this model, we realized like, "Hey, all this transactional revenue, metrics that we're tracking are actually great indicators of engagement. Now, those are our leading indicators of, "Are these members happy? Are they getting the most out of their membership? Are they unhappy because they're not using it? Are they logging back in? Is the conversion rate high for members? Is our average order value growing as we add new products or is that actually shrinking in which the products we're adding are actually lower price points?" so and so forth. It's a pretty sophisticated, I think, model that we've had to build in order to actually price these products at a price where we're not losing money on each sale but also not making money.Jeremy:It's on the engagement side all the things that historically eComm companies would track, your conversion rate, your LTV, your frequency of purchase, your contribution margins. These are all things that have now become like performance indicators on a membership basis as a cohort of how we track a certain cohort doing overtime, but now what matters on the company side is actually, "Are we adding new annual subscribers happily? Are they staying? What's our opt out rate? We offer like a 30-day period in which if you sign up and you decide not to place an order and you want to get a refund, we'll provide that, no questions asked. Right now, it's 5%.Jeremy:I think like those questions or metrics that we've done a pretty deep dive in terms of like what we actually want to see. Now really that the core metrics are like, "What's our new annual recurring revenue because it's an annual plan?" and then secondly what is ... We don't have retention yet since our first cohort is still seven months out from renewing. The second indicator of that is like, "What are all the engagement metrics telling us? Does that suggest that they're likely to churn or stay?" I think those are like the metrics that we've transitioned towards. There's a lot more that I could dig in there, but that's at a high level how we think about it.Stephanie:That's great. Are there any methods right now that you're experimenting with and seeing success around when it comes to keeping your users engaged or staying top of mind to them or even like different things that you're changing for the website that's connecting more with the customer when they're coming there? Any tests overall?Jeremy:I think we aren't great about testing and I'll be really forthright about that. We don't have much testing infrastructure built in. We don't have the ability to test their pricing. AB test for us are really just like, I think, very, very incremental changes. I think the biggest [inaudible] which is the transition from the transactional model and I guess the best way to really put this is like for example, during our pilot, we saw behaviors and frequency and lifetime value that we would expect on a transactional customer at month 12. We saw that on a membership level between weeks four to six. It was a literal 10x increase in utility activity for that member versus a customer who would otherwise purchase the product as a standalone.Jeremy:I think that's what I meant going back to the point of customers liked us, members really love us. That was something that we really saw. Then I think in terms of metrics that we're looking to test or at least improve with our customer that can improve the experience for them or at least hopefully it will increase our retention rates, I think that really comes in the form of, "What are the products that ..." The main four reasons why people opt out just for full transparency, one is it's international and we only serve the US, so they actually sign up through eagerly and they're like, "Hey, I didn't know that it's US only." That's actually the number one reason.Jeremy:Number two is financial. It's like, "Hey, I got furloughed or I was laid off," which happened a lot in the early days in April and May. Nowadays, it's less common, but the last two are ones that we can directly address. One is, "The product offering is currently not broad enough. You don't have a product that I want to see or a category that I wants to see." Lastly, "The products that I want are out of stock." This are directly in our control. For example, we'll show now in the coming soon page like what products are coming next for our members and that keeps them excited.Jeremy:Secondly is what products are being restocked. We're placing much, much larger orders, so that hopefully we don't have these out of stock issues. Really the reason was like our members just purchase at a substantially higher frequency than the nonmembers did. We actually underordered prior to the membership, because we didn't know what to expect. I think those are things that ... There are certain features like that that we developed for that use case, but really the only thing that we can solve for in a long-term basis is just develop more products, order more deeply, and hopefully as a result, acquire more members.Stephanie:I love that. I think that's a really good point too about how to keep people engaged and coming back to see like, "Okay, what's coming next? What's the new t-shirt that's coming out that I can get really excited about?" because I could see a lot of members maybe, at least in my head, I would think like if I am in a subscription or a membership, I would probably frontload a lot of purchases right away to get that value and then I might forget. I think that's really smart to find ways to keep someone like me engaged coming back maybe a couple months later if I forget, so that I will renew after the year.Jeremy:Exactly. I think for us really, the goal isn't necessarily to make you buy more stuff if you don't need it. The goal is to hopefully show that, "Hey, you're going to get enough value out of this membership, so that you're going to stay another year, or two or three or four or five in which there's a constant drop of new or a constant allure of new products that will be down the line such as products in travel. For example, we just launched our jewelry line last month and that sold out in a week's time. Now we know, "Hey, there's a lot of demand for that. We should order much deeper in it" I think constantly testing on the product side is something that we do a lot, but now that we're not making money on the transactions, we're not trying to force you to use it unless you want to.Stephanie:Very cool. I saw that you guys had a signup list. I think originally it was over 100,000 or something along those lines. I was wondering, how are you going about acquiring new customers? What kind of channels are working well for you right now? What are you finding success in?Jeremy:The hardest question for anyone in eCommerce nowadays. In 2018, we had a strong waitlist going into the membership, and then once we launched, we were like, "Hey, the membership is not going to work. We dropped it in, and instead all those people on the waitlist became our email subscribers and we were ... Fortunately, they eventually became customers as well. That was where a lot of that 100,000 original list went to. Then more recently, we actually had another waitlist. This time, it wasn't for marketing purposes, but it was actually like a legitimate operational waitlist in which we simply didn't have enough inventory to serve all of our members to a great experience in which if you've logged on in the third of all the products were sold out, that's not something you want to see as a first time experience.Jeremy:We have the waitlist up for a while, up until we can restock more deeply to address those issues which we've recently done. In terms of the new customer acquisition, I'll be like totally honest. It's a mix of performance marketing and brand marketing. We internally separate our marketing team into two. One is brand which is everything nonpixel-based or nonattributable to a pixel. Everything growth is pixel-based in which it's pixel through Google and the intention of growth is to grow the membership base. The intention of brand is to keep our cost per acquisition on the growth side low, so that hopefully it's not the first time that you're seeing, let's say, an ad from us, but instead it's actually a recall.Jeremy:Examples of that would be like influencer would be in brand. TV would be in brand even though I know there's pretty good models for tracking nowadays and attributing podcasts we still put in brand. All these things ... I guess I'm being hypocritical because those do have pixels nowadays, but really the intention of those is to get in front of you first, so that by the time that you see a Facebook ad or a Google ad, that you're already aware of where we are, so your interest is already piqued.Stephanie:Cool. All right. We have a lightning round coming up. Before I move on, is there anything that you were excited to cover that I forgot to ask?Jeremy:Well, our basics are dropping tomorrow-Stephanie:All right. Well, tell me more about the basics.Jeremy:We've had a line of recycled t-shirts for a while and those were really, really popular through a lot of quarantine. The number one requested kind of products for us for years has been a line of just great Ts, plain really high-quality t-shirts. It's finally coming out. I've been waiting literally a year for this. I'm super excited, but that's all. That's it.Stephanie:That's great. I love a good t-shirt. Actually, maybe it's always been a trend and I just haven't paid attention, but now it feels like it's really coming back to just wear a normal plain t-shirt or just something like simple on it. It feels like it's coming back strong, but maybe it's always been here.Jeremy:That's not surprising. I feel like a lot of people nowadays ... I'm sure there's a lot more people out there who could speak much more eloquently on why basics are great, but basics are always in vogue and our members have been requesting it very actively, so I'm excited to finally get that out.Stephanie:I will definitely have to check into that when it drops. All right, let's move on to the lightning round brought to you by our friends at Salesforce Commerce Cloud. This is where I'm going to ask you a question and you have a minute or less to answer. Are you ready, Jeremy?Jeremy:Yes.Stephanie:All right. What's up next on your reading list?Jeremy:Well, I actually just got a copy ... This is going to put me in a bad light, but I don't always read business books, but I just got a copy of Reed Hastings new book. I'm excited to begin. I literally just got it right before this interview. That will be next.Stephanie:Cool. What's the title of it? I don't know if I know which one that is.Jeremy:No Rules Rules.Stephanie:I'll go check that out. You have to let me know if you like it.Jeremy:Yeah, will do.Stephanie:All right, what's up next on your Netflix queue?Jeremy:I've been actually watching The Legend of Avatar which is-Stephanie:I don't know if I've actually seen that one.Jeremy:It's an anime, cartoon that used to run on Nickelodeon as a kid and I forgot how good it was, so I just watched that again.Stephanie:That's great. Netflix probably knows not to advertise that to me. They're like, "You just probably won't like that one." All right, if you were to have a podcast, what would the podcast be about and who would your first guest be?Jeremy:I've actually been thinking about doing one.Stephanie:You should.Jeremy:It's been on the list. That's actually why I have this fancy bike here.Stephanie:You do sound great, though.Jeremy:I think I wanted to do like a podcast show where ... I live in Park City, Utah. There's a lot of great ... I took up fishing during quarantine. I haven't really caught anything, but it's really relaxing. I thought it'd be fun to go out and go fishing and then do an interview at the same time. I think guests-wise, there's so many people out there. One brand I've admired for a long time is the, and I like loosely know them, but I've really liked the Buffy team for a long time. I feel like they're pretty unique. They have a lot of success, but they've still been humble about it and low to the ground. I think it'd be really cool to have them. My background isn't just like eCommerce and retail. I think it'd be a mixture, but yeah, that'd be a cool one.Stephanie:I like it. I can only imagine you catching a fish while trying to interview and how that was found. Interesting. All right, what is the favorite piece of tech that is making you more efficient right now or that you're enjoying?Jeremy:Oh, man, that is a tough one. I use a lot and the whole Italic team makes fun of me for it because I always add something new every week. I think the one that stuck with me for years is this company called Missive. It's a collaborative email inbox that allows the entire team to work in conjunction on emails. Let's say it's an email with a vendor or an email with a YouTuber who we want to advertise with, we can collaborate in line without having to go to Slack or take it to another email thread in the same place. Missive and Front in the same vein does the same thing. I think those two products are ones that I really couldn't live without.Stephanie:That actually sounds really good. Can you send it out? If I was one of your employees, could I say, "Send this out under Jeremy's email because he gets better responses as the CEO than I will"? Personal question. This is something I actually want to know for myself.Jeremy:There's actually a setting to do that in which you can share an address and other people, like let's say an assistant can send it for you, so yes.Stephanie:I like that. I'll check that out. Awesome. The last, slightly more difficult question, what one thing will have the biggest impact on eCommerce in the next year?Jeremy:I'm not going to give you the cliche answer and say COVID changed everything, which it did, but-Stephanie:We all know that now.Jeremy:I actually think it happened last year and then I already alluded to this earlier, but I think the biggest change will be the transition from ... People have been talking about these like DTC waves. The first wave was like the Bonobos, Warby, Everland 2008 to 2012 era, and then, the second wave was like everything thereafter. A lot of the direct-to-consumer brands you see nowadays, it's the category leaders per se, but I think now people ... Let's say from, I don't know, 2014 to 2018-2019. I think there's been a big change in the operating mentality of these newer brands in which if you're a new brand starting out, you can't go out and raise these massive rounds that these companies used to off of revenue growth because people have realized now, this is not technology revenue growth. This isn't like an 80%, 90%, north of gross margin product.Jeremy:There is a saturation level to performance marketing. I know I'm sounding like quite cynical here, but I mean that actually in an interesting opportunity in which you can actually raise that money, but I think if you're creative about cashflow and you're creative about how you grow the business, you can build a huge business. I guess Gymshark would be a great example of this in which you can bootstrap to a really large volume without having to raise equity financing. I think you can do it through focusing on cash conversion cycle which is what Gymshark has with its founders or you can have in any case of owned supply chain like House or Buffy does.Jeremy:I think there's different ways that you can frame the direct-to-consumer model that allows you to still grow, but I think the era of venture-backed DTC, getting into the series, A, B, C and onwards is probably over. I think that's already happened and I think that will probably be the biggest impact on the ecosystem.Stephanie:I completely agree with that. If you sound cynical, then I think cynical too, because I completely agree with that. That's a really good point. All right, Jeremy, this has been such a fun interview. Where can people find out more about you and Italic?Jeremy:Italic is on italic.com and I am @jjeremycai, J-J-E-R-E-M-Y, C-A-I on Twitter. I think that's the easiest way, but we'd love to have anyone as a member.Stephanie:Awesome. Yeah. Thanks so much for coming on the show.Jeremy:Thank you.
Why wouldn’t someone like free swag? That’s not a rhetorical question. In fact, Jeremy Parker has been trying to answer that question since he co-founded Swag.com in 2016. Jeremy knew that swag and other promotional items were becoming key marketing tools, and he saw an opportunity to build a business that brought those items straight to the people who needed them. On this episode of Up Next in Commerce, Jeremy takes us behind the scenes of what it was like building Swag.com, including how he went from 3,000 organic site visitors in a month to more than 40,000 organic visitors. The journey to that success was paved with many hiccups, including the difficulty that comes with building an ecommerce platform from scratch, and trying to land their first big-name customer by walking around that company’s campus until they found a buyer. But today, Swag.com can handle unlimited orders, and that first customer was a little company called Facebook. How did it happen? Learn that and more on this episode. Main Takeaways: The Snowball Effect — Attracting customers is always easier when you have a proven track record that you can point to. Therefore, it is critical to land key accounts in the early days that can be referenced in future sales conversations. Because when you can point to one successful company that works with you, other companies will follow suit. What To Know About SEO — Good SEO doesn’t happen by accident. Even though you might have great products and a thriving customer base, organic growth doesn’t happen unless you’re paying attention to your content strategy and making the necessary little tweaks that will bump you up in the search results. If You Build It, They Will Come — When deciding on your product offerings, you have to get inside your customers’ heads and build up an inventory of things that people actually want. Sometimes that means you have to get your hands dirty, do some testing and try things that don’t scale before finally settling on the right blend of offerings. For an in-depth look at this episode, check out the full transcript below. Quotes have been edited for clarity and length. --- Up Next in Commerce is brought to you by Salesforce Commerce Cloud. Respond quickly to changing customer needs with flexible Ecommerce connected to marketing, sales, and service. Deliver intelligent commerce experiences your customers can trust, across every channel. Together, we’re ready for what’s next in commerce. Learn more at salesforce.com/commerce --- Transcript: Stephanie: Welcome back to Up Next in Commerce. I'm your host, Stephanie Postles co-founder of mission.org. Today on the show we have Jeremy Parker, the co-founder and CEO at Swag.com. Jeremy, how's it going? Jeremy: Hey, thanks so much for having me. Stephanie: I'm excited to talk all things swag. You saw my shirt hoodie. I was ready for you this morning. I have everything branded mission. Jeremy: Every everyone needs a little schtickle of swag in their life. Stephanie: I agree. What is the first piece of swag that you remember? Jeremy: Oh, wow. For myself, I've been going to a ridiculous number of trade shows and events over the years. Honestly the earliest swagger member was stuff that I ended up throwing away and that's one that gave me one of the ideas for Swag.com and we wanted to make sure we only offer products that people actually want to keep. That was my main mission from the very beginning. Stephanie: Yeah, same here. I remember getting a bunch of stuff and throwing it away, but I remember being so excited it was back I think in 2010, it was like my first finance conference and I got like a Koozie. I was so excited because it was like the first thing that I'd ever gotten for free maybe and finances a little bit. Sticklers is about giving stuff away for free. And I look back and laugh now because I would go and collect all this stuff and it would ultimately end up being nothing that I really used. Jeremy: 100%. From the very beginning of our business, we were thinking of swag as an amazing marketing tool if it's used right, so obviously that's a big caveat. And when you think of just marketing in general and you have TV commercials and everyone's trained to now fast forward through commercials and you get a magazine, you flip through the ads, or you put your ad blocker on your computer. If you give somebody really high quality swag, they say, “Thank you.” It's really a powerful tool if it's done really right. And it has to be something that people are actually going to want to use. We don't really like to push the flashiest thing or the new hottest thing. It's all about what are people that actually use every day and get those impressions of. Stephanie: Yeah. I love that. Before we dive way too deep into Swag.com, I want to hear a little bit about your background because I see you've done a lot of things in your previous life. And I wanted to kind of hear what your journey was like before founding Swag.com. Jeremy: Sure. I was a documentary filmmaker actually in college, that's why I went to school for. I actually never wanted to be a filmmaker when I went to Boston University. And I looked at the curriculum and I really wanted it to be in high school my whole … Before college life I always wanted to be a marketing guy. I was always into branding and commercials and how to tell stories through marketing. When I went to school and I looked at the syllabus of film and marketing, they really were the exact same thing, except for film taught me how to make videos. And this is right at the onset of like YouTube. I thought that would become valuable. I became like probably the first filmmaker at BU history that never actually wanted to be a filmmaker. Jeremy: But as I was in school for those four years, I ended up making a feature length documentary that ended up winning the audience award at the Vail Film Festival. And I was [inaudible] and I walked down and the brunch the next day after the award ceremony and half the room are these major celebrities and half the room are these struggling filmmakers. And I did kind of an internal gut check of, am I good enough? Is this what I want to do with my life? And it wasn't, so right after I won this award, when people primarily feel like on a high, they're like, “Oh, I'm going to become the biggest filmmaker,” my thought was, “What else am I going to do? What's my plan? What's really my plan? What am I good at?” Jeremy: And when I graduated college, I didn't know what I was good at. I had no real experience in business or anything, but I thought maybe I should start something and just learn what I'm good at, what I enjoyed. I started a t-shirt company right out of college when I was 21, 22. And really I thought t-shirt sounds so simple, but really you're learning manufacturing, PR, marketing, building an Ecommerce experience, all the different aspects of business, fulfillment, all these different things. And I tried to figure out what I was really good at. Jeremy: And over the last 10 years, I've done a lot of different things. I started the company with my brother and Jesse Itzler. Jesse is the co-founder of Marquis Jet, private jet company. He sold ZICO Coconut Water to Coca-Cola. He's one of the owners of Atlanta Hawks. I started a company with him where we partnered up with different celebrity influencers and we owned their celebrity rights to Twitter and Facebook feeds before people knew how valuable it was. This was nine years ago or so. Jeremy: So [inaudible] a lot of celebrities, buying their rights. That company ultimately got bought by a publicly traded company. I then went on to start a social networking app that ultimately failed. Never start a social networking app, I'll tell you that. Extremely difficult. Stephanie: Semi-hard. Jeremy: Yeah, it's semi-hard to do. And we built an app called Vouch. That basically was about like Oprah's favorite things democratize for everybody. You could vouch for your favorite movie and book and charity and anything you'd want to vouch for and people who follow you really get to know what you like. Really kind of making the like button with its own platform. We ended up having 100,000 plus users. We had tons of influences. It just never materialized. And after doing that for three years, I realized that the next business I want to start, it needs to be something where we made money from day one, I could give a service and a product and I started Swag.com. Jeremy: So, it's been almost five years at this point with Swag. We were just named the 218 fastest growing company on the Inc. 5000. We have 5,000 companies from Facebook, Google, Amazon, Netflix, TikTok, Spotify buying on our site and we spent a really big portion of that building is automated experience for purchasing swag. And now it's about, now how do you handle the distribution of swag? It's more than just making it easy to buy. How do you get into the hands of people? And especially now with this pandemic, that's really the most important thing. Stephanie: Yeah, I was just going to touch on that. I know everyone's probably wondering with everything going on, where conferences are being obviously canceled and not coming back for a while. How are you guys handling that? Because I'm that the swag industry right now is down overall. What are you guys doing right now to not be part of that downward spiral? Jeremy: Yeah, that's a 100% true. They just came up with numbers. ASI, which is like the big organization for promotional products, just came out to number that over 92% of companies in our industry are down approximately 50% in Q2 this year versus last year. So, it's really bad. And then obviously it makes sense on the surface where you have our core buyer was like the HR manager buying for onboarding of new hires. That was one of our big purchases and no one's hiring right now. That business goes away. And then you have the marketing teams buying for trade shows and there's no trade shows happening, so that business goes away. Jeremy: Then you have the office manager buying for internal office and company culture, and no one's in the office right now. You have all these different buyers that really are not buying swag for the normal, the typical reasons to buy swag. So like everyone in our industry, we were very nervous like what's going to happen. And what we've been able to do is take this platform, our swag distribution platform, which is what we're really pushing and what we're really excited about. We'd been building this really amazing platform over the last two years, specifically for marketing managers. That was the initial idea of it. Allowing marketing managers to easily be able to buy swag and then send swag to the remote customers or to best leads to close sales. Jeremy: That was their initial intention. But obviously with this pandemic and everyone's working remotely, it's transitioned to office managers and HR managers really buying swag in bulk and sending it to the remote employees addresses to keep the company culture thriving, even when no one's in the office, so much so that not only are we not one of the 92%, that's downloading over 50% our Q2 this year was more than our Q2 of last year and July was almost double our last year July. And it was our best month ever and August is even better than that. We're really growing frankly in a crazy time for everyone. Stephanie: That's amazing. Now, I'm thinking about it. I ordered swag for our team maybe two years ago and the process, it was crazy. It was so much back and forth of like, “Here's your quote. Oh, you want to more of this? Okay. Here's your new quote? Here's what the design might look like.” It was just a lot. And then of course the big box came to me and then I had to maybe ship things out individually or wait until I saw people in-person if I was being a little cheap. What does it look like now I'm thinking about reordering hoodies and shirts for our team members? But of course I would have to individually maybe shift them out again or are you guys different? What is your process look like that's so different than others? Jeremy: Really simple. On our site, we have very curated selection of products. You're not going to be overwhelmed with too many options. Say the top 25 mugs, you find a mug you could use our filtering tools, really easy to search by color or price point or your type of brands. You find the product you upload your logo. Our system will detect how many colors are in your logo, in the nearest Pantone match. We're making sure we're printing, Coca-Cola red and not Staples red. Once the logo is uploaded, you can maneuver the rounds, you can mark everything up. You select on your quantity price adjuster in real time and checkout. It literally takes less than three minutes to buy swag. There's no back and forth. You can also use our instant quote tool, if you wanted to quote things out before you want to go through the design process on our site, you can upload your different variables, the quantity that you're looking for, how many print locations, the number of colors in the print. It takes two seconds and you're coordinating things out. Jeremy: So, there's no back and forth emails, there's no phone calls, there's no presentation decks. It's none of it. It's really completely automated streamlined. And then when you're going through the checkout flow, obviously you can input your own address, so we'll ship everything to your office. Or if you want us to handle all the distribution for you, there's a pink button on that shipping page that says, one is to hold your swag and inventory easily distributed, [inaudible 00:09:29]. You click on the button, you follow the onboarding and then we hold all of your swag in this online Swag closet if you will, where you can manage all of your inventory in real time. If you're ever running low in stock, we'll send you smart notifications to restock. If you want to send 1,000 different locations, you upload a CSV file we'll calculate the shipping costs in real time, based on the product you selected, where they're going. Jeremy: Once you pay for that, we grab those products off the shelf and we're shipping it all over the world for you. We really streamlined the entire experience. We take it a step further if you wanted it, some companies want this, some companies don't, but we have a whole ability to create different inventory closets for location or for a department. You can have a marketing closet versus a sales closet, versus your London office or New York office. Different people should get access to it. There's different permission settings, approval flows, et cetera. You could really break it down by department, by location and we're doing this with a lot of global main companies all over the world. Also, a lot of small startups who just want to use our service as a way to distribute swag. Stephanie: I was looking through your site and I saw products there that I haven't seen in other swag companies. And I wanted to talk a little bit about how you guys go about picking your products because all of them seemed high quality where oftentimes, I'll go through it and I'll find 50 different shirts on a custom t-shirt company website. And I'm like, “Oh my gosh, actually let me look through all the reviews. Let me see if they're good. Okay. 95% of them are all bad. They all have bad reviews, bad fits, whatever.” How do you go about making sure that you only have high quality stuff there that people will actually want? Jeremy: That's a great question. And that was the challenge. And it's an ongoing challenge, always. From the very beginning, me and my co-founder, each invested $25,000 of our own money. That was our first startup budget. What be used primarily for that was buying samples. We went out and we went to different trade, shows all over the country and we bought samples from tons of different suppliers. And we saw exactly what customers typically see when they buy from sites. A lot of this stuff was really poor quality, would end up in the trash and we would never feel comfortable selling it. We were really kind of laser focused on only offering a curated selection of products that we would actually want to keep ourselves. It's a lot of testing, it's constant testing. Jeremy: How we kind of look at the whole process is we want to have the best of what's out there. It could be the relatively inexpensive, or it could be premium. It doesn't really matter we have to have stuff in all price points. We don't want it to be known as the premium quality supplier. We want to be known as the quality supplier. We have a lot of products there high-end brands, Public Rec, Rowan, Top Wood Designs, Patagonia, different products like that. We also have no name products that you had never heard of, but they're really, really quality. We have a product sourcing team that's constantly contacting a lot of direct to consumer type of products and brands that are not traditionally found in the promotional product space and going after them as well, because we want to be known as the company that has products that no other company in our space offers. Jeremy: What we've been seeing is that a lot of companies that are okay featuring their stuff on our site or are happy to feature their stuff on our site like Bellroy Backpacks, they've never done it in other promotional product sites because the other sites, feel schlocky or throw away or cheap in some way. And we are really, really not that. We're really trying to focus on quality products, stuff that people would be proud to show off, stuff that when you get it, you're going to want to wear it every single day because that's really the only real reason why Swag is a true benefit is that people actually want to use it. Stephanie: Yeah. So, now that you can't go to trade shows and try things out, and are you still going through that process when it comes to finding new products, like just ordering things that you think are great and trying them out, or is it different than what it used to be? Jeremy: No, it's exactly that. It's less expensive in some ways and more expensive in other ways. We want to make sure we have the right products that we're constantly spending a ton on samples. And now at this point in the business also, we're almost five years in and we're somewhat known in our industry. We're the fastest growing company in the promotional product space. A lot of different, great suppliers and direct to consumer brands have heard of us, so they're willing to send us free samples. We don't necessarily have to pay for it anymore. But we're just constantly sourcing more products and taking some products that maybe were cool last year, but we don't think they're going to be good this year and replacing it with new stuff. Jeremy: We don't want to keep just adding and adding and adding because it then makes it very complicated for customers to make a decision. So, we're constantly, always looking at our site and saying, “Is this the right blend and mix of products?” And we're always never happy. We're always constantly trying to improve it. Stephanie: Very cool. I'm guessing there's also a bit of like a data element where you can probably look into the data and see what people are either enjoying. Do you do reviews? Do you use customer feedback to also influence the products that you choose? Jeremy: Yeah. 100%, yeah. After everyone places an order, we always have a survey that automatically goes on the time of delivery, very basic. It's like one question like, “How satisfied were you?” So we can get our ranking and see how people like the products and how they turned out. If we ever get any sort of bad or not 100% amazing feedback about a product, we'll look into it and maybe there's something wrong, maybe the print quality wasn't great for that order or maybe the product itself wasn't as great as what we thought and we'll just remove from our site. We're constantly listening to our customers, understanding do we have the right products at all times? Because that's very important for us. We need to have that. Jeremy: We're constantly testing more and more products. And obviously we're learning what people are adding to their cart. How many products are being … What products together go? We sometimes find that if somebody buys a tote bag, they're going to buy other products that could fit into that tote, like smaller products. Or if they buy a backpack, other types of products are usually bought with backpacks. We're constantly looking at data and trying to make sure we have the right mix of products that go with each other, so we can start positioning certain products. When you buy a backpack, the products that are featured as you might also like actually make sense. So, not just what we think, but what the data is telling us. Stephanie: I love that. Along with maybe getting personalized recommendations, depending on the product they chose, are you also personalizing the experience based on maybe what company is looking around? If a LinkedIn's looking versus Google, maybe you know that Google always buys hoodies where LinkedIn buys coffee mugs. I don't know. Are you personalizing it based on who's actually browsing? Jeremy: At this point, we're not. And we've been constantly thinking about that. The challenge is that there's so many different buyers within companies. Even if we worked, let's say with LinkedIn, which we do or Google, which we do, there's so many different divisions within Google that are completely different. We're selling to the HR team or the marketing team or the sales team or office manager, or just somebody who's buying it for their local team. Everyone's looking for different things. We've done for Google complete stuff, obviously the normal stuff of notebooks and t-shirts and sweatshirts, backpacks and water bottles. But we've also done custom Allbirds Sneakers. It's hard to kind of match up always and all the buyers are necessarily not always the same. Jeremy: So, it's constantly changing, but as we're growing as our processes and we're able to handle a lot more orders and we're analyzing more data, I think that will be a shift in the future of really making the experience as personal as possible and that might be not making it personal at all based on companies or that might be going the opposite way and making it super, super personal. We're kind of learning what's the right mix at this point. Stephanie: So, to talk a little bit about maybe the backend, the tech stack, it seems like there's a lot going on behind the scenes. I first wanted to start with, I saw that you were quoted saying the platform's able to handle unlimited orders in a day. And I was wondering, is that because you guys are leveraging cloud infrastructure or have you built some kind of scaling methodology? What does that look like behind the scenes to allow you to have unlimited orders? Jeremy: Yes. We do work with AWS, which for the cloud obviously makes things a little bit easier, but our entire platform is fully custom. Every single aspect of our site is custom. We're not using any other services. Obviously we're using like Intercom live chat. We're not going to be building our own chat, but the entire platform itself and all of our pricing is very complicated. That's why there's not a lot of companies in the space that could do what we do because it's fully dynamic. Every price tasting consideration, the quantity that you're looking to buy, how many print locations, the number of colors in the print, all these different variables that have to be in play. And now if we have 3,000 products on our site and 200 core products, they all have different pricing structures, they all have different under base charges, they all have different kinds of printing methods from screen printing, embroidery, laser engraving, all of these come with different complications. Jeremy: So, we really had to build our site from this place from the very beginning we couldn't just take an out of the box solution. And frankly I would have loved to take an Ad Box solution for this because it's been taking me five years to build [inaudible] building. We have a 15-person tech team and we're growing, we keep developing more and more and more because it's important. And we want to always stay one step ahead. At this point, like yesterday we did north of a 100,000 in sales all through our Ecommerce site. Things we could really scale and that same day. The day before we did 50,000 in sales and then hopefully today we do more than a 100,000 sales. Every day could literally be completely different and it's completely the same automation. Somebody could buy 5,000 notebooks or they could buy 50 notebooks or 15 notebooks or 20,000 notebooks. And it takes the same processing ability, same exact time for checkout. Stephanie: Very cool. Yeah, that's great. When you're thinking about back in the day, starting out with a custom website versus maybe pulling something like using a platform that is already out there, how did you go about deciding that you wanted something custom and then what did that process look like? What were some of maybe the mishaps or failures along the way where you're like, “Oh, if you guys are trying to build something custom make sure you don't do this or that you avoid this.” What kind of learnings did you get from doing a custom? Jeremy: Actually the truth of the matter was in the very beginning of the business, we went all in on Shopify. And we went all in say, “You know what? Why are we building our own Ecommerce experience when somebody else could do it significantly better than us or is worked through all the kinks?” The challenges, when we start to really build a Shopify, we realize how complicated our specific industry is in terms of pricing. And there's no really easy way. There's no Ad Box solution that could really do it. We spent literally two and a half months building the Shopify store only to then realize, which was a big mistake on our part, that the pricing was not able to be done. Jeremy: We had to really scrap it and start from scratch. And we realized it's going to take us a lot longer to get where we want to be, but we're still not where we want to be, but it makes the most sense. It's really the only way to streamline it as much as we want to streamline it. Now, the typical process of promotional products, as you mentioned before, it's a lot about phone calls. It's back and forth, this quote versus that quote. You change one little element, the whole quote changes. We didn't want to deal with that. We wanted customers to be able to do it themselves, no talking to anybody. If you don't want it, obviously if you want to call us, we love to hear from you, but you don't have to. You could do every single thing yourself and we want it to make that effortless. Jeremy: You want to hold things in inventory, click on the button and now it's all in inventory. You want to distribute swag, upload this and it ships out. Every single thing on our site, we wanted to make it as easy as possible and historically, and traditionally it's not been easy at all. And it makes sense because of how custom the product offering is. Stephanie: If you would have, maybe on day one started out with like, here's the kind of things that we're most interested in. Did you know that you wanted this custom pricing option and did you go and kind of look at different platforms to see if they could do that? Or did you just jump right in? Jeremy: Yeah. From the very beginning, honestly, we spent a year before we built any platform. Our initial idea was we don't really know the platform to build, we knew that the industry needed to be shaken up a little bit. We knew how old and fragmented the industry was, but frankly, I think most entrepreneurs could agree. You honestly know what the right answer is. Most people don't, they think they do, they don't. From the very beginning, our idea was let's just learn as much as possible. Let's reach out to as many office managers, HR managers, people that we know within industries by swag. And let's ask them what they like and hate about the current buying experience that they're having. And we would show up at meetings and we would literally say, “What sites you buy from?” And they would give us some site names and we would look over their shoulder really. Jeremy: This is what we did for the first year. We spoke to over 200 different office managers, HR-related buyers. And some ended up buying became customers of ours for many years and some moved on to other things, but just to see how they purchase swag was a big tell for us, really what the process was. Looking at their email back and forth 40, 50 emails with a rep just didn't make any sense to us. We kept kind of thinking. That was kind of the first six months of our business. The second six months of our business, the remainder of the year was about, “Well, let's do it the old school way. Let's just launch a landing page. Let's go out there. Let's be a traveling salesman and try to sell some stuff.” And we really learned how painful it is. It's like it takes forever to quote, there's a lot of manual labor. Jeremy: Every single thing that was painful for us, we then figured out a solution to automate it. And we kept just chipping away at it. Stephanie: That's so important. I think it's Paul Graham who said do things that don't scale. And that's how you actually learn, like what's working, what's not working and what to build going forward. That's really smart. Jeremy: Exactly right. And that's the same thing with even getting our customers. Now, I haven't made a sales call in four years, but in the beginning I was doing everything. Me and that co-founder, Josh, we would show up at offices and try to sell. And we sold to Facebook as one of our first customers. First customer, really actually. We had a friend who worked at Facebook, got us in the door. We ended up walking around Facebook's office in New York just speaking to whoever we could to see somebody who would buy swag. Ultimately ended up selling them a couple of t-shirts, like 100 or 200 t-shirts. We barely broke even on it. I think we made like 5% margin, like barely anything, but didn't matter to us. It was just about getting that Facebook logo. I remember two days later we showed up at WeWork in New York and WeWork asked us who else we work with? And we said Facebook. Jeremy: They assumed we probably had thousands of others because we had Swag.com brand and Facebook, but really it was just Facebook. And we got, WeWork and we continued that cycle to get that really five core blue chip companies. It was doing the really unscalable things like showing up, showing the products in-person, making the sale, really learning the process as much as possible, and then automating the experience and making that whole buying experience effortless. Now, people don't need to speak to anyone if you don't want to, that's really what our main goal was. Stephanie: That's great. Yeah. I think we've had a couple people on the show. Who've talked about just finding that first customer that you can kind of leverage as the brand name and then just pointing to them and be like, “Yeah, they work with us. Like you should too.” So I think that's a good lesson for a lot of companies starting up. If you find that one brand name and you can reference them, it'll probably help with all future sales. Jeremy: 100%. It's all about social proof, at least what we have learned, it's everything. People are not going to work with you if they don't feel confident. To build up the confidence, obviously you have to have a great platform, but that doesn't happen overnight. That takes time. You have to have a great brand and a great design, make people feel confident, but other ways are who else you've worked with? A lot of our shirts and what's big reason why we've been able to scale with very little money is a lot of our t-shirts and apparel has a Swag.com in your label. We do our own products. Jeremy: When people [inaudible] t-shirts that's 5,000 people knowing about Swag.com. They see the t-shirts, they see the quality, they feel how great it is, they see the print, they have the instant social proof that Facebook uses them or Google uses them, whoever is getting the product and they see Swag.com and it drives a ton of traffic to us. That only really works if the products are great as well. Obviously people are getting really poor quality and everything's says, “Swag.com,” no one will use us. It'd be opposite [inaudible 00:25:52]. Every single thing really has to work hand-to-hand Stephanie: Yeah, that's a really. Jeremy: Yeah. We were thinking about it initially because I wear jeans a lot. I was thinking like I buy one pair of jeans for like three years. It's kind of looks cooler, the more you wear jeans, it gets more faded. But with Swag.com or swag in general, people buy stuff for a specific reason. You're buying it to give it away and then you need more stuff. If they're buying it to give it away, we have to make the experience of giving away products that other people actually want and see. And then that new person, that person who just bought that 5,000 t-shirts now they need more stuff for the next event. It's a completely different kind of business. And we just try to figure out, we have to make sure that our logo is everywhere that it can be, obviously within reason. Stephanie: I love that. Let's talk a little bit about the backend when it comes to warehousing your inventory. How does it work behind the scenes? If you're able to allow someone to essentially have their cart saved and then say, “Okay, ship this to one person in California and then ship this to one person in Florida.” What does the backend look like to make those logistics work? Jeremy: Yeah. Upfront in terms of the actual buying swag and bulk, we have integrations with different kind of the best vendors in each industry. So, like the best one for drink wear, best one water bottles and obviously we have a big selection of product. When somebody buys 1,000 mugs or something on our site, it's automatically connects to our supplier network that produces the highest quality mug with their logo and then drop ships it directly to the customer's office or wherever. But if they're holding stuff in inventory, it ships into our 3PL. We have four strategic locations all throughout the US and we're adding more locations in Canada and Europe right now to make it cheaper for global distribution. Once the products are in our fulfillment center, then they log into the, my inventory portal and they see all of their inventory in real time. Jeremy: So, if you're ever running low in stock, we'll send you smart notifications to restock. They can easily upload their CSV file. We'll calculate the shipping costs in real time. They pay for it. We grab it off the shelves and we're shipping it to 1,000 different locations. We also have this feature called the Swag Giveaway. Oftentimes, especially now, people don't necessarily know where their remote employees are living. Say you went to a trade show. God willing the world opens up, we have trade shows again, and people go to your booth and they give you their email address. You'll know what t-shirt size they are. You'll know where they live, but you still might want to engage with them. We built the Swag Giveaway feature, where you can create a fully recipient branded landing page. Let's imagine Google just uploads their logo and their colors. Jeremy: And they could easily blast out to a CSV file of just having the person's first name and email, that recipient will click on the link. It will be branded with Google, they'll select their t-shirt size or they'll select their mug, or water bottle, they'll be able to choose which product they want. Input their address, submit. It all speaks to our system. And now we have the address that we can distribute. We're building all of these tools to allow people to distribute if they're shipping to one address, thousands of addresses, or even if they don't have the recipients addresses, but easy way to capture that and also distribute. Stephanie: Wow, that's a lot going on behind the scenes. Jeremy: Yeah. Stephanie: How are you thinking about the front end part of the website because to me when you're ordering swag or something where you really want to see the details of like, is that embroidery right, are the colors right and also just like making sure that you have people who are converting and not just sitting on maybe their design or their shopping cart? How are you moving people along through the website and what kind of best practices have you seen when setting up the front end user interface? Jeremy: Good question. It's probably the most challenging thing for our business because it is custom and everyone is somewhat concerned about, is this going to come out perfect, is it could be the right logo color, is it going to be the right positioning. What we've learned is obviously we built our patent technologies is one of the first things we built to detect the number of colors and the nearest panto match in your logo when you're uploading it. So, to make people feel really safe, they're going to get their exact color. Now, obviously it can never be 100% because web colors are not the same as Pantone colors that are used for printing and t-shirts, but it really gets to the closest match. And if you want, and if you know your Pantone, which a lot of companies do, it allows them to easily input their exact Pantone, so it overrides everything and it makes it really easy. Jeremy: Obviously they can maneuver their logo, they can mock it up. And what we say is, after you place your order, we're always going to create for them a virtual production mock-up to approve before we ever start to print. We'll never go into production until they give us the green light. Really customers should feel super safe that even if they upload their logo and they're not sure is this straight or is this exactly the right position. It doesn't really matter. We're always going to create that mock-up and they can make as many revisions as they want before we start with the print. That makes it really easy. And in terms of our distribution, obviously they can always just add this stuff to inventory and just easily distribute. The process on the front end, we try to make it really effortless and streamlined. Jeremy: It's taken us four years. We're constantly adding more and more features to make that experience better. We're launching a feature very soon called the Company Art Folder. Imagine you bought something and 20 other people in your company buys different things. It should lump all of your artwork together as a company art folder, so you never have to really hunt down the designer to make sure you have the right file or is this the right logo, is this the approved logo for swag? You can always, when you're uploading your logos, select the pre-approved designs that have been used and purchased by other people in your company, so you feel more safe. Or unlike my orders page, let's say Jennifer on your team is out sick one day, you can log into your account, you'll see all of your orders and then there's another tab that says company orders. You see everyone else in your company what they purchased, so you could easily reorder what somebody else ordered and easily subtract and make sure you're using the exact same artwork. Jeremy: We're trying to build this platform as effortless on the front end to make it really, really streamlined. And in terms of getting people through the funnel, what we've seen is our platform really does work well. I think that the more simple features that really solve a problem. And as you mentioned before, Paul said, “Do things unscalable before you scale it.” Every single thing we do, it has to be super painful for us, for us to spend time developing a solution for it. Once it's overwhelmingly painful, then we build the solution to make it easy. Jeremy: Then obviously we see their abandoned carts. We can track everyone's abandoned carts. And then we have our SDRs calling all these abandoned carts within like 10 minutes of the time that they'd been in to make sure that there's no experience that's wrong. Sometimes people say, “The shipping is too high.” Or, “It doesn't seem I can get in my in hand date.” There's certain things that we could actually help out and maneuver possible. And if it's not possible, we'll let the customer know it's not possible. But getting in front of them right when they're thinking about, are they going to purchase or not and they might have issues, that's really, I think we found the most important thing for us. Stephanie: Yeah. That's really smart. Have you seen people pick up their phone right away or have you experimented with texting instead? Jeremy: We haven't done texting and I've been researching some companies and I think it's actually a really good idea. We've seen a lot of people if they're actively looking on our site or they've just left in 10 minutes, they're likely to pick up their phone. Even when people fill out a form on our site and we have a lot of … Obviously our core business up until this point was Ecommerce experience adding it to distribution, but we have a whole ‘nother business where people could buy swag boxes in bulk, giving a really great unboxing experience for new hires or engaging with your best clients. That's fully custom branded boxes inside the boxes, as custom notebook and water bottle and pen and custom note card, crinkle paper. We've allowed people to custom build those boxes effortlessly through our site. Jeremy: All you have to do is upload your logo, the same process as buying and adding to your cart, you click on the button that says, “Build a box,” and it lumps, all those products together as a box listing. It makes the entire experience super simple. And we've seen with those bigger box orders. A lot of times it might be like a two to three week sales cycle. When Ecommerce could be like they land on a site and they check out that same day, boxes, they're fairly larger sizes. Typically, they're usually using our distribution platform for distributing because no one has room in their office for boxes or wants to boxing up themselves. So, they actively use our distribution platform for that. And that cycle takes a little longer. Getting on the phone with them, really talking through the challenges or what their issues are and what their questions are, we find is really, really important. Stephanie: Yeah. That's really great. Oftentimes when you're talking or this can happen, when you're talking to a customer, they don't always tell you exactly what they need. One example you gave there was, you want to be able to go into a library where your logos are there, which is huge. I remember ordering swag back in the day at other companies and it was always kind of a review and escalation process of like, “Is this the most recent logo? Are these the right colors? Is this our team logo?” Okay. How would you find out something like that that maybe a customer wouldn't know to tell you, but it would just make it easier if they did have that there? How do you go about getting in your customer's head? Jeremy: Yeah. I think it's just like just being their teammate. We like to think of in all of our customer success likes to think of it, is that we're an extension of your brand. Obviously if you're buying swag on our site, it has to really be the quality, but it's only going to be quality and only what you like, if the logo is right, the positioning is right, it's exactly what you want. Especially dealing with bigger orders, we like to jump on a call with customers, have a conversation, try to understand what the use case for their swag is, what their budget is, what their timeline is who the audience is. And we like to suggest ideas and obviously customers can go on the site and not talk to us if they want to talk to us and use our filtering tools and our search tools and just our browsable experience and find what they want. Jeremy: But if they want our help, we want to be there to help them. I think it's just constantly trying to understand, the reason for them buying swag and with the use cases. And then we constantly offer different suggested items that we know that we work with that other companies in the similar space have worked with. And we give other solutions for them to kind of play with. And I think it just gives a great experience where they could do their own kind of sourcing and they can also use us as a guiding tool to find them exactly what they're looking for. Stephanie: When you're thinking about getting new customers, what kind of acquisition channels are you using or finding success in right now to get these large companies using you guys? Jeremy: Yeah. I like to think about marketing and it's not always going to be the same traction channel is always going to work. Now, from the very beginning, we were doing a lot more Google ads because we wanted to get paid back fairly quickly and we've realized early on, at least for our business prospecting on Facebook is a little more challenging when you're dealing with B2B buyers. But for Google, when is looking specifically for swag it's quite challenging [inaudible] Google, obviously it's very expensive. In the beginning it maybe makes sense to do Google just to get those early wins and get the credibility. But then maybe you kind of shift away from Google and you do some more SEO. SEO for us has been tremendously successful. We started really diving deep into SEO about 18 months ago, just to put things in perspective. Jeremy: Last January, we had about 3,000 organic visitors to our site, in 2019 January. January of 2020, we had North of 20,000 organic visitors. And last month we had nearly 40,000 organic visitors. Really growing the base in terms of organic, putting out tons of content, always it's content that maybe has stuff to do with swag buyer like buying swag or maybe just has to do with the audience, HR managers, the best HR solution tools. Doesn't necessarily have to be about swag, but it's a valid topic related to the buyer. And then ultimately when the buyer comes on our site, reads about it and then is going to Facebook or Google or any of their other properties, we can re-target them. That's been a really great driving force for us, but also partnerships. Jeremy: There's a lot of different companies in our space that don't necessarily sell swag. They sell other products to the office manager or other products to the HR manager, that we could really parlay and work on. We could promote them to our audience. They could promote us to their audience. We've been trying a lot of different things, affiliate marketing, a lot of different stuff, but usually it's always the one or two kind of traction channels that are the most beneficial at that time. And right now it's SEO [inaudible] hands down has been the best driver of customers for us. Stephanie: Okay. I want to dive into that a bit then, because I hear people are always talking about SEO. There's so many SEO agency, they'll do all this SEO stuff for you. I think there's like tons of bar jokes, maybe not bar jokes. Maybe just be regular jokes about SEO agencies and consultants and stuff. I want to dive into, what are you guys actually doing when it comes to your SEO strategy because it sounds like it's been successful? How are you finding out what topics to write about? What are you seeing work? Give me all the nitty-gritty on what you all are doing behind the scenes. Jeremy: Yeah. I think from the very beginning with SEO, it was about making our site compatible and making it work for Google traffic. Our site, at the very beginning … I'm a branding person. My background is in branding and user experience design for the customer. There's a lot of things that are behind the scenes that Google looks at, that the customers don't even realize. And frankly, it doesn't even mean anything to the customers. I had to learn that. I didn't know anything about that. Frankly, I'm fairly new to SEO. We started really 18 months ago and I realized our organic rankings should be a lot higher based on our brand, based on these experience. We're getting a quality product out there and it should be getting a lot more traffic. The first step was just analyzing our site and realizing, “Well, how do I make the site faster?” Jeremy: Or, “How do I make the site make more sense in terms of Google?” So for example, on every single product page, 18 months ago, we had no other associated products below the fold. Now, most people don't necessarily look at those below the product the fold because they're trying to upload their logo, mock-up things. There's a lot of stuff for them to do on the product builder page to add to cart. But you need to add those other products below the fold, so that in terms of Google, they see that that product listing is connected to four other products or so, right. There's all these small kind of tweaks or theoretically, you want to keep adding and making your site feel refreshed. You're not going to be refreshing your homepage every single two weeks. It doesn't happen. Jeremy: You're not going to be redesigning your product builder page every two weeks or your browsable experience every two weeks. What you can do, is you can maybe put like a blog post in your footer, make it like the latest blog posts. Every time you update your blog, every day or every two days, your site is getting refresh constantly. There's all these kinds of small kind of tweak things that you could do in terms of overall site. And then it's about kind of pinpointing the content that you really want to go after and saying, “Well, who is our buyer?” So, really understanding who your customer is and trying to write really good content, not just like throw away stuff, really good content with great subject lines that get people to read something and learn something, get real value out of it that might not be about swag related, but has to do with swag adjacent, if you will. Jeremy: If someone's looking for office holiday party ideas. They might not be looking for swag, but maybe we could get swag in there somehow. Or best ways to engage your remote employees or something like that. Or what healthy snack food to have in the office, literally has nothing to do with swag, but the person who is looking for that is ultimately going to be looking for swag. And we don't necessarily need to convert them today, at this point, we could convert them a month from now. When they are looking for swag, just be on the top of mind, re-target them and ultimately convert them. Just putting out consistency. I think in general, whether it's SEO or whether it's being a startup founder or whether it's anything you do in life, I think it's just really all about consistency and just trying to have more good days than bad days. Jeremy: Constantly just trying to keep pushing as hard as you can because at the end of the day, you're going to get to a much better place if you're consistent with it, you keep pushing forward and no small setbacks really affect you. Stephanie: Yeah. I completely agree. Are you all doing the content creation and things like that in-house still? Or have you hired that out? At what point would you say like, “Oh, it's about time to hire this out,” to have someone else work on it instead of maybe an entrepreneur doing it all themselves? Jeremy: So, initially it was all me writing the content, then it became use some freelancers and now it's becoming, now we have the resources we're hiring actually this week, a full-time writer for our own team to be writing content and doing all of the stuff that we want to do. I think in everything, it always starts with the founders. Me and my co-founder, I think we've done really ridiculous, crazy things over the last four years to get to where we are. We've driven u-hauls 11 hours making deliveries at 11 o'clock at night. Having my family and my grandma, my aunts and uncles rolling t-shirts for three days straight trying to win these big deals and having no resources to do it. You're always kind of founder, CEO and head intern all at the same time. Now, at this point we're able to hire some of those roles that doesn't really make sense for us to be doing at this point or frankly, people who are just a lot better at it than we are. And that's where we're really excited to get to. Stephanie: I love that. I'm sure your grandma thanks you. Poor grandma, she's a real VIP over there, rolling t-shirts. Jeremy: Yeah. She was making fun that she hurt her back and that's why her back is messed up because of the [inaudible 00:43:33]. Stephanie: All because of you, Jeremy. Jeez. That's great. Before we move into a lightning round, is there anything that you wanted to cover today that I missed? Jeremy: No, no, this has been great. Stephanie: Okay, cool. Yeah, it has been a blast. All right. So, let's move onto the lightning round brought to you by our friends at Salesforce Commerce Cloud. This is where I'm going to throw a question your way and you have a minute or less to answer. Are you ready, Jeremy? Jeremy: I'm ready for it. Stephanie: All right. What's up next on your Netflix queue? Jeremy: Oh, cool. I started watching … I was in the Hamptons this weekend. Stephanie: Fancy. Jeremy: I know, very fancy. My mother-in-law's in town and she wanted to go out. [inaudible] and there's all these ads all over the place for million dollar beach house or something. I think I started watching some real estate show. Stephanie: There you go. I saw that also on Netflix. I was watching Selling Sunset, though I need to finish that one first. Jeremy: That's fine. Stephanie: All right. What is the best promotional item you've ever received? And what's the worst one? Jeremy: Well, okay. The worst one is obviously easy. It's all about the schlocky pens that don't write. Stephanie: Oh my gosh, yes. Jeremy: Pop socket, lighter. There's some of these things, stuff when they do the hybrid stuff, it's just kind of ridiculous. Like the highlighter that also acts as a compass. It's like, “No, that's not the right thing.” So, a lot of those. And a lot of people trying to sell me on selling their stuff and it's not good. Stephanie: You're like, “No, this is no.” Jeremy: Yeah. I don't want to be mean to anybody. I just say, “I don't think it's the right fit,” or something like that, but it's not good. And the best stuff I think is honestly anything really you're going to keep it. A really high quality water bottle, something you're going to see every single day it's could be on your desk and you're going to get those impressions. I'm really proud of that, but obviously we've done bicycles for companies. We made fully custom bicycles. A company came to us and they had their whole executive team. They're very into health. They want to do something a little bit different, unique. They have a campus. We create a really cool custom, fully custom logo, colors, everything bicycles. That was a really cool project to work on. And obviously we've done really cool backpacks. We did a backpack for Facebook, which I thought was really cool where the logo was nowhere on the outside. Jeremy: [inaudible] was we wanted to make the product so kind of premium. These are like very nice backpacks, that it didn't like scream Facebook. No one even know about it, except for the people who are wearing it. So, it was black-on-black logo on the inside of the backpack, so like when you open, only the people who are wearing it, see it. That's, I think is very important. I knew this was going to happen because frankly I started getting a sense that socks were going to become very popular. We sell [inaudible] socks and clearly socks is very … No one really sees it, but it's all about the person who's putting on the socks, is wearing it, who were seeing your logo. It starts to feel that kind of connection to your brand and eventually becomes that brand evangelist. It's all about that internal. Stephanie: Yeah, that's awesome. What is a new Ecommerce tool that you're trying out that you're loving right now? Jeremy: New Ecommerce tool? We're using a company called [Tend 00:46:36]. It's very early in it, but you're able to kind of track all the different people who are coming to your site without them inputting real information, which I think is kind of spooky, but kind of cool, just to see who's checking what. Stephanie: Cool. Jeremy: For me, it's kind of the core stuff. It's the Intercom, it's the HubSpot, it's just the marketing automation, streamlining things. And there's two different things, obviously with Intercom, which is our real life customer success. People are always here to help and jumping on the phone call. Then you have the HubSpot, which is really automating the experience. Having both sides for our type of businesses is very important. Stephanie: Great. All right. The last one, a little bit harder. What one thing will have the biggest impact on Ecommerce in the next year? Jeremy: Wow. Stephanie: Yeah. Jeremy: That's a good question. I'm still laser focused on swag. I don't necessarily always think about the broader industry as a whole. I think for swag, I think it's easy. I think it is swag distribution. Everyone's working remotely. I don't see people getting back into the office anytime soon. Even if they do, it's going to be somewhat of a new normal, maybe not every day. People are still going to be able to need to engage with the remote employees or the best customers. And who's going to want to fly across the country, maybe to that trade show. They might want to do things a little more remote and automated. For Swag, that's where we're going and we're going to be automating the distribution of Swag. I think that's our next phase. Jeremy: Or somebody's one year anniversary, send them automatically Swag in the mail. Or somebody's had a baby, send them Happy Mother's Day or Happy Father's Day type of swag in the mail. So, really automating different life activities where you want swag. Stephanie: Awesome. Love it. All right, Jeremy. This has been a blast. Where can people find out more about you and Swag.com? Jeremy: Yeah. You can obviously reach out to me on LinkedIn Jeremy Parker, and obviously come visit us at Swag.com. That's S-W-A-G.com and we would love to work with you on your next order. Stephanie: Awesome. Thanks so much for joining. Jeremy: Thank you so much for having me, guys.
更多英语知识,请关注微信公众号: VOA英语每日一听 Abidemi: So Jeremy, we both work in Japan, and I was just talking about how it feels like to go home. How does it feel like for you, Jeremy?Jeremy: Well, when I go back to Canada, really the first thing that I notice is the air. And it's a funny thing to think but I know when I arrive in Vancouver and I walk out of the airport, I can smell West Coast Canada air. And it really gives a kind of positive feeling to me. You know, it's a small thing but you notice how clean. I know it's a stereotype with Canada but it really is such a clean place. And also, Vancouver, you have the smell of the ocean and you have the mountains right there. So that's the first that I always notice.But when I go back and I visit my parents, it takes me about 10 minutes to get used to where I am being back home. You know, it doesn't take long at all. And I think it's because that's the house that I grew up in and just the feeling that I grew up with, it returns immediately. You know, it goes away when I'm away when I'm living in Japan but as soon as I get back home, that feeling of comfort comes back within minutes. And I look forward to the same thing that everybody looks forward to when they go back home, and food is right at the top of that list.You know, I honestly look forward to turkey dinner, maybe more than anything in the world, or prime rib or those types of things. But it's just the small things; having mom make a snack or something like that. And just the feeling of being completely at ease and without a worry in the world is kind of what I most look forward to going back home.There's other things when you go out and you go to the stores and you circulate around town. It does feel a little bit like you're an alien in your own town. And I mean—but that's a feeling that I never mind. I have no problem being a foreigner in my own home now. I kind of enjoy the feeling. And sometimes, I even wish that I didn't speak the language everybody else was speaking because I don't want to hear everybody's conversations to be honest.But you know the feeling of being in my house or my parent's house is really a feeling that is just complete comfort.Abidemi: How often do you get to back home now?Jeremy: Well, just because of the cost, I can probably only go back once a year. And also, we have an infant boy, and traveling with a one-year-old on a 10-hour flight is—until you do it, you really never realize how terrible it is. But it is uncomfortable. It is really uncomfortable. So yeah, we're only able to make it back to Canada probably once a year now but his grandparents love seeing him so much that we want to do it as much as we possibly can.Abidemi: I guess the fact that you can't go as often as you would like makes it even much more worthwhile when you do get to go.Jeremy: It's true. It's true, yeah. Just the expense and the time that we have to put in, while you're there you basically savor every second. You don't want to sleep. You just want to enjoy it. So yeah, it's a pretty special experience going back home now.Abidemi: That's awesome.
更多英语知识,请关注微信公众号: VOA英语每日一听 Abidemi: So Jeremy, we both work in Japan, and I was just talking about how it feels like to go home. How does it feel like for you, Jeremy?Jeremy: Well, when I go back to Canada, really the first thing that I notice is the air. And it's a funny thing to think but I know when I arrive in Vancouver and I walk out of the airport, I can smell West Coast Canada air. And it really gives a kind of positive feeling to me. You know, it's a small thing but you notice how clean. I know it's a stereotype with Canada but it really is such a clean place. And also, Vancouver, you have the smell of the ocean and you have the mountains right there. So that's the first that I always notice.But when I go back and I visit my parents, it takes me about 10 minutes to get used to where I am being back home. You know, it doesn't take long at all. And I think it's because that's the house that I grew up in and just the feeling that I grew up with, it returns immediately. You know, it goes away when I'm away when I'm living in Japan but as soon as I get back home, that feeling of comfort comes back within minutes. And I look forward to the same thing that everybody looks forward to when they go back home, and food is right at the top of that list.You know, I honestly look forward to turkey dinner, maybe more than anything in the world, or prime rib or those types of things. But it's just the small things; having mom make a snack or something like that. And just the feeling of being completely at ease and without a worry in the world is kind of what I most look forward to going back home.There's other things when you go out and you go to the stores and you circulate around town. It does feel a little bit like you're an alien in your own town. And I mean—but that's a feeling that I never mind. I have no problem being a foreigner in my own home now. I kind of enjoy the feeling. And sometimes, I even wish that I didn't speak the language everybody else was speaking because I don't want to hear everybody's conversations to be honest.But you know the feeling of being in my house or my parent's house is really a feeling that is just complete comfort.Abidemi: How often do you get to back home now?Jeremy: Well, just because of the cost, I can probably only go back once a year. And also, we have an infant boy, and traveling with a one-year-old on a 10-hour flight is—until you do it, you really never realize how terrible it is. But it is uncomfortable. It is really uncomfortable. So yeah, we're only able to make it back to Canada probably once a year now but his grandparents love seeing him so much that we want to do it as much as we possibly can.Abidemi: I guess the fact that you can't go as often as you would like makes it even much more worthwhile when you do get to go.Jeremy: It's true. It's true, yeah. Just the expense and the time that we have to put in, while you're there you basically savor every second. You don't want to sleep. You just want to enjoy it. So yeah, it's a pretty special experience going back home now.Abidemi: That's awesome.
更多英语知识,请关注微信公众号: VOA英语每日一听 Abidemi: So Jeremy, we both work in Japan, and I was just talking about how it feels like to go home. How does it feel like for you, Jeremy?Jeremy: Well, when I go back to Canada, really the first thing that I notice is the air. And it's a funny thing to think but I know when I arrive in Vancouver and I walk out of the airport, I can smell West Coast Canada air. And it really gives a kind of positive feeling to me. You know, it's a small thing but you notice how clean. I know it's a stereotype with Canada but it really is such a clean place. And also, Vancouver, you have the smell of the ocean and you have the mountains right there. So that's the first that I always notice.But when I go back and I visit my parents, it takes me about 10 minutes to get used to where I am being back home. You know, it doesn't take long at all. And I think it's because that's the house that I grew up in and just the feeling that I grew up with, it returns immediately. You know, it goes away when I'm away when I'm living in Japan but as soon as I get back home, that feeling of comfort comes back within minutes. And I look forward to the same thing that everybody looks forward to when they go back home, and food is right at the top of that list.You know, I honestly look forward to turkey dinner, maybe more than anything in the world, or prime rib or those types of things. But it's just the small things; having mom make a snack or something like that. And just the feeling of being completely at ease and without a worry in the world is kind of what I most look forward to going back home.There's other things when you go out and you go to the stores and you circulate around town. It does feel a little bit like you're an alien in your own town. And I mean—but that's a feeling that I never mind. I have no problem being a foreigner in my own home now. I kind of enjoy the feeling. And sometimes, I even wish that I didn't speak the language everybody else was speaking because I don't want to hear everybody's conversations to be honest.But you know the feeling of being in my house or my parent's house is really a feeling that is just complete comfort.Abidemi: How often do you get to back home now?Jeremy: Well, just because of the cost, I can probably only go back once a year. And also, we have an infant boy, and traveling with a one-year-old on a 10-hour flight is—until you do it, you really never realize how terrible it is. But it is uncomfortable. It is really uncomfortable. So yeah, we're only able to make it back to Canada probably once a year now but his grandparents love seeing him so much that we want to do it as much as we possibly can.Abidemi: I guess the fact that you can't go as often as you would like makes it even much more worthwhile when you do get to go.Jeremy: It's true. It's true, yeah. Just the expense and the time that we have to put in, while you're there you basically savor every second. You don't want to sleep. You just want to enjoy it. So yeah, it's a pretty special experience going back home now.Abidemi: That's awesome.
Achieve Wealth Through Value Add Real Estate Investing Podcast
James: Hey, audience and listeners, this is James Kandasamy from Achieved Wealth Through Value Add Real Estate Investing Podcasts. Today I have Jeremy Cyrier from Boston. Jeremy is one of my mentors, you know, I'm happy to have him here to talk about commercial real estate and Jeremy has been focusing on taxes and a lot of markets out of North East U.S like Rhode Island and you know Massachusetts and of course Texas and he have done a lot of bills, you know, I think he used to syndicate and now he's also investing as a passive investor and he focuses a lot on multifamily medical office buildings, retail and also office. Hey, Jeremy, welcome to the show. Jeremy: Hey thanks, James. James: So, what's happening? I mean with all this covid 19, I know you're not in New York, but you're in Boston, which is, you know, almost near to epicenter there. I mean, what's happening with you personally and the commercial real estate business right now? Jeremy: That's a great question, we're all healthy, we’re home. I've got four kids, eight and under and it's a little crazy, but we're feeling just frankly blessed at this time to have a moment of pause in our lives to focus on the basics together. I think, you know, amidst all the tragedy that's unfolding around us, that's actually a blessing. James: Yeah. Sometimes you know, you have to look for positive things in a, you know, whatever situation that we are in right now. Right? So tell me, I mean, about what are you seeing right now in the commercial real estate space? What was happening in February before this whole covid 19 and now we are in the middle of it. This is like almost in April, mid April to, you know, towards the end of April. What are you seeing right now that has completely caught your attention and create that "aha" moment for you? Jeremy: Well, I'll tell you the interesting thing is we've been over the last three or so years saying, well, when's the recession coming? And we were looking for it, we're looking for leading indicators of a recession and here it is, it's upon us and it's more of a black swan event than really any of us would have expected to have happened to such a point where I've been talking to people about this being similar to our country being invaded and the government shutting down our economy is a defense mechanism. So, that's a pretty fascinating set of circumstances for us to be operating within right now in any business, let alone the commercial real estate space. James: So do you see a lot of transaction has died down right now from what you were doing two months ago and Jeremy: Yeah, so the, one of the things I do is I track data, so I live outside of the Boston market. I track that data very closely to see what the volumes look like and I'll tell you the 2020 Q1 data was up 75% in terms of sales volume over Q1 of 19 and so it was a very healthy start to the year but as soon as you go and you shut down the economy, all the volatility comes into the market and buyers start to pull back, lenders try to figure out what to do, who to lend to, how to lend and then you've got sellers pulling back saying, am I exposed here? Is this a dangerous time for me to be selling my property? So, I'd say the first month of this event was really characterized by people trying to figure out what's going on, what's happening and this last month it's being characterized with more intentionality. Okay, here's what I'd like to see happen in three months, six months, nine months, twelve months. So the discussions are moving forward to a, I'm going to stop focusing on the hourly new cycle and I can see more of a two to three day new cycle and within that environment I can start to think strategically about what's next for me. James: Got it. So do you see, so you're saying sellers are starting to look at more strategically, so, I know some people were talking about V-shape versus U-shape and I think some of the V would have changed to U right now, right? I don't know where the Nike swish. Right. So where do you think we are heading from March, 2020 you know? Jeremy: Yeah. What's the letter of the alphabet are we going to see? You know, I listened to a great webinar, which was done with KC Conway and Eddie Blanton, Eddie's the president of the CCIM Institute. KC is the chief economist, they got on a webinar and I think you can see this; you can catch on YouTube and KC got on and he talked about the letters and he goes through the different shapes. Some of them I'd never heard of before, but they, like, what happens when you have a fiat currency recession, it's a Q, I guess but he said, you know, if early on we were hoping for a V he thinks it's going to be a W and I think he's right, I think the W is, we go through an initial dip, we have a recession now. We start to rebound and recover, in the summer, people start to get outside and start to circulate and you know, return the flow of capital but we go back into a secondary recession in the fall driven by two primary things. One a concern over covid, you know, spiking again and the second being the, all the bad news that accumulated from March through September that shows up and we see a secondary recession as a result of what's happening right now. He said it's probably, and I think he's right, we probably don't start to see the volatility come out of the market until this time next year, 2021 and it's just going to be a matter of writing this, you know, writing things out the best we can in 2020 James: So, when you talk about the second V, right, I mean, I think first of the V and after that is another V which is coming in, which makes it a W? Right? So are you saying the, from your perspective, do you think the second lowest point will be lower than the first low point or will be higher than the Jeremy: I don't know but I know those low points take a lot of pain and they dish it out and so in our business, in commercial real estate investing, is it, people have been asking me: Okay, so when one of the deals are going to show up, you know, where are all these distressed sellers? Well, it takes time. Right? James: What kind of time, why do you think we need to take time? Jeremy: Well, if you look back historically when we go through, we've gone through recessions and they happen just about every 10 years in the last four years. This one was a longer cycle than we'd seen. So typically you see expansion kickoff and the third year of a decade, you see a transition year in the eighth year of the decade we go into a recession, then we come back up and out. This one didn't happen that way. I think it's because the Obama administration didn't push the FDIC to recycle assets like we'd seen in prior recessions, which extended the recovery period, it took longer to recover and expand in this last cycle, so as a result of that, the cycle lasted longer. I think it just was a longer period of protracted growth. So we have, you know, in the time frame of how things tend to play out, on the inside, you might see real estate deals two quarters after a Dow correction, but typically I see like a fourth to six quarter lag off the Dow. And there's a reason for that, if you follow the money, so start with the Dow. What is the Dow? The Dow is a highly liquid market people are trading on nanoseconds and they're trading based on projections and perceptions. So from their companies, their shares are devalued, they, report, you know, revenue, they have revenues coming in lower, their earnings are lower, they start adjusting their P and L's, they lay off people. Okay, so unemployment comes up. Then they start to look at their real estate and they say, well, we need to reduce our exposure of real estate, we're not demanding as much square footage. Let's give some back. That goes back to the landlords. The landlords get the space back, they rent it for less or they can't rent it. They burn through cash? Then they go to the bank and they say, hey bank, I'm having some issues. Bank says, okay, well let's work with you for a little while and see if you can get through it. That takes another three or six months before ultimately hits the point where the bank says you have to get out of the asset, we've got to take it. So, it's a slower moving asset class. That's one of the reasons why people like it. I mean, when you're buying, you want it to happen now you want it to be fast, but when you own this, it has less volatility than the stock market does and that's one of the reasons why people get excited about building durable wealth in the space. James: Really interesting. So, I just want to touch back on what you mentioned just now. So you said during the Obama administration, the 2008 crisis, you said FDIC did not recycle assets as quickly as you know. So can you clarify that because that's completely new and I never learn about that. Jeremy: So, if you look back at the savings and loan crisis, this was back in the late eighties, the tax reform act. What happened was depreciation schedules were changed on how real estate was owned and written off. The tax world had distorted real estate evaluations, that combined with the junk bond industry and banks investing in junk bonds, chasing yield, okay, to make money. So, those two things together broke down the system and what happened was banks, the FDIC went into banks and said, we've got a lot of, your balance sheets are a mess, your ratios are out of alignment, we want you to call your notes and recapitalize. So, banks actually started calling owners up and saying, you have to pay us in 30, 60, 90 days. Pay off your mortgage. Well, okay, but when all the banks are doing the same thing, there's a problem. So owners were foreclosed on, they dropped their prices to liquidate their buildings. They filed bankruptcy and all this real estate ended up coming onto the bank balance sheets and the FDIC came in and said, okay, well now we're going to set up a corporation called the resolution trust corporation to liquidate all this stuff, flush it out. Okay? Establish the market bottom and then we'll come out of it. So, in 08', a lot of people were thinking that was what we were going to see. We had finance and demand induced recession and so we expected to see real estate defaults go back to the banks. The banks would take the properties over, the FDIC would come in and say, push the stuff back out on the street, market down, recapitalize, and then we'll get back to business, they didn't do that. Instead what they did was they came in, they closed the really sick banks and they, a lot of them were set up as M and A deals. So they had other banks buy out the sick banks to dilute the balance sheets and then clear off the sick real estate. But what they ended up doing was they did a lot of forbearance agreements and they extended loan terms so that they could keep the owners operating the assets even through all the pain of the recession. So as a result of that, we never saw a real mark down or mark to market on all those properties. They weren't quote and quote recycled. So if the idea was to keep all the real estate and everyone's in all the owner's hands, you saw fewer deals on the buy side and you just saw these owners just barely making it, holding onto these things, waiting for the economy to start to pick back up and for demand to come back into the space so they could recover the valuations and ultimately refinance the bank off the asset or sell the asset and recover or just break even on it. That takes a little while to do that. So I think that's one of the reasons why we saw this sort of longer cycle this time. I mean, a lot of people were looking at Trump's administration and his policies for continuation of this. I do think that was part of it but I think what we really had was, we had a long recovery and it took us until 2013 to really jump into an expansion phase from 08' but it wasn't like a jump, you know, it, it was kind of a slog to get there. James: Yeah. You can see 2013 onwards and other property, the caplets not comprising a lot more compared to, you know, from 2008 to 2012 right. Jeremy: Yes. James: So do you think that's gonna happen in this market cycle where somewhere there's going to be, you know, FDIC going to come and do inaudible15:42 Jeremy: I don't, I kind of think that's not going to happen because if you follow the logic here with me. So country gets invaded, government shuts down the economy. People are forced out of business. Landlords default on mortgages. Banks have to foreclose on property. FDIC makes them and says; now you got to recycle the buildings. So if I'm the owner of the building that went through that whole horrendous experience, I'm looking at the government going, “Well, wait a second, you shut down the economy and now you're telling the bank to take my building away. How can you do that?” So I'm not sure that's the outlet on this one, I think the outlet's probably going to be just a market and it's going to be buyer demand and what buyers are willing to pay but it's going to be driven by two things over the next couple of years. One is who your tenant is, their stability and their durability to pay rent and number two, the lending resources that you have available. My concern about this situation we're in is banks freezing lending, to attempt to reduce their exposure to the degradation of net operating income? That's a concern because they take the debt liquidity out of the market, when that happens, that slows transaction velocity down considerably and that will bring pricing down and that's, you know, if you're buying and that's the time to buy, when money's hard to get, when it's easy to buy and money's hard to get. James: Would you still be you have a challenge in terms of lending, right? The terms may not be as favorable during the peak tomorrow. Jeremy: But it's interesting, I think the lenders, when we go through recessions, they get picky about who they lend to, having relationships with your lenders is critical so your local banks are extremely valuable. They want to know that they've got strong hands operating these assets and using the money correctly. So those are elements to be very focused on in maintaining those relationships. It's the national banks that concerned me with inaudible18:30, so working on a deal last week and well as Fargo said, well, we're not doing it, we're not doing the deal, we're not lending period. Just shut it off. James: Yeah. Except for multifamily, I presume all of the asset classes, like very less in terms of landing multifamily. I know Fannie and Freddie still doing it even though they have additional visa requirement, which is good for multifamily, but I think it's just hard to do any deals anyway right now because no one knows what's the price. Jeremy: What's the price? James: And no one knows what the cap rate, I definitely know Capita has expanded, right? Definitely not compressed as they, from what, two months ago but how much it has expanded, right? And who's going to take the risk of, what are they buying? Right? No one knows. Jeremy: You get back to good old fashioned cash flow and I always tell people, there's always a market for cash flow in any market cycle, there's a market for cash flow. So the key is figuring out who the tenants are and in multifamily, where do they work? It amazes me when I talked to multifamily investors about their properties, I asked them, when your tenants fill out credit apps, you know, our rental application, you get their place of business, wherever they work, you should be cataloging every single employment center in your portfolio and finding out which industry sector they're in because you could, I mean for all you know, you might have 60% of your tenants working in the cruise industry. You just don't know, you know? So having an idea of what your economic footprint is by income diversity in your multifamily properties is really valuable information to have. James: Yeah. Even multifamily near to airports, right? Where there's a lot of workers from airports and the airports are shut down, right? So that can be a bigger issue as well in terms of demographic, right? So yeah, we never really looked at it because, you know, but I recently looked at, it looks like we have really good diversified in my portfolio, but I don't think so many multifamily bias have done, you know, demographic analysis until now, recently, right? Jeremy: Yeah, it's good to do. James: Now, it's like, okay, you better know who are your dynamics. Jeremy: Yeah, you want to know who is paying rent. So I have a question for you. James: Sure. Jeremy: Okay, so multifamily deal making, where the deals are, where are they going to be. One of the things that KC Conway mentioned on his webinar that fascinated me was he said he expects to see hotels converted into multifamily housing and he also said, we may even see cruise ships become multifamily housing. James: I just heard recently, I mean in fact, this morning I was listening to a podcast, by Robert Kiyosaki and Ken McElroy, who are talking about 10 years ago, someone was pitching this idea, let's convert the cruise ship into a moving condos and sell the condos as an apartment. I mean, if you heard about that, I was like, wow, really? Maybe that's coming back. Jeremy: It may, these crew lines they're going to have surplus cruise ships, aren't they? James: Yeah, absolutely. Jeremy: I don't imagine demand will drop off for a considerable period of time and hotels. James: Yeah. So let's go back to the tenant demographic analysis and the economy. Right? So, looking at what happened 2008, we did some kind of a benchmark with what happened then and what happened now but what happened now is basically the service industry and the people who want a paycheck, you know, paycheck to paycheck, right? People are living paycheck to paycheck, they are the biggest impacted because everything stopped, right? So the people who have higher pay, who are basically living in A class or you know who are working on a normal, you know, highly paid job, they are working from home, they didn't lose their job, right? So, this is my thinking, right? My thinking is just like, yeah, I mean people, once everything opens back up, you know, the paycheck to paycheck is going to go back to work, right? But there's also going to be a global economy slow down because now this virus has impacted almost every country, right? The whole economy, the whole global economy is gonna slow down. So, my thinking is, you wanna multifamily class B and C, you know, where people are living paycheck to paycheck, they're going to go back to work and they might be a quick recovery, but people want class A, who are, you know, who are working from home, the company is going to have impact, right? That's where the Dow is going to have impact cause now your corporate profits going to come down because now you have a global economy slow down, right? So, I think even though now you're saying this is just my thinking, maybe we can just, you can figure it out whether you're thinking of the same, the class B and C is gonna is getting impacted right now. Class A not so much, but it's going to swamp later on, maybe in the second part of the W right? Or the V in the second. Jeremy: Well it's starting already. If you look at, office work and employment and you read the news, you're going to see that companies that didn't lay off office workers are reducing their salaries. James: Okay. Jeremy: And you're hearing about owners saying, you know, the owner of the company saying, okay, I'm going to waive my salary, everybody in the organization is going to take 10, 20, 30% pay cut with a floor, you know, not to be no less than. So following that logic, you're taking all that money out of circulation and it's not being spent, of course that slows things down so the question is how long you, you definitely have a slowdown, that's, inevitable but the second piece is how long those people stay employed? And are they able to get through this and operate at a level that with those cuts they can sustain operations and then start to pick back up when spending returns and it's going to be incrementally returning. It's not, it doesn't just, this won't be a light switch so we're talking about W's and then I talk about it's a dimmer switch, you know the dials so you go and you can flip the switch in the room and the lights come on, but there's the round dial, you kind of push the knob and then you can adjust the, I think we're going to be doing that for a little while, turning the lights up, turning them back down, turning them back up and it's going to be partially in response to people hearing about hotspots or breakouts of covid until we have a situation where majority of the population has been exposed and we've processed the virus or we have a vaccine to manage the virus. James: Yeah but this is going beyond the virus, right? So, I mean maybe the vaccine is already up in the next, you know, eight months or one year. I'm sure people are saying one to one and a half, but I'm sure the administration is going to cut a lot of red tape too, you know, well that. Jeremy: Hey, they built a nuclear bomb pretty fast, right? They had to. James: Yeah because you know, during these times, everything is all hands on deck, right? So all the processes get thrown away or you know, there need to be some kind of leadership happening there but I think it's happening, but I just think the second order effect right on the overall slow down on the job losses on how the world is going to change. Right? And how it's going to impact commercial real estate. So, well, what do you think would be impacting a commercial real estate? Let's say, you know, you have experience in office, multifamily, retail. So let's go to each asset class and see, you know, what do you see it? Jeremy: All right, retail, very, you know significant damage to retail. Okay? I mean, department stores are pretty much talking about the end of their era here this may be an extinction event for the department store. James: So do you think if today we have a vaccine, what would the impact be if you already have a vaccine? Jeremy: If we had a vaccine, for the department stores? James: Yeah, for the department store for the retail industry. Jeremy: I don't know that they really cut, they survive longer, but this is devastating for them when Walmart, Target, Costco and Amazon are seeing 25 to 35% revenue growth, all that money is flowing, you know, flowing in different directions than Macy's and Lord and Taylor and Nordstrom's. So the department stores are definitely, they were weak coming into this, this is terrible for them. General retail, you know, I think quick service restaurants like with drive-thru's come back very quickly, the drive thru is kind of an ideal service model for this environment where we'll be going through and coming out of and the cost hits a point, it's a low cost dinner, you know, dinner for the family, to go to Chick-fil-A, you know, and grab, you know, feed the family for 50 bucks. So quick service comes back quickly, I think some of the other sectors where we've got, you know, experiences, you know, it's interesting, services and experiences were really kind of the bellwether in this e-com impact on retail real estate but they're getting hammered and so you're going to have some service and experience spaces return, they'll reemerge from this and the weaker ones, they just won't make it back. They won't make it back, so it's, I think in restaurants, full service restaurants, maybe half of them come back from this. It's just going to be very difficult to reopen all those. James: But don't you think someone is definitely going to buy that space? Somebody else that have the same vision as the previous owner. I mean, maybe the original owner is no more there, 50% have gone right because they kinda lost it. Jeremy: You're going to see new operators come in and it's, that's, look restaurant, full service restaurants, they can be recycled and you're going to have operators say, well we, you know, we made it through, let's open another location cause it's on sale. We can get the equipment and refurnish it and open and go. So there'll be opportunity there for new operators. James: So the industry is not going away, it's just the operators are disappearing. Jeremy: The operators that disappear, it's a slow recovery for them. It's a difficult recovery and the real estate; there will be some good restaurant real estate that will become available. It will happen. Okay, so I know retail, that's sort of my take on it. I wish I did. James: Are you seeing a lot of distressed sellers right now. I mean are you doing a lot of transactions right now? Jeremy: No, not right now. I think it's early. James: Yeah, I think it's still early. I think people are just riding through their cash flow. Just walk up and watching and nobody knows what's the price and nobody, not many people are distressed. Jeremy: Yeah. Multifamily, I agree with you, if you segment by class ABC, you look at the populations that are renting from those units. The A-class seemed to be more insulated because they tend to be professional, high-income office working James: Those that work from home as well, right? Jeremy: Yep. The B's and C's tend to be more service level and they've got a lot more exposure in this environment. So, you know, they get laid off quickly, but they get rehired first because they're lower cost, the office workers, they get hit later and they, you know, they're slower to come back. I mean, what's that rule of thumb, if you've got, for every $10,000 in salary, it takes you a month to replace, to find a new job. James: This new ratio. Jeremy: I know this new ratio if it's true, but I've heard that. So the bigger question that I've got on multi-family is the suburban versus urban, we've been in an urban cycle the last 10 years. James:Yes. Jeremy: And I've been. James: Explain that a bit, what do you mean by urban cycle? Is it people building more multifamily in the urban areas? Jeremy: Yeah, it's the live, work, play, lifestyle, millennial, you know, millennials and baby boomers wanting to live in the city near where they work, walkability people that live in rich environments. There was a quote that I was reading today from Goldman Sachs and they're saying, they're expecting a flight of millennials to the suburbs from urban markets and it makes sense. What does this suburb offer? Less density, more value for what you rent, you know, you may be working from home more so they may be making decisions about, well I could have done a one bed but I have to get two bed cause I need a home office, that's a consideration to take into or keep in mind and then there's just the overall comfort of, hey, you know, I don't want to be in downtown New York right now. That's not a good place to be, I want to get out to the burbs and just have some more space. So I think the idea of urban versus suburban is it's going to be a big topic here over the next four or five, six years. James: Got it. So I think that's very prevalent in where you are, but you also buy in Texas, right? I mean, from what I see in Texas, everything is a suburban mid-rise apartment, not in style apartment. So I mean there is very people I know who buy apartments near downtown, even though they [33:34unclear] Jeremy: Sure James: It could be depends on which market you're talking about. Jeremy: Yeah, I agree with you on that. In Northeast, we have a very clear urban, suburban experience. You know, Texas, you guys just keep building rings. James: Yeah, we have a lot of land here, right? So everything is garden style and [33:58unclear] Jeremy: Yeah, as long as you got the water. James: Yeah but there could be like tertiary market where it could be more interesting. I'm not sure it would be less density or not, I mean everything seems to be less density for me in Texas just because we have a lot of land here, you know, people move around pretty well, everybody, I guess so. Jeremy: Yeah, you got a lot of roadway. James: Yeah. Could that also mean that there's a lot more investment coming from the coastal city to places like Texas or Florida or where Jeremy: It could mean that, yeah. What's interesting about the last cycle nationally, the suburbs have been kind of out of fashion. So, it didn't have the same run up in value that the urban markets did so I started to see that the last couple of years where investors were starting to look at suburban markets and say, well, I can still get some yield there, so I'm going to go invest in the suburbs. This is now going to really bring that conversation to the forefront. James: Yeah, I think that's why I like places where you are like Boston is called like gateway cities versus you know, places like where I inaudible35:17. Jeremy: Yeah. James: Suburban market, I would say so. Jeremy: Yeah. So industrial, I'm still bullish on industrial. I think we'll see some dislocation in distribution and port industrial, I don't know what the future looks like with China. I mean we import a lot from China through Long Beach and it goes to the inland empire and I think we're going to see some of that shift to other port markets as we start importing from other parts of the world but overall with consumer behavior shifting, it had already started before this. If there's been anything that's going to accelerate the demand for industrial spaces, it's this because you're going to have ghost kitchens, you know, restaurants that basically just, they're like catering kitchens that they just run full time, they have no seating and they deliver food, you know, basically meal prep. You're going to have more demand for online consumption and distribution and shopping, that's going to put more pressure on existing in industrial inventory, I sort of thought the industrial market was peaking in the last couple of years, but that may not be the case, there may still be some runway in that market. James: So when you're talking about industrials, basically, warehouses where, you know, products made and distributed, I would say, right? I mean, I can see that with more manufacturing going to be coming in house right now, I mean, with all this, that's one shift that's going to be permanent. Jeremy: Yeah. James: Everybody knows that, right? So, do you think industrial would be the asset class that most beneficial from that? I mean, because I'm looking it’s going to be a lot more manufacturing factories coming here; I just don't know which assets. Jeremy: Yeah and that's really, I mean, if you remember doing 102 in CCIM and we talked about basic employment. James: Yes, absolutely. Jeremy: As soon as you start to see manufacturing coming back into the United States, that's going to be really good thing for our economy. James: Correct. Jeremy: It's going to really boost multifamily, a lot and it will help retail and it'll help office but you know, it's really a value, it's a power source, it's an economic engine for importing money into economies, local economies. So, I think industrial overall in terms of, if you're on the buy side, it's like you want to be really careful about industrial exposure to China, but the rest of the industrial story I think it's going to be a good place to be, I think it's going to be a good asset to own. James: So, is industrial equaling to manufacturing factories. Jeremy: Yeah, so manufacturing, flex R&D, so that's research and development, Warehousing, distribution, bulk storage, cold food storage. Just there, you're going to see that stuff cranking. James: Cold food storage Jeremy:Yeah, cold food storage. James: This is not the same storage that we are talking about now? Jeremy: No, we're talking about like freezer facilities that type of thing, yeah. James: Why is that? Jeremy: It's because people are going to be continuing to demand home delivery of food and you got to store it somewhere. James: Well, I never seen one when I drive around, so I don't know. Jeremy: Kinda funny looking, you know, if you, sometimes on the outside they're a little funny look. James: Now, it's going to be looking nicer because it makes more money. So how do I position myself or anybody else listening? Let's say if I want to take advantage of this manufacturing coming in house right now. I mean, how would a commercial real estate investor should be able to position? Jeremy: It's a good question. So you want to, you know, the main thing about manufacturing is you want to find buildings that have good characteristics for an efficient manufacturing operation. So grade level, you know, Celeste slab on grade buildings with ceiling heights in them that are preferably 16, 18 feet or higher, that have good loading access, you can get a truck, tractor trailer, multiple tractor trailers in and around the building to access it, plentiful parking for labor so typically you're gonna see, you know, one parking space per 800 square feet is kind of the building code standard for manufacturing warehouse but depending, you know, power supply, how do you have enough power coming into the property and utility services. So you could probably, you know, you're probably going to be able to find some outlier properties that you can bring into that market and you know, convert over and, I mean, the other thing is you might want to be looking at retail and converting that to distribution, zoning is restrictive for that because typically municipalities don't like to see industrial uses in retail locations but you may end up seeing big box or department store or retail buildings that have those characteristics of what I just described cause a lot of them do being converted to that use, it could be manufacturing or it could even be distribution. James: So which market should we be looking at to position ourselves for this kind of industrial asset class? Jeremy: I think you can look at pretty much any market in the U.S, I think this is not a specific market, now if I, you know, I think you do this, you to follow that formula in any market in the U.S now if you want to do a, let's look at the demographics and the economic drivers in a market. You want to look for population growth, employment growth, that it's, you know, if there are more people move in there and live in there and it's growing, that's a good thing because people demand space. James: Yeah. Well I mean the other way to look at it also is like, if there's already a manufacturing hub in that city or state, you know, that could be a good expansion place, right, if you find some assets around it. I guess Jeremy: It could be, the other thing you're going to see are companies trying to find manufacturing redundancy. So if they've got a facility that goes down in their location, they can continue supplying from an alternate, which is, it's really interesting cause it's sort of contrary to what Gordon Gekko would tell us to do, right? Build shareholder value, become more efficient and be more profitable, do things faster and increase volume and the way you do that as you bring everything into one location and make it as streamlined as possible but now we're looking at a situation where, and this has been going on in manufacturing for a little while, customers demand redundancy because if there's an event or a disruption to a location, they want to make sure that they still have a continuity of supply chain. And so they're getting what they need so that's even more important now than it ever was. So we'll see some of that. So I think you gotta kind of get into that world and talk to people and find out you know who's looking at bringing things home who isn't, and then start to think about the properties that they could be using and you might even have the opportunity to go out and pick up some land and put something on the land for someone. James: Yeah. And I'm sure there's going to be some kind of government incentive to do that, right? Because now the government wants lot more manufacturing. Jeremy: So I think so. Yeah. So office. James: Yeah, let’s go to office. Jeremy: You working from home, if you had a choice today to go to the office or work from home, which would you prefer? Is the question and I got to imagine a lot of people are saying, I'd love to get back to the office. I miss talking to people, socializing that's missed and I think the home office thing is great, but boy, when it's home officing and schools are shut down, it's really hard. James: That's a good point. Jeremy: This sort of experiment is, you know, forced home officing can companies do it? We've got a variable that shouldn't be there and that is the kids, the kids should be in school. But it's, I think people go back to the offices, but they, you know, offices may end up seeing a similar thought, which is, hey, instead of piling everybody on the train or getting their buddy into the center of the city to work, maybe we need to have a smaller office in the center of the city and then have some suburban offices, spread people out, improve their commutability and create redundancy in our workforce. You know, with people being closer to their smaller offices. So I think that, I'm hearing that a little bit in the market now with people I talk to, I think that's something to keep an eye on that. So again, I kinda like the suburbs, I think there's an opportunity in the suburbs and office may actually be a suburban opportunity here. James: Got it. So what you're saying is people are just going to go back to office. I mean, it's not going to die. Jeremy: I don't think it dies. No. I mean if anything, you know, we've gone from, in the office space, I mean you see these offices where people are like in their benching and I mean I went into an office building and people were waiting in line to get in the bathroom, in an office building and the reason is that the building was built for more or less one employee for every 300 square feet and when companies come in and they go, we're going to be more efficient, we're going to get 1 employee in for 135 square feet, all of a sudden the bathrooms are overloaded, the parking is overloaded and that the buildings, it's too dense. The amount of people in there, it's not designed to carry that density. We'll throw a pandemic in the mix and the idea is for us to be six feet together in this world we're in right now. Maybe we're going to see that, you know, that office demand change where you know, I want to be able to shut my door to an office, I don't want to be at an open bench next to my colleague sneezing on my keyboard, you know, so that, I think we would go back to the office. It's important, the nature of the office is to bring us together and for us to work and collaborate, share ideas, but also to have deep work time, need to be able to do deep work and we need to go somewhere to do that. So maybe it's not about packing as many people in and forcing them to assemble and work together rather spreading them back out a bit, providing some, you know, some work from home, some work from the office days, maybe your home two days, three days in the office. So I, this is a fluid one, but I think we go back to offices. I think it's how we do work. We can do it this way, you know, we can talk to each other, but it's not as fast in my opinion, information slower than it is in person. James: Oh yeah, absolutely. Yeah, I was talking to a doctor, Glenn Mueller, right? So I'm sure you know him, right? This was like two months ago when we're looking at all of the asset class and office was the opportunity it was going from, into the expansion cycle. Right? So, and I asked him the same question, what about people working from home? He said, well, you know, humans are social creatures, you know, they like to be together, right? And you're absolutely right about communication and deep work and all that, just so hard to do working from home. Right? So I think people are going to go back to the office, especially after the vaccines is [48:47unclear] right? Jeremy: Yeah, I will make this prediction. So just like after 9/11, the U S government moved in security and defense. This is a healthcare crisis; I think the next decade will be a healthcare decade. We tend as people, we tend to overcompensate for a trauma that we just experienced so that we never have to feel it again and so I think we're going to see when we rebound from this, healthcare will come back very quickly because there'll be such a backlog of demand for everybody else who's not suffering from Covid but has a knee replacement or you know, an oncology treatment and everything, they're going to be there, they need to get in for services but we're going to have a situation where healthcare is going to be at the forefront of government decision-making, investment and in development of protective and planned responses to anything like this coming again. So I see that space is a very fascinating space to watch and get involved in as you see us start to come out of this and these discussions come to the forefront. James: So how should we prepare for that opportunity too? Jeremy: Well, it centers around the hospitals and if you follow a hospital strategy, they've been merging with each other to become more efficient as they struggle to operate profitably in a very narrow margin environment and one of the things they've done is they've expanded by going out into retail locations and creating outpatient and urgent care services that essentially become a feeder for the hospital. So I expect to see more of that because that's a lower cost way for hospitals to expand. Hospitals are very expensive and they tend to be constrained geographically because of where they were cited. You don't see a lot of just new hospitals being built around the country. They tend to have additions put on them. So as a result they expand out into multiple locations that become more like a hub and spoke model. So I'd be looking at anything in the healthcare space in the next several years. I think it's just going to be really good place to be. James: So are you talking about like medical offices or you're talking about labs or life sciences Jeremy: Medical office, yes, I can't really comment on life science, I don't follow it very closely, it's so specialized, but I probably should know more being out of Boston cause it's just a center for it, I hear about all the time. I just kind of go,"...oh yeah, labs, ugh" But, that I, anything with healthcare, I'm loving it in the next several years. James: But even on medical offices, I mean, the tenants have a long lease terms, right? I mean, how would that increase the valuation of the property as a real estate investor? One is, we look at the cash flow, the other thing we want to look at value increase as well. Jeremy: Well, there's, it's durability, yeah, that's one of the great things that medical office offers you is 90% and higher renewal probability rate. The you know, historically it's been a recession, quote and quote proof, investment class, not this time. I mean, I was looking at data last week 42,000 healthcare professionals lost their jobs, were laid off. I mean, you go, what, no way. James: Why is that? Jeremy: Why is that? Because hospitals aren't allowing for elective procedures, urgent care only. So they're laying people off, it's a fiscal nightmare for the healthcare system right now. So they, that's short term, okay? There was the version, what is it, version three of the P we're on now that just came out and there's billions of dollars going to the healthcare system, which is a good thing. James: Got it. Jeremy: Good thing. So short term healthcare is volatile that may be the opportunity to pick up some property, I think that over the next decade it's going to be a wealth builder. James: Okay, so you mentioned about some of the healthcare which is located in the retail centers and all of that become like a hub and spoke model. So that's like single tenant healthcare, right? Compared to a multi-tenant. Jeremy: It could be single tenant, could be multitenant. You might have a medical office building with four practices in it. Sure. Yeah. James: Got it. Jeremy: Yeah, I think those are really good investments. James: Okay and it could be offices converted to medical offices. Jeremy: Yeah, it could be. Yeah, I mean it's, I just looked back at 2001. I mean if you were in the like the metal detector, you know, security business in 2000, probably not really interesting. James: Right, like 2001 [54:48unclear] Jeremy: Yeah, so that's what I see here. I'm like, this is going to be interesting, there's going to be an overreaction in healthcare. I think there's going to be opportunity there. James: Could there be like construction of healthcare facilities like medical offices or do you think just buying new medical offices. Jeremy: I think there could be development, we're early on that. I don't know that's anything that we're going to see probably for three years. I'm just following the trend, I'm kind of following how people are, what they react to and then where they go and for us to come out of this and not have a national discussion about how are we going to be prepared for the next pandemic. James: Yeah. Jeremy: Yeah, it's going to happen and money is going to flow there and, and there's going to be a lot of pain and people are going to say, I don't want to do that again. James: Yeah. Jeremy: I don't want to hear about ventilators next time. You know? And so, I think that presents an opportunity for investors to get in front of that now. James: Yeah. I'm sure for the next three, four years people are going to say we didn't want to have that healthcare problem again. Right? And I don't mind paying for this. Right? Some kind of thing. It's going to be a lot more investment. So I think medical offices would be a really good investment. Jeremy: Yeah. I liked it before this and I like it even more after that. James: Awesome. Good. So what about other asset classes like self storage or mobile home parks and you know, what else is there, warehouse I think is probably part of the industry. Jeremy: We talked about warehouse, hey, you know, self storage, kind of a maturing asset class in this last cycle but I think it's still very viable and it's a good place to be. You are going to have dislocation of residences the next couple of years so self storage is going to be valuable to people who need to store their belongings, mobile home parks, I mean, look, everybody needs a place to live and if it's affordable, you know, it's gonna work. So again, there I think I see an opportunity too. James: Got it. I think multifamily; we did talk to her in detail about it, right? Do you think there's going to be a lot of crash happening in the single family space because there's so much short term rentals, people bought a lot of short term rentals as second houses and probably right now there's no short term rentals happening. Jeremy: Yeah, that's not so good like kind of the Airbnb, I mean you're sort of in the hospitality business there so yeah, those folks are gonna need to convert to long term or sell. James: Correct. So I think there's going to be, you know, a lot of people, you know, giving up their second short term rental houses that way to the banks. It could be a lot more houses available I guess. Right? Jeremy: Yeah. That could be an opportunity, you know, if you want to buy and rent or buy in rehab and then resell that space could have some volume coming through. Yeah. James: Okay. Got it. Interesting, yeah, I mean, did I miss out on any asset classes? I think that's the more important. Jeremy: I think we got most of them. James: Yeah and do you think we are going to be much better in terms of economy wise? Just because there's going to be a lot more base employment, which is manufacturing happening in the U.S. Jeremy: I'd love to see that, I hope our companies can come home with that and who knows, I mean with the unemployment rate being what it's going to be for a while and the wage growth that we didn't really see in the last 10 years, and we just lost on that, maybe there's an opportunity for us to employ people that otherwise we couldn't have a manufacturing basis to make it make sense. I don't know. I'll leave that up to the manufacturers to figure out. James: Got it. So, I didn't want to forget one asset class, which is hotels, right? I'm not sure whether we went deep into hotel. So that's going to be, I think the hotels are really suffering right now. Jeremy: Oh, it's terrible. James: Right now. Jeremy: When I hear 9% occupancy rates. James: Yeah. Jeremy: That's bad news. James: Yeah, that's crazy right now. So hopefully hotels survive through this downturn, I guess. Right? Jeremy: Some will, look, we still need hotels. James: Yeah, I know. Jeremy: We still need them so they're the strongest, best located hotels will come out of this thing, others, you know, they'll fail and they'll either get bought at the discount and with a lower basis they can compete in the market and grow back out or you're going to see them reused for something else. James: Got it. Jeremy: That's maybe the multifamily conversion. James: Yeah, if the city allows it of course, then they can be a lot of studios and efficiencies, I guess and I've seen that happening in some cities and some projects. All right, Jeremy, thanks for all the value, can you tell our audience and listeners how to get hold of you? Jeremy: Sure. So you can check out our stuff on CREinvested.com, that's C R E I N V E S T E D.com, I've got an investment course there, that is available and if you ever want to chat with me, you can email me @jeremy that's JEREMY@creinvested.com James: Yeah, Jeremy is a wealth of knowledge. I mean, he's also a senior CCIM instructor, right. So that's a lot of knowledge if we came in, absolutely, you will be a really huge value to connect with you and just to learn from you. So thank you very much for coming on the show. Jeremy: Hey, thanks James, it's a pleasure. James: Alright.
How Speakers And Experts Can Write And Publish A Book For Social Impact Interview with Jeremy Jones Jeremy C. Jones, a proud military veteran, is also a family man and entrepreneur who lives in Paradise Valley, Arizona. His accomplishments include being a four-time #1 Best-Selling Author on Amazon, hosting the popular podcast “Ideas & Impact,” and founding and serving as CEO at Jones Media Publishing. Read the Interview Hugh Ballou: Greetings, it's Hugh Ballou. Welcome to this episode of The Nonprofit Exchange. This little interview will be packed with some ideas we hope will be useful to you. Today, we have Jeremy Jones, who comes to us from north Scottsdale, Arizona. Jeremy, welcome to The Nonprofit Exchange. Tell folks a little bit about you, why you're doing this, and your passion. Jeremy Jones: Absolutely. Thank you so much for the introduction. I appreciate it. A little bit about my background. I grew up in southern California and went into the military at the age of 18. I was stationed on an aircraft carrier for four years. Just to give your audience a reference of time, when I was getting ready to get out of the military was during the September 11 attack, 2001. I was a part of Operation Enduring Freedom. I was in the military during that time and shortly got out after, which was March of 2002. I moved here to Arizona, where I have been living and working of about 17 years now. Over time, I got my Bachelor of Arts degree. I started working of a company, working for myself. At the point where I had transitioned to fully working for myself, I was looking to get an edge on not only just the competition, but to set myself apart because I felt like I was really good at what I did. I authored a book and saw how it helped open up doors for me to get speaking engagements. I helped one of our clients be able to publish a book as well. That is where I developed a specialty of what we do with book publishing. Right now, I currently have that program. It's all we do. It's my primary business. Jones Media Publishing is the top rated book publisher for coaches, consultants, speakers, and experts to help them publish a book that can be used as a tool to get speaking engagements and new clients. I am so passionate about this because a book can be a tool to help an expert share their message that is impactful, share the story of the charity, nonprofit, or organization, to share the reason why they do what they do and the principles behind it, to help them reach an audience that are outside of their sphere of influence. Hugh: That's really great. I published my first book in 2007. It's called Moving Spirits, Building Lives. It's a church musician as a transformational leader. It's how I pivoted from being a conductor into organizational leadership. The conductor takes a bunch of singers and transforms them into a choir, transforms the choir into an ensemble, transforms people's lives. In church work, in the orchestra, it's the same kind of thing. I teach people how to build high-performing teams. I self-published and went to a church music conference. Nobody knew me. I had a bunch of books. There were 600 people there, and I sold 100 books. All of a sudden, people were quoting me, and I was a celebrity because I was an authority on a topic. Now, it took me 40 years to write the book, 30 days to put it on paper. So I sent myself a daily regimen and outlined it and wrote it. Miscellaneous chapters. I wrote the ones that flowed easily. The fist chapter I wrote was “Managing Time.” I wrote about it, so I have to do it. I can tell you that was a business card. The book was an open-door business card. People are really impressed that you have a book. I have had several other people quote my books in other books on the topic. That was my basic premise on transformational leadership. I have done other books and courses. It was really me putting on paper. The process was clarifying for me. What do you find is most helpful? We're talking to clergy and nonprofit leaders and their teams. I do experience they have lots of stories to tell, but they don't know how to get them out there. We think we published a book and it's a bestseller, so we're going to be filthy rich. That's not exactly the purpose, is it? Jeremy: No, not necessarily. So we always start with the foundation. A lot of times, when someone is referred to us, they come to us for three primary reasons. One is for contribution. They have a message that is important to them; they want to get it out to as many people as possible. The second reason is to have it be a tool to get clients for their business or speaking engagements, which furthers the message about what they do. The third reason is for credibility and authority. The book serves as a purpose to position you as an authority, a specialized expert at what you do. Whenever someone comes to us and says, “I have a book, but I feel like I'm stuck,” which is common, we start with the main purpose of the book. What is the purpose of the book for you? The whole structure and the outline of the book can be determined to serve that purpose if we know the reason why the author is writing the book, and who they are writing it for. You'd be surprised how many people don't think through that process. That's what we're very good at. That's what we work with each of our authors on. We develop a profile of who the book is for, what we need to cover within the book. We help them structure and outline their book properly. I will give you an example here based on your question. We had one author who wanted to be a public speaker. Inside of her book, she didn't mention anything about her having the ability to speak, or that she has even spoken. And she had spoken. What I recommended to her, because she was pretty far along, is within the book, rather than telling a bunch of random stories, she told a very specific story how she went to go speak somewhere, what she said impacted the people in the audience, and what happened as a result. A real quick story. Doesn't need to be very long. Only needs to be a couple of paragraphs. Because she told that story, it illustrated the point that she is a professional speaker. It demonstrates that she speaks, and people get a positive response by her speaking. Guess what a meeting organizer wants when they want you to speak? A good response from the audience, and for the audience to do something with what they learned. They want their speaker to perform to their audience and bring value to their audience. There are certain things we can do with the outline based on the purpose. You asked your question about stories. Depending on the purpose, depending on the structure and outline also depends how much of those stories or what stories even to make sense to include. Hugh: Before people melt down and say that's too much work, let me unpack a couple things. I found it very empowering laying it out in writing. I had cleared a month to write my first book. Those other books were written piecemeal through blog posts or other things I had put together. You have to be careful if you do it randomly so it has continuity. Having a good editor. The thing that occurs to me is a lot of churches and nonprofits don't consider branding. What you're talking about is your branding. Who are you? Who is your audience? How do you show up with that audience? What is your brand image? I had a brander publish a book called Twist. Her publicist contacted me and wanted an interview on my business podcast. During the interview, I had her book out. We were talking about putting a twist on your brand. I asked her, “How did you find me?” She said, “Your brand really stood out: the conductor that teaches leadership. That sets you out above everybody else.” If you're having trouble in your charity raising money, getting volunteers, maybe your brand isn't clear. If people aren't coming to your church or synagogue, there may not be a clear brand image on what they can expect or who you're marketing to. What are they going to experience when they get there? Why should they come? Any of those things, do you help people sort that out? Or do they need to come in with a brand ready? Do you help them decide who they are and how they want to show up in the world? Jeremy: That's what we help each of our authors and clients with. It starts with the structure and outline of the book first. Determining what is included in all of the chapters. We do a lot of research on book titles. The title is an important component of the book because that is the first thing that potential readers or audience members at an event see. When they see you're the author of X book, that's a determining factor to represent who you are. If you have a book about purpose, like Purpose-Driven Life, you know that's what the author is representing and talking about in their book. If you have a book called Family History Secrets, they are all about the secrets of their family. The title of the book does represent the message and what the author is all about. All of those things need to be considered with the end in mind. That's why I reference quite a bit with our members, because we coach our members through the entire process, from a blank Word document to published book, is we always do what Stephen Covey said in his famous book, Seven Habits of Highly Effective People, is begin with the end in mind. We always look at the end in mind for the purpose and the title. Hugh: It sounds awfully hard. I did everything myself. I went and found a printer. Actually, I had pitched my first book. Instead of making a dollar, it cost me a dollar, and I made $13 selling the book. They said clergy wouldn't buy it, but most people had clergy. I put music notes on my cover. My name was big on the cover. I don't know if I would redo it. If I feel like I want to do that, I would redo another type of book. All of that stuff. I am looking back and thinking, I wish I'd had somebody like Jeremy Jones guide me through the process. It was difficult. I had somebody proof it who didn't do a good job. My first printing was full of typos. That is a credibility issue. Jeremy: It is. What we do is we have the entire process outlined in three phases. That's how we are basically a guide, guiding people through the process so it doesn't ever feel overwhelming. We have divided our unique publishing process into three primary phases. Phase one is what we call the create or foundation phase. That's everything related to who the book is for, the purpose of the book for you, getting the book structured and outlined properly in a simple and systematic way, getting the book written in a time-effective manner because we know most of our authors or members are not writing the book three hours a day. They have a certain window of time they can allot outside of their business or profession. We are sensitive to that. We realize it does take an amount of time, but we want it to be as efficient as possible for each of our members. We have some programs in order to do that to help keep the writing efficient, providing editing along the way to provide feedback and insight for the author. That's all phase one. Then it goes to our team of editors to edit it properly so that the author doesn't have to deal with any of what you just mentioned. Where we have had people come to us and say, “I tried to do this myself. It's full of typos. I need to get it done right.” Our model is that traditional publishing house level of quality, but each of our authors retains full rights to their book. Everything I just mentioned is in phase one. Phase two is everything related to what we call packaging it. Packaging it as a product. Professional book cover design. The layout for the paperback book. Amazon and Kindle ebook formatting. Those are the primary three book formats. The third phase is the book release. When we first start our authors and they are thinking about their release, what we do is help guide them. Let's do phase one first. Then we move to phase two, then phase three. That's what we do is help facilitate each of those steps along the way so there is never any guesswork. Hugh: That's important. My clients in launching and growing an organization, people don't know what to do next. They do things randomly, which is not productive. It sounds like what could be a complicated process, you have streamlined what to do next. Is there a lot of I think what holds up a lot of people is they say I have to carve out time to do all this writing. I'll do that next year. It's the I'm going to wait until the perfect time. I will do it when… the famous excuse. Why should people wait? Can they get started? Is there a different way to put words on paper? Can they dictate them and have someone transcribe them? Are there options? Jeremy: There definitely are options. When we are in the writing phase, if the author wants to dictate what they have written, we have a unique process around doing that. It all starts with making sure everything is organized properly. If we have a book structure in place, if we have the outline in place, when the author is dictating something, it's not random. What creates a high expense for editing, the editing process completely multiplies itself and becomes expensive, when the editor has to go in and restructure and rewrite the developmental edit of everything. What we recommend is to do it in bite-sized chunks. Chapter one is typically broken into about three or five subparts. If the author is going to speak their book and transcribe it, they only focus on chapter one, point one. Then chapter one, point two. Then chapter one, point three. They are only talking about this one thing for a short period of time. That can be transcribed and cleaned up because it's focused, and it doesn't need this entire reworking. That piece dramatically deceases the time. Another thing is the reason that most people take a lot of time to write their book is because they don't have everything structured from the beginning. What a lot of our authors do is prior to them working with us, is they get an idea and are excited about turning it into a book. They get committed to it. They are on fire about it. They see the impact. They grab their laptop and start pounding away at the keyboard, writing that story and this story. It's a bunch of stuff they are typing out. Then they get to the point where they go, “Wait a minute. Should I include this in chapter one or four? Maybe this should be later in the book and this should be earlier.” They find themselves for five hours taking this and moving it here, taking this and moving that there, and rewording it. That process is frustrating and time-consuming. Our unique process we have developed is to help the author develop a proper structure for a book based on industry publishing standards to get it all structured first and then fill in the gaps. The way I like to illustrate this is when you think about a sculptor that is sculpting a big heavy sculpture. If it's big and heavy, they don't take a giant glob of clay, plop it there, and start doing fine detail. That's what people do with writing a book. They don't write it immediately in fine detail. What a sculptor does is they develop a wire frame of the body of the sculpture, and then they build the mesh. The mesh represents the body of it. Then they put on the clay, which forms the fine detail. If you do the same process when writing a book, first you look at the structure, which makes up all the chapters. Then you look at the chapters, which makes up each of those components for a properly published book. But you get to the writing once that is developed. You are cutting your writing time by a fifth; you will have a fifth of the time it takes to write in my experience. Hugh: There is always this fear of the unknown. I've had people tell me that they have done a series of blog posts and written the book and build excitement as they launch the book. People have read the blog and still buy the book because it's all in one place instead of strung out into a series of articles. That sounds like a good way to lay it out and think through it and get some real-time response. Do you have a reading on that? Jeremy: Sure, we've had authors who have done that. We've had authors who have done that with writing. If your style is you're more comfortable with writing, that's a great way to do that. Get to the exercise of writing and putting out blog posts and getting feedback. That's a great way to start. We have had another author as well who does it through audio forums, the course of a podcast. We'll have a chapter he wants to talk about, stories he wants to share, through the course of the podcast verbally. He is talking through the content that he wants to include in the book. That is a great exercise as well to speak out the story. Then you relisten to yourself telling the story, and you can very easily type it out, have it transcribed and cleaned up. Sure. Doing that process is a great exercise because you can get some feedback from people. See the response, the engagement, who leaves a comment. That's a helpful way to do that. Hugh: One thing I notice is you talk about the title. The title makes me stop when I go in the bookstore. All these books. What first catches my attention is the title. Not only the words in the title, but how it's laid out. Then I pick up the book, and I look for an index and the contents. If it's just a bunch of boring copy, that's a downer for me. I respect books that are laid out with some highlights, some images. I had mine with some little breakout highlighted paragraphs with tips throughout. I look for specific things that say to me it will be an interesting journey when I read this book. The titling is wordsmithing, but the rest of it, the cover appearance, the appearance of the title, and the book, what are the factors that encourage people- I'm talking about a physical book now. What are some of the things that make the book attractive so a person would want to pick it up and buy it? Jeremy: That's a great question. The first thing is the book title. The primary title, and the subtitle. I always encourage authors to create a compelling subtitle. The primary title should basically encompass the main thing the book is about. The subtitle should give the readers some additional information to help clarify what the book is all about. That's the first thing. The image of the book should be simple. Some of the best-selling books are simply all typography. Typography means it's all text. The title of the book should be clear and easy to read. In most cases, no script. Real scripted fonts are a bad idea because of readability. You want it at first glance to be easily read. Then the cover has pleasing design. The very next thing, you imagine if you are in a bookstore, is you flip the book open. The book should have a well-written book description on the back of the book, which teases or creates curiosity for the potential reader to let them know what's inside the book. That's on the physical book. On the Amazon book listing, we recommend to most of our authors who want to include it is you want to tease to the potential reader what's potentially in a variety of chapters in your book. Topic #1 would be chapter one. You would let them know what they would get out of each chapter in some bullet points. Giving those bullet points to that potential reader is giving them some insight as to what is in the book. The nice thing about Amazon as well is they have the ability if you are getting the book online to do a Look Inside and see the table of contents. What we find in most cases is the first line of defense is the book cover. Then it's the back, which is the description on the back of the book or in the Amazon book listing description. Then once when they are inside the book, it's the table of contents. That right there also lets you know you need to have a well-written table of contents that also informs the reader as to what is in the chapter. Those should also be well-written. They are almost like many titles of your book. They are titles of your chapters. That's what I recommend. Hugh: I threw up a cover. This is my fourth book. It was one of the imprints for the United Methodist Publishing House, which has since closed. They did this attractive cover. It was an anthology, so I had famous people on the front and endorsements from the back from two authors of Chicken Soup. We made it to the second print. What was a mistake was the cover doesn't have the subtitle. It was Stories of Transformation by Leaders. I didn't realize until after I had released it that it didn't have it there. That was a liability. To your point, it looked interesting. They had an artist do it, so I went with it. I do find that I look for what it's really about. The other thing is picking the right categories. With Moving Spirits, Building Lives, it's #2 in the transformational leadership category. I don't know how it got there because that was mostly by accident. I tried intentionally to get this one to bestseller. Just wanted to say I did it. I didn't make a lot of money, especially if you go through a regular publisher, you don't get paid until you get that advance back. Speak more about the artistry of design and how, this subliminal message and attraction thing that goes on to entice them to grab it. Once they grab it, that's half the battle, wouldn't you say? Jeremy: I would say so, yeah. Grabbing their attention first, yes. Once you have their attention, then it's the book description that takes them to the next piece. The title leads to the subtitle leads to the description leads to the table of contents, which leads them into the book. If they feel like the book would bring them value, that's when they make the decision to buy the book. Nonfiction books, the value in most cases is something they would learn to improve their life. About 80% of the books we publish are nonfiction. The value to the reader for fiction books is entertainment. Getting them outside of their own reality and their mind to imagine this outside world as entertainment. That is the value you bring to them. A lot of fiction authors don't consider that, but they have to market it that way when they are looking at writing their book description. How can you paint the picture of the value you will bring to this reader, which is capturing their mind and imagination? Hugh: I'm positioning a book as part of the overall marketing program for a nonprofit. Is that okay? It's a marketing tool. There are lots of reasons, but for the purposes of where I'm going with this. It's part of the awareness. It doesn't differ for an entrepreneur running a business. Like leadership, the principles are the same. I'm a speaker, too. Speaking itself is not a sustainable revenue source. You get paid, and it's gone. What we want to do is have back of the room material. You want to have books, courses, and other things you can offer people, which is a secondary flow of revenue. A lot of nonprofits have a lot of resources, their own and those of others who provide value in the space they are operating. Talk a minute about how a 501(c)3 can use a book to monetize, to bring in revenue. Jeremy: That is a great question. To answer your question, the way we have seen this work best, because of our model, we have a traditional publishing house level of quality. The author retains full rights, and they earn 100% of the royalties, minus the printing cost of the book. In that situation, where we've had two paths here, number one is the expert or influencer would write the book from their perspective, teaching something, sharing a message, and the nonprofit is mentioned within the book. The sale of the books would go to raise funds for a 501(c)3. You could sell a bundle of books to a company. When they buy books, the profit of books goes to the nonprofit. That is one way. Another way we have seen several of our authors do is the author runs a business themselves, or they are a speaker. But the nonprofit is the sponsor of the book. The nonprofit is mentioned on the back of the book. A portion of the proceeds go from the sale of the books toward the nonprofit. When the author is promoting the book, they can say, “A portion of the proceeds are going toward this nonprofit.” People like to contribute to causes or businesses that contribute to causes. There is a lot of joint venture opportunities that could come from that as well. The 501(c)3 could have donor lists. A list of all people who have donated. They could send a message to the donors saying, “We have partnered with this author. The proceeds are going back to our nonprofit. We think our audience would love this book. If you buy this book, proceeds go.” There are different types of things you could do within the marketing to split the proceeds or all of the proceeds because the author gets paid to speak or a back-end to the book where they are not so concerned about the profits of the book. This can be good. But they get paid on coaching clients, business services, things like that. Hugh: I have also said there are purpose books that teach people about particular things, how to get out of poverty, topics like that that explain to constituents. I live in Lynchburg, Virginia, where we have a high poverty rate. There are lots of initiatives about poverty. Getting them food, housing, and clothing does not raise them out of poverty. It's the mindset. The mindset takes us to a very different place. My material is helping people reframe their thinking. I spend a lot of time reframing the thinking for nonprofit leaders. I have seen occasions where a sponsor buys the back page. It's a helpful book for a certain segment or purpose. They give it away. But it has the sponsor message. They will buy 10,000 books. The company itself uses it for a marketing tool, and there is a mass distribution. Is that a scenario you see much? Does it really work? Jeremy: To a degree. I would say the most important thing is the sponsor, or the one representing, is in complete alignment with the audience or the reader and the values of the company. With your example, we publish quite a few books for health and wellness professionals or health coaches. I would never recommend they have a big soda company for obvious reasons because they can't condone drinking soda. Hugh: Different brands. Jeremy: And the purpose of the product as well. Coca-Cola, Dr. Pepper, they are not bad companies. It's just a drink. But it's not ever recommended by that particular person. If a health and fitness trainer wrote a book and they wanted to have a dietary supplement be a sponsor, perfect alignment. The supplement provider could email or promote or Facebook ads, whatever they choose to do, to promote the book, and it also tells them in the book how to take the supplement, which the trainer recommends. There is consistency happening there. I always recommend looking at, in most cases, there is, there is some sort of consistency you could create, and there is a company out there that would see that as alignment for their brand. Hugh: It's the principle I was trying to illuminate there. If their brand is compatible with your brand, and there is value for both brands. Jeremy: I'd say so. Hugh: It's not magical finding someone who wants to do that. Jeremy: On that note, I also do recommend to not make obvious blatant advertisements on the book. When someone normally gets a book, you wouldn't see a blatant advertisement. But marketing is something that we're very focused on with the book. We help with the launch. We are focused on joint ventures. There are easily things you can do to give the reader more value and subtly promote the other company. Using the example of the fitness trainer. Within the book, the fitness trainer talks about using this particular protein supplement. The company is mentioned several times. The author could mention a guide that talks about 50 smoothie recipes to use this supplement with, and they download this guide with these recipes. That company is mentioned, and there is a link you can go to to order this supplement. There are things you can do to not make it an advertisement, but an added value for the reader. Hugh: It's only fair. You have several books. Book Publishing on Demand, Power Authority, and Lead Flow. Those are on Amazon? Jeremy: Yeah. Hugh: You can also find them on JonesMediaPublishing.com. Then you have a podcast. AskJeremyJones.com/Podcast. What kind of things do you talk about on your podcast? Jeremy: The podcast is a lot of fun. We just published our 169th episode. The show is called Ideas and Impact. We interview authors, speakers, and subject matter experts about three big ideas you feel could be really impactful for people if they applied them into their lives, either on the personal side or on the business side. We have interviewed people about relationships, marriage, parenting on the personal side. On the wealth side of things, business growth, marketing, sales, things like that. And on the health side, we have talked about health and fitness, weight loss, all things. It's similar to like a TED Talk. You go there to listen for something insightful that you can immediately put into action with your life. It's been a lot of fun. Hugh: I am sorry I didn't know about your podcast, but I do now. Is there anybody on the horizon that will be exciting? Jeremy: John Nemo is on the line-up. He is a LinkedIn expert. Teaches people how to optimize their LinkedIn profile. We mention John David Mann, who is the co-author of The Go-Giver and also Bob Berg, who co-authored it. We interviewed Ivan Meisner from BNI, the largest business organization in the world. That was an incredible interview as well. We've had a few high-level celebrity-type people. We have Hugh up and coming. That's a given, Hugh. Hugh: I have been having back problems, but I had a shot today, so I'm a new man. Which new man I am. I am eager to find out more. I am going to listen to it. Jeremy: You can get all the episodes at AskJeremyJones.com. Hugh: Jeremy Jones, you are a real wealth of information. We had an author last week, Scott S. Smith, who has written 1,800 leadership articles for Investors Business Daily of all places. Leaders want to know about leaders. It was a powerful interview. I look forward to sharing some things with your audience. This has been helpful. I am reliving my journey of writing a book. I will say to people I spent 40 years in church music ministry. One time, I did a pivot and said, “I am a transformational leader.” I repositioned myself. I went from having my back to the audience as a conductor to facing the audience as a speaker. That was a physical 180-degree transformation. The book was a way for me to be clear on my message. Once I started writing, I found out I knew a whole lot of stuff that was valuable to people. We are in the third printing. To keep the price down, I bought a whole bunch. You can have a print book, but you can do it on demand. You can print a few. You can print a bunch. What are some of the options when you publish a book? Jeremy: We recommend to start with the print on demand option to get the process going until the author has enough established where they can hold some books on hand, which is a good idea to have some on hand. In most cases, because we run a printing and distribution facility, we can print on demand pretty quickly for our authors. We have one author just recently about a week and a half ago did an event with 200 people. She let us know, “Hey, I am doing an event with 200 people. I am going to need 200 books at this address.” We print them, package them up, ship them to her event. Within about five business days, they can be printed. We can fulfill and do that on demand. For higher quantities of books, make sure there is a good reason to have a higher quantity. You can get some price breaks. We can do that as well. Typically, what we do is start with the paperback. That's established. The author knows their printing pricing. We can work with that as well. Then we have the e-book version. There is no hard cost there. Once we finalize the paperback and do the release, a few of our authors like to have a hardback version. We do have printing facility capabilities to do that version with a dust jacket, which looks really nice. The printing cost is a little bit higher, but we have worked it out where we can do it on fairly low quantities. We can do a couple hundred books for a reasonable cost. Hugh: Good to know. There is the paperback, the hardback, the e-book, and the Kindle book. What about audiobooks? Are those valuable? Jeremy: Those are valuable. We provide some training and resources of how to get that up and going. We don't provide the services to do that. There is three options. Some of the authors want to speak the book themselves, which we usually recommend as the best option. But they have to have capability to go to a studio, record the audios, and have it cut properly for Amazon ACX, which is Audible's program for audiobooks. The second option is you can hire a voice actor and pay them up front. You still retain your side of the rights, and you get the royalties from Amazon directly. The third option is you can hire a voice recording artist and split the royalties with them. That's all built into there. You can choose the royalty option you want. We provide some resources. If the author wants to do an audiobook, we guide them on what is the best option and how it works. Hugh: That was the audiobook from Barefoot Winery. They were our guest a few weeks ago. They had a whole drama team that did the book. It was stunning. They didn't spare any cost. They sold the winery. They are marketing experts who accidentally got into the winery business. I never thought about getting a drama team to produce the book. It was a story. That was powerful. They helped nonprofits raise money through their activity with the winery. The book was out there to say this is an idea for you. It's been a bestseller for quite a while. Jeremy: I like that. It makes sense. Hugh: A lot of people do creative things. Books are not dead. I was talking to somebody the other day about how good leaders read. People at the top of their game read. There is no variance to that. They read the same books again over time and mark it with a different color marker because you will see different things when you go back. On my bookshelf, I have a lot of Kindle books, too. Somebody was telling me a physical book, you absorb better. Do you have an opinion on that, whether physical books are better than e-books? Jeremy: I am of the view that everybody learns differently. When some people learn something new or when they relax, they like to look at the words on a physical paper. I like to do that, too. I like to look and jot notes in the margins or write things down as I'm going. Total focus. If I have a book I want to totally focus on, I will get a paperback. I find that's the case with most people. When you just want to take a book with you, I have a Kindle app as well on all my devices, I like to have e-books as well to have books I can reference. E-books are great for that, to have a library of books you can carry around with you everywhere. Audiobooks are popular right now. We are starting to get more involved with that, with our clients. That's a great medium for when people are busy. A lot of business owners listen to audiobooks now. When you're driving and commuting places, you can listen to audiobooks. You can't read while you're driving until we all have self-driving Teslas, which I don't know how many years that's out. For right now, we're not reading while we're driving, so audiobooks are a great option for that. I think it depends on how you consume information. I agree with you. I don't think paperbacks, even though we have all these capabilities in different mediums, I really don't think that they're going anywhere. Hugh: I agree. *Sponsor message from Wordsprint* Jeremy Jones, what do you want to leave people with? Jeremy: For anyone watching or listening, if you have had a dream and a desire to write a book, we have many people say, “I just wanted to write something, to inspire people, to share a message with people.” A lot of people think that contacting a publisher too early in the process. I need to get further along. I need to write out my ideas. I need to get to some point before I explore that with anyone. I think the earlier, the better. That's what we're here for. On the foundational process, of making sure all the things work together to meet your objectives for a book. Some people, I say, “Hey, I think this is a great idea for a book, but not now. With where you're at and what you're doing, wait until you have this set up or this timing is better.” A lot of it is timing. That's what we do. We do a free book strategy session with anyone who would like to explore the idea of a book, how it can integrate with your organization, how that could work. We'd be happy to explore that. Also, I run a free Facebook group for the podcast called Ideas and Impact. If you go to AskJeremyJones.com, there is a Facebook icon at the top. Click on that, and you can join our free group. I am happy to answer any questions you have or explore the idea with you. Hugh: Jeremy Jones, this has been a delight. I have published lots of books, but I have learned a lot of new stuff today. Learn more about your ad choices. Visit megaphone.fm/adchoices
In this episode of the P100 Podcast, our hosts Paul, Dan and Logan welcome Nicole Chynoweth from the Carnegie Science Center to discuss the center’s new exhibit on mummies. From there we move on to the science of fear, and then on to hockey with their guest, Jeremy Church. This episode wraps up with a review of some unique Pennsylvania town names. We bet you have your favorites.----more----Full transcript here:Logan: You are listening to the P100 podcast, the biweekly companion piece to the Pittsburgh 100, bringing you Pittsburgh news culture and more because sometimes 100 words just aren't enough for a great story.Dan: Hi everyone. Welcome back to the P100 Podcast, we're happy to have you back for another episode. I am Dan Stefano, I'm here with Logan Armstrong. Logan.Logan: How's it going?Dan: A pleasure to have you with us and Paul Furiga will be joining us in a little bit. Today's episode we're going to be talking about mummies. Not your mothers, not like that Logan. I see you, that's what you're thinking. No, just having a pleasant thought, thinking about dear old mom. No, Okay.Dan: Now, we're actually going to be talking about the mummies that you might think of whenever you think of ancient Egypt and other parts of the world here. There's a new exhibit at the Carnegie Science Center - Mummies of the World, and we're really excited to talk with someone from the Science Center about that.Dan: Afterward, we're going to be discussing the science of fear. Keeping with us, somewhat of a Halloween type of theme here. Then, we're going to be talking about, what everybody knows, it's the beginning of hockey season. Logan, you excited about that?Logan: No. Dan: No. You're not excited about hockey. Okay. Well, I am and some other people in the office, and we're going to be talking with one of them about the growth of youth hockey in the region, which is really something that's taken off in the past few couple of decades here in Pittsburgh. And we're going to finish up with Logan and I being just as serious we are now. We're going to talk about strange Pennsylvania town names. So if you make it to the end, you're going to be in for treat on that one.Logan: Oh yeah. Stay tuned.Dan: Okay, so let's get going. All right guys, for this segment we're going to talk about mummies. In particular, mummies of the world, the exhibition. It's a new exhibit at the Carnegie Science Center and from the Science Center, we have Nicole Chynoweth. Nicole, thanks for being here.Nicole: Thank you for having me.Dan: Absolutely. Thanks for being with us here. And can we talk a little bit about your own role within the Science Center here. Can you tell us your position and a little bit what you do?Nicole: Sure. So, I'm the manager of marketing, public relations, and social media with a focus on exhibits and the Rangos Giants Cinema.Dan: Great. What does that entail then? I mean, that I imagine you you are working with a lot of different positions there. Right?Nicole: Yeah, it's a really fun job. I get my hands in everything from new movies that we have coming out at the Rangos, educational films to the exciting new exhibits that we're bringing to the science center, from space topics, planetarium related things, and mummies-Dan: Really cool, it seems like a fun place to work. Right?Paul: Nicole, you've had your hands in the mummies?Nicole: No.Paul: Okay. The promotion of the mummies.Dan: The promotion of the mummies. Paul: I'm sure we'll talk about some of the technical aspects, but that would seem a little gross, but...Nicole: I don't think so. I find the exhibition more fascinating than I do creepy. And I'm not a fan of scary movies or I did not watch the Brendan Fraser mummy movie.Paul: You didn't?Nicole: No interest in that.Paul: I did watch those.Dan: You're missing out on a classic from the 1990s.Paul: Yeah. Well, classic is a little strong-Dan: I think it should have won an Oscar, but that's just me.Paul: Okay, Dan. We'll talk about that another time. So Nicole, when I think of the science center, I think about some of the other things you mentioned. Space, technology, mummies?Nicole: Yes, mummies are, especially this show, the mummies featured in Mummies of the World, the exhibition is, have so much to offer in terms of scientific, anatomical, biological information that we can still learn from today. So what I find really exciting about the mummies of the world is that it focuses on both natural mummification and intentional mummification. So, you might be more familiar with intentional mummification. That's the type that was [crosstalk 00:04:15] practicing in ancient Egypt. Correct.Nicole: And we do have some examples of Egyptian mummification in the show, but this also takes a look at the natural mummification process that can happen when conditions are at such a level moisture wise, temperature-wise that is able to naturally mummify a body, be it animal or human.Dan: Right. Well, it sounds like some pretty amazing things to see...Paul: Yeah, it's fascinating.Dan: What are some examples maybe of the intended mummification that we'd see there? I mean, is there anything from, I guess everybody knows about Egyptian mummies but then, they're also South American. What else might you see?Nicole: So an interesting example of the intentional mummification process that aside from like the Egyptian mummies that are featured in the show, there is Mumab, also known as the Maryland Mummy. In the nineties, two scientists at the University of Maryland decided that they wanted to try their hand at an Egyptian mummification process. A man had donated his body to science, and so they started the process of mummifying him. So, you can see Mumab in the show.Nicole: That's just an interesting way of seeing how we are still learning thousands and thousands of years later about how this process works and the tools that they had to use to complete the process and what the body has to go through for mummification to occur.Dan: That's really cool.Paul: Did it work?Nicole: I've been told that it's still in process, it's not completely... He's not completely mummified yet.Paul: Take some time?Nicole: Yes.Paul: Wow. Something I never knew.Dan: That's pretty awesome. Can you tell us what else is in the exhibit then? I mean, are there any, you say interactive portions to it. What should people and families expect whenever they're inside here. It's not just, as you'd be at a museum taking a look. I mean one of the great things about the science center is it kind of hands-on.Paul: Hands-on. Yeah.Nicole: Yes. So in addition, to the 40 animal and human mummies and 85 rare related artifacts, visitors will also be able to look through several interactives related to different topics within mummification. I think a favorite among children will definitely be the, what does mummy feel like a station where you can touch different types of mummified materials, so there's like frog skin, fur. Mummified fur, different things like that they'll be able to touch these like textile panels that are examples of what those things feel like.Nicole: Another great interactive is there's a large map that shows where different types of mummies have been found all over the world, which I think is really important to look at from the perspective of which, like you said, we are so used to just thinking about Egyptian mummies.Paul: Yes.Nicole: And really there are mummies all over the world, [crosstalk 00:07:15].Paul: So not to be surprised?Nicole: Yeah.Paul: You never know where you might find a mummy!Nicole: Right, right.Dan: Okay. Well, people will hear, we can see Mummies of the World through April 19th that's correct, right?Nicole: Correct. Open through April 19th. It takes about 60 to 90 minutes to get through the exhibition, for parents that are maybe wondering if the exhibition is appropriate for their children. We do have a family guide available at carnegiesciencecenter.org/mummies, that might answer some of the questions parents have before they take their kids to the exhibition.Nicole: But I really believe that it is appropriate for all ages and I think people will take something away from the show, be it a new interest in archeology or anthropology or just being able to connect with the backstories of the mommies that are featured in the show. You get to know them. They're more than just a mummy in front of you. You learn their story, how they lived, the way they lived, where they were from. So, super excited to have it at the science center and to be able to offer this experience to Pittsburghers.Dan: That's great. Anything else happen at the science center lately?Nicole: Yes. So, it's Halloween season.Dan: Yes.Nicole: What better time than to experience a scary movie on Pittsburgh's largest screen?Paul: Very good.Nicole: The Rangos Strengths Cinema teamed up with Scare House, this year actually for Rangos x Scare House. We co-curated some Halloween movies together to offer Pittsburgh a really exciting lineup for the Halloween seasons. So we have coming up the Universal Studios Classic Monsters. We're showing the Creature from the Black Lagoon, Frankenstein and Dracula, on October 11th through the 13th.Nicole: We also have Dawn of the Dead 3D showing October 25th and the 26th. And that's a really exciting screening because they don't often show the 3D version. So if you've seen Dawn the Dead before, I can guarantee you have not seen it like this.Dan: This is the original one?Nicole: Yes. This is the original Dawn of the dead. Yes.Paul: In 3D.Nicole: In 3D.Paul: Have you seen it, Nicole?Nicole: I have not seen it. I'm not a huge fan of the scary movies, but I've been told that if there's one I should experience at the Rangos this year. It's probably this one.Dan: All right? Just how big again is the Rangos?Nicole: So we are a certified giant screen. The screen itself measures 72 by 38 feet.Paul: Wow.Nicole: We also have 45 surround sound speakers. Your average theater has 14.Paul: Dan, if you and I can get that past our spouses and into our basements. I think that'll be good.Dan: I might have to tear down a wall or two in my basement, but I think I can handle it.Paul: You know, it's all about the purpose, Dan.Dan: You know what, we're trying to fix more damage to begin with. So I think I could get this Rangos a screen down here. That'd be perfect.Paul: It'd be very nice.Dan: Nicole, how can people find out more about the Carnegie Science Center, both online and in social media?Nicole: Sure. Visit us at carnegiesciencecenter.org or find us on Facebook. Carnegie Science Center or Twitter and Instagram @Carnegie S-C-I-C-T-R.Dan: Okay. Thanks so much for coming on Nicole. We appreciate it.Nicole: Thank you.Paul: Yes.Dan: All right guys. We were just talking about mummies and now we're going to... mummies, if you'll look back at it, they're famous movie monsters, some of the old ones from the 30s, some of the more recent mummy movies and whatnot.Paul: Brendan Fraser.Dan: Exactly, yeah. I love those horror movies and I love being scared. I love this time of year whenever we get a chance to go out to a haunted house. Me and my wife try to do one at least once a year. She's not wild about them, but I have a great time. Even right now in a couple of days. I believe the scare house is going to be reopening the scare houses. One of the more popular attractions around the area of this third winter.Paul: Award-winning.Dan: Award-winning, correct. Yeah. They had to move from Etna and they're in the Strip District. I think they maybe even changed the name to reflect that, but I think, it's interesting that people love to go to these things and they're so well attended.Dan: You see the lines around the block just to be scared and so I've had a chance to go look at the psychology of fear here, and there's an interesting phenomenon that researchers have found called VANE. It's V-A-N-E, and it stands for Voluntary Arousing Negative Experiences. Logan or Paul, you guys ever felt anything like that? Do you have any voluntary experiences?Paul: Yes. Dan, some people call that work?Dan: No. Yes.Paul: I've absolutely. So, I mean, I'm the old guy in the room. You think back to when I was a teenager, the voluntary arousing negative experience was to take the date you really like to a scary movie.Dan: Okay.Paul: I think we're going to get into this Dan, some of the why this is in... Things that people will voluntarily do you, you might not have expected a certain level of affection from your date, but if you took her to a scary movie, there would be the involuntary reaction when something happened on the screen of-Dan: Them getting closer? There you go. That's clever.Paul: Yeah. Well, and it's all this time at least all the scary movies.Dan: I think, when you look at some of the research here, what they point at, one of the most important parts of that is that it `is voluntary and that people were making a conscious decision to go out and be scared. And a lot of that is about overcoming stress. And you might go in with another person, you're working together to try to get through this shared experience here, fighting the monsters, try not to punch the actors who are just trying to have a good time and scare you.Dan: But they get a chance to get outside of themselves, and as we said, face a fear and there's really a great quote here from a woman named Justine Musk. Her quote says, "Fear is a powerful beast, but we can learn to ride it". I think that's just a very good succinct way to put it. But our good friend Logan here, you were actually a psychology major for a couple of years at Pitt and you know a lot about fear.Logan: Yes. So, as you said, I was a psychology major for a few years. I really enjoy just kind of how humans work. But so basically what it is that you have a part of your brain and it's a little almond-shaped lobe called a medulla. But, so basically what happens is that you're, when you see emotions on people's faces or when you see something that would cause you to emote in a certain way.Logan: So, say you see you're out in the wild and you see a lion and you're like, well that's not good. So that message sends to your medulla, which then sends to your limbic system. And if you guys are aware of the limbic system, it's your fight or flight response.Dan: Yes, okay.Logan: When you experience these negative arousals, that kicks into high gear and that pumps adrenaline through your entire body, your pupils dilate, your bronchitis dilates, just you're in this hyper-aware zone, and that's where adrenaline junkies get it from.Logan: It's a similar thing to where you're experiencing fear where you might be scared, but your adrenaline is pumping so much and it's releasing so many endorphins and dopamine that you end up enjoying it.Dan: Well. Okay, now we know whenever we either go to a haunted house or if we go see the mummies exhibit at the Carnegie Science Center, none of us are going to be scared because we know all the science, and we just know what's going on in our brain.Paul: Well, I mean this is also why people like roller coasters shout out to the steel curtain at Kennywood. Because they know it's safe. Right?Dan: Right.Paul: The experience is scary, but it's safe. When you go and see a movie. Yes. You sure hope so. You see the movie, you know it's going to be an hour and 20 minutes or two hours or whatever and when it's over, you may have been scared during the movie, but you're okay. The same with the rollercoaster, three minutes and then you're back in line, right it again. Right? Because you've enjoyed that safe experience of being scared.Logan: And it's the same concept where it's going back to my earlier example. If you see a lion in the wild or you're going to be scared. But if you go to the zoo, you're going to think it's cute or whether somebody else tickles you, you get a reaction, but you can't tickle yourself because your brain knows it's not a threat.Dan: Well, we do see a lot of alligators on the streets of Pittsburgh these days, so I don't know. You know what I mean. Maybe we'll see a lion the next, but I don't know that's all there is to know about fear or at least a good introduction for it. So, yeah. Logan, thanks for the knowledge there.Logan: Sure thing.Dan: Yeah. Maybe you should have stayed as a psychology major.Paul: He won't be here helping us today.Dan: That's a fair point.Logan: Now he's like "you really should've stayed a psych major"Logan: Centuries before cell phones and social media, human connections are made around fires. As we shared, the stories have shaped our world. Today, stories are still the most powerful way to move hearts and minds and inspire action. At Word Wright, Pittsburgh's largest independent public relations agency. We understand that before you had a brand before you sold any product or service, you had a story.Logan: Word Wright helps clients to uncover their own Capital S story. The reason someone would want to buy work, invest or partner with you through our patented story-crafting process, visit wordpr.com to uncover your capitalist story.Paul: All right guys. It's a fun time of year because the penguins are back in action. We're all hoping that they can get back to the Stanley cup this year. Who better to have on our vice president Jeremy Church here at one of our vice presidents here at WordWrite. Jeremy, you're involved with hockey and can you tell us a little bit about that?Jeremy: Sure. I've been fortunate to be involved with the game for nearly 40 years now as a player and a coach. Grew up starting about eight I guess in Michigan. Then we moved here in 10 continued to play, went away to prep school and played all through prep school Junior A, was fortunate enough again to play in college and then the last 17 years at various levels. I've been able to coach.Paul: That's awesome. Yeah, Who do you coach with?Jeremy: Right now, I'm coaching my younger son. With 11 Hornets, youth hockey organization. Prior to that, I helped with the high school in Mount Lebanon for five years. Coached at Shady Side Academy for a year and again using the word fortunate was able to go back to the Prep school. I played at Culver Military Academy and coached there for six years and it's a pretty storied program.Paul: That's fair and awesome. Well, Pittsburgh's got a long history in hockey going back to the turn of the century here, pretty much and but from a lot of people, the history and hockey didn't start until Mario Lemieux got here in the early eighties and Jeremy have a fun story about Mario Lemieux actually.Jeremy: I do. There've been two big booms locally when it comes to the growth of the sport. And certainly the first one had to have been when Merrill was drafted back in 1984 so we had just moved here from outside of Detroit and moved to the South Hills and we went to South Hills village one day and the mall was still there. At the time it was Kaufman's Department Store, which is no longer there.Paul: Oh yeah, the mall's there now just no Kaufmann's.Jeremy: So we're walking through and there's a little table set up and there are two or three people sitting there, one of them towers over all the others. And as we get closer and closer, there's no line at all. Mind you, it's Mario Lemieux sitting there signing autographs before he'd ever played a game.Jeremy: So, we walked up to the table, got his autograph. He still really couldn't speak English that well. But if you could imagine today the kind of stir it would create if Mario were around talking at to anyone in any environment. It was the exact opposite back then. I still have the autograph today.Paul: What did you get autographed?Jeremy: They had little teeny pamphlets of him in his Junior A Laval and from the Quebec Major Junior League Jersey, and that's all they had to sign. I think it was him. And it might've been Paul Steigerwald because at the time he was head of showing Mario around town and Mario, for those who don't remember when he was 18 actually lived with a host family in Mount Lebanon for the first year that he was here when he was 18.Paul: Yeah. Well, like I said it, whenever he first got here, he lived with Lemieux.Jeremy: Yeah, he returned the favor.Paul: Well, since that day, whenever there was no line at Kauffman's, today there was no more Kauffman's and you would have a gigantic line. But so what can you say about just seeing the growth of hockey? Especially from a youth hockey angle here, you've been front and center with it your entire life?Jeremy: It's pretty remarkable. Doing a little research earlier and in 1975 there were basically two rinks that you could play out of indoor rinks for Youth Hockey: Rostraver Gardens, which is still around and Mount Lebanon Recreation Center, which is still around.Jeremy: By 1990, when I was in high school, there were 10 and now that figure is roughly doubled to around 20 in the region. There are 62 high school teams and there are 28 organizations in the Pittsburgh Amateur Hockey League. And within the Pittsburgh Amateur Hockey League, there are now 5,600 players. And that's for those who are around playing in the eighties or growing up in the eighties and early nineties here, that's almost hard to believe there's, you know that there are 28 organizations, but if you go down through the ranks of 18 and under 16 and under 14, 12, ten eight and under age groups, there's dozens and dozens of teams at various levels all throughout that.Jeremy: So, for last year at the ten-year level, ten-year-old level, there were 80 plus 10 new teams in PAHL, Pittsburgh Amateur Hockey League League. So pretty remarkable.Paul: Right, Yeah. The majority of those kids, they're probably not going to be heading to the NHL, but a lot of kids want to at least, pretend that they're one of their heroes and get involved in the game. And I think one of the problems, maybe not a problem with hockey, but one of the issues surrounding it is there is a perception that there is a bit of a barrier to entry. You've got to have skates, you've got to have pads, you've got to have a good helmet, you've got to have a good stick. There's a lot of, there's a lot to that kit there. Jeremy, there are easier ways for kids to get involved in the game today though, right?Jeremy: Yes. Part of the Testament to the Penguins organization and certainly as Sidney Crosby has been, his emphasis and involvement with youth programs and youth hockey initiatives. And not just in Pittsburgh, but I know as well back when he returns to Canada in the summer and throughout the year, he likes to give back to the community.Jeremy: But a big initiative that started, it's now celebrating it's 10 year anniversary or 11 year anniversary is the little Penguins learn to play hockey, where Sid partnered with Dick's sporting goods to give, what is now I believe more than a thousand sets of free equipment out to kids who want to start playing the sport. So that goes hand in hand with a program that I think runs six weeks, eight weeks, in January, February to get kids introduced to hockey.Jeremy: But to your point in that, the big barrier to entry is the cost of equipment, which can be several hundred dollars even for kids that are five, six, seven years old. So that's certainly got a lot of kids involved in the game and has led to those massive increases in participation that I cited before.Paul: All right, that's awesome, Jeremy. Well, thanks so much for coming in and talking to us about hockey. We're hoping for another good season from the Penguins. Maybe a longer playoff run than last year. We got a bit of a break last year. I think they earned it after winning a couple of cups. But yeah, thanks again and yeah, we'll talk to you soon.Jeremy: No problem. Thanks to you.Dan: Right. This next segment. We're going to learn a little more about our co-host Logan Armstrong. Logan is from Eighty Four, PA.Logan: That I am.Dan: Now, we got talking about this and it got us, we started, you know, going down a rabbit hole and we got discussing why 84 was actually named 84? At first, I thought it was named after the construction company the-Logan: 84 Lumber.Dan: Yeah, 84 Lumber, and it turns out I was wrong. That 84 is named after 84 PA, and there's a lot of history and a lot of different theories about how the town was named. Logan, do you want to go through some of them maybe?Logan: Yeah, sure. So there are a couple theories. 84 is quite the town. There's not much in it other than 84 Lumber, but you know, it's nice. There are a lot of theories on how it was named, the most popular of which is that it commemorated Grover Cleveland's 1884 election victory. Some other theories were that it's on mile 84 of the railway mail service. My favorite though is that it's located at 80 degrees and four minutes West longitude. This seems like the most probable to me.Dan: My favorite actually is apparently in 1869 general David "Crazy Legs" Hamilton had an outfit of 84 soldiers with them and held off an attack of Outlaws. Now that just sounds fantastic. Yeah.Logan: That sounds quite heroic. If that is the case. I am proud to be from 84 PA.Dan: Maybe you're a descendant of general David "Crazy Legs" Hamilton here. Is that possible?Logan: Yeah. I believe I'm Logan "Crazy Toes" Armstrong.Dan: Okay, keep your shoes on man! We don't want to see anything. Well, after this, after we talked about 84 we also started taking a look at some other weird names for towns in Pennsylvania here and if you go online, you can find quite a few of them. Logan, what were some of the interesting ones you like you?Logan: There are quite a few to choose from. A couple of my favorites were, while the all known intercourse, PA, which is actually the most stolen sign in Pennsylvania, where it says "Welcome to Intercourse" for good reason.Dan: Obvious reasons.Logan: Right. Going along that same route, a rough and ready PA was, they named it after a California Gold Rush town, so I guess they're rough and ready to get some gold out there. Can't blame them for that.Dan: I imagine that sign is also been stolen many times.Logan: Right. Okay. Then, well, let's play a game here. I'm going to give you some Pennsylvania town names and you're going to tell me how you think that those names came to be. How's that sound?Dan: Bring them on. I'm a repository of knowledge.Logan: Okay, great. Peach Bottom.Dan: Peach Bottom. This is simple. This is extremely simple. Everybody in the town of Peach Bottom is very short, and they're, but they're also Peach farmers, so they can only see the bottom of the peaches that come from the trees. It's kind of a shame because they've never seen the peach tops.Logan: That is a shame. Those peach tops are so beautiful.Dan: We have an actual reason why it's called Peach Bottom?Logan: In fact, Dan, you weren't too far off, Peach Bottom. Got its name in 1815 from a peach orchard owned by a settler named John Kirk.Dan: John Kirk was very short, as we all know.Logan: Right? Yes. Okay. Shickshinny, Pennsylvania. What do you think of that?Dan: Schickshinny. Ah, got it. Okay. Shickshinny is named after a famous dance created by the person who created Schick shaving blades. Fun fact, a few people realize that he had a dance. Whenever he would cut his face on his old rusty blades, he would do a little jig-Logan: A little jig!Dan: In a big thing because it can... to get the pain away, and so he decided I've got to create a better, more comfortable blade and so he created the Schick shaving blade.Logan: Well, I foresee-Dan: Everybody knows this.Logan: I've foreseen the future...We had the Whip, we had the Nae Nae. Next, we're going to have the Shickshinny going on in all the clubs in Pittsburgh.Dan: I think this one is actually one of those Indian words that have made a lot of Pennsylvania names here.Logan: Yeah. Yeah. It looks like an Indian word that either means the land of mountains or land of the fine stream.Dan: Or land of the cutting your face on your favorite razor.Logan: Yeah, I think that's the most common translation. Yeah.Dan: Sure.Logan: We are well beyond 100 words today. Thank you for listening to the P100 podcast. This has been Dan Stefano, Logan Armstrong, and Paul Furiga. If you haven't yet, please subscribe at P100podcast.com or wherever you listen to podcasts, and follow us on Twitter @Pittsburgh100_, for all the latest news updates and more, from the Pittsburgh 100.
EP018 - Managing Director at Maryann Keller & Associates, Jeremy Alicandri http://www.vehicle2.getspiffy.com Episode 18 is an interview with Jeremy Alicandri, Managing Director at Maryann Keller & Associates; recorded live at the Automotive Intelligence Summit in Raleigh, NC on Wednesday, July 24th, 2019. Scot and Jeremy discuss a variety of topics, including: Jeremy’s journey through the automotive industry; from an e-commerce startup to automotive strategy with Maryann Keller & Associates. Dealerships combating margin compression following the first operating loss in over a decade. The current and rising impacts of carsharing and ride-hailing on new car sales. The acceleration of digital retailing as a solution for new and used car dealerships, including services like Carvana. Fair as a leader in subscription-based digital retailing If you enjoyed this episode, please write us a review on iTunes! The four pillars of Vehicle 2.0 are electrification, connectivity, autonomy, and changing ownership models. In the Vehicle 2.0 Podcast, we will look at the future of the auto industry through guest expert interviews, deep dives into specific topics, news coverage, and hot takes with instant analysis on what the latest breaking news means for today and in time to come. This episode was produced and sound engineered by Jackson Balling, and hosted by Scot Wingo. Transcript: Scot: Welcome to the Vehicle 2.0 Podcast! We are live podcasting from the 2019 automotive intelligence summit here from sunny Raleigh, North Carolina. It's Wednesday, July 24th, and we are excited to have on the show. Jeremy Alicandri. He is the, oh, we'll have to find out your title. You're with Maryann Keller and Associates. And what's your official title? Jeremy: Managing Director. Scot: Managing Director. Wow. The MD. Not a medical doctor. Thanks for coming on the show. Jeremy: Great. Thanks for having me, Scot: Yeah, I know you, I this shows your, you're crazy busy. So let's start by giving listeners an idea about your career path. We were chatting before the show about you and I share e-commerce. So that's kind of fun. And then I would love to learn more about how you got into your role. Jeremy: Sure. I just want to issue one clarification. You called it sunny Raleigh. It's hot, humid and sunny. So I do have a background in e-commerce. Actually before automotive, I started a company when I was 16 was a retailer. E Taylor ran that for about eight years moved into doing consulting services for a number of different companies both inside and outside of the automotive space. And one of those consulting opportunities led to a full time opportunity within automotive group where I was an executive for I guess about seven years. And then after that I went into consulting at a price Waterhouse coopers and then now where I am now at Marian Keller and associates. So we are in automotive strategy consultancy and what we do is we help clients both inside and outside of the automotive industry get a better sense of where it's going help them answer some of their strategic questions, do a ton of research topics and write papers and, and offered a detailed analysis to, to help them with whatever it is that they're thinking about. So that's kind of a little short summary of my background. Scot: Awesome. Are Most of your clients like dealers or are they the OEMs or are they the parts manufacturers or which part of the ecosystem do you touch? Jeremy: I'd say most of them are large companies. I touched the automotive space, so, so it could be a, a, it could be a large publicly traded dealership group. It could be a large part supplier and auto maker or lender. Even in short, so we're seeing all different types of companies come to us with with common concerns about where the industry's headed and they want to run some scenarios, bias. And that's what we, that's what we do. Scot: Very cool. Do you guys, are you kind of, I'm the type of firm that will actually publish a bunch of stuff or is it more we do publish thought leadership and be published Jeremy: A few papers, a in connection with the Auto Intel Council which is actually a, I guess a sub division if you will, to the auto intel summit. So the council and the summit kind of hand in hand. And then we also issue study. So earlier this year we issued a, a study on franchise dealer advertising where we interviewed nearly 400 dealerships and published where we think a dealership advertising is headed and where it is now and what's working and what's not working and kind of give a very granular level understanding to those that may be interested in that space. Scot: Very cool. And then here at the show you're a talk is tomorrow and you are talking about the the Costco car buying program, right. Jeremy: I'm going to Mc, I'm going to be interviewing the person that runs that program. Very successful program sold over 650,000 cars last year, which is really amazing. And yeah, we're going to be talking with Rick Borg of of Costco. Should be fun. Cool. Fun. 30 minutes. Scot: Yeah. So they don't give you a ton of time to do this thing, so it's hard to get it off all the data in there. This in the, if you don't know the answer to this, that's fine. But this is the Costco program is an individual dealers that are in there or is it powered by some other company? Jeremy: It's a, so it's individual dealers that are the ones that are actually providing the cars to consumers. But the types of dealers that participate those are some of the questions that I hope to find out tomorrow, the answer to because I don't know 100% Scot: On the show to report what we learned. So here on the vehicle 2.0 podcast, we have a framework where we talk about the four waves of change kind of coming to the auto industry. You are in the ecommerce industry as I was and you know, we've seen trillion dollar companies created out of the changes that have happened there in retail. But we use it, the framework that has essentially four components to it. So we've got the change in car ownership, connected car, electric suffocation, and then autonomy. You're out there talking to dealers or these kinds of things on their mind or it sounds like, you know, some of the reports you're putting out are more tactical, you know, like how do you do advertising in the franchise level and that kind of thing. Jeremy: Yeah. So you certainly touched on a lot there. Some of those what I would call very let's say high level trends, but essentially that's what they are probably still very far away, not, you know, on the, on the top of mind issues for dealers. I think dealers right now are more concerned about things like margin compression. Where for the first time since the great recession, the operating profit of the average dealer in 2018 was a net loss. Dealers are concerned about vehicle affordability. Vehicle prices are an all time high today, making them financially out of reach for many consumers. In fact, the average new car buyer is age 54 and has an income of $122,000 a year. Compare that to the rest of the U S and it's easy to see a tremendous delta in income. And NH dealers are also concerned about the effect of consolidation. Jeremy: Consolidation means that there's less and owner's going to be in the automotive retail space between now and 2025 and more dealerships are getting gobbled up into larger groups. So whereas we have an estimated 8,500 owners right now, within the next five, six years, we're probably gonna see about 6,500 and that's going to give a further economies of scale to some of the larger groups some of the publicly traded and also some of the privately owned dealership groups that may further jeopardize the small mom and pop mom and pop independent store and doesn't have access to the scale economies that would be associated with the larger group. So these are some of the issues that our dealers are really concerned about. And, and I would add that the, the biggest is the fact that more so now than ever before, automakers control the profitability of dealerships via incentives. Jeremy: So what we've seen here is that while the operating profit of dealerships in 2018 went into the red, again, this is the first time it has since a great recession dealerships are still profitable for as a net profit. Okay. And the reason for that is because of automaker incentives that favor dealerships to engage in certain types of activities that the manufacturer incentivizes. So that can mean investing in, in a project to improve the look and feel of the dealership. That can mean, and most most common, it means meeting certain sales quotas. So dealership may sell a cars for loss. Actually, it's quite common now, net profit. In fact, most new car price departments in the u s or dealers are not profitable. So dealerships will sell cars for a loss and then make up the money at the end of the year or maybe every quarter, every month through income incentives that come from the auto maker. Jeremy: And so when you have a dealership that loses money that that will be unprofitable without making sure that it does what the automaker wants. It's kind of a kind of a major concern, frankly for dealers. And another term for this would be stair step programs. It's kind of all similar, all group together where dealerships are concerned about how these these trends are going to ultimately affect their ability to, to grow and, and make money and, and, and survive just over the next five, six, seven years. I don't think anything cataclysmic is going to happen, but these issues are, you know, really what's on the top of mind for, for dealers as far as what you're talking about with I mentioned earlier rather autonomy and electrification. Maybe we can dig into each one. Depending, depending how, you know, like a brush on, yeah, I'm a, I'm a, you know, total newbie when it comes to dealers. So I imagine dealers have essentially three lines of business. They've got new cars, used cars, and then kind of the service area. I guess finance kind of fits in there. And, you know, that's Kinda like maybe maybe it's kind of, I kind Scot: Of imagined it being this horizontal between the new and used car sales. How, so if they're not making money on new car, do they make enough on the service and the used car to make up for that? Jeremy: Trying to, yeah, they're, they're definitely trying to, so what we've seen over the past few years is that dealerships continuing to invest more of an emphasis on service and parts. There's been nearly a 49% growth and sales between, I believe it's 2010 and 2018 in dealership service departments and parts department. So really a tremendous amount of growth there. There's been tremendous amount of growth in FNI where dealerships are making more money on selling things like protection products vehicle service contracts, in fact, penetration for theoretical service contracts, et Cetera, and your all time high. And they're also looking at used cars. So one of the the topics that's come up over the past over the past couple of years at these used car summits that Cherokee has the same organization that runs ais is that dealerships continue to figure out how they can be more competitive in use cars, how they can more quickly turn inventory because they see that as a profit center. So dealerships definitely are looking at other profit centers to make up for the fact that they're not making it in new cars. And then also they're looking for ways to cut back on expenses. Expense reductions always been a big area. Frankly, sometimes it's difficult for dealers to be able to master it, but you know, it's always always a way to, to cut back if needed. Scot: Hmm. If if there's a pie chart at a dealer between those three lines, how much is new cars used? Cars and services it pretty equal or service like a small slice and yeah, so, Jeremy: So it varies. The absorption rate, which is basically looking at the service department's profit as a percentage of, of the dealership's overall profit can vary significantly. And so rather than give any general stats cause it can vary by franchise and also size of, of groups. I would say that the service and parts is probably the number one area that, that dealerships are looking for in terms of profitability in terms of a department. And then, and then, you know, it's depending on what the penetration is with used cars and depending on what FNI looks like those could be other priority areas. But I would add that the new car incentives or the incentive income that comes from selling new cars is technically considered below the line. So it's not actually being put into the new car department, but the new car department is what generates that incentive income. So you could say, you know, you can make the argument that the new car department is, is, is the most important department because it's what's, what's keeping the dealership afloat, right? And now that, that negative operating profit, but the way dealerships look at it in terms of where they compartmentalize what's happening in each department, they'll say, well Scot: Incentive income is something else interesting. I hope that makes sense. That's very helping by a, I've been dying to ask someone that and you're the only person that's been able to answer it. So kudos. So then it seems like the, the one that's most on the horizon, I get the, you know, avs you can kind of push off and say, ah, yeah, who cares? That's like 20, 30 kind of thing. But it does seem like these changing ownership models, you know, with Uber and Lyft going public and really kind of ride sharing is a thing now. And then now there's more and more car sharing out there. You've got Toro and get around really kind of strange or mixed the million dollars days. There's some real dollars there. Is that starting to weigh on, on the minds of, of dealers? So, so the short answer to that is, is Jeremy: No in the u s okay. Car sharing in the u s right now in terms of taking ownership away, personal vehicle ownership a is very, very insignificant. We don't, not that we, we and as well as many other professional organizations have reached consensus like car sharing in the u s it's probably not going to affect personal car ownership in a significant way in, in either now or in the next five years or 10 years. In other markets maybe like the UK and in other markets where public transportation is more readily available, where car ownership is not as, as affordable as it is in the u s as well as just also the desire of the population to own vehicles. You may see a rise of car sharing. Of course, there's a funny story about how the Japanese are adopting cars, Sha sharing to sleep in the cars. Jeremy: More often than not, they're not even using the cars. They're just sleeping in the cars. It's actually funny that their apartments are so, yeah. So they still like a way to get out in the middle of the day and take a nap. But I mean that car sharing is one issue or one trend at that won't have an effect on ownership based off of what we've seen. Ride sharing, you know, using the Uber's and the lifts that May 1st for some people who live in the city. But the actual result is, is, is that it's increased vehicle ownership because now you have these drivers that are going around buying vehicles so they can drive and, you know, for whatever ride sharing fleet it is that they drive for. So it's actually resulted in a, an benefit. I think most people that the economics work for ride sharing generally it's, it's, you would have to be driving under 3,500, 3000, 500 miles per year in order for ride sharing to be more cost effective than vehicle ownership. And for most for most drivers they're driving way past 3,500 miles. So, so the, you know, the investment banker that lives in Manhattan that had the Mercedes s five 50 in the, maybe for him ride sharing works, he doesn't need that big expense anymore. But for most drivers in the u s they still need, they still need a vehicle. Scot: Cool. How about so one of the big topics of the show seems to be, and this is probably in our both of our wheelhouses giving, giving the auto buyer more of that e-commerce type experience. So you've had Carvana come in and really kind of disrupt the used car market and then a lot of the topics here at the show are, how do you give that e-commerce like experience at the dealer? Is that, that is that more top of mind with, with folks? Jeremy: Yeah, it's, this is something a that we covered in our advertising study that we published earlier this year, which I'll add is on our website if anybody wants to download it. And what we found is that pretty much every dealership group is experimenting or fully entrenched in what we call digital retailing where they'd actually sell a vehicle online. There are different flavors of digital retailing. There are different vendors involved. There are different things that some dealerships are willing to do as it relates to selling online that other dealers aren't. There's different regulations and teach in each state as well that that sometimes prohibit online retailing and, and sometimes they don't. So it's a, it's definitely still an evolving space from talking with dealerships that are successful with digital retail. And what we found is, is that the only way it really works is if you fully embrace it. Jeremy: And so what I should add that when I'm talking about digital retailing right now for the purpose of this conversation, I'm talking about a dealership fully selling a car online. So someone goes to the dealership's website, they see the price that they're going to pay for the car, they put their credit information in, they upload their driver's license, their insurance card, and the car's delivered to them. That's to me is 100%. That's digital online, you know, digital retailing or however you, you are comfortable in defining it, but kind of the true Amazon like experience. And that's very, very, very, very insignificant amount of cars that are being sold that way. But for the dealerships that are doing it, that one of the things that they've had to do is really change the culture in the dealership to be able to have their model adapt to a customer coming into the showroom and seeing a price online that is going to be the same price that they're going to pay for it. Jeremy: So there's no conflict there as well as being more transparent and being comfortable with that transparency. For example, giving away or rather than actually giving away, but being more upfront about different rates for, for FNI or for packages or any type of options being way more upfront where in the past some dealerships don't want to do that. They would prefer to embrace more of, you know, come to the showroom and we're going to, you know start at one price and we'll end up at another price and negotiate with you the dealership set that want to be successful. Digital retailing, have to go with the model of, we're going to put, just put it all out there and be total transparent. And not all dealerships are ready for that cultural shift. I mean that's a major shift. You know, you have pay plans involved where you have a staff of dealerships that are incentivized to to increase or maximize the gross. Jeremy: So if you have a model that just puts it all out there and doesn't really allow room for negotiation, you have now these, these people that may work for a dealership for 20 years that have a totally different pay plan. And so how do you account for that? So these are some of the challenges. It is very interesting. I think that a lot of consumers, especially new car buyers you know what I mentioned the average age being 54 still want a test drive. They're still not ready to buy a car solely online. Some are, but not all of them. They still have, they also have high credit scores and high income. You know, Carvana is a different business. Carvana just sells used cars. Carvana has a great brand proposition. And that proposition basically tells consumers that are going to get an upfront and easy experience. Jeremy: And so they in Carvana facilitates that online. But again, most franchise dealers are selling new cars, they're selling cars especially for new cars to a higher generally a higher fico segment of, of the car buying population as well as offering things like leases and things like that. So it's just, it is different, but dealerships again, are adapting based off of what consumers want and the technology is there. Now again, as I mentioned earlier, in some states, there may be regulations that may prohibit a dealer from fully selling your car online, but there's a lot, a large percentage of the transaction that can be done online. And, and that's probably where most of the benefit right now is for consumers. So instead of having to come to the showroom to let's say find out what the price could be on a specific a unit or even the consumer can do that remotely via the dealership's website. Jeremy: They can review FNI options remotely and they can also upload maybe their credit application or driver's license. So when they come to the showroom, what would have been maybe a four hour, five hour experience can be maybe an hour. And so that's again, that's where the big benefits have been and we'll continue to see this space evolve. Yeah, I bought a car was with no financing. It took three hours. It was crazy. Yeah, I told him all he had like an hour and there's still drug it out three hours and this area, and frankly it's, it's a lot of times it's just, it's just, there's just so many documents that need to be signed. This the, I bought a car via a fair.com which is a subscription service. I did a trial earlier this year. I bought the car from fair via my phone, not from the dealership when I got to the dealership. Jeremy: This is in, this is in New York, I should emphasize and we have a lot of regulations in New York. I had a sign at least seven or eight different pieces of government mandated paperwork and you know, it was, you know, sign the environmental form and use car warranty for and all these different forums and things. I frankly never, not even related to, to really having a practical purpose for me being a subscriber with fair, but we're still required. So, so dealerships are doing their best to, to get around some of these issues and evolve. Cool. well I know you're super busy. Last question if folks want to find you online, do you obviously they can go to the website and find the research, but do you, are you active on Linkedin and Twitter? Yeah, so I, I'm, I'm on a, I'm on Twitter, I'm on Linkedin. Jeremy: It's, it's my name. There's only one Jeremy Alicandri. So I assume, I assume when you publish a description for this, you'll spell my name and shine shyness and they can also go to Marianne keller.com and on that website they'll be able to download our thought leadership, including our dealership advertising study, which goes into more details on digital retailing as well as some of the other trends occurring in that dealership advertising space. Scot: Cool. Thanks for joining us today, Jeremy. This has been super insightful. I learned a ton about the dealer space and look forward to seeing your talk tomorrow with Costco. Jeremy: Great. Thank you. Thanks for having me.
And today, I’d like to read some of the feedback we received about the Total Organist program, because I asked recently this question of our members: “How do you like Total Organist, so far?” And, Ariane, Jeremy and Ruth replied with their comments. Ariane: I love the program! I feel very much at home with the organist community and feel that my practicing and learning matters. I am working my way slowly through a couple of courses and the nice thing is I can totally work at my own pace. Thanks Ausra and Vidas! Jeremy: It is fantastic to have a community which understands the issues of being an organist, finding practice time, and the work of preparation for services and music. Ruth: Total Organist means a great deal to me. It is putting me in touch with musicians around the world. It is stimulating through its presentations and discussions. I am truly grateful for this experience!
PC Perspective Podcast #519 - 10/25/18 Join us this week for discussion on the Core i9-9900K, Changes at PCPER, and more. You can subscribe to us through iTunes and you can still access it directly through the RSS page HERE. The URL for the podcast is: http://pcper.com/podcast - Share with your friends! iTunes - Subscribe to the podcast directly through the iTunes Store (audio only) Video version on iTunes Google Play - Subscribe to our audio podcast directly through Google Play! RSS - Subscribe through your regular RSS reader (audio only) Video version RSS feed MP3 - Direct download link to the MP3 file Hosts: Jim Tanous, Allyn Malventano, Jeremy Hellstrom, Josh Walrath, and Ken Addison Peanut Gallery: Alex Lustenberg, Ryan Shrout Program length: 1:48:01 Podcast topics of discussion: Join our spam list to get notified when we go live! Patreon PCPer Mailbag #59 - Nearly 1 Hour of Storage Discussion With Mr. Malventano Watch Ken and Allyn (eventually) build the Geeek A50 ITX chassis Merch! http://joshtekk.com/ Week in Review: 0:07:25 Beginning of a new journey 0:20:50 The Intel Core i9-9900K Review: Competition Renewed 0:42:35 Turtle Beach Elite Pro 2 Headset and SuperAmp Review News items of interest: 0:46:25 AMD Releases Q3 2018 Financial Results 0:59:30 Samsung has scratched the 7nm itch 1:05:15 Seasonic's Focus Plus series shows Gold can be better than Platinum 1:08:00 Get RGB blinkenlichten on that mousepad! Schnell Cooler Master, schnell! 1:10:00 Is your surfing experience Baroque lately? Try out Vivaldi 2.0 1:14:30 Even Intel has the occasional Monday 1:21:15 Did you flip your lid over the i9-9900K's thermals? 1:25:45 Navi may be closer than we thought 1:28:30 Come back to the NCR; Fallout New California just dropped Picks of the Week: 1:35:35 Jeremy: It’s about damn time, and of course it is Motorola 1:37:30 Josh: Bigger is better… so is 144/FreeSync 1:40:05 Ken: T-Force Delta RGB SSD 500 GB 1:42:20 Allyn: Something to watch - M.2 Optane 905P coming soon http://pcper.com/podcast http://twitter.com/ryanshrout and http://twitter.com/pcper Closing/outro
Green Dreamer: Sustainability and Regeneration From Ideas to Life
Now that we know about plastic pollution, what's next? What do we need to start from scratch to building a physical eco product and bringing that to life? Today, eco smartphone case brand Pela Case's Co-Founder, Jeremy Lang, shares his wisdom with us. HIGHLIGHTS: [06:50] How Jeremy turned his idea into an actual product. [08:55] The hardest part for the Pela Case team going from product to launching the brand. [11:40] Jeremy: "We wanted to make sure that it wasn't an eco-friendly product that didn't function well. We wanted to make sure #1 it was designed really well, protected your phone, felt really great. But also was eco-friendly." [13:40] Keys to helping Pela Case take off as a brand. [14:55] Jeremy: "It really seems like we can make a difference." [15:45] What Pela Case's team did to secure some great, viral press features. [17:00] Kaméa: "What do you think the world needs to not have any plastic issues at all? What does that world look like?" [17:45] Jeremy: "You can look at it two ways... what a big pile of garbage, or you can say... what an opportunity..." [20:20] Kaméa: "How can we inspire conventional companies to be more responsible for the products they're putting out (that will eventually be disposed of)?" Thanks for bringing your light! Find the full show notes with links and resources at www.greendreamer.com, and share your #1 takeaway from the episode tagging our featured guest and me @KameaChayne to spread the light and to let us know you're tuning in!
PC Perspective Podcast #501 - 05/31/18 Join us this week for discussion on Intel Optane DIMMS, DIY Keyboards, and more! You can subscribe to us through iTunes and you can still access it directly through the RSS page HERE. The URL for the podcast is: http://pcper.com/podcast - Share with your friends! iTunes - Subscribe to the podcast directly through the iTunes Store (audio only) Video version on iTunes Google Play - Subscribe to our audio podcast directly through Google Play! RSS - Subscribe through your regular RSS reader (audio only) Video version RSS feed MP3 - Direct download link to the MP3 file Hosts: Jeremy Hellstrom, Josh Walrath, Ken Addison, Jim Tanous Peanut Gallery: Alex Lustenberg Program length: 1:20:21 Podcast topics of discussion: Join our spam list to get notified when we go live! Patreon PCPer Mailbag #45 - "Hurry Up, Solo Starts in 15 Minutes" Edition Merch! http://joshtekk.com/ 0:05:40 EVGA and PC Perspective Massive May Giveaway! Week in Review: 0:06:55 Corsair Dark Core RGB SE Wireless Gaming Mouse and MM1000 Review 0:11:30 ADATA XPG SX8200 480GB M.2 NVMe SSD Review - Budget Performance News items of interest: 0:18:30 Intel Launches Optane DC Persistent Memory (DIMMs), Talks 20TB QLC SSDs 0:26:05 Some Dell Systems Shipping with 24GB of memory: 8GB DDR4 and 16GB Optane Memory 0:37:40 Report: Intel i7-8086K Anniversary Edition CPU Listed by Retailers 0:42:05 Roll your own keyboard 0:47:10 Hey Luce! I'm home ... with a new case from Antec 0:51:05 What's more terrifying than an EPYC vulnerability? Your entire Amazon.com history! 0:53:00 Make your GTX 1080 Ti even cooler with WATERCOOL Picks of the Week: 0:57:10 Jeremy: It’s a bargain! 0:58:20 Josh: Already available! 1:00:10 Ken: “Thinkpad” X210 1:05:55 Jim: SoundPEATS Bluetooth Earbuds 1:11:00 Alex: https://ergodox-ez.com/ non DIY keyboard http://pcper.com/podcast http://twitter.com/ryanshrout and http://twitter.com/pcper Closing/outro
Universal Harvester (Farrar, Straus and Giroux) Jeremy works at the Video Hut in Nevada, Iowa a small town in the center of the state, the first a in Nevada pronounced ay. This is the late 1990s, and while the Hollywood Video in Ames poses an existential threat to Video Hut, there are still regular customers, a rush in the late afternoon. It s good enough for Jeremy: It s a job, quiet and predictable, and it gets him out of the house, where he lives with his dad and where they both try to avoid missing Mom, who died six years ago in a car wreck. But when a local schoolteacher comes in to return her copy of "Targets" an old movie, starring Boris Karloff, one Jeremy himself had ordered for the store, she has an odd complaint: There's something on it, she says, but doesn t elaborate. Two days later, a different customer returns "She's All That," a new release, and complains that there s something wrong with it: There's another movie on this tape. Jeremy doesn't want to be curious. But he takes a look and, indeed, in the middle of the movie the screen blinks dark for a moment and "She's All That" is replaced by a black-and-white scene, shot in a barn, with only the faint sounds of someone breathing. Four minutes later, "She's All That" is back. But there is something profoundly unsettling about that scene; Jeremy's compelled to watch it three or four times. The scenes recorded onto "Targets" are similar, undoubtedly created by the same hand. Creepy. And the barn looks much like a barn just outside of town. There will be no ignoring the disturbing scenes on the videos. And all of a sudden, what had once been the placid, regular old Iowa fields and farmhouses now feels haunted and threatening, imbued with loss and instability and profound foreboding. For Jeremy, and all those around him, life will never be the same. John Darnielle’s first novel, Wolf in White Van, was a New York Times bestseller, a National Book Award nominee, and a finalist for the Los Angeles Times Book Prize for first fiction, and was widely hailed as one of the best novels of the year. He is the writer, composer, guitarist, and vocalist for the band the Mountain Goats. He lives in Durham, North Carolina, with his wife and sons.
Universal Harvester (Farrar, Straus and Giroux) Jeremy works at the Video Hut in Nevada, Iowa a small town in the center of the state, the first a in Nevada pronounced ay. This is the late 1990s, and while the Hollywood Video in Ames poses an existential threat to Video Hut, there are still regular customers, a rush in the late afternoon. It s good enough for Jeremy: It s a job, quiet and predictable, and it gets him out of the house, where he lives with his dad and where they both try to avoid missing Mom, who died six years ago in a car wreck. But when a local schoolteacher comes in to return her copy of "Targets" an old movie, starring Boris Karloff, one Jeremy himself had ordered for the store, she has an odd complaint: There's something on it, she says, but doesn t elaborate. Two days later, a different customer returns "She's All That," a new release, and complains that there s something wrong with it: There's another movie on this tape. Jeremy doesn't want to be curious. But he takes a look and, indeed, in the middle of the movie the screen blinks dark for a moment and "She's All That" is replaced by a black-and-white scene, shot in a barn, with only the faint sounds of someone breathing. Four minutes later, "She's All That" is back. But there is something profoundly unsettling about that scene; Jeremy's compelled to watch it three or four times. The scenes recorded onto "Targets" are similar, undoubtedly created by the same hand. Creepy. And the barn looks much like a barn just outside of town. There will be no ignoring the disturbing scenes on the videos. And all of a sudden, what had once been the placid, regular old Iowa fields and farmhouses now feels haunted and threatening, imbued with loss and instability and profound foreboding. For Jeremy, and all those around him, life will never be the same. John Darnielle’s first novel, Wolf in White Van, was a New York Times bestseller, a National Book Award nominee, and a finalist for the Los Angeles Times Book Prize for first fiction, and was widely hailed as one of the best novels of the year. He is the writer, composer, guitarist, and vocalist for the band the Mountain Goats. He lives in Durham, North Carolina, with his wife and sons.
Sales Funnel Mastery: Business Growth | Conversions | Sales | Online Marketing
In this episode, we have a special guest - Shaun Thresher. Shaun is an employee of mine who makes his first guest appearance in an episode every entrepreneur needs to listen to. We go over the biggest reasons most entrepreneurs struggle in business, how to overcome those obstacles and what you need to do starting TODAY to make breakthrough profits in your business. Check it out, share it and let me know what you think! Resources Mentioned Want To Work With Me? Visit http://www.JeremyReeves.com or email me at Jeremy@JeremyReeves.com Enjoy! Transcript Jeremy: Hey guys this is Jeremy and welcome back to another episode of the sales funnel master podcast. I have a special guest on the line today and he is actually my employee, so there is no really intro. Basically, he works for me that is his intro. His name is Shaun and he is an Italian which you might have (inaudible 00:00:37). He is from Italy and I actually just had him in a couple of weeks ago and we spend I think 5 days something like that, getting to know each other better because we never saw each other in person. I am a huge on transparency and relationship stuff like that, so I have Shaun in and we have planned out the next 90 days and we came up the idea. Number 1 to focus more on the podcast which I have been doing if you have not noticed over the past couple of weeks and number 2, I am actually going to start having him more on the podcast when I do my own parts of the podcast besides guests and stuff like that. So today -- and I’ll let Shaun come on and talk for a minute -- today, we are going to talk about why people succeed and why other people don't because there are such big differences and a lot of it comes down to just mindset and execution on what you are actually doing rather than how smart you are or what kind of business you are in. I mean, in most cases, that stuff really does not matter at all. It matters about what your plan is and then how well you execute it. So that is some of the stuff we are going to talk about it today. Shaun, come on and introduce yourself, so they can kind of get to know you a bit. Shaun: Hey everybody, yeah, I am Shaun like he said, I live in Italy. It is kind of funny about that, I am a transplant. My wife is an Italian so that is kind of how I round up over there. I met Jeremy about a year ago, it was kind of a weird thing. I just came on there and I saw he was the funnel expert and I was like “Well, hey Jeremy, what’s up? What do you think if I jump on with you?” and he has taught me some of the ropes and so that went good for a little bit I worked on small project with him. He kind of like the work I did and everything went good. So he hired me and here we are. Jeremy: Yeah, and one thing I want to point out to people is that and it actually ties in really, really well to succeeding and not succeeding, is Shaun did not come to me and like “Hey, you know, I’ll charge you X dollars for this” and he said, “look, I want to work with you, I want to let you know -- I want to prove myself before we ever talk about him giving me fees and stuff like that. So he actually did a project for me right up front and he did that, I liked it and we started moving forward after that and I think it might had been another week or two or something like that before I actually hired you but that is kind of like what we are talking about today, if you want something, you have to go out and get. You can't just sit back and think “(inaudible 00:03:13)” with your sales funnels and your business. A lot of people are “oh, I’m not growing this year” (inaudible 00:03:19) and then if you look at the actions that they are taking and number 1 how much action they are taking and number 2, what type of action they are taking, it is completely off the mark and it is so easy to go in somebody’s business and transform it just based on that, and not even some of the other stuff that we are going to talk about today. So I just want to kind of start off on that note. If you want something, just go and get it. don't have an excuse for it. don't sit there and bitch and moan about why things are so bad. I mean, take it in your own hands and just go out and freaking get it. So Let's start off. You actually just sent me a statistic that said that 90 -- I forgot what it is, the competition in your business, 90% give up and this is really with any business. 90% give up before they see any results because a lot of people are worried about competitors and things like that, but most people they come into a marketplace are going to be gone in the next couple of months, and even the people who stay and again, this goes back to really any business, whether it is your competitors whether it is my competitor, I mean, it is really just anybody. There is only a small percentage of people that are going to be there long term. Most people come in and they try one or two things and they fail and they give up and they are gone, and then other people, they come in and they do kind of well, they get a little bit of success and then they hit one big giant road blocking road and they fail. They give up, it is too hard. For example last year, I had a rough year last year because my dad got cancer and I was spending -- tons and tons and tons of time with him. I was taking work off to go spend time with them. I was taking him to get chemo, I mean it was -- it was a rough year and my income went down a little bit. It is already, I actually did surpassed it this year for last year. But, I mean, most people just give up and they kind of take that and use it as an excuse rather than say, “Okay, it is going to go down a little bit obviously” because you are just not spending as much time at work. I mean I probably spend maybe half the time that I usually do last year actually working because of all that. It is just kind of a mindset difference in entrepreneurs and the 90% they’re going to come in, they’re just going to give up. They are going to hit a road block, give up and then there is a couple of percent that are going to, another 5% or so that are going to -- they are going to do well until they hit some kind of giant road block or they going to get distracted with shiny object syndrome or something like that is going to happen and then the other 5% or probably less than that are going to be your actual competitors and those are the ones you should focus on. You should focus on the big players in your industry because if you look at them, you are going to find similarities between them. They are going to be the people that succeed because they, you know like I have been saying, there is really two things. Number 1, being able to actually execute. How much you actually get done in a given day and then you multiply that over whatever 365 days or how many days a year that you work, whatever it is. That is number 1. But if you are not working on the right things, then it does not do anything and that is honesty where a lot of people fail. I have tons of people and Shaun, you know this because we kind of talk about this. I have tons of people that come to me and they are like, you know I wanted a sales funnel. I already know that I am losing money every single day because my funnel is not optimized and blah, blah, blah and I actually just had one guy that I have been working with. He told me he is losing about $2000 a day waiting for his funnel to be fixed and he has a fairly good excuse. I would not really say that it is good enough for my standards but it is a little bit better than most people. But, people are like, “Oh, you know, I can't spend $10,000, $15,000, or $20,000 or whatever it is on a sales funnel” even though they are making a couple of hundred thousand dollars a year and what happens is, people are spending their life “Oh, you know, I have to get my website redone.” I have someone actually that is a perfect example. Someone came in and I quoted her a project and I could easily, easily, easily add an extra 10 grand a month to her business easily. I mean, it is just a complete no-brainer for what I was going to do for her and she has been stalling now for roughly, I think, it has been 2 months or so because she has been waiting for her website to get done and it is like, “Oh my God come on” I mean that it is just such a bad excuse in my mind because, yeah, first of all, why can’t you do both? I just don’t understand that. You are an entrepreneur, you should be able to prioritize. Shaun: Right, and the funny thing about that is, it is a funnel work from the backend anyways. It is like if you have a list, you build the list, send out the sequences, and then there you go. So, I did not know what their excuse had to be for their website to be ready anyways. Jeremy: I know, yeah and with her, what we were doing, it was not a typical sales funnel for her. What we are doing is doing basically joint venture sales funnel. So one of the things has worked really, really, really well and it is a risk-free way to grow a business is one of the best and the most risk free that really could ever have on a business is doing joint ventures. And Shaun, you know this, I mean some of my biggest projects come from my joint venture partners. So, that is what I was actually going to build for her was a funnel going out and reaching out and acquiring joint venture partners. Because, you know, with that, if you send out a direct mail package or something, maybe you are paying few bucks for it, whatever, I mean, that is basically risk free. You don't even have to do that. You could just reach out the email which is what most people do. But I was going to put together a -- it was actually a smaller funnel, it was not that much money. It was basically a funnel to reach out to joint venture partners for them to promote your business to their audience and you have to do it in a really, really, specific way. You can't just reach out to some of the people in your industry and say, “Hey, you want to send people? Do you want to put of all of you reputation on the line to send out my business?” That is not going to work. Shaun: It was not basically just to wait for her to break the ice and kind of digitally shake hands and say “Hey, this is what I got going on. This is how I could help your customers.” Jeremy: Yeah, exactly and that is one of the things that we don’t put through the whole process of one of these joint venture funnels. But, one of the big things is, and you know this again, when we do this, we get, in fact I just had the other day, we got compliments on our cold emails all the time. I did one for when we were reaching out to people to be on their podcasts or for them to come on our podcast or for potential joint venture partner or if we are reaching out to somebody to do like a webinar or to do a guest article and we do all of these things, by the way. We actually get compliments on the email itself and it is like, “Oh my god it was such a well-written email.” And yeah, that is because we actually put time into it. I mean, you dug in, you know this. We sit there, we’ll go write one email to somebody and spend an hour on it. Because it makes a difference when you -- Shaun: Yes, like half a page (Inaudible 00:11:33). Jeremy: Yeah, yeah, it is only a couple of paragraphs. I mean, if you read it out louder, it probably take you 15 seconds. It is not big, but the thing is you have to, and this is where a lot of people go wrong is they just want to tell people about their product, “Oh, I’m so great and I’m such an awesome person and my products are the best.” When you reach out to people, they don’t care about that. They care about what is in it for them. In the case of joint ventures, it is really number 1, is for one we are going after people and this is really the case for most joint venture deals is number one is about a new income stream. So, you are adding something that was not there before. So, that always gets attention and then you kind of say, “Yeah, here’s what’s happened for our last.” The last time somebody sent me a client, I sent them X dollars so you have some proof in there. Then the biggest thing is people don't want their reputation ruined if they send you somebody and you treat them poorly. So then we also have things in place that show people how we treat our clients and plus, you know, I mean, it is free money for them. Like I said before, it is a new income stream. I mean, it is different in every case and again I would not go into too much detail. But the point is, going back to kind of what I was talking about before, is people just have excuses and those excuses are typically really bad. I got a lot of them and sometimes it is like listen, if I quote you $15,000 or $20,000 for a sales funnel and you are barely scraping by, that is a good excuse because you don't have money, like you literally have to borrow it, you get a loan or something like that. Shaun: You know, what’s funny about that because that is probably a guy we want to work with anyways because he is out there hustling. Jeremy: Yeah, you know, some of the clients I have had in the past where it is like, “Man this is a pretty bad stretch for me and I am going to go out and borrow money” but those are typically the best clients because like you said they are hustlers and if you are an entrepreneur, if you don't look at yourself in the morning and think, look at yourself in the mirror and think that you are a hustler, I mean, that is a very bad sign. We wake up every single day and hustle our ass off and do things that just -- Here is a good example. Yesterday, I actually accomplished all of my weekly goals for the week and that is actually including, I actually went golfing on Wednesday for the afternoon. Shaun: I confirmed that. Jeremy: Yeah and I have shot absolutely, absolutely terribly and really, those kind of last minute thing. It was only because it is getting cold here and it was the last time I am going to be able to go this year. So and I have 3 other guys that I was going with and I was like, you know and I am just going to go. But I accomplished all of my weekly goals and you saw the list because I actually share my weekly goals with Shaun because like I said I believe in transparency. So I just started doing that and that list was not small in any stretching imagination and I actually finished it yesterday and instead of just saying “Ok, well I will just take Friday off” I added more to the list and I have a whole big list of things that I am getting done today and I am actually going to be working -- I forgot, either tomorrow or Sunday morning for new thing because we are in the business. We started a new thing that we are doing. Where we’re reaching out to specific people offering and very specific link, I won;t get into it. But that is kind of what I am doing there to kind of, instead of just saying okay we are doing good, we had three of the biggest months in a row that we had in the last like a year and a half and they were right in a row. Shaun: Yeah, it has been crazy. Jeremy: Yeah, it has been insane. So we are doing really well, but I don't want to stop that. I want to get to the end of that and then it slows down again. So, we are trying this new thing and I want to get really good momentum for it. So, I am waking up early. I can't remember. I have a mark in my calendar but one of the days this weekend and it is basically -- I am waking up before the rest of the family gets up. I am going to work for probably 3-4 hours and then depending on what day it is, I think it is Sunday and I am waking up doing that, coming up for breakfast with the kids I will get up probably 2-3 hours earlier than everybody else and that I am coming up and I am going to spend the day with the kids and then I am actually going to my mom’s for we are having like a little birthday lunch thingy for my brother’s birthday. Shaun: Nice. Cool. Jeremy: Yeah, and then leaving there and going to Katie’s mom for dinner and her brother and sister are all going to be there so it’s a very, very family-focused day. Shaun: Stromboli? Jeremy: No, no, no. Katie makes the Stromboli. Katie’s mom does not make that. I don’t even know what we were eating there. Probably some kind of roasted chicken or I have no idea. Shaun: Cheese pizza? Jeremy: Oh, you must missed cheese pizzas. But anyway, so that is one thing is that the whole kind of argument there is you have to have a priority in your business. Like, Shaun you know, we have basically three things that we are focusing on for the next 90 days. Shaun: And we just came up with that though, that was kind of our thing, we were like “Hey, we are kind of losing our focus and so Let's just drive and focus on this one thing for the next 90 days and boy, I mean, you see the results. You can see all the business we have got in. Jeremy: Yeah, instantly! I mean it was within like a week and again, Like Shaun said, there are 3 things that we are focusing on that is it. We are not testing 10 different types of ads, we are not doing Facebook and Google and Twitter and Youtube. We are just doing Facebook, we are just doing the direct outreach thing that I mentioned before and that is kind of like a secret little project, so I can't get into that, and then we are focusing on the podcast, and that is it. We are doing nothing else and the results have been just phenomenal so far. So the first thing is, make sure that you have a focus on the business for the next -- for the rest of the year. We only have like 2 months left and -- Shaun: Maybe you recommend that book that we went through to come up with our plan? Jeremy: Ahh.. what was the book? I don't even remember. Shaun: It was like, --. Jeremy: The 12 week year, I think it was called. I am pretty sure it was 12 week year. Shaun: Yes, 1 year of work in 12 weeks. Jeremy: Yeah, basically, that book talks about instead of planning for the year which -- anybody listen to this, everybody probably plans for the year. I used to. I don't even do more. But you plan for the year and then you get to like February, the entire thing shifts. So, there is really no point in even planning for a year. You could have like some kind of major overarching goals for the year like income you want to make or something like that. I don't even focus on that anymore even. I just focused on -- I kind of focus on what I do. I think of what I want to hit at the end of the year and then I work backwards and say, okay, what do I have to do to hit that and then I just forget about the number, just let it all happen and then -- Shaun: And starts to take 2 months off? Jeremy: Yeah. Shaun: Get it 2 months early. Jeremy: As we go things changed. So for example, the next 90 days we are focusing on those things. Within those 90 days, we are going to know if they were successful or not. So if they were, we do more of them if they were not, we switch. It is really that simple. In most cases, people have all these excuses for not doing a funnel and it is like, “I’m going to wait 2 months, I’m going to wait a year, I have got do this first, I have got to do this other thing first, I have to clean my office before we start.” I mean it is like, the excuses I have received over the years are just absolutely pathetic. So just figure out if a funnel is your weakness in the business, maybe it is, maybe it is not. Sometimes your price points are off. I am working with a new client and I looked at his business. He is actually a revenue share partner. I am basically just taking a piece of his business essentially. And the first thing that we are doing is I increase his prices by like 50% because he is closing 80% of people. So we are increasing prices to get that down -- Shaun: And that guy is an executor. Jeremy: Yeah, yeah. I mean, I am sending him stuff and he is writing me back 20 minutes later that is implemented. That is an entrepreneur. He is a hustler. He actually, it is kind of funny, he actually emailed me and he is like “Oh, yeah, just so you know I bought a house” and I was like, “What? What are you talking about? Like were you looking for one?” and he was like, “Kind of. We kind of have one in mind and then we walked into the house, I love it and I bought it within the next 48 hours.” I was like “What?” If you do stuff like that, that shows you that you are a hustler, that you are like a true entrepreneur. So that is number 1, lets us move on to the next one. One of the things that people struggle with and this is like a big priority, is getting cold traffic to work. I worked with so many people and nobody really focuses on getting cold traffic to work. It kind of -- I mean it kind of depends on this. If you want to scale, you have to. I mean, there is really no other way about it because well in certain cases, but -- Shaun: That is pretty much the holy grail. Jeremy: Yeah, it really is because when you get cold traffic to work, Let's say Facebook for example, let just say start you start with Facebook, you get that to be profitable and profitable enough like if you are spending a dollar and making a dollar and 2 cents. I mean, technically, that is profitable, but you are really not going to scale on that, but if you get it to an amount that is acceptable, an acceptable ROI say that is like you are spending $1 and making a $1.50 or $2 or $3 whatever it is for your business, it kind of depends. If you have a product, it could be like a $1.25 or $1.50 and that is fine. If it is more of a service, it has got to be more like probably 3 times ROI (inaudible 00: 21:57) at least to be able to be profitable. You kind of have to get that because once you get it and I always recommend clients to start with one thing. Start with AdWords and once you get it profitable then maximize it and once you can't even do anything else with it, then go on to the next traffic source. So you do, just for example, AdWords, you get that profitable that is your big breakthrough, you open a bottle of champagne and you kind of take a night off and then you come back the next morning and you say, “Okay, how do I make this more profitable?” and you maximize that, and then you move on to Facebook and then you get that profitable and then you maximize that profit, and then you move on to the next thing, Tweeter, Youtube, Instagram or direct mail, whatever it is. But a lot of people are like, “I’m going to try cold traffic. I’m going to try simultaneously a postcard campaign, a radio campaign, a TV campaign, Facebook, Tweeter and that is -- go ahead. Shaun: That is the 90% that we were just talking about at the beginning. Jeremy: Yeah, and they do that -- not even just with cold traffic, that is with basically everything they do that with. That is how they hire employees, that is how they run their business on the day-to-day basis. It is how they -- even as far as planning your days. If you have everything mixed up in the same day, you are not going to be productive. So for me, I am a writer, so I have days where it is just writing and when I am on a writing day, I am just like -- I just go into the dark hole for the day. I don't even pop up, and that is why I am able to write an entire 15-page sales letter in 1 day, is because I have such ridiculous focus on those days. Now, can I do that every day? No, but when it is my heavy writing days, I can do that, in fact, I just did it this week. It was a -- I think it was a 14-page sales letter and I started the sales letter and finished the sales letter within 1 day, I think it was my lunch actually, and then I moved on. The reason that I do that is because of that laser, laser focus and you can apply to that to every area of the business with how you plan out your days, with how you are getting revenue into the business. One of the things there is look at your business, and figure out -- okay, like lay out all the various ways that you make money, all of your revenue streams. Maybe you have, I don't know, 4 of them. And then you look and you mark down and you say, okay, Let's just say that is A you get $5000 a month, B you get $5000 a month, C you get $5000 a month and D you get $5000 a month. So they are all equal and so you would look at that and say, “Okay, well, they are all equal so we are going to put equal amount of time into them.” Well then, that is not really the right way to do because if you look, you are going to find that you are putting different amounts of time into them already. So with A, you might put 10 hours to make $5000, with B you might put 30 hours to make $5000, with C it might be 50 and D might be 100 or whatever. So you look at that and you say, “Okay, well, I’m putting in -- I basically making $500 an hour on A so hey why don’t we focus on that one.” It is not really rocket science. It is just taking the time to look through your business and see what is working, what is not, where your leverage points are and then focus on that. Coming back to cold traffic, it is the same thing, focus on one piece of traffic. I usually do -- I focus on 3 and then like 1 in each once. So there is like free traffic and then kind of like authority traffic and then paid traffic. Just focus on one of those each. In that way, you get a little bit of diversity but then you are also maximizing the time that you are putting into each of them. So that is kind of another kind of big reason that people are not succeeding in businesses because they are just focusing on so many different things and it is just -- they have so many going on and it is one of the reasons why I get people that are like “Oh, you know, I have no bandwidth left.” and it is like “Yeah, that is because you are trying to do it by gazillion things” Here’s an idea, don’t do that. Just in case Jeff is listening to this, it is not really -- he is my client that I said has a decent excuse. He has got through a lot of kind of weird stuff lately and some giant headache. So he’s kind of in a weird spot, but most people that I talked to gives similar excuses but have not gone through the big things that he has gone through. It would be a whole podcast just explaining what we went through. One of them for example is, he ended up having to -- he had to redo his website and he ended up like paying like, it was like 3 or 4 times the amount that the developers that are originally quoted him because they got to the end of his first whatever quote period and they were like, “Oh yeah, we are not even close to being done, and we can’t stop now, and you can't hire anybody else because they are not going to know where to pick up and it is probably going to be about 3 times the amount that we quoted you.” That was basically the situation. He got kind of screwed which I have no idea if that was (inaudible 00:27:35) or not. He is actually not even declining it so I don't know if that was like an internal thing, like a bad hiring (inaudible 00:27:42) what happened but he is in kind of a weird spot. Let's move on to the next one. The next one is that people don't have a backend. Shaun, I am going to have you kind of talk about this from a little bit. So just kind of pick it up and we will see where your thought goes. Shaun: I don't have backend either. Jeremy: Yeah, yeah, right? Your backend is me and your frontend is me. Shaun: Yeah, backends, they are kind of unusual creature because once you kind of get the frontend lined out, then your backends come in and that is kind of where I picked up -- where I started helping Jeremy was. We always try to teach people that there is certain touch points in how you want to communicate with your customers. One of the most recent clients that we had he was in a daily niche and then I had to go in and read through what he was talking about and kind of pick up his voice and communicate properly to the customer where he could have done that on his own but if he is not really paying to attention how the customers respond to him, they come in and respond to support emails, if he is not taking any consideration when he writes his sequences for a sales funnel, I see that is where people make a mistakes. The other thing I see mistakes when clients come to us on the backend is they just don't have anything there. Maybe, they will have a service or they will have a product and that’s it and you ask them “so what is next?”they were like, “Well, what do you mean?” What do you think about that? Jeremy: Yeah, I mean I can't tell you - and I have fought with customers over this. You are bringing people in and Let's just say that you have $97 product upfront right? So you get customers, Let's just say you are making $100 grand a year, you are doing okay. You are pushing along a little bit but you only have that one product. You have all those customers who trusted you with $97 of their money, I mean it is not a lot of money, but the point is they are trusting you with whatever result that you promised to get them. Shaun: Another thing that we were saying to -- they do the one contact, so the guy comes in and he will buy from you one time and then they never follow up with them. Jeremy: Oh yeah, I mean people put so much time into the front end and it was like, “Okay, I’m going to do 50 auto-responders for my prospects” and then it is like “Okay, people buy now what?” Shaun: What’s that 50 (inaudible 00:30:19) like? The cost of a new client versus a previous client? Jeremy: It is something like 7 or 10 times less expensive to get them to buy again. Let's just say that your cost per acquisition, cost for acquiring customer is Let's just say its $100. Basically, it would cost you somewhere in the range of like may be $10 to $15 to get them to buy a second time and the thing with that is -- I don't know about profitability because one person might have $500 backend, one person might have $10,000 backend, so I am not sure with that, but Let's just say that you have a $97 product and it costs -- Let's just say that you have $150 product and it costs you $100 to get them, so making 50% basically for each customer comes in and then you have a $500 product and it cost you $15 to get them buy again. I mean, look at the difference in the profitability? That is where most smart business make their money. People are like, “Oh, I have this one product, and I want to be hugely profitable on it.” And I talked to them and then like look, “that’s not how business works.” Business works by having something upfront that allows you to kind of gather the largest amount of customers in a break even or may be just like a tiny little sliver of a profit, and this is where the whole like trip wire thing came out. Everybody say, “Oh my god tripwire, it’s a brilliant idea, it’s been out for like 8000 years. (inaudible 00:32:10) I just want to name on it. Same thing with survey funnels like basically adding marketing concept, I mean it is all out there already. It is just putting a different name on it. Shaun: It was not called like a ‘Lead Magnet’ or something at first? Jeremy: Well, “Lead Magnet’, that is more of like a free report or kind of thing, but again, giving a free report. Two step mailing, I mean that has been out since like the early 1900s, they have been doing that in direct mail, and it is just somebody has to put a name on it. Shaun: So what would you think if somebody could implement today, like one small tweak they could implement to their backend starting today? Jeremy: Yeah, that is easy, come out to freedom offer. I called it freedom offer -- this kind of varies between the business but come out with something that is roughly 5 to 10 times as expensive as whatever your highest thing is now okay, maybe its 3 or 4 -- it is several times more expensive. Shaun: Could you explain that, I think that came out kind of confusing. Jeremy: Yeah, yeah, so Let's just say -- for example, this client that we just joint, his highest package I think was -- I think it was like $2000. So what we are doing and he said like, when he brings people on, they are not really complaining about price because he gets tons of tons of visitors, he does a lot of qualifying on weeding people out. So when he gets on the phone with people he is closing like 80%+ because they have already seen the price, they have already kind of talk about a little bit so when people come on they are not really talking about price, I’m like, “well, dud, you gotta increase your price.” So one of the things and he also said, he is like -- a lot of people come in and they only get like 2 or 3 months of coaching, but that is not really going to transform your life and that is even when I talk about with funnels and stuff and that is why, as you know, were moving away from just like one-time projects and things like that, we are moving way, way more towards actually partnering with people because the difference and I think -- Shaun: Yeah, but that is not just so we could profit, that’s so we can really dive in and learn somebody’s business so we could -- so they can benefit more. Jeremy: Yeah, I mean it is so hard like when you are redoing a sales funnel for somebody and it is like okay, Let's do a sales letter and 2 up-sells and a buyer’s sequence and a prospect sequence. You don't -- I mean, there is not enough time to really, and especially, because most clients are like, “I going to make you wait 3 months, 3 weeks, I got a delay, I got a delay, I got a delay, okay, I am ready to go, why is it not done?” We get that all the time. Besides that, but it’s -- you can't go deep enough when it is not on a revenue-sharing basis. Just because of the way that is structured fee-wise. I mean it is just not -- Shaun: And would you think it’s like dating? Jeremy: What’s that? Shaun: I mean it would be similar to dating wouldn’t it? Jeremy: Yeah, so for him, he would get a lot of people that would come in and he is like a dating coach, so he would come in and they would get a date and then it will be like “okay, I’m done” and it is like, okay, well do you know how to keep her? Do you know how to stay with her? Do you know how to set boundaries with her? So you are not like one of these guys that just gets like trampled on by the wife and there is -- trust me, a lot of guys like that the wife just rules the house and it should not be like that and the guy should not either, it should be a balance and that is how you keep a healthy relationship and that is why divorce rates are like whatever 50%+. You have to accept those boundaries and free -- first of all, you have to be with the right person first of all. But anyway, one of the things that I kind of took all this information and we are coming out with several packages. We came out with a 2-month, a 3-month, a 6-month, and a 12-month package and people are going to naturally fall into the various categories. They were not available before so people did not do them, now that they are available, I guarantee you, so his highest package now is $15,000. It is like whatever it is like $1200 a month for 12 months, whatever that -- Shaun: About that, maybe talk through about why somebody would build a high package even if they get no customers for it. Jeremy: Yeah, that is actually a good point. So Let's just pretend that nobody does it. He is going to get people in it because in every marketplace, there is roughly 1% of people just have tons of money, they just want the best thing that you have, it does not even matter a lot -- he is ridiculously awesome. But it does not even matter what it is really, there are just people -- they just want the highest end just across the board whether it is a vacuum cleaner, a computer, a car, a house whatever it is. They want the best thing that they can possibly get. So if you don't have these things that really make people stretch, and I will talk about -- actually a new thing that we’re going to be coming out with -- first of all, you are not going to attract those people that always want the highest thing because if you don't have that really, really high thing you are not even going to attract those people. Number 2, even if you don't sell any, so he has his $15,000 program, when he is on the phone with people, I am going to have him start with the $15,000 program that he is talking about because he is going to -- basically, we give them like a little bit of an overview at the various program that he has and then when he is on the phone I am going to have him start and then it is like okay “what packages do you have?” and he will start talking about it, and we still actually have to build a selling strip for all of this. He is a fairly new client. He’s a fairly new client, he’s only been on for about a month, something like that, not even. Actually, October 1st we started, so not even like 3 weeks. So what we are doing is I am going to have him start at the $15,000 okay and what that does is that created a juxtaposition, and that basically like if you see a big elephant next to like a little fox, that fox is going to look smaller than if you see another fox next to that fox. So that is basically called a juxtaposition, it just makes it -- it kind of like enhances whatever it is, if it is a small thing it makes it look it smaller if it is big, it makes it look bigger that kind of thing. So if he is going down and he is going to start with okay my highest price program is $15,000 and this is for the most like bad ass guy. We are going to work together for full 12 months. He will go into his whole pitch and then most people are going to be like “wow, that is like way too much” and then he will come back down like “okay, well we have another one” and it is only $2500. That looks so much cheaper than if he just said “okay, I think you have fallen to the $2500 one.” Because you are coming -- instead of just starting basically from 0 to 2500, you are starting from $15,000 and coming down to $2500. Number 1 by doing that, it is going to help him close more people on the phone like higher percentage, but another thing is, he is going to get more people into the higher end program, so he is -- Shaun: Another thing about that too is you just got done talking to the guy about his higher end program, in his mind, he sees himself already there, but you offer him a lower program, he is like, “it’s almost there, it’s quite there, it’s close enough.” Jeremy: Yeah, basically, what that does is that, that establishes your authority. If you have the ball to charge $15,000, I mean you look at that, and you are like, “Wow, this due really must know what he is talking about” instantly, like even if you know nothing else about him and obviously we are in the process of putting funnels in place that really build his authority before they get into a call, but even if -- as you are sitting there, pretend that you need help with dating, okay, and by the way, if anybody needs help with dating, reach out to me and I will hook you up with them because he is ridiculously awesome. Let's just pretend that you need help with dating and you get on the phone with 2 people, okay. The one and you don't know anything about either of them, okay. So there is Charlie and Mark, right. So you get in the phone with Charlie and he is like, “Okay, you know, I am going to help you with dating and my package is $2500” for 3 months or whatever and you are like okay, and then you get on the phone with the other guy, forgot what name I set for the other guy, and you get in the phone with him and he says, “Oh, I can help you with dating and my highest price program is $15,000 and we are going to work with you for the whole year and if that is not in your range, we have another one at $2500.” The difference in that just by having that high end program, you instantly -- just think in your head right now, who do you think is more credible, the guy with $2500 program or the guy with the $15,000 program? It does not even matter if he has anybody in it or he can even deliver on, obviously you are going to want a deliver on it. Shaun: Yeah, there’s a bit of disclaimer about that though, I mean it is an actual program. It is not just something we just put up there. Jeremy: Yeah, yeah -- Shaun: (inaudible 00:41:34) lots of content. You know, I mean, if somebody signs up for it, they are getting a massive amount of value. Jeremy: Yeah. It is like that most high level thing like ever, you know you get -- Shaun: And the other thing I see people when they’re hesitant about developing a program like that is what we’re talking about before was -- they are like “what I am going to offer in that program” I can't charge $15 grand, I don't know what to offer them that” Jeremy: Yeah, so in that case, you have to become better. I mean it is just that simple and maybe that sounds harsh, but that is the truth I mean you know when you came in, I said, I mean, we started talking about me implementing a higher end program and this is not even live yet. Shaun: I think I have been pushing you to make that happen to. Jeremy: Yeah, you have a little bit and it has been one of those things on the back burner and now it is coming through but by the end of this year, I am going to have a program that is $120,000 a year. It is basically $10,000 a month and then I will probably have a thing where you can pay like a $100,000 upfront or whatever and just get it, but I am going to have a program that is $120,000 a year right. That instantly makes me more authoritative and I am going to obviously make it worth. It is basically going to be what we do for the revenue share partners, but for someone like if you have a $30 million dollar business or something like that maybe you don't want to do revenue share because that can be ridiculous amounts of money so you just kind of do this instead. Obviously, it is not going to be for everybody. If you are making $100,000 a year, you can't afford to spend that but there is a certain percentage of every single audience in the world and if you don't believe that I want you to email me so I can yell at you personally. Because, I mean, honestly, there are things -- let's just have a completely obscured -- knitting. That is the most like ridiculously, like, you would never think someone in charge -- Shaun: My grandma love knitting. Jeremy: Right. So you would never think the classes you probably go to you probably spend like $5 a class or something like that. I guarantee you, there are certain people in the knitting niche that would spend, I mean I don't know how much, but at least a couple $1000 and what you can do with that is let's see -- I am trying to put myself into the knitting mindset here. Shaun: I would think that if you were to teach like a lady how to start your own type of business they could do like trade shows or crop show. Jeremy: Yeah, that is one. You can be like a certified knitter. You could go and do a live event where the person comes and maybe there is some famous knitting lady. A lot of people pay tons and tons of money. Most people, if you -- anybody listening to this, if you have gone to seminars or you have met people at masterminds or something like that. You know how excited you get to meet people and it is funny because you meet your big heroes and then you are like, “Oh, really, that’s it?” I can't tell you how many times it had happened which I am not starstruck like whatsoever anymore, I could not care less, because there are just people that are good whatever they do, but the point is people pay a lot of money for that. Think of let's just say, Justin Bieber, right. Justin Bieber is a big hit, I guarantee you that there are parents that would spend at least $10,000 for their, little like 15-year-old girl or whatever -- I would imagine 15-year-old girls like Justin Bieber. I guarantee you, there is a market for him charging $10,000 to $50,000 for like a couple of hours and I guarantee you that there are 15-year-old girls’ fathers who would pay that to give their little girl the privilege to do that. I absolutely guarantee, it is going to happen. The point is, how about them? That is kind of where we are going back to, and it does not have to be -- if you have this, you kind of have like a value ladder. If your product is $100 maybe don't go up to like $10,000 right away. Do $100 and then do like $500, $1000 and then $5000 or $10,000. You should have kind of different levels for different purposes and typically it goes -- like an information product is may be a couple $100 and then you go up to like maybe -- Shaun: A group coaching? Jeremy: Yeah, or like templates kind of depends on the market but like templates might be a little bit more or group coaching and then one-on-one coaching and then one-on-one coaching for longer or done for you. You kind of like see how that progress upwards, that is the main point there is most people don't have a backend and when I work with people doing webshares and even clients and stuff like that, usually the clients -- instead of me building it for them, it is basically like, “Hey, do this.” Here is what I think should be the next step for us and then just let me know like when you are done and then we will implement it into the funnel. That is what I kind of do with a lot of clients that are more of like the one-on-one clients. Like I said, just don't limit yourself. don't have that mental block in your mind that, “oh, people won’t pay that amount of money” because they will. I mean, it is just a fact of life they will. So don't let that be kind of excuse. Shaun: Right. Plus, too, you use it as a positioning tool. Jeremy: Yeah, yeah. Again, like we talked about before. Even if nobody buys it obviously don't charge a ton of money if you can't deliver that value. I always -- you should be able to deliver at least 5 to 10 times that value. So from my $100,000 program that I am going to be coming out with, by the way, if anybody is interested in hearing that we can kind of talk about, you can help me, we kind of strategize the whole thing, but I will do extra stuff for you too by the way. In that, I am looking for ways like when I sit down to plan that out and exactly what I am going to do for people, I already know what I am going to do for them. Basically, the same thing I do every day but just way, way, way, way, way more deep, but I am going to just map it out for people so that it is easier to understand, because you can't say, “oh give me a $100,000 so what are you going to do for me?” I don't know, some stuff. I am going to help you grow, it is not very sexy. So I am going to map that out but when I am mapping that out and actually putting bullet list of like exactly what I am going to do for people, I am going to be looking at, okay, I am charging these people $100,000 over a year, that means that I need to make them at least $500 to a million dollars, $500,000 to $,1,000,000 in trackable results. The people that I am going to be working with are not going to be $200,000 businesses. They are going to be in the 7 to 8 figures. I am not looking for a lot of clients obviously. In that range, if I get a couple in a year, that is awesome and that is really all I even want for that level of service because -- Shaun: And then we’d be (inaudible 00:48:48). Jeremy: Yeah, yeah. I mean there is only a couple that you can do before I have to expand the team further and stuff like that, but anyway, I think we kind of hit the point on the backend. The next one is missing the crucial touch points in the email sequence, and first of all, people just typically don't have good emails, people think that you just sit like, “oh, I need a prospect sequence” and it is like, “oh, I am not going to hire anybody because --“ Shaun: Maybe explain what the prospect sequence is. Jeremy: Yeah, that is a good idea. A prospect sequence is basically when you bring people in and we are talking about before a lead magnet, something free of value, it could be an automated webinar, it could be a free rapport or video or whatever it is, something with online like a chiropractor, it could be -- bring them in for a free 20-minute massage or free backtracking, which actually, I have to go to chiropractor today because my neck still hurts from a month ago. When Shaun was in here we were lifting together and we were doing shoulder presses and so I was the first one to notice it. This is really weird my right shoulder just feels like so much more weak than my left shoulder. I was throwing the last one up with my left shoulder, it was just going right up in my right when I was struggling to get it up, I don't know what is going on with my right shoulder. So we went through -- I mean both of us, it had to be like (inaudible 00:50:17). Shaun: Yeah, yeah, I felt it to, but I did not say anything. Jeremy: Yeah, yeah, and so we are looking and it turns out we had 5 extra pounds on the right weight set and we were lifting like that, I mean, I think that is what threw my neck out because I woke up the next day and I can barely like move my neck. I had to take them in and I hate pain killers. I have to take them for like a week straight. So I finally went to the chiropractor and I am still going every week. So I have to go later today. They have been helping but it is still a little bit off. Going back to email sequence, first of all, you have to have a way to keep in touch with people who come to your business, because if you don't do that, they are going to forget about you. Just plain and simple. Shaun: You would say that we are talking to the people who have not bought from us yet? Jeremy: Yeah, yeah, these are prospects, yeah. Email sequence that can be for anything. That can be for prospects, it could be for buyers. You have to strategize them. You have to map them out. You can't just -- so many people are like “Oh, I’m just going to do my emails” all you really have to do is keep in touch with them and they will buy, and it is like, “No, that’s not it.” You have to overcome the objections because when people come, they are going to have objections as to why they are going to buy. They are going to be looking at you and comparing you against your competitors. So I mean, think of anything that you have ever bought in your entire life. You went through a process, a mental process where you sat there and you said, “Okay, I need X product.” And they you will go and you will look at probably like 2 or 3 different people who provide that product or service and then you look at it and you say, “Okay, this person does this thing, this one is cheaper, but they get a better result” you see, you kind of do all these in your head. Well, why not just get them into your sequence, into your funnel and do all that thinking for them. You know what I mean, and show that -- why-- Shaun: For me, a good example is like when you go to the restaurant. If you go to the restaurant, there is a great waiter, they are going to open the menu, they are going to recommend 2 or 3 things in the menu and you will like, “Oh, well that is incredible” you probably going to buy one of those, once you go there and they just give you menu (inaudible 00:52:33) menu and you look at the picture like, “what’s that?” you’ll pick something at random. Jeremy: Yeah. Exactly, that is actually a really good example. Think of the last time you went to a restaurant and if you were lucky enough to have a server who did that for you, because it does not happened often, but I know when -- this happened to me a couple of times and when it happens I almost always buy what they talked about. Shaun: I got a funny story about that. I went with my wife one time and she was like trying on a pair of jeans and the cashier was like, “Hey, what are you doing?” and I was like, “She is in there trying the jeans” and she say, “Hey, I saw you are looking at the jeans, you want to try them on?” We walked out spending like $400, I don't want to buy anything. Jeremy: Yeah, that is why car dealerships give you rides in the car because you get emotionally attached to that specific car. My neighbor actually just bought a Porsche by the way. He just bought the Porsche like a day after you left. I came home and I was sitting in his driveway I was like, “Oh, man, Shaun would have love it.” Yeah, if you are able to get into the mind of the person that you are trying to sell your product to and come at them in a very authentic way, there is a couple of things that you need to do in your emails and this is really buyer’s or prospects. First of all, you need to overcome all the objections they are having. So with dating, it is like, “Oh, I’m too fat to get a date” or “I’m too ugly or I’m too dumb” I mean, they have all these things like going on inside their head. It is basically low -- Shaun: What if she says no? Jeremy: Yeah, what if she says no, I can't approach them, I am too nervous and that kind of thing. So you have to overcome them and we just wrote this. We did a very good job in doing that. You also have to -- once you have overcome the objections, then they are like, “Okay, I’m going to do this.” I am going to hire a dating coach, and then its, okay, “who do I hire?” then you come back and you say, “well here is why you should work with me.” I have done that a couple split-tests actually with comparison charts where you -- like on, just for example, like a supplement page, where you compare your product against the other ones and they usually increase conversions by like 15% plus, like you cross the board and all the test that you have ever done and it is just because people have -- it goes to show you like the proof, I mean people, in their mind or physically, are researching you against your competitors and when people hire me I know that they are looking at me and may be one or two or three whatever other people to help them with their sales funnels. Shaun: And that actually is a good tactic thing, encourage them to look at the competition. Jeremy: Yeah, yeah. I mean if you provide something better, you could go so crazy as if you -- Let's just say that -- Let's pick a random example. Let's just say that you have a martial arts studio and you know that your service is just light years beyond everybody else. You can actually say, “look, go try them out then come try me out, and if you like them better, I will actually pay for 3 months membership for you.” Think about the confidence that would give you in that person to go with that. You probably think like “Oh my god, I am just going to go with you and not waste my time with the other person” just think of it that way, I mean that might be a little bit too much for most people, but if you really want to grow, I mean you do stuff like that. For us, maybe I should be doing this. This is like, hey look go look at them, look at their results, look at how they treat you, look what they do after they work with you. Shaun: Actually, we just had a client who did that. Jeremy: That is true, yeah. Because he said all this and this and then I realized I was missing something in the -- I think it was like 2 different things in the way that I was approaching him so we fixed that immediately and then got him as a client. We are working with him now, it is a pretty big project. It is just because, again, people are doing that research in their head. So instead of them coming to conclusion, your email should allow them to come to your conclusion, if that make sense. There are several things that you need in your emails. Number 1, you have to bond with them, like I said, you have to overcome their objections first of all. You have to bond with them because if they don't like you as a person, first of all that is fine. There are a lot of people that probably don't like me, they don't like -- whatever, my voice, my personality, or whatever -- the way that I talk about my kids, they send an email out today with a picture of Logan in it because it was just hilarious. Whatever that is, that is okay, you don't want to attract everybody. You want to purposely have a very, very specific personality in the way that you do things so that people who resonate with that immediately bond with you and then they will start listening to you, you gain their attention because you have to get their attention first before they will start listening to you. So you get their attention, then you overcome the objections and then once the objections are overcome they come to a conclusion that they are going to buy -- they need the solution for whatever their problem is, then you have to show them that you are the solution, okay. You kind of do this like intertwine -- Shaun: Yeah, I mean for me, when I am writing emails, I could put myself in their shoes like, oh men I have been there, I know what is like. I have had the struggles. I solely made it through. This is how I can help you the same. Jeremy: Yeah, exactly. It is not really a linear process because people are in different stage of this. It is not the exact same thing for everybody. One person might take 3 months to make a decision whereas the other person takes 3 minutes. So you kind of have to put like all of this as fast as you can, it is kind of like a very delicate thing. You can't just overcome objections, you have to overcome objections, bond and show them why you are the best all at the same time, that make sense. And that is why it is so important to get it done -- get everything all the stuff done professionally because if you are coming at it from a point of view where it is like, “Oh I’m great, I’m awesome. Work with me. Hire me, buy my stuff.” It does not come across as genuine, but if you come across and you know this, we kind of adopted like the more of like a J. Abraham type of approach where it is a very genuine and authentic and coming from place of why they need you and not why you need them. So, it is like, when I am talking clients on the phone, it is like, “look, I am going to help you, you need help in your business” whatever the thing is, you are stuck, you are in a plateau mode, you just want to make more money, a lot of people they just send me they just want to do better, which is (inaudible 00:59:39) I mean we are doing very, very well but we just want to make better because we are entrepreneurs. It is just how we are. You have to just help them come into that conclusion that you are there to help them. It makes such a difference and I wish I had an email up here to show specific example but it is like, I always -- a lot of times in my copy, I use the phrase, “you don’t deserve it.” You don't deserve to be overweight. You deserve to be fit and healthy and have a nice butt and have big biceps or whatever the case is and that completely switches it. Instead of saying, “oh I am going to help you lose weight and because I have done this and I have done that and I have this technique, look, you don’t deserve to live a life where you don't feel confident and when you put your clothes on, you are embarrassed to lock out the door and blah, blah. Do you see the difference there? It is just night and day in the way that they perceived, whatever it is that you are telling. That is why people -- I say this all the time, Yes, you can technically have a sales funnel but you have to do it right properly. If you have a landing page and a sales letter and an up sell and emails, yes, technically, you have a sales letter, but that does not mean you have it done the right way, that does not mean you are maximizing your potential. If your lead magnet, whatever you give him away for free, if it does not match what you are selling, it does not take people and lead them to the next thing, you are not going to do very well. Shaun: And all that is engineered when we sit down with somebody and write out their sales funnel. Jeremy: Exactly, yeah. I mean that is -- we are very, very strategically, it is not just like -- if you are selling weight loss it is not just like, “Let's just make a report”, I don't know. Shaun: Yeah, (inaudible 00:01:47). Jeremy: Yeah, like 7 ways that -- eating more salad can make you feel better and then the course is about like bodybuilding. I mean, there is such a disconnect there, it has to be -- the report has to --. Here is a good example, we just did one for -- we have been working with NuWave. There is probably a lot of people on here that have NuWave ovens and NuWave stove tops, right, the infomercial product. So we are working with their company and one of the things that they are doing, they have another kind of like subset or offset whatever, they are called Duralon pans. So these awesome nonstick pans are really safe for you. The nonstick itself is just - it just works better than anything I’ve ever had. So the thing that we are doing first is we are driving cold traffic to a page where they get a free pan, it is like a free plus shipping thing and I think it is $6.95 or $7.95. Shaun: That is an insane deal. Jeremy: Oh my god, it is awesome. The pans are ridiculous. Again, if you want me to send the page just let me know. It is actually in the process of being designed right now. So that is the -- basically like the tripwire, that is to use the coined phrase. So they come there and it is just ridiculously awesome offer and then the off sell to that is not like how to cook better which would not be too bad, but it is not that connected. The off sell is, okay, now you have this pan, how about you buy the whole set? It is a perfect relation to what they are buying because it is like, okay, you have this pan, Let's use that and we actually don't even push them that hard. In the buyer’s email sequence, we have -- I think there was like 10 emails after it go out for 45 days or something like that. In that sequence, we are not trying to sell them immediately. Shaun: Well, the thing about that pan is, it sells itself because it is so good. Jeremy: Oh yeah, and that is why talking about engineering everything, that is why when we were strategizing the buyer’s sequence it is not -- we weren’t like, “oh hey, you got this, buy the whole set.” We offer that because we know some people are going to do that immediately, but we don't push that. What we push is getting them to use the pan because we know that, that pan is so good that when they use it, and I actually thought this idea because it happened to me. I use the pan the first time and I was like, “Wow, this thing is awesome” and now I am actually getting the whole set myself. Shaun: I remember that. Jeremy: We specifically engineered and this comes down to strategizing. Most people don't think about this in depth. They kind of just like, “Oh, Let's just throw a bunch of emails in there” and this does not work. It has to be very strategically engineered. So what we are doing is the first like, it is like the first 5 or 6 emails are getting them just to use the pan, and it is like reminding them to use the pan, “hey, you know, it is going to be there tomorrow” getting them excited about it before it comes. Shaun: And that is one thing too, I mean, we go on and on and on about that. You will be surprised how much people don't utilize the product after they bought it. Jeremy: Yeah, yeah, I mean that is why I was just talking to a guy named Mike Weiss yesterday. We are actually speaking of doing joint ventures. I am talking to him and he has built a membership kind of platform and what it is, is when you have an online course and again, if you want (inaudible 01:05:05) just let me know. If you have an online course, most people I forget the statistics, it was like, I think it was like 90% of personal development products and like 97% of business opportunity products or any kind of like marketing product that kind of thing. That many people don't use it, right? Shaun: Right, myself included. Jeremy: That is why when you have products and you have -- even if you have a backend, most people are not doing it because they need -- they already spent money and if they don't get a result from the first thing, why would they do business with you again if they never got result from the first thing. It is not -- I mean it is kind of your fault. Basically, it is not your fault that they did not get a result because they did not use it, but it is your responsibility to get them to use it to then write the result, you know what I mean? So if you want like -- I tell a lot of clients that -- if you want to increase your backend, get more people to actually use the first thing they bought and that is why I always harp on doing buyer’s sequences because that is -- typically, the first half of the buyer’s sequence is to get them -- I (inaudible 01:06:27) a personal coach campaign is to get them to use whatever they just bought, and then the second half it starts to s
Sales Funnel Mastery: Business Growth | Conversions | Sales | Online Marketing
In this brand new episode I have my first guest on the show! This is the first of many great interviews to come. Now if you've listened to most interviews, quite frankly they usually suck. Everybody talks about "their story" and you get no real value. Not with this interview. In this interview Kavit Haria and I interview each other. It's like sitting in on a high level mastermind group. We'll get into the SPECIFICS of what each of us do with our clients to get such outstanding results. It's one you won't want to miss. In this episode I'll discuss... Kavit's advice for anybody launching a new product into the marketplace... Exactly how, when and why to do surveys in your market... *Ninja tips on how I 6x'd my optins for my side business using popups... Our top 3 book recommendations each... And MUCH more... It's a great interview. Check it out, share it, and let me know what you thought! Resources Mentioned Funnel Day OptinMonster InsiderInternetSuccess.com SurveyMonkey Transcript Jeremy Reeves: Hey guys, this Jeremy Reeves from the Sales Funnel Mastery Podcast and I have on the line with me today, Kavit Haria, you have to let me know if I said that right. Kavit Haria: Kavit Haria. That's right. Jeremy: Right. Kavit Haria. So today, Kavit and I have been talking and we decided that it would be kind of a cool thing to do. So instead of having a one-person interview, we're just talk and brainstorm and kind of almost like the little mastermind group. I think that's going to be most beneficial for both of our audiences. So if you're a listener of mine, you know who I am. My name is Jeremy Reeves and if you're not, if you're one of Kavit's subscribers, then you may or may have not heard me before and if you don't, again, my name is Jeremy Reeves and I am a Sales Funnel Specialist. I basically help people figure out what their sales funnel's going to be, the whole automated marketing funnel thing? That's what I help people with. So taking people from prospects, from when they first hear about you, and making sure that you have the right positioning in place, the right offer, and having them go through automated sequences. Emails, sales letters, videos, and everything that makes up a sales funnel. And do that in the proper sequence and have all the right offers for people to greater profits and automate your marketing so you can focus on higher leverage activities and all kinds of stuff that we'll get into today. My website is JeremyReeves.com if you've never heard of me before. I'm going to pass it on to Kavit and let him explain what he does, who he is, so that my audience can get a good understanding of what he does. Kavit: This is a pretty interesting thing, Jeremy. I guess we are co-interviewing and co-answering also. So not only am I being interviewed, I feeling like I'm also interviewing you, so that's pretty cool. My name is Kavit Haria and I've been online for about 10 years. I've been trying to build businesses online. Succeeded in a few different ways. Got into a few, different, cool ventures. Ultimately, I like the fact that I'm a musician and I play (02:30-02:32) and I use that to launch business online, selling music education to other musicians. Kind of like helping them work in a good (02:41-02:42) that marketing is very important in my career. I needed it to help me get out there and show my music. If I wasn't good at marketing, I wouldn't get (02:51). If I wasn't good at promotion, I wasn't going to get an exposure. Nobody was having me sign up for a band. Nobody was signing up for promoting and my music essentially is part of my dream. So I learned that marketing is very important. To cut the story short, really, the problem at first is inside our music business where I learned to create info products and sell a lot of educational material and automated funnels, which is what we're going to talk about in a second. I also learned that I have this ability that I engineer a process where somebody would come to the site and really engage with me and really engage with my stuff and buy my stuff, not once but over and over again within a period of time, that my lifetime customer value is really high in such a short period of time and I was doing all that, once build, and never having to touch it again. So I heard some really cool things there that I didn't go out on a flight to other businesses that I went out to consult in before starting my current business InsiderInternetSuccess.com. Where we basically work with people that have profitable business ideas or business ideas that they think will really work and we sit down with and walk them through a business strategy, a business model, and build the entire thing on the web. So we're kind of very similar in what we do, so it's really good to collaborate with mastermind right now. I'm talking a little bit about how we're building sales funnels individually and have different angles to it, but it's all very creative work and also scientific work and also how other can benefit from just listening in on this. Jeremy: Yeah, definitely. I even said we're almost semi-competitors but I'm kind of on the mindset that there's more than enough people, that everybody has their unique flavor to what they do and people respond differently, they resonate with people differently. So it's cool once you get two people together that do similar things and pull the intricacies of what we do. I think it's going to help both our audiences quite a bit. So really quick, when I first heard about you and when I read about you, your whole music thing, I didn't realize how you're very humble about how you said that because I saw your 'About' page, you did performances with Paul McCartney and Jimmy Paige and all these heavy-hitters and famous musicians, so tell me a little about that. I'm curious. Kavit: Well, and they are really awesome and nice. I remember them very, very clearly and they were also in big venues. We're all about world festival in Holland and U.K. and lots of places. I've performed in different continents, also. But I guess I (05:44-05:45) to get out and play my music. Because I know how to make instrument but I didn't want to play with Indian music, I really want to fuse it with the Western stuff and we hear it a lot these days. Now, it's a lot more mainstream. A lot of R & B and Hip-Hop scenes. Even rock music and Latin music, even that you hear these days. I can hear it very intricately and I can hear the same drum that I play up here in that music and people don't even know what it is. They key was I had to learn to build confidence. I had to learn how to very clearly articulate what I did, and very clearly know exactly know what I did and help somebody else. And as soon as I started to do that, as soon as I started to tap into other musicians and show them how this could work for them, how it could really help them stand out if they were to use this kind of stuff, and then we started to perform and get known, it lead to other bigger opportunities. And so I remember performing for our best musician called 'Donovan', and he was celebrating his wedding anniversary as a concert in the Royal Albert Hall. He was singer from back in the day and he was singing with the London Contemporary Music Orchestra and his friend who was a special on the show, was a performer was Jimmy Paige. So I remember this occasion. I actually, I got (07:10), I have to admit. Music and Jimmy and Paige, didn't know what he looked like, don't remember his music, nothing. But I remember we were in the musician's canteen and the orchestra was performing and rehearsing with Donovan and I was sitting there and I ordered a bit of food from the musician's canteen, I was a nobody, I remember at that time, still with music, to be honest. And this guy walks in and comes and sits with me because I'm the only one sitting there, so he comes and sits, so we start talking and I realize that this is Jimmy Paige, I realize that Jimmy Paige is a great guy, I started to feel a little interested in what he was doing and we talked for 45 minutes, right before the performance. I didn't even know he was there to perform, I had no clue, whatsoever. We then went behind stage, we practiced for about an hour and we performed on stage and it was beautiful. It was absolutely beautiful. Jeremy: That's awesome. That's a really cool story. Kavit: So the picture you see on my 'About' page is us sitting in the canteen, having apple pie or custard, basically. Jeremy: Sounds good. I can go for an apple pie, actually. That's one of my favorite desserts. I haven't had one in a long time. So let's jump in more business stuff. We each have our own approach to how we work with clients, how we work with customers, that kind of thing. Let's just say someone was coming to you and they didn't have anything. They had no assets in place, whatsoever. If they were basically starting from scratch and wanted to build a lifestyle business, that's a big buzz word these days, what would be your process to help them from that first stage of business, going from nothing to 6-figures is the big first mark and then it's like half a million and then a million. So what would your advice be like? What would your process be working with somebody to get them to that first stage? Kavit: For an automated business system, there 3 stages. The first stage is strategy. We basically sit down and think about their profitable business idea. At the end of the day, you got to have an idea. If you don't have an idea, then you generate a whole list of ideas (09:21) with analyzing and testing information and find the best one. But generally, apart from that one, you got an idea, you got to simply think about, "What is the product that I want to sell?" And the way you think about that, first of all, is "What are the problems that the market that I'm attacking or going for has and what is the solution that I can provide to them?", so you got this idea, you got this market, you got this huge problem that might be facing that you're trying to solve in the service or product and you've really made it knocked down. For me, the biggest way to test and do all these things is surveys. And I do a huge number of surveys. In the beginning, at the end, after purchase, before purchase, throughout the lifestyle of the client. And I'm trying to find out and get into my head and really understand what is really important for them? What challenges do they have? How can I help them with their challenges? What would it mean to them if I helped them solve their challenges? So I really want to get and understand all of this stuff. And it's really, really worth the time to do that because even one or two, three insights that I get could change the way that our (10:29), could change the way that I present it when I speak it. I'm sharing my value with them and that could mean a lot more sales. So surveys are (10:36-10:37) that. And essentially, what I'm looking for is a sales funnel that has two key parts. The first is what I call the '24/7 Marketing Machine' which is really giving a lot of value on the front end to solve that problem that that person might have in their market and giving them a value in exchange for their information, for some ideas or survey questions that they might complete and then giving them a series of emails that builds on my relationship with them and then that segment which is the '24/7 Marketing Machine'. The second segment is the 'Simple Sales System'. The way that the Simple Sales System works is once you build the trust and engagement in your emails, once you give them the value of building an engagement with them, the next step would be to figure out, "How would I take these people who are now hot leads and convert them to sales?" It could be a sales letter, a webinar, just an application form, that they speak to you on the phone, it could be any of these things. But what is the process that would work best based on what that person is selling? So there are two key systems. These are really crucial. What most people do is mix the marketing with the sales when really, they are different things. You can't sell to somebody if they're seeing you for the first time. It's very unlikely that they're going to buy so I've always found that take the time to invite somebody, to court them, to nurture them so they're ready to be sold to. Otherwise, you're (12:12) to people that don't want to be sold to and then you're why you're never getting sales. That is because they don't want to be sold to. So the first thing to ((12:21) is there two parts to that process. Get that person ready and then have it processed to sell to them. And then anybody that's starting out should always be thinking, "Well, there's so much to build, there's so much to do, how do I get all of these things done?" And the first step is to take each step at a time. So set up the first element, the marketing section and then set up a sales section. Put it all together. The second thing is then to stop thinking about how you can bring other people in to help you to do that because there is a huge amount of work and you want to whatever you can to get it right from the beginning. It might be about the cost, it could be systems, it could be technology. But whatever it is, I'm not saying you have to spend money on hiring people, but it just could be the right technology to help you automate the things that you need automate so that you've got more time off to go back and spend sending traffic which (13:10-13:11) part in the system. Jeremy: Yeah, and it's funny a lot of people make the mistake of putting their time in the things that don't make a difference. You have to figure out what your unique ability is, like what you're best in the world at, and make sure that when you’re working on your business, you're working on those activities. One of the easiest ways to find growth in any business - doesn't matter what stage you're at - is to just get rid of those activities that aren't giving you the highest leverage and hand them off people who are still capable of doing them. Whether it's a freelancer, like a part-time kind of thing, just outsourcing or full-time employee, whatever it is and focusing on the activities that are bringing you highest leverage for your time. Beyond all the sales funnel stuff and that makes it all automated, for the stuff that you're doing on a daily basis, it's so important to figure out when you sit down, when you're at your computer, at your keyboard, you know what you should be spending your time on. That makes a big difference. You mentioned about surveys. That's a huge part of my process too. In fact, after we get off the call, I'm setting up a survey for a client that I'm working on. A lot of people stop with just an online survey. Most people don't do any type of surveys. They really don't understand their market at all. They really don't understand their frustrations, the pain points, what people are there for, what ways to segment. Surveys are a really good way to segment your audience so that when you're sending out your emails, you're sending them to the right people. So doing the survey is step one. And then if you really want to get in tune with your market - and this is especially crucial if it's a new market or if you're trying to get to the next level of growth whether that's from 500,000 or to your first million, whatever your next level of growth is - talk to people on the phone. So when at the end of the survey, you have a question like, "Hey, do you mind if we call you? Leave your phone, it's optional of course." you'd be surprised how many people leave that. I know when I have clients, a lot of times, I'll ask them to send out an email saying, "Hey, we're trying to improve your experience. We have someone that wants to call you and understand how we can help you better.", then I'll call their customers and do that. For some reason when you get on the phone, you can get 200 survey responses. And that's usually around the number I'd typically recommend because over that, you start getting the same thing over and over and below that, you're not really able to see trends as well. So 200 is a pretty good number to start with. But if you talk to five people for 20 minutes or an hour and a half or whatever out of your time, you're going to get so much deeper of an insight than what you get with just online text surveys. That's one thing I would recommend when you're doing this. Regardless of where you are in your business, you should be doing surveys. Kavit: That's a great idea. Do you have a formula for how you make them work? Jeremy: What do you mean for how to make them work? Kavit: Like, how do you get the maximum input from your users or your prospects? So like, they're giving you the really good information that can help you turn a lousy campaign to a really good campaign. Jeremy: Do you mean on the phone when I'm talking to them? Kavit: No, in the survey itself. Jeremy: I don't have any specific templates. Like, you're asking for their biggest challenges. It's kind of different with each market. I write them specific to that market. Like, "When you're doing this, what's the biggest problem you're having?" or "What's the biggest challenge you're facing?" or "What's the main reason you're doing this in the first place?" For example, if people want to lose weight, "Why are you losing weight?", and it's so different. Some people want to do it because they want to look good for their spouse, other people will want to do it because it's more of an ego thing, they want to look good for other people or walk down the beach with their shirt off. That's a good idea. I should come up with templates for it. I usually do it based on that market. When I start any new project, I always obligate a questionnaire. I always talk to the client about it and a lot of times I do funnel days. It's like an in-person consultation with the client so I spend the whole day with them so that I have a good understanding of the market and then I base the surveys off of that. But even just to get started, even if you have a two-question survey that is basically, "What is the greatest challenge that you're having when it comes to..." and then whatever you're trying to help them with. And then also "What's the number one reason you're trying to achieve that goal?" If you just start with that, then that would help quite a bit. It's a really good place to start. And then you can get deeper as you go, take those questions, talk to people and you'd be able to come up with other questions based off of those. Because you'll start seeing trends. I really should get templates, though. Kavit: Quick question about that, how do you then use the survey information? Like, do you segment your mails? Or do you use that information on emails? What do you do? Jeremy: That's a good question. One of the main reasons I do surveys is obviously, number one, to understand the market and that's for all the pieces of the copy. There's a lot of times that I've used actual quotes in the copy or I kind rearranged it a little bit and used it as a headline if I see it coming over and over again, it's a huge pain point. What I do is when I go through the survey, I make a list. Let's just say that's frustrations. So the two main things are the frustrations, the challenges, the problems and then the other side is the reason why. So depending on the market, what I do is I go down and I have two separate Word documents and I go through all the surveys manually because you just get a lot out of it. You can do multiple choice but I usually do open-ended questions because people give you real answers rather than whatever you want to give them, basically. So I go through it. I spend half the day or whatever. So let's just say I'm reading through and I see seven big objections coming up all the time, I write them down in a bulleted list and then mark down how many times it comes up. So if one of the main objections is price, then I know to counter that and write a copy to overcome that objection more in the copy and I place it higher on the page. And then the same with the reasons why their doing it, I segment that based on the reasons why. Let's just say I have a side business and I did surveys to find the reason why they want to dress better. So I went through it and I found out that the three biggest segments were: Number one, getting girls, attracting other people to them for dating and things like that. The other one was confidence. A lot of guys, this is a guy's website, they feel more confident when they're dressed nicely. You just feel different when you're dressed in a nice suit rather than comfy pants. You stand tall and get more confident and all that kind of stuff. And then the third one was success. There's a segment of guys that are young professionals, they're trying to get a raise, they're trying to get better (21:56), all that kind of thing. So I look through that question and I mark down segments based on that and then I can in the emails. So that just gives me three segments. You can also do this with quizzes, by the way. So let's just say three segments. It could be two, it could be ten, but let's just say three. In the first email, somebody comes into your funnel. So there's two ways to do this. Number one is you can segment with your lead magnets that you get. Like the free value it could be free video, free report, whatever it is. You can segment with that. For example, I might have three different lead magnets. One is appealing to guys who want to dress better for success. Seven ways to dress better to get a big promotion or whatever it is and then you can segment that going to a separate list that talks about success and overcomes the objections, the frustrations they're having that area, it gives them tips, and builds relationships specifically to that. So that's one way. And then the other way is if you have more of a general lead magnet. Then let's just say 'How To Dress Better In The Next 4 Days', like, we have a four-day crash course on how to dress better. So what we can do with that is in the first email, "Hey, I want to send you these emails that are you going to tell you how to dress better but in order for me to send you the most relevant information, I just have a quick question - what's the biggest reason that you want to dress better? Is it to pick up girls? Is it to get more success in life? Or is it to feel more confident?" And for this, you need Ontraport or Infusionsoft, like a CRM. Basically any email service that can automatically segment based on a link that they clicked. Then they click the link and then they go into that specific segment. So then there's a little process after that. Does that answer your question? Kavit: Yeah, that's great advice on surveys and segmenting and stuff like that. What I want to know is, and I think this will be useful to everyone, what is the process you go through to build a sales funnel? You're sitting down with a client, you're talking through the while process, what is it? Jeremy: The first thing I do is I get in touch with the market. Research. Understanding the market, understanding what they want, and then looking at the different products. Some clients already have the product. Maybe they're successful in another business. They hired me for a new business, whatever the case, we have to build the products. Actually, the guy that I'm working with coaching is doing that. So we find out what are the needs that are not being met in the market place? And that's based on surveys, talking to people. You can look at your competitors, see what they're doing. I do more for ideas rather than ripping them up. So that's first. The second is there are three stages - before, during, and after for the sales funnel. And one of the things that you talked about was not every sales funnel is the same thing. There’s a lot of people that are like, "The 8 Sales Funnel Templates", and it doesn't really work well because different types of funnels work for better for different markets and for different needs and for different products. In one, you might have the typical free report and then the emails and then the upsell sequence and then buyers' sequences. For others, you might want to start with the webinar. For example, I'm working on a project right now and he's selling a $7,000 coaching program to cold traffic. So that is very much different. There's a lot of relationship-building and trust-building and... Kavit: And it depends on what they're selling, the price point, the audience, the mindset, what they're used to or accustomed to, all that kind of stuff. At the end of the day, whatever you do has to, in my opinion, get the person ready to (26:48-2:50) Jeremy: Yes. Exactly. And one of the big things is time frame with that. If you're selling a $5,000 coaching program, you need a little bit more time for them to warm up with you first. Video's really good if you want people to bond with you a little bit faster. If you're selling $27 e-book, you can do that in a lot shorter time frame because it's not much of a risky for them. But you still need to create that bond. But you can do it a little bit faster. So the first thing is figuring out what do we have to do? People come to you when they first meet you. They first sign up to your list. They're on the left side of the line, that's where they are right now. And then the right side of the line is where need to be to buy your product. And again, that line is going to be bigger or shorter, depending on all the different things you said. The 'Before' process. What do you have to do? What emails have to be in place? What bonding has to be done? What authority has to be shown? What trust has to be built? That kind of thing to move people down that line. So each little touch point that you have - you show them a case study, it moves them to the right a little bit. You give them results in advance, it moves them down the line a little bit. I always think in my head, instead of like, "Oh, let's do x amount of emails", and then that's it. It's more of how do you gain control of their buying process? So you're constantly thinking, "How do I move them down the line?" rather than like, "Okay, let's just throw ten emails in here. It doesn't matter." and you just mish-mash them. It has to be done in a specific sequence. Kavit: It's psychology. So the whole point is that it doesn't matter emails you're going to do. It could be as little as sixteen or it can be as many as fifty, but the whole point is that person's got to be ready to buy. Jeremy: Exactly. So that process, part A, the 'Before'... Kavit: I have a question there. How do you know when they're ready to buy? How do you decide that? You, know, this is the number of emails or this the point where they're going to buy? Jeremy: I wish there was an answer to that because I would be a billionaire by now. It's kind of based on intuition and market research and doing best guess. If there's any way to figure that out specifically, I would love to sell that. Buy it's just based on understanding the market. Each person is going to come to you in a different way. I've had people that found out about me whether it was on the podcast or a guest article and I've had people do $20,000 products within one week of finding out about me. I'm doing a sales funnel for somebody and I forget, like, 13 grand or something. And I never spoke to them on the phone. I did it all through email. And that's because it was a referral. So that's a very different process from if he's never heard about me, he got referred to me by someone that he trusted. so he was already three-quarters down that line. And because he was using that trust from the referral, pushed him all the way down the line. He didn't have to go through my typical process to be able to do that. So everybody comes in there differently. And that's why even from the beginning I give them the chance to buy. I'm not really a believer, and everybody has different opinions on this, I mean there's really no scientific answer for this - again, it just comes out of my gut feeling - but even from the beginning, I always want them to know that the product and services are there. It's a really soft sell for a while. But at the same time, they still know that they're there. So if they are ready, then they just click the link in the email and they're good. A little bit more aggressive stuff come later. And I never really get too aggressive because I'm a huge bonding kind of guy. My scale of aggressiveness is less than most. But that comes a little bit later. Again, I wish I had a specific way. That would be incredible. So at that point, that process gets them to guy for the first time. And you touched on this before. There's a process for getting them to buy for the first time and then there's another process for getting them to become repeat buyers and higher value buyers because they already built that trust with you. Whether your first product is the (32:08) like the really small-priced thing. It works well with some markets. It doesn't really work well with other markets. If you're selling a really high-end coaching program, it really doesn't work well in my experience, at least in those circumstances just because of positioning. So the second phase is what happens during the buying process? They literally just bought your product one second ago. That's the typical upsell experience. I think most of the people listening to this probably understand what that is so I won't go into that much. But it's the process of the one-click upsell where they just bought the product and you give them offers for buying products. It could either be at a discount or they get a special bonus if they buy it right now. And that can be done. Just look up one-click upsell script of software. Most CRMs like Infusionsoft, Ontraport, Hubspot have that built in. I think what shopping cart does, auto-responder, Aweber, email services like that, you can always integrate with a shopping cart that does it. Kavit: I find a lot of people don't do the upsell clicks. Everyone talks about it but not everyone does it. Why is that? Why do you that is? Jeremy: I don't know. Kavit: I think it could be a lot of work or it could be they don't know how to do it. They don't know how to automate it. It could be those reason. Apart form that, do you think that there's people out there that are concerned that it might irritate people? And how do you go with that concern? Jeremy: It's a very valid to think but in reality, it's very rare to get complaints from people. Everybody always uses the McDonald's example. You go in there, "Do you want fries with that?" sorry I haven’t been to McDonald's for ever. But super-sizing, that's it. And you don't get mad at that. They're just offering you a question. I think a lot of what it comes down to is how the copy's done, how you position it. If you're really aggressive with it, then people might get mad at you. I's all about relation and bonding because that person just gave me money, I want to take care of them. I want to make sure that they know that I am someone they can trust and relate to and bond with and have a relationship with. Mine is always worded in a careful and considerate way. It's kind of like, "Hey, you just bought this. This other thing is going to give you...", usually, the big three are better results, faster results, and easier results. So if you're thinking about what to put in your back end, whether it's an upsell sequence or it's just in the back end, that's always what sells best. Easier, better, faster. Kavit: Well, there's some people that are starting out that are listening to this. So easier, better, faster, what do you mean? Jeremy: So let's go to weight loss. You sell them whatever the initial product is and then 'better' could be, you're going to get the same results, let's just you're going to lose ten pounds, here's a seven-day blueprint to lose ten pounds. So they're getting the 'faster' and 'better' in that. Or with 'easier', it could be just adding "Without giving up your favorite foods". Whatever the things that work really well is software. Like, "Our software will do it for you", that's always another good one. I went through a webinar, I'm actually going to buy it (36:39). Probably tomorrow. So I went through a LinkedIn training on how to connect with people on LinkedIn and gain more traffic through LinkedIn and his whole thing, was "Here's the process for doing it but if you want to just automate everything, my software will do it for you.", so that's his upsell. It's easier, you get better results because it actually gets done faster because the software does it for you. So it hits all three of those points. Kavit: That's interesting. Jeremy: So software is a really good way to do it but there's a lot of different ways. Coaching is another good upsell because that's faster and better and easier. It's kind of like, "Hey, you can do everything by yourself, or you can work with me and I'm going to show you, step-by-step how to do it. We're going to get things done so much faster..." Hopefully, that gives you a couple of good examples for people that they can use in their business. Kavit: Let's talk tricks for a second. I want to make sure to understand, what are cool new things that I can add or do on my website? Because everyone's using all these tools like online chat and pop-ups and all these things. What are your (38:09)? What are your favorites? What do you see worth creating well? If you were to give me your secret advice, what would it be? Jeremy: I would say Live Chat is a good one and it's really easy to implement. You can go and just get Olark, theyr'e one of the free live chats, there's a bunch of them. Most of them have free plans. Usually, if you have live chat, it'll bump up your conversions just by having it regardless if people use it. For some reason it just gives them that feeling of confidence. Live chat is a good one. Compare to the amount of people on your pages, you don't get a ton of people that use it. I don't do my own live chat anymore, I actually used to. That's another good way to do research, by the way, just to throw that in there. Even if you just want to talk to your customers and do research. My employees do that for me. They're saved a lot sales because people will be, just for example, on the order form, and they're having problems, and they're like, "Hey, I'm having x problem, what do I do?", you can just outsource all of this and have your employee walk them through what might be happening, refresh the page, try this, and have them go through the whole thing. So live chat helps. I'm a big fan of pop-ups. But instead of having the same, it all comes down again to segmenting. Instead having one pop-up on the whole website, what I've seen really helps is - and I did this in my side business and I think it was probably about 6x how many opt-ins I get. Again, instead of just having it on every page, you have it on specific pages. For example, on our sales letter. I was looking for my Analytics and people who got this one email, converted at 4x the rate of just the average person on the (40:25) and that email was giving them a sneak peek of the product - so I was like, "Wow! That's a pretty big increase!", so I thought, "How do I scale that? How do I get that to more people?". My idea was on my sales letter, when they leave the sales letter, it says, "Hey, you weren't interested but maybe that's because maybe you wanted to take a sneak peek at the product first and make sure that it's for you." So then they opt-in, they get it. So that was my way of using analytics and then you say, "Okay, how do I scale that? How do I put that in the business?" So that bumped up the conversions quite a bit. That's just one example of using pop-ups in a much smarter way than just throwing it on there. If you have different categories for blog pages, let's go back to the weight loss example. Let's just say you have recipes and nutrition advice and strength training advice. So there are three very different segments. On all your category pages for recipes, you can have a pop-up that offers them. It's like, "Hey! You came here, you enjoyed the recipe, do you want our free e-book that gives you fifty more?" On the nutrition letter it's like, "Hey, you enjoyed our nutrition article, do you want one that gives you our 30-day nutrition plan?" You can also do that on your blog pages. I use Opt-in Monster, by the way. That's my preferred opt-in plug-in. So you can do that. One of the things that I did for Kinowear, the side business, is they have one specifically designed for mobile. They have the normal one and there's one specifically for mobile and when I added that, the mobile actually gets more opt-ins than the regular one. I have to split test this. This is kind of just like conjecture, but I think the reason that it converts so well is because of how I positioned it. I positioned it as, "Hey, you're on your phone," and this wasn't the actual copy, it's the concept, but it's like, "Hey, you're on your phone, it's probably going to be hard to read the website, why don't you sign up here and I'm going to you free advice on getting stylish and the next time you're on your email, you can read it. It's just going to be a lot better of an experience for you." I forgot the exact copy that I have on the opt-in form but its' like that concept but it's like, "Hey, let's make this easier for you. You opt in here, and I'll send you this through email. You can check the next time you're on your computer." So that helped quite a bit. Kavit: That's awesome. You know what I wanted to do was (43:30-43:31). So for a while now, I've been creating and testing a lot of different lead pages, especially when I do advertising. I know on my own site, I got a lot of lead boxes all over the place. Inside blog posts, I've got specific blog posts about lead pages. Like one, if it's a report about content marketing, I've got something I'm giving away about content marketing, there's a lead box for that. If it's a blog post saying about a plug-in, I've got to push for that. And then I got video episodes like podcasts. Then I transcribe each episode and I give the PDF away but in order to get the PDF, they got to opt in. So every single episode is like a lead page. And that's 90+ lead boxes just for the episodes so it's really, really cool. Then I'm building lots and lots of opt-ins, Then (44:19) segmenting in so many different ways. And I found that although some people opt in, like, 10, 15x in different lead boxes, because they want different things, the more they opted in, the more I'm able to segment them and say, "Hey, you seem like an active user. I think I'm going to follow up with you to say maybe you want to come up on one of our discovery (44:40)" or whatever it is just they are more hyper active. Jeremy: Yeah. Absolutely. That's a good idea. I like that. Kavit: We're running out of time now, so I got a question for you. I think for me, whenever I want to get to know somebody, I want to know what they read because what they like to read tells me a little about the kind of person they are. So what are your top three recommended books? Jeremy: Let me give you two business books because we're talking about business. But I'm also a huge fan of a life of balance. Like, not just working all day because I have one-year-old, I have a three-year-old, I have a wife and with a good relationship with her. So I want to see all them. All of our family lives within a 15-minute radius of us. We actually have friends coming over tonight. So we're always doing stuff with family and I think that if you just work all the time, and a lot of people are like, "Oh, my business is my passion" and my rebuttal to that is, "Okay, I think it's kind of a limited life if you only have one passion." I love this. I absolutely live working all day but I have a lot of other passions. I'm getting certified as a chef right now just because I love it not because I'm going to go out and cook for people. My wife likes it. Kavit: But this is certified chef. Jeremy: Basically, like a professional cook. But there's online classes and stuff that you can take and get professionally certified but I'm just doing it because I love to cook. Anyway, I'm also going to give you one non-business book. The number one person of influence is Jay Abraham. Sometimes I think a little bit too strategically, that's I have number two. The first person is Jay Abraham, any of his books, just read them. Kavit: If I was to answer the same three questions, the first book to have on my list is 'Getting Everything You Can Out of All You've Got'. Jeremy: That's number one for me. Kavit: That's really good to hear. Jeremy: So 'Getting Everything You Can Out of All You've Got', that's number one. Number two is Dan Kennedy. Basically, anything by Dan Kennedy. He's got a whole bunch of books. I would say like off-the-top-of-my-head, the one that really resonated with me is 'My Unfinished Business '. It's almost like autobiography. And also another one is Richard Branson and his autobiography was awesome (47:44-47:45). And then the non-business one, I don't know if you're familiar with Strategic Coach but they have a thing where you have either a focus day, which is your top priorities, top leverage activities, your buffer days which is more delegating and kind of just like those stupid, little projects that you have to do, but they're not contributing all that much. And then free days. When I take a free day, there's zero business, whatsoever. I can't talk about business, I don't look in my email, I don't answer my phones calls. It's just to completely unplug and it makes a huge difference in your motivation levels, your creativity. In fact, this weekend, I'm doing Saturday and Sunday free days which is cool. So my non-business book would be anything in the Alex Cross series. But Jane Patterson? Those books, last January... Kavit: You know what? James Patterson and Lee Child, I absolutely love Lee Child. Jeremy: He's actually on my list for... Kavit: You got to read his stuff. Jeremy: Yeah, I'm reading 'Dracula' right now. Kavit: I'm just saying, Lee Child inspired me to write better email. They're short. (49:00) it's as if you're speaking. Personality, it’s (49:03). Jeremy: And that's the same with Alex Cross. One of the big things that I've learned from him, and another thing is when you read novels? You really do become a better writer. Because you pick up and you're like, "Oh, man." Like the way he structured that, with Alex Cross, his cliff hangers, they're just unbelievable. It's absolutely brilliant. On my free days, I'm always reading novels. Like I said, I'm reading 'Dracula' right now. Again, Lee Child is on my list for after 'Dracula'. So I'll be buying a couple of his books. So those of are my three. Kavit: That's pretty cool. (49:44) and I appreciate that stuff. Jeremy: Yeah, how about you? So number one, 'Getting Everything You Can Out of All You've Got'. Kavit: Getting Everything You Can Out of All You've Got', and then number two, I would have to say would be 'The Ultimate Sales Machine' by Chet Holmes. Jeremy: Okay. That's a good one. Kavit: That's a pretty good book. At number three, and it's non-business, I would say 'The Four Agreements' by Don Miguel Ruiz. It's like a spiritual slash (50:12) those kind of books. Really, really good four agreements that (50:16-50:19). Jeremy: I bought a whole bunch of bookmarks that has the four agreements on them. Yeah, we seem to share a lot of very similar interests. Kavit: Yeah, but of course, like I said, the books that I generally read that are not business-related are Lee Child and that kind of stuff so that's kind of cool. Jeremy: Nice. Kavit: Well, I appreciate you inviting and I inviting you on this cold call and I hope that everybody gets some really good benefit from this (50:50). Hey, Jeremy. Where can people find you? Jeremy: I'd like to think that my website does a good enough job of "selling me". I won't send to a free report or anything like that, if you just go to JeremyReeves.com. When you go there, it basically tells you who I am, what I do, you'll be able to see testimonials, case studies, results that I've gotten for people. And then there's three things like if you're interested in working with me or doing anything with me, you can either get on my list and there's a free report there. I have automated webinars and stuff that you can go on to get tons and tons of value. There's a 'Services' button if you're interested in working with me. There's a 'Products' page if you're interested in looking at the products that I have. I would say just go to JeremyReeves.com and see where it takes you. Kavit: Brilliant, brilliant. Jeremy: How about you? Kavit: InsiderInternetSuccess.com. You should just check it out and you'll see what I'm talking about. Jeremy: I highly recommend his 'About' page so you can see his music stuff. That was intriguing for me. Kavit: You should write more about your chef stuff and family stuff. Jeremy: Oh, I do. Kavit: That was new to me. Jeremy: Yeah, in all my emails, that's where I have most of that stuff. Hey, it was great talking with you and everybody will get a lot of value. Kavit: Yeah, speak to you soon. Jeremy: Yeah, sounds good. Thanks.
Sales Funnel Mastery: Business Growth | Conversions | Sales | Online Marketing
In this brand-new episode of the Sales Funnel Mastery podcast, I am interviewed by Eric Barton. I guarantee this is one of the most value-packed interviews you've ever listened to. Here are a few things we discussed...1) Why most people talking about conversion rates aren't telling you the WHOLE truth...2) 3 quick and easy ways to increase retention rates...3) How to increase price and skyrocket net profits without dropping conversions...4) A current split-test I'm running which you've NEVER heard of (but must try!)...5) And tons more!After listening, head on over to http://www.JeremyReeves.com Transcript: Hey, welcome back to another episode of the Sales Funnel Mastery podcast. I hope you’re loving what you’re getting so far. I have a ton more content coming up for you. I wrote out the other day about sixty different ideas. That’s not even including interviews, which I’m going to try to do about once every two weeks or so. For this podcast, I have something a little bit different for you. In fact, this is the actually the first interview, except the difference is I’m not going to be interviewing somebody else. I’m going to be giving you an interview that somebody did for me. I’m going be getting interviewed. It was an interview from Eric Barton, from Fast Easy Success. When we talked, we went over a lot of really, really good marketing stuff; including a conversion split test that I’m currently running. It’s still running right now, but I guarantee you it’s something you’ve never heard before. It’s definitely something you want to try because as of right now, it’s winning by about 50 percent over my control. You’ll see in this interview that the percent doesn’t really matter, but it’s winning right now. I think the comp was about 92 percent. Here is that episode. I hope you really enjoy it. Let me know what you think. Eric: Welcome to episode ten of the Fast Easy Success Marketing Insider podcast. I want to thank everyone for tuning into the Fast Easy Success Marketing Insider. A lot of exciting things coming today and in the future for you. Make sure you hit that subscription button right now, so you don’t miss out on the value-packed podcast coming your way as well. Before we dive into our show and our very special guest today, I just want to welcome everyone to head over to fasteasysuccess.com. Go ahead and grab your business building tips sent directly to your email daily. When you head over to fasteasysuccess.com, I’m also giving you your free business cheat sheets. This is going to help you with your websites, emails and writing. Let’s dive in because I’m excited to have this special guest coming on the show today. If you haven’t discovered this man yet, you’re definitely in for a treat today. He’s a direct response copywriter who actually specializes in building very profitable sales funnels for clients. You may even have heard this man referred to as the sales funnel specialist, and really the world’s number one most trust sales funnel authority. Ladies and gentlemen, joining us today, I want to welcome to the show, Jeremy Reeves. Jeremy, thanks so much for taking the time to jam with us today. Jeremy: Thanks for having me. I’m really, really excited. I used to get a little nervous getting interviewed, but I’m actually very pumped to be talking to you. Eric: Beautiful. That’s what I like to hear. I’m sure the audience is definitely, they got their ticket to this profitable thrill ride and ready to jump in. Let’s just ask real quick, for the people who are not familiar with you, can you originally tell people how you started out in the sales marketing or copywriting world or how you really go involved? Jeremy: One thing I want to say, just as everybody is listening at the beginning of the interview, I’ve listened to a lot of interviews. I listen to a whole bunch of podcasts and all that kind of stuff. Personally, I have never been a huge fan of interviews because a lot of people take too long to tell their stories and don’t really give a lot of good advice, just in general. I did want to throw out there that I am really going to give out a lot of really, really good content. It’s not going to be all about me. I’ll give you my quick little story here for about 30 seconds, but then I’d like to just jump in. I like to demonstrate my authority by demonstrating that I actually know what I’m talking about, instead of telling my story. I just wanted to throw that out there in the beginning. I like to do unique interviews. Eric: Nice. Jeremy: For my short little blurb here, I got started as a direct response copywriter, writing sales copy for clients. Right at the beginning of my career with that, which was about, roughly seven years ago, I realized that writing, understanding the dynamics of writing copy and being able to sell on paper and all that good stuff really doesn’t do much if the strategy behind the copy isn’t right. I really started focusing a lot on the marketing strategy and how to write the copy to fit that strategy. If you have bad strategy with a great copy, it’ll do okay; but if you have incredible strategy and okay copy, it can still do fantastic. The strategy really compels it. When you add the really good, hard-hitting copy on top of it, that’s when things really take off. I really started focusing on the marketing strategy behind the copy and that led me down, through working with all kinds of different clients, a lot of the industry leaders that you’re probably familiar with. It really made me specialize and focus on building sales funnels, because I realized a lot of the challenges that people deal with have to do with not having systems in place and not having—basically, not being able to buy paid traffic; which is one thing I really, really focus on. When you have an automated sales funnel in place, you can pretty much look at your sales funnel as a whole and see, I got 1,000 people that hit the first part of the sales funnel. By the time they got to the end, I made X dollars. You know what each person is worth or your earnings per visitor. That way you know what you can pay for traffic. If your average earnings per visitor, for each person that you send to a landing page, for example, the first part of the funnel, if that’s $5, then you know you can pay $2, $3 or $4, whatever you want to keep your margin at, to get new people into the funnel. It really makes your business really, really stable. Then you keep tweaking and testing and making everybody worth more money. That’s where all the fun comes in. That’s pretty much my history. Basically, started as a copywriter, went into strategy. I worked with all kinds of different business owners from internet marketers to a couple celebrities and really high name, high profile clients; to even all the way on the other side of the coin, to people like, dry cleaners and hair dressers and people like that. A pretty big gamut of people that I’ve worked with. Eric: Right. That’s what I was saying, it works with a lot of online and as well as offline. It works with the large and the small businesses. One thing I wanted to ask, it’s been the theme the show, I’m going to ask it in the beginning, because I think if they set up in the beginning, it’s going to help. This goes into what you were talking about, the paid traffic. Really what I’m referring to is the un-sexy sales secret, which is what I call it, is lead generation. I think, unfortunately, this is a point that a lot of business owners get wrong. A lot of people mix up with lead generation with customer generation. A lot of times they want customers instead of leads. Leads are something that you nurture. You can grab the low hanging fruit, obviously, but it’s something you have to build. Can you share your thoughts or what’s your view on the lead generation part of whether they’re starting a funnel or just bringing them to a sales page or website et cetera? Jeremy: Yeah. There’s a lot to go into on that. I’ll just take when I’m working with clients, I’ll go off of that. One of the things that I try to do, a lot of people talk about cost per lead and things like that. That’s good … Eric: Bad? Jeremy: No, it’s definitely good to know and I track that metric and all that, but there’s a big difference in the quality of leads. Let’s just say you have Facebook ads, Google ads and SEO, you’re doing those three things. You might have leads that are worth, let’s say your average lead on Google AdWords is worth $3. It might be worth only $1 on Facebook and $6 for SEO. You really have to look at, I’m getting this amount of leads from this source, but what are they worth to the business? Because everything, the leads coming in, they all have different values. Eric: That’s a great point. I think that’s what a lot of people mix up too. They’re getting in a lot of leads, and they’re like, yeah, I’m doing good. But how much is that lead actually worth, like you just said. That’s a great point. Jeremy: Exactly. You could even dive in more. For example, I have Facebook campaign that I’m running right now. We tag them as Facebook leads and I can track it overall and look at it every month and say, we’ve got 1,000 leads this month and we made $3,000 from that. We spent $1,500, whatever the numbers are. If you want to even take it to another level, you can tag them by the audience that you’re targeting. For example, let’s just say you’re in health and you’re targeting men, 50 plus, and then another group is women, 30 plus, whatever. It could be anything that you’re targeting. You can actually tag them as that, and then track those specific things; so you know, not only do you know how much your average Facebook lead is worth, but you could also say, I have these two segments that we’re targeting. This one is worth this much; this one is worth this much. You can get pretty crazy with the metrics. I usually recommend that for people that are really advanced and trying to take it to a completely new level and gains a huge competitive advantage. That particular one is more for people that are a lot more advanced. Eric: It’s a little more work. It’s more profitable, but it is more work. If it’s something that competition isn’t really willing to do, that’s a good thing for people in our world. This can go into the testing, too, because that’s something that you’re definitely known for is heavy testing. Do you do the simple split, like A, B, split test or really how do you start your test? What’s the best way you start testing where people can do that? Jeremy: That’s a good question. I get extremely mad at a lot of people in the conversion rate optimization field. That was one thing that probably last year, it might have even been 2012. In the last two years, I was really heavily involved in that. I got offered a really healthy, six figure offer by one of the biggest conversion rate optimization companies in the world and turned that down. I’m still really friends with them. I just don’t want a job. There’s so much I can go into here. There’s a lot of things that you need to look out for when you test. One of the things you’ll hear—and I’m not going to give out any names here, because I don’t like to make enemies. A lot of people when they say, “We got an 80 percent increase doing this.” “We got a 60 percent increase doing that.” If you look at the actual stats and sometimes they’ll show you in a video, they’ll show you a screen shot of their stats and all that. A lot of times you’ll notice that the numbers are really small. Maybe they hit 95 percent confidence. If you’re familiar with testing, you’ll know what I mean, but it’s essentially 95 percent chance of that test being a winner. It doesn’t mean that you have a 95 percent chance of that test winning by that percentage. For example, let me pull up a test I have running right now for a Facebook campaign. It’s running to a landing page. The one call to action on there is “give me my free report.” It’s the control, call to action. The one I’m testing it against is “show me your sales funnel secrets.” That’s the A, B test. They get split up. Eric: Sure. Jeremy: Let me go to my results. It just became a winner this morning. The control, which was—I forget it already. The control, which was “get instant access,” I think it was, is converting at 24 percent and the “show me your sales funnel secrets” is converting at 39.68 percent. This is a fairly new test. It’s only been up a day or two. The percentage improvement is 65.34 percent. A lot of times you’ll see a lot of experts showing that, “Hey, I got a 65 percent improvement,” and they pretend they’re big, they know everything about split testing and all that. This one, by the way, has a 98 percent chance to beat the original. Eric: 98 percent, nice. Jeremy: What’s that? Eric: I said, 98 percent? Jeremy: Yeah, 98 percent. Eric: Nice. Jeremy: This one is a winner, right? What a lot of people won’t tell you—and this is something that’s really, really important to understand—is that, right now it has a 65 percentage improvement, but it’s everything always comes back to the norm. Even though it’s a winner, as more conversion data comes in—this is only based off, I have 43 conversions total. As I get up to 100, 200, 300 conversions and there’s more data, that percentage of improvement is going to come down and get closer to the median or closer to normal, where it would be even. Eric: Right. Jeremy: Basically, the thing to take away is that when people tell you, “We did X and we doubled our results.” Don’t listen to the percentage that they tell you, just get the idea. The idea, for my example, so you guys can test this, is test something normal that you would normally use; “get instant access,” “get free report now,” whatever is, versus something that’s a little bit more like a more novel, more “show me your sales funnel secrets.” It’s not something they see every day. Test that, but don’t look at the—when conversion rates experts tell you the numbers, don’t really pay attention to any of that. Just pay attention to what the strategy behind it was, and then do your own testing. Mine is 65 percent now. I’m going to let it run a week and after that, it might only be 30 percent or it might be 20 percent. It should still be a winner. It’s just that the percentage of an improvement is the one thing that—basically, don’t get too excited about it. Eric: Do you have any advice on how long they should let a test run? Is there a certain amount of views or clicks you should let a test, on average, run? Jeremy: That’s a good question. It really depends on a couple factors. What I usually do is look for at least 30 conversions for each of the variations. If you have two variations, wait until you get at least 30 to 50 conversions on each of them. You also always want to make sure that you do it for at least a week, so it can go through. You’ll find that out that some days convert a lot higher than other days. If you really dig into the data, weekends might do really bad or really good or whatever, so that’s the second thing. I use Visual Website Optimizer. Any split testing software you use is going to give you a chance to beat the original. You always want that to be above 95 percent. A little bit of a caveat to that is that if you have a business and you don’t have a lot of conversions, it takes you awhile. It’s really just a percentage game. It’s just a chance that you have. It’s a very high probable chance. This one, for example, has a 98 percent chance to beat the original. That doesn’t mean that it’s absolutely going to beat the original. It means that I have a 2 percent of that actually losing. Don’t think of testing as a definite thing. Think of it is as, this is the most likely scenario. If you’re testing and you don’t have a lot of data, if it takes you three months to get one test done, just go with whatever you’re comfortable with. If you get up to 90 percent chance to beat the original, then go with that. Just go with whatever. I usually recommend 95, but you also have to look at the time factor and the time cost too. Eric: That’s true. Jeremy: That’s just a couple things to think about. Eric: Let’s say you had that definite winner, and that Facebook button was the winner for you, the submit button; would you challenge that to another test then? Do you say, lesson learned for now, that’s the winner. I’ll let that go and move onto the next thing I want to test, whether it be a website or something else. Jeremy: That’s another good question. What I’ll do is this is a winner, has a couple days left. Whenever a week is over, if it’s still a winner, on the page, I’ll change it to the winner. At that point, I’m trying to think. I will probably, on this landing page, I will, I actually might do a little bit more of a big test. The landing page right now is all text based, so I actually might go to an all text, to just a video and an opt-in form, something big like that. Pretty much, when it comes to figuring out what to test next, I look for the things on the page that are going to make the biggest improvements; so going from an all text to all video. The call to action button, believe it or not, it’s a big factor. Eric: No, it is. I think a lot of people miss that. When I changed my opt-in on my site, I tested it all that time. Just simple changing of words can make a huge, dramatic—a perfect example, my Facebook fan page, a client had something like “send my email here.” We changed it to a simple, “give me the info.” It dramatically increased the opt-in that same day. We let it run and that’s what we’ve been using, but just simple, like you said could be huge. A lot of people drop the ball on the simple stuff. Jeremy: Yeah. It really can, especially, the shorter the page, the more that’s going to have an effect. If you have a 15 page long sales letter, doing “add to cart” versus “buy now” probably won’t make a huge difference, but if you have just a quick little landing page, then it can make a huge difference. Eric: Right. Jeremy: Even with that, another cool little thing to try just to get people’s minds, get it creative and going a little crazy, is one of the things—and I might do this for my next test, I’m not sure. I’m excited about the idea because I don’t remember seeing it before. You’re going to get an exclusive idea here. What I’m going to test now is “show me your sales funnel secrets” versus a big, huge call to action button that essentially has 30 or 40 words in it. It’s like, “Give me your secret that you’ve invested or that you’ve got over a million dollars worth of testing research under your belt. This is what you came up with;” something really, really long. Eric: Oh, nice, like a direct response order form button or kind of like “Yes, Eric, I’m ready to invest.” Jeremy: Yeah. Something like that, but in a button form on a regular landing page. Eric: Nice. Jeremy: To be honest, I have no idea if it’s going to work or not. It might bomb horribly. I have no idea. I’ve never seen that done before, so I’m going to do it. I, personally, think that it’s going to work, just because you have to read every word of that. Nobody’s ever seen that before, so the novelty of it, the newness and uniqueness of it. As soon as people hit that page, how do you not read that? Eric: Right. That’s going to be a button form, kind of thing, where they push it? Jeremy: Yeah. Eric: Yeah. I haven’t seen that done. Definitely let me know how that works out for you. That’s going to be interesting. Jeremy: I’m excited. Eric: That’s nice. I know what we’re talking about is once you’re doing the testing, they’ve come to your page or they’ve opted in. This is the thing, like you said, too, that you really work with clients with this, is building their sales funnels. If we could maybe dive into a little bit about how business owners can go out and find the holes currently in their funnels or if they’re starting out, how they can get that process at least started, to make it profitable from the jump. Jeremy: I’ll take that in two different ways. If you’re just starting up, what you want to do is—I’m going to try to make it as generally applicable to everybody listening. When you’re just starting up, let’s say that your order process is, somebody comes into your website, they buy and they get the thank you email saying, “Your order was successful,” and that’s it. It’s not really even a sales funnel, but it’s a way to get them in, I guess. What you want to do and most basic thing that I always try to get people to do is, number one, give away some type of value added thing. It could be a free report, a video, anything that gives value to the people that you’re trying to serve, to get them to essentially raise their hand and say, “Hey, I’m interested in what you’re selling.” You put them onto a prospect auto responder list. The point of that is to sell them your main product, whatever that is. After they buy your main product, you should have—I’m trying to think of a minimum here. I would say probably at least two other, either products or services. One thing is I always try to tell people, if you’re a service business, make sure you have product. If you’re a product business, make sure you have services. It’s really the only way to maximize your funnel and really find those hyper buyers in your list that are going to pay you for anything that you come out with. Eric: That’s a great point. Can I ask on a sidetrack, but related. Do you find that a lot of clients come to you from your products that you release or vice versa, they become your clients and then go after your products? Jeremy: Both actually. A pretty huge percentage of clients will buy a product, and then I hear from them three days later. It’s usually along those lines, for me personally. I mean, it’s different for everybody. My services are really expensive, in the four and five figures, so people want to make sure that I know what I’m talking about. I’ll get a lot of emails that say, “Hey, Jeremy, I just bought X product. Didn’t even go through it. I just wanted to make sure you were the real deal and you actually did what you said you did. That’s why I’m writing to you now and I want to talk about hiring you.” I get those emails all the time because I’m the sales funnel guy and people want to go through my process, and say, “Let’s see if the sales funnel guy has his own sales funnel.” Eric: Yeah. See if he’s just preaching there, exactly. Jeremy: I get a lot of those emails. I also get a lot of people that come in and they become clients or coaching students or whatever, and they want to learn more. These are mostly the business owners that they really love to learn. They just can’t get enough information, so they’ll be working with me as they’re going through my products. Eric: Right. Those are the best kind of clients, absolutely. Jeremy: Yeah. It’s kind of both. Eric: Nice. Sorry about that. I didn’t mean to get you sidetracked. I thought it was important to throw that out to the audiences that are trying to get some products. That’s a good way to bring in business as well. Jeremy: For everybody that has a service business. I’m doing this Facebook campaign. It’s giving away a free report, getting them into my funnel. I just had somebody, I think it was yesterday, where I looked at their—I like to look at the—I have office autopilot, I can see, somebody opted in for this and went to this page, and they filled out this form, so I can see the whole process of everything they did. Yeah, it’s pretty cool. It essentially tracks all the pages, and you can see the whole process that they went through. This happens all the time. This one is just one example. They opted in. They’re from Facebook, so they never heard of me before. They opted into the same landing page that I’ve been talking about. Three minutes after that, they went to my services page and read my service about building sales funnels and opted into that. They became a coaching prospect, I guess you could say, or a client prospect. It’s pretty cool. You get ancillary benefits of doing a lot of traffic. You should factor that in, by the way, to when you’re buying paid traffic. There’s always that little side shoe. If you’re selling products, there’s always a certain number of people that are going invest in your services and other products and things like that. Eric: Nice. Jeremy: I forget where I was going with that. Eric: I’m sorry. I threw you off. We were talking about, basically, with everything, that’s part of the funnel process obviously. Let’s say someone has an auto responder set up, someone has a product or services; is there common holes that you’ve found with clients that are maybe just leaking profits for them or something they could do to plug those holes up real quick? Jeremy: Yeah. That’s an interesting one. Holes in their funnels? It usually has to do with the frequency of communication. What that means is, essentially, a lot of people—and I mean, by a lot of people, I mean probably 90 plus percent of entrepreneurs—they’re kind of afraid of communicate with their prospects. Personally, I have a hard time understanding this. It might just be for me. I kind of got my chops reading J. Abraham and strategy preeminence where everything is just, you just start the relationship by adding value. That might be the reason for that. Everything I do, it starts with value. I don’t ever, ever expect anybody to do business with me before me providing them value first. The thing with communication is people are afraid they’re going to annoy their lists. It’s kind of bogus because they wouldn’t be doing business with you, they won’t be on your list unless they wanted to hear from you. If you have a weight loss website or if you’re a dentist and somebody signs up for your newsletter or whatever. They did that. It’s not like somebody is holding a gun to their head and they made them sign up for the newsletter. They did that because they want to hear from you. They want to hear about you, about what you do about how you can help them. About how you helped other people. To see you demonstrate your expertise so they can make a decision whether they should go with you or somebody else. The biggest hole when you’re building your funnel is, make sure that you’re communicating with your prospects as much as you possibly can. That includes auto responder sequences. It includes retargeting campaign, people who saw certain pages and didn’t buy what you have. You follow up with them with banners or Facebook ads, doing retargeting. You can do direct mail, emails, postcard, text messages, voice mails. There’s all kinds of stuff, but make sure that you are communicating with them frequently. Along with that, getting them in as risk free as possible. Usually start with whatever your lowest price product or service is and offer them that, get them into the buying cycle. It gets them used to spending money with you and then just constantly working on taking them up the ladder. Let’s just say right now you have a $37 product and a service that’s $97 a month, just for an example. Once you start getting people that are going to that $97 a month product or service, you should be thinking, what else? How can I add more value to these people and charge a higher price? Usually, that’s a “done for you” thing, or more of a step-by-step process. Coaching, you can do coaching in almost any business. Any business that you have. You want to make things faster or easier for people, and then get creative. Think of new products, new services, that you can charge more money for because there’s just a lot of people. There’s a certain percentage in every audience that will spend several times more money with you than you’re currently offering them. That’s a huge hole that I find in almost everybody’s funnel. They don’t have enough high priced, high ticket items. It really makes a huge, huge difference. If you’re selling $37 products and you have a $5,000 product, you only have to sell—or let’s just say for easy math, a $30 product and a $6,000 really high ticket thing. You have to sell 200 of the $30 products, for one of the $6,000 sales. Eric: Nice. Jeremy: If you’re selling 200 a month, you’re making $6,000 a month. You add in a $6,000 product and you sell one of those to one out of every 200 people, you’ve just doubled your business. It’s really, really important to have those high priced, high ticket offers in there. It really can do some pretty amazing things to your bottom line. A lot of times, if they are services or something like that, they’re higher profit too. Your profit margin is, typically at least, if it’s one-on-one coaching or something like that. Your profit margin is pretty huge. Eric: Right. Are you a big fan of the marketing ladder? Say, moving people up from the $39 e-book or product all the way up to the “done for you” services, et cetera? Jeremy: Yeah, absolutely. I actually have tomorrow and Friday, we’re recording this on a Wednesday, tomorrow, Thursday and Friday, I have back-to-back in-person, full day consultations with a client. Eric: Nice. Jeremy: It’s $3,000 a day, so it’s $6,000 in two days. That’s essentially, for me, an upsell from my typical monthly coaching program. It’s essentially doing several months in advance, doing it in one or two days. It’s a way to do everything faster for people. It’s very, very profitable doing that. Definitely, because people want to spend more money with you, it’s just a matter of showing them the value. It really all comes back down to value. I could go out there and have $100,000 coaching program, but if I can’t show people that they’re going to make $500,000 or $1 million, then nobody is going to buy it. You have to find out how much value you can provide to people and then charge accordingly. Eric: That makes sense. I guess what you said before, and I wanted to ask you about this, I know you’ve said before the truth about price; what the main reason people really buy your product or services is? Jeremy: Yeah. A lot of people think that people buy based off price. In some cases, it’s true. Sometimes people literally just don’t have the money to pay you. I was talking to someone who desperately wanted to join my coaching program, but she couldn’t afford it because she was going month to month and she could barely even put food on the table. I was like, “Listen, don’t even.” She wanted to join, she’s like, “No, no, I’ll sell something,” or whatever. I said, “Listen, I’m not comfortable enough. If this doesn’t work, you literally can’t feed yourself. I just can’t live with that.” I guess that’s a good demonstration of my sales funnel selling her on my coaching program. It’s the same way with your sales funnel. You want to make sure that people understand the value that you’re providing them. That’s what it really comes down to. In most cases, like in 90 percent of cases, it’s not that something is too expensive. It’s that they don’t see that the value you’re providing is more than the prices they’re paying. If you’re offering, we’ll go to health, just because it’s easy and it’s relatable. Say it’s $97. If you don’t show the value is worth more than $97, then people aren’t going to buy. Whereas, if you show them that its worth $197, $297, $997, whatever it is, then people are more likely to buy on the higher you show that value, then the bigger gap between your price and the value. Obviously, with the value being higher, the higher your sales are going to be. That’s what copywriters do is, essentially, bring out that value and show the benefits and overcome the objections. That’s why operating it is so important, because when you really boil it down, that’s what we’re doing, is bringing out and showing people why they’re paying X dollars, but the value is X dollars times five, ten or twenty or whatever. Eric: Yeah. Like you’re saying, it doesn’t really have to be what you’re adding to it, you just have to raise the perceived value and that will raise the prices. Maybe a tip you give someone to raise the perceived value without adding more to their product or service or their widget? Jeremy: Yeah. That’s a good question. First of all, before I even get into that, raising your prices is probably the best and fastest way to grow your business. Eric: Right. Jeremy: I wish I could just get paid for saying, “Raise your price.” Because you can go into a million dollar business and say, “Raise your price ten percent,” and they can increase their profit by $100,000. If your margins are low, the lower your profit margin, the more you raise your price, the higher that multiple is. I can’t really do any examples off the top of my head because there’s a lot of math involved. Just basically, before I get into how to raise your perceived value so you can raise prices, make it a point to do a split test and raise your prices. If you’re nervous about it, I know a lot of people are, that’s totally fine. If you’ve never done it before, don’t be worried about being nervous about. Do it at 5 percent or 10 percent or something like that. If you think about it, if you’re selling something for $897 and you go to $997, that’s ten percent higher. People really aren’t going to notice that difference. If you go from $9 to $9.90, that would be 10 percent. People aren’t going to notice that. If you want to do that, number one, is if you can just price test and see if people will pay a higher price. A lot of times you’ll see that you can go up to 20 percent without changing anything about the offer and your conversions stay the same. Sometimes, not too often, but sometimes you’ll actually increase your conversions because sometimes people, if you have too much value and your price is too low, it’s actually one of those scenarios, where people are like, “That can’t be real. There must be something about this. That’s just wrong.” Eric: That’s a great point. That happens all the time because speaking in the marketing ladder a lot of times with a client I’ll do an SEO. From there, go onto the marketing and the copywriting because they need that afterwards, before or during. A lot of clients, a lot of packages, the price, they just couldn’t believe that’s what I was offering. I had a lot of skeptical people because they were coming from other companies that had ripped them off or had bad experiences with them. That’s a great point, sometimes people just don’t believe it if it sounds too good to be true. Jeremy: Yeah, people are skeptical. You kind of have to think as a consumer. Take your mind out of being a business owner. As a consumer, you have this natural sense of what a price should be. You can probably look at things and just line ten items up. You could probably get within 20 or 30 percent of that actually price, just by guessing at what the price would be. We kind of just have that internal filter of what a price should be. If you’re out of that range, people’s flags go up and they’re like, “Wait, something is not right here.” They get that gut feeling that just something is just not adding up. The conclusion they come to is, “Well, they must be lying.” Eric: Right. Jeremy: Going back to the raising perceived value. There’s a lot of different ways to do it. Number one is improve your copy. If you’re trying to do the copy yourself, hire a good copywriter, not somebody from elance or not somebody for $500 for a sales letter; unless you’re just starting and you really just don’t have money. It’s better than nothing. If you have a relatively successful business, number one, is hiring a copywriter or learning copy yourself. Then get some courses and learn how to write really good copy because, like I said, you learn to overcome objections. You learn to gain attention from people. You learn to develop interests and get them engaged in the copy to really showcase the benefits of your product or service. Number one is write better copy. Number two, is show your personality. That’s actually one thing that most people don’t really think of, but I’ve made a big, big shift in the last year, because I see a huge trend in going towards personality and transparency. If you follow my emails, you’ll see how personal I am. I’m always telling stories about my wife and my kids and stupid things that I’m doing, like last weekend I jumped into an ice pond for a polar plunge. It was for charity. I like to talk about that. One guy actually wrote back and told me I had a death wish. It was fun, talking about that stuff. It’s just me being me. You can’t be fake anymore. You have to just be whoever you are. If you’re a big flamboyant really off the wall character, and you’re really loud and obnoxious, then just be that. If you’re kind of quiet, shy and reserved, be that person. You can’t really fake it anymore with social media and all that kind of stuff. Number two is be yourself. Usually that’s done either through emails or videos. In case you’re wondering in your head, “Wait how does that increase perceived value of your product or service?” That really doesn’t increase the value of the product or service. It increases the value of you and the relationship that they have with you. It all starts with a relationship. They have to trust you if you’re selling something. If they don’t trust you, you could be giving away bars of gold for $1 and nobody is going to buy it, because they think you’re lying. That’s number two is build trust by being yourself, being personal, telling stories, and that kind of thing. Another thing you could do is add bonuses. Add whatever your product is, whatever your service, add little extras, little bonuses. If you’re selling an information product, you can have bonuses on little extra videos or how to get faster results; how to get better results with this certain technique or whatever. That’s one that probably most people know. Another thing, make it better risk reversal. Have better guarantees. You could have longer guarantees. You could have conditional guarantees, like a money back guarantee if they can prove that they went through your program or did your service or whatever and they didn’t get the results, then they can double you money back guarantee; something that takes the risk off that person and puts it on you. Another thing you can do is establish—juxtapose your product or service with somebody with an industry leader that they already trust. You can kind of borrow that credibility. For example, you have a course and you’re selling information. It really doesn’t matter. It could be a service, course, whatever it is. If you somehow involve either something in your industry or a celebrity or somebody like that and you kind of juxtapose, which essentially means you tie it into your product, then that increases the value because you get that borrowed credibility. Those are a couple ways to help increase your perceived value. The easiest way is probably better copy, I would say. Eric: Right. I agree. I always say this, but I think copy marketing and sales are the most important skills. The better the marketing, the easier the sales process and copywriting and salesmanship tie together. Jeremy: Yeah. Absolutely. Eric: Nice. One thing I want to ask you, not only to provide value for the audience, but selfishly, as well, I guess I should say. I’m coming out with a new course here. This is about product launching. Is there steps that you, personally, do when you work with clients or start off your launches on the right track? Is there something that you could do or suggest to people? Jeremy: I’ll let you take most of the credit for the product launch stuff. I don’t want to jump on your toes too much. I’ll give one recommendation that reverberates through the whole product launch sequence, and that is, proof. Proof is just everything. When I was launching the funnel formula, which is my flagship product that teaches you how to build sales funnels. When I did that launch to my own list, I didn’t do affiliates and all that kinds of stuff. That’s just too annoying for me. One of the things, I just focused on proof, proof, proof. Every single email that went out, every piece of communication that went out had some type, at least one piece of proof in it; whether it was a result that I got for a client, whether it was case study from a client, or an example of what happened when a client or me built the sales funnel or added a piece of the sales funnel. Telling them things they didn’t know, like, “Hey, in module three, there’s a really cool tip that let’s you do X.” That’s a style of proof, everywhere from there or telling about my past results. I did something that I was a little bit nervous of, but during my launch, and it really only works for selling to marketing people. I’ll give you an example of how you can use it in another niche. What I did was during my launch, I did it—I can’t even remember the dates. It might have been Monday through Friday, I forget. Throughout the week, I was telling my audience and giving them proof on how sales funnels worked, based on giving them numbers of my own sales funnel and how that launch was going. Eric: Nice, so a play-by-play of your launch. Jeremy: Exactly. I had screenshots. I said, “Hey, look, I would have made X dollars if I didn’t have this sales funnel in place.” I didn’t actually say dollars, I just did percentage. It was something like, “I made an extra,” I forgot what it turned out to be. It was something like, 33 percent of my sales were from selling the main product, and 66 percent of my sales came from the sales funnel, after they bought that first product. I said, “Look, I would have been leaving 66 percent of the money I made on the table if I didn’t have this sales funnel.” That was huge. I actually showed even more proof. I showed a screenshot from inside my office autopilot, which is my CRM, so they could see what I was talking about. One thing that you can do, let’s just go back to weight loss. That one is easy. If you’re selling a weight loss course, you can say, maybe you did a two week launch. You could say, “Somebody bought this on the first day, four days later, they’re already down eight pounds. This other person bought it and within two days, they were down five pounds.” Throughout the launch, you can talk about the results that people are getting since the launch started, results that people have done in the past. You could even do things like with scarcity, with deadlines and scarcity. Saying, “We only have 50 left and there are 20,000 people waiting on the list. They’re waiting for the cart to open. Make sure you get there as soon as I tell you it’s open, because there’s going to be 20,000 people that are going to buy this product.” You can do scarcity like that. Make sure you don’t lie. I hate when people lie in marketing. Eric: That’s a good point. My last course I did that too. It was a higher price course. What I did with the list that was on the list for that course was scarcity and social proof. I would literally list the people. I would say, “Jason from California invested today.” I listed the people’s first name and the state they were from of who invested that day during that launch process as social proof as well. I never really tested that, to be honest with you, against not doing that. When I did that, the results seemed to be more dramatic then when I did this before without doing that added factor. Jeremy: That’s one of those things that it’s a given that it’s going to do better. Hopefully, that helps with product launches. Eric: Nice. That’s beautiful. Just to clarify, I don’t know if you misunderstood. My course, it has nothing to do with product launches, but as this launched a new course or product. I know you actually worked with that, but my audience at the end, we’ll give out Jeremy’s website at the end. If you do have a product launch, you can talk to Jeremy as well. Jeremy: I thought you were having a course about product launches? Eric: No. It’s going to be a full marketing strategy, sales copy, the good stuff. Before we wrap it up today, because you shared a lot of good value and I definitely want to thank you for coming on. I know a lot of business owners and entrepreneurs listening may have a continuity service or maybe a continuity or monthly program, or maybe they’re even thinking about starting one, which could be very profitable. Can you share a tip or two before we leave today on how they can increase their retention rates? Some way to make their customers stick with them longer. Jeremy: Yeah. Let me throw out three different things. Number one is one of the things that I really love to do. Again, everything all goes back to value. As soon as they buy something, this is especially true with a continuity program, but it’s also true with any service, any product. I put people into what I call a “personal coach campaign.” Somebody buys one of my products and for the next, roughly 30 days, it depends, but roughly 30 days; they get emails specifically based on that product. The point of that is to get them to consume the product, not eat the product, you know, consume the product. Eric: Right. Jeremy: I guess it could be to eat the product, if you’re selling some kind of food. Eric: That’s awesome. That’s motivating them at the same time you’re there for them, right, supporting them? Jeremy: Yeah. There’s a couple things that it does. It establishes a relationship with them. You already have a relationship with them because they trust you enough to buy your product. A lot of people have buyer’s remorse. They’re kind of like, “Oh, God, I shouldn’t have bought it. Now I’m going to have to return this.” They think that a lot of business owners don’t care. They’re just in it for the sale. If you have a full 30 days of emails or could be a mix of emails, videos, whatever you want to do with it, the media. It really shows people that you care about them. You should care about them, regardless if it increases retention rates or anything like that. You should do this anyway because you care about your customers. The side benefit is that it increase retention rates, reduces refunds, because it establishes and builds that relationship. It all comes down to value and relationship. That’s one thing that, everything revolves around that. That’s one thing is to have a personal coach campaign. It’s just easy. They could be quick, just to say, “I really appreciate that you bought it. I want you to know that I’m here for you. I actually care about you and hope that you get the results that you’re looking for.” It’s not just like, “Hey, thanks for your money. See ya,” and you never talk to them again; which is what most people do. It’s rare that I get emails, maybe out of all the product I’ve ever bought in my entire life, I could probably count on one hand how many campaigns like that that I’ve ever gotten. You stick out like crazy, if you do that. Eric: Great. Jeremy: Number two … I’m sorry. Eric: I just said that’s great. That’s fantastic. I haven’t seen, like you said, I’ve really never seen it. I can’t think of any product or service that I’ve bought where there’s been an ongoing campaign like that. Jeremy: Yeah. For some people, it’s that they really don’t care. They just want your money. For others, they just haven’t thought about it yet. The second thing is send out some type of email. It could be anything. It could be a salesman calling them, a customer support person. It could be a postcard, letter, text message, whatever media you want to use. Essentially, do a stick letter. In direct mail, they do stick letter. That is kind of close to a personal coach campaign, but it’s just one piece, where you just thank them for the order. If there’s any membership details, you can put that in there. Just reassure them that it was a good purchase. They’re going to get value out of it. maybe add a little tip in there to help them get more value out of whatever they just bought, and then sell them another product. Eric: Absolutely. That’s a fabulous way to get your back end going. Jeremy: Yeah. The product should be, if you’re selling a supplement for, let’s just go back to weight loss again. If you’re selling something for weight loss, you can’t sell them a supplement for getting rid of toe fungus or something like that, because there’s no congruency there. Whatever it is, it has to be really congruent, and really make sense to add more value to take whatever results they’re going to get and take them to a new level. That’s the second one, send a stick letter. The third one, I just had it in my mind. The first one is the personal coach campaign. The second one is a stick letter. Third one, another thing you can do for retention rates is get people—this is kind of a mental type of thing. Get people to give you testimonials. You may not have really heard this before, I’m not sure. If you can get somebody to give you a testimonial and cement that idea in their mind that they love this product, it’s helping them. Who do you know that’s going to give somebody a testimonial and ask for a refund? Know what I mean? You can do this in your personal coaching campaign. If you do a campaign and get them to commit to doing business with you and to admit that you’re helping them and you’re doing a good job for them, they’re probably not going to ask for a refund. They’re going to stay with you longer. A fourth bonus thing that goes in with the stick letter is keep selling them additional products. Keep selling them additional services, because as they go down the rabbit hole with you, they’re going to get more attached to doing business with you. The more they spend with you, the less likely they are to ever leave you because you’re now their knight in shining armor that’s helping them fix whatever problem their trying to solve. Eric: Fantastic. Absolutely. That’s great. This has been awesome, Jeremy. I definitely want to thank you. You shared a lot of fantastic value, great value share here. I want to thank you for coming on the tenth episode here of The Fast Easy Success Marketing Insider. Before everyone goes out and dives in on all the tips and takes action on everything we talked about, can you tell the listeners where they can learn more about you, check you out? Jeremy: Two things, pretty easy. My name is Jeremy Reeves. I’ll tell you why I’m saying this in a second. You spell it J-E-R-E-M-Y R-E-E-V-E-S. The reason that I’m spelling it out is because the number one thing that I would recommend is just going on my website, www.JeremyReeves.com. On there, you can see whatever you want. I have free stuff on there. There should be a popup that comes up and gives you a free report up in the navigation bar, there’s a resources section that says “free” on it. There’s different things that you can opt-in to and get a whole bunch of free stuff, interviews and reports and videos and all kinds of stuff. The other thing is I have my own podcast. It’s called, Sales Funnel Mastery. Go into iTunes or whatever you listen to and do a search for that. You can follow me on my podcast. I do a lot of short sections, where I usually cover a single topic in five, ten, fifteen minutes, something like that. Little tidbits of strategy and stuff like that. Those are the two things, www.JeremyReeves.com for my website. If you want to look at any of the free products I have, free services or whatever is right for you, or check out Sales Funnel Mastery. That’s my podcast. Eric: Nice. I was telling Jeremy before the show, I checked out his podcast yesterday. I definitely recommend everybody check out there, and definitely his site. You get some good value. I recommend it. It’s definitely worth it. Jeremy, wow, it’s been an absolutely pleasure with you. Thank you for taking the time and sharing everything with the listeners. All you listeners out there, I hope you enjoyed the show and most importantly, take action on everything Jeremy and I talked about today. Before we go, if you guys could do me two quick favors, I’d really appreciate it. Simply hit that subscribe button, so you don’t miss out on a future business boosting podcast. If you stuck around this far, you obviously enjoyed the value share. Make sure you do those reviews and comments. I need your help in getting noticed and getting the value out to more people. I’m your host Eric Barton, a result specialist, signing out today. We’ll see you next week for another fast easy success marketing insider. Here’s to your success. It’s Jeremy back here again. I really hope you enjoyed that interview. For more information on this podcast and everything like that. A couple things, make sure that you’re subscribed to this podcast to make sure you’re getting every episode. This is the kind of stuff that I cover, everything that we went over in that interview; just really, really solid, insightful strategies for building your business. Make sure that you’re telling friends about the podcast, we can get the rankings up there and get the word out to everybody. Make sure that you’re leaving reviews and clicking the little stars; especially, in iTunes. That helps me boost the rankings and get more attention so everybody else can benefit from this. That’s pretty much it. I will see you at www.JeremyReeves.com. I really hope you enjoyed this. Thanks.