POPULARITY
What if I told you that there was a super simple and effective way to DOUBLE your daily downloads that you are seeing with your podcast? Interested??? Check out episode 110 of Podcasting Business School as my friend Scott Johnson teaches us how to use three variations of show promo swaps that will explode your download numbers. Connect with Scott: https://WhatWasThatLike.com Want to be a guest on the show?? I'm looking for business minded podcasters that want to do FREE Podcast Audit strategy session interviews. Get signed up: www.PodcastingBusiness.School
• PRE POTPOURRI. We speak on what has been an especially heavy week for Black people (5:55). • MUSIC POTPOURRI. R.I.P. Houdini, as a local Toronto newspaper does all kinds of disrespect (16:07). DMX vs Lloyd Banks or Tony Yayo (20:37)? Waka Flocka Flame dedicates his life to mental health (24:26). Keep It Or Leak It; Kevin Hart wants to make the black Harlem Nights, Travis Scott with Rodeo 2 (30:00). We got Shoutouts: Fivio Foreign for launching his Non-Profit Organization and the GLTTTTTTT movement, Future for having the 4th most Billboard 100 entries ever (36:27). New Music Report (44:13): Lil Yachty (49:26), Freddie Gibbs x Alchemist (52:17), and much more. Finally we ask; What’s In Your Rotation (1:04:25)? • POST POTPOURRI. Black Podcasting Awards by Perky Perspectives Podcast, continued discussion on the importance of Black lives and the movement going on right before our eyes, Tik Tok, Hill Harper, Kylie Jenner x Forbes, Rihanna (1:11:39). Find us on Twitter/Instagram/Youtube @truenorthviews. Find us on Facebook @truenorthviewspodcast. Search ‘True North Views Podcast’ on Apple Podcasts, Spotify, Pandora, or wherever you listen to podcasts to subscribe today. More info about the Black Podcasting Awards: The first ever Black Podcasting Awards is coming to you live on September 27th. The first ever of its kind and platform for black podcasters around the world to come together to let everyone know what's up. Got a comedy show? A show on mental health. A show about black culture and your take on it? Then they want you! Nominations open up in early June with 20 unique categories that you can enter into! Interested? Check them out on Twitter/Instagram @blackpodawards and sign up for their mailing list to be kept in the know at www.blackpodawards.com WE DO NOT OWN THE RIGHTS TO ANY OF THE MUSIC THAT WE PLAY FOR REVIEW PURPOSES. WE DO NOT OWN THE RIGHTS TO ANY IMAGERY THAT IS NOT OUR OWN This podcast is powered by Pinecast.
The cultists are in pursuit as Akiva, Belinda, Nissa, and Scriv make their daring escape through Mandeville! Akiva discovers a new power, while Scriv charges ahead to warn the town of the impending undead invasion. Creator Corner Today we are highlighting one of our favorite creators, Jeremy Kleinhans, dungeon master of the Midnight Kingdoms podcast. We knew Jeremy and were proud to call him our friend even before we met in person for the first time at Gen Con last year. His creativity and commitment to his craft bring such joy to our community. Enjoy the latest promo for his show, and look for Midnight Kingdoms everywhere podcasts are found! Interested? Check out his work! Website/Blog: midnightkingdoms.com Twitter: @MdnghtKngdms / @jrmydklnhns Contact Us Special thanks to our Patreon Supporter Johnny Torres for serving as producer on this episode! Want access to behind the scenes content, unreleased outtakes, and adding to the story? We would be thrilled if you support us on Patreon! Twitter:@RulesAsWritten Email: dm@dndraw.com Discord: Chat with us! Darkest Child A by Kevin MacLeod is licensed under a Creative Commons Attribution license Source Artist Twisting " by Kevin MacLeod is licensed under a Creative Commons Attribution license Source "Darkling" by Kevin MacLeod is licensed under a Creative Commons Attribution license Source "Morgana Rides " by Kevin MacLeod is licensed under a Creative Commons Attribution license Source "Intrepid" by Kevin MacLeod is licensed under a Creative Commons Attribution license Source "Hush" by Kevin MacLeod is licensed under a Creative Commons Attribution license Source
Getting referrals is one of the cheapest and best ways to grow your company. However many entrepreneurs struggle in getting them or could be getting more and growing faster! Today we discuss how to get more referrals from happy customers. We talk about how to do it totally free for all our startups and those in the bootstrap phase. We also discuss how much more effective a referral system can be and what you should expect when paying. For my bootstrapping crowd looking to do it for free we discuss this in the first 3 minutes and then you can move on to another one of our amazing podcasts :-) For those listeners who are looking to step up their referral game "full disclosure" we do talk about our referral system we built as the example of what you should expect and that's because we are proud of the fact that we looked at the referral system market and built something that filled the holes the other systems have. Instead of putting your clients on the spot and having them try to think of which one of their friends could use your service, let their friends decide! Interested? Check out the podcast :-)
The roller coaster continues this week with Adrianne and Jillian. We’ve got another hour of loops, corkscrews, turns and mega-dives - all conversational, of course. They talk about a million more things related to nursing and school. Some of those things include:Rallying your team and keeping goals in your sight.Failing isn’t the end of the road.How to speak up as a new nurse.Not needing to know everything right now.Dealing with anxiety, fear, and doubt.….and this stew of topics is peppered with humor and curse words to keep it interesting. We can’t wait to hear more from Jillian as she approaches and conquers the NCLEX. ----------------------------------This episode is sponsored by Trusted Health.Trusted health is a company built by nurses, for nurses to help travelers connect with great job opportunities efficiently and with transparency.They’ve replaced the traditional job search and staffing approach with an intelligent matching platform -- empowering nurses to discover opportunities that fit their unique experiences, preferences, and goals. Instead of a commission-based recruiter, they use Nurse Advocates -- nurses just like you (some of whom have even traveled!) who work commission-free. Because they’re all commission-free, their goal isn’t to get nurses into any open jobs; instead, they focus on connecting each of their nurses to the travel assignments they want and supporting them every step of the way - before, during, and after their assignment! And just in case you’re wondering, Trusted Health comes right out and says it: no, they won’t hound you with phone calls and emails about jobs that you’re not interested in. Just the information you want, when you want it. Interested? Check them out at www.trustedhealth.com/uncensored. Fill out some basic information about your preferences and qualifications, and you can get started viewing job matches personalized for you in minutes! Join Trusted - they’re not just an agency; they’re a movement. ---------------------------------------Want more nursing-related content?
Hi and welcome back to Weekly Dev Tips. I’m your host Steve Smith, aka Ardalis.This is episode 57, on the Dependency Inversion principle.Dependency Inversion PrincipleThis week's tip is brought to you by devBetter.com.Sponsor - devBetter Group Career Coaching for DevelopersNeed to level up your career? Looking for a mentor or a the support of some motivated, tech-savvy peers? devBetter is a group coaching program I started last year. We meet for weekly group Q&A sessions and have an ongoing private Slack channel the rest of the week. I offer advice, networking opportunities, coding exercises, marketing and branding tips, and occasional assignments to help members improve. Interested? Check it out at devBetter.com.Show Notes / TranscriptOk, now we've reached the last and in my opinion the most important of the SOLID principles, D for Dependency Inversion. The Dependency Inversion Principle, or DIP for short, has a longer definition that most of the other principles and is often conflated with the related coding technique, dependency inversion, or DI. The principle states that High-level modules should not depend on low-level modules. Both should depend on abstractions (interfaces or abstract types). and further, Abstractions should not depend on details. Details (concrete implementations) should depend on abstractions.Let's look quickly at each of these two parts. The first part talks about high level and low level modules. The "level" of a module has to do with how near or far it is from some kind of I/O device. That could be the user interface or it could be a local file or a database server. Low level modules deal directly with these kinds of I/O devices or destinations. High level modules do not know about or deal with specific kinds of I/O. These are things like business logic classes and behavior that model how a system works. In many systems that don't use abstractions, high level modules depend on low level modules, or the high level logic is mixed in with low level concerns in the same modules. Both of these approaches violate the Dependency Inversion Principle. Instead, these modules should communicate with one another using abstractions like C# or Java interfaces. Both kinds of modules would depend on a common interface, typically with the low level module implementing the interface and the high level module calling it.The second part suggests that abstractions - interfaces typically - should not depend on details. So an example of this would be if you had an interface for fetching information about a customer. One approach would be to write the interface so that it returned a SqlDataReader as its return type, where the data reader had the customer info. This exposes the details of how the data is stored, since you would only use a SqlDataReader to fetch the data from a SQL database. One benefit of following the Dependency Inversion principle is modularity. You could change that interface to return a simple List type and that List could come from any number of storage locations, from databases, to files to in-memory stores or web APIs. So, that covers how abstractions should not depend on details - what about the last bit that says details should depend on abstractions? That's talking about your low-level modules that actually communicate with I/O. These should depend on your interfaces by implementing them.If you're build a system composed of multiple projects it can be extremely difficult to follow the Dependency Inversion principle if you don't structure your project dependencies appropriately. This means ensuring that your abstractions - your interfaces - live in a project alongside your business model entities and that your implementation details live in another project that references this one. I have a GitHub repository and solution template called Clean Architecture that you can use as a starting point for new ASP.NET Core applications that need to follow SOLID principles and use clean architecture. You'll find a link to it in the show notes or just google ardalis clean architecture.A key benefit of Clean Architecture that is enabled by following the Dependency Inversion Principle is that your business model has no dependencies on external infrastructure concerns. These dependencies are a huge part of why legacy codebases are often difficult or impossible to write unit tests for. By keeping these dependencies separate and in their own project that other projects do not depend upon, it makes it much easier to unit test the most important part of your application: its business domain model. I talk more about this in my DDD Fundamentals course with Julie Lerman on Pluralsight if you want to see this in action. You can also check out the eShopOnWeb reference application that I built for Microsoft and its companion book, Architecting Modern Web Applications with ASP.NET Core and Microsoft Azure.Show Resources and LinksdevBetterClean Architecture on GitHubSOLID Principles for C# DevelopersSOLID Principles of Object Oriented Design -and the DRY PrincipleDDD FundamentalseShopOnWeb Reference ApplicationThat’s it for this week. If you want to hear more from me, go to ardalis.com/tips to sign up for a free tip in your inbox every Wednesday. I'm also streaming programming topics on twitch.tv/ardalis most Fridays at noon Eastern Time. Thank you for subscribing to Weekly Dev Tips, and I'll see you next week with another great developer tip.
Hi and welcome back to Weekly Dev Tips. I’m your host Steve Smith, aka Ardalis. This is episode 56, on the importance of having a simple way to build, test, and run your application locally. One Step Build Test Run This week's tip is brought to you by devBetter.com. Sponsor - devBetter Group Career Coaching for Developers Need to level up your career? Looking for a mentor or a the support of some motivated, tech-savvy peers? devBetter is a group coaching program I started last year. We meet weekly for group Q&A sessions and have an ongoing private Slack channel the rest of the week. I offer advice, networking opportunities, coding exercises, marketing and branding tips, and occasional assignments to help members improve. Interested? Check it out at devBetter.com. Show Notes / Transcript I've worked on a lot of projects for a lot of different companies and teams. One thing that dramatically increases the friction of becoming productive on a project is the number of manual and often undocumented steps required to take a new developer on a new machine and get them up and running the application from its source code locally. A lot of the time the developers on the team don't even recognize this as an issue because they've all been there long enough that they've absorbed the knowledge that's been passed down through shared oral history since the ancient times. But new developers, and especially new developers on distributed teams, weren't there last week when someone said "Oh yeah, I changed this thing so now you have to install this tool before you run the app on your machine". They don't just magically know the arcane command line scripts that must be run from 4 different nested subfolders of the application's source code in order to get the system up and running. As soon as you have one new remote team member, it exposes all the implicit knowledge-sharing and manual steps that have taken root in the team's processes and, hopefully, forces the team to make these steps explicit and then to automate them as much as possible. Simple projects don't require much, if any, documentation or automation. If you have an application that is so simple that any new developer can pull it down from source, use the default compilation step for the platform, like dotnet run for .NET Core or F5 for a Visual Studio-based solution, then you may not need any more documentation or automation than that. But when it's not that simple, you'll make everybody's life easier if you document and automate the steps. Documentation should be first, since it just makes the steps explicit, and sometimes automation can be difficult to achieve, especially if you need it to work across different operating systems. This is getting easier, though. Once you have the steps documented, you should strive to automate them to the point where common tasks are a single step. Ideally you want a One Step Build Test Run script that does all of these things: builds the app, runs tests against it, runs the app. But before we get that far, let's talk about how to document the process a bit more. Today, GitHub has become the standard for open source software projects. And GitHub has essentially codified the standard that projects should have README.md files in their root that describe what the project is. Even if you're not hosting your application's code on GitHub, it's a good guess that your dev team has looked at projects on GitHub and is familiar with this convention. Thus, purely from a discoverability standpoint, the best place to put important steps for building and running your app is in its README file in the root of the repo. If you have a lot of repositories that all use the same steps and you don't want that duplication, then put a link to the shared docs into each README. What about wikis? Wikis are less discoverable. They're not right there in your face when you hit the home page of a repo, and they're not right there with your code when you're looking at the source in your favorite editor like a README file is. You can put more detailed documentation and steps into a wiki if you like, but to make it discoverable you should put links to it in the README file. If you use some CMS system or project management system the answer's the same - use the README as the place to include the links to the relevant information so new team members don't have to try and find it themselves. HTML supports hyperlinks for a reason. Probably the worst thing you can do in documenting your local build/test/run process is to start by putting it in the README file and then later decide to put the process in a wiki or another location, but not update the README. This will cause team members to use the README and not discover the new location, wasting lots of their time. Bad information is worse than no information. Put a link to the new process documentation location in the README. Show Resources and Links devBetter Really old blog post on one-click builds That’s it for this week. If you want to hear more from me, go to ardalis.com/tips to sign up for a free tip in your inbox every Wednesday. I'm also streaming programming topics on twitch.tv/ardalis most Fridays at noon Eastern Time. Thank you for subscribing to Weekly Dev Tips, and I'll see you next week with another great developer tip.
Hi and welcome back to Weekly Dev Tips. I’m your host Steve Smith, aka Ardalis. This is episode 54, on customizing key bindings in Visual Studio with guest Kendra Havens. Customize Key Mappings with Kendra Havens This week's tip is brought to you by devBetter.com. Sponsor - devBetter Group Career Coaching for Developers Need to level up your career? Looking for a mentor or a the support of some motivated, tech-savvy peers? devBetter is a group coaching program I started last year. We meet for weekly group Q&A sessions and have an ongoing private Slack channel the rest of the week. I offer advice, networking opportunities, coding exercises, marketing and branding tips, and occasional assignments to help members improve. Interested? Check it out at devBetter.com. Show Notes / Transcript This week's guest tip is from Kendra Havens. Kendra is a program manager at Microsoft on the .NET and Visual Studio team, where she focuses on the Visual Studio testing experience and productivity tools. She does videos on .NET, VS Code, and Docker and is a frequent conference presenter as well. In fact, we last met up at a recent DevIntersection conference where we were both presenting, and I invited her to share a favorite tip on the podcast. The nature of describing a visual tool in a podcast is challenging, so I have a link to a video in the show notes if you want to follow up afterward. Welcome, Kendra! Thanks, Kendra! I'll post a link to a video showing how to do this in the show notes for anyone that wants to see it. Show Resources and Links devBetter Kendra on Twitter Visual Studio Productivity Tips - Keyboard Command Mapping That’s it for this week. If you want to hear more from me, go to ardalis.com/tips to sign up for a free tip in your inbox every Wednesday. I'm also streaming programming topics on twitch.tv/ardalis most Fridays at noon Eastern Time. Thank you for subscribing to Weekly Dev Tips, and I'll see you next week with another great developer tip.
Hi and welcome back to Weekly Dev Tips. I’m your host Steve Smith, aka Ardalis. This is episode 53, on the Liskov Substitution principle. Liskov Substitution Principle This week's tip is brought to you by devBetter.com. Sponsor - devBetter Group Career Coaching for Developers Need to level up your career? Looking for a mentor or a the support of some motivated, tech-savvy peers? devBetter is a group coaching program I started last year. We meet for weekly group Q&A sessions and have an ongoing private Slack channel the rest of the week. I offer advice, networking opportunities, coding exercises, marketing and branding tips, and occasional assignments to help members improve. Interested? Check it out at devBetter.com. Show Notes / Transcript We're in the middle of the SOLID principles this week, with the only one who is named after an individual. The Liskov Substitution Principle is named for professor Barbara Liskov, who teaches computer science at MIT. She gave a conference keynote some years ago in which she defined substitutability in object-oriented systems, essentially stating that one type could be considered substitutable for another if there were no situations in which the original type worked but the new one did not. The typical definition used today is that subtypes should always be substitutable for their base types. If this isn't the case, it likely means you have the wrong inheritance relationship, or your interface isn't cohesive enough, or there is some other code smell you should consider addressing through refactoring. So, although it isn't mentioned in the name, LSP is all about inheritance hierarchies. That's the first thing to remember. Many developers, myself included, learned about inheritance with the aid of the IS-A relationship. That is, you can consider using inheritance to model a problem if there are two related concepts and one IS-A more specific version of the other. You might have a Car class, with an SUV subclass. Or an Animal class with a Mammal subclass. These work because an SUV is a car and a mammal is an animal. Sometimes, though, you might have an IS-A relationship, but it's not sufficient and it leads you down the wrong OO design path. The classic geometry examples involve squares and rectangles and circles and ellipses. A square is a rectangle; a circle is an ellipse. But take care if you try and use inheritance to model them, since depending on how you do so you could introduce breaking changes into your application. Imagine if you have applications using your Rectangle type that assume they can independently set the height and width of the rectangle. Then someone introduces the Square type that inherits from Rectangle and implements height and width properties so that setting either one will set the other, too. This ensure the resulting type is always a square. But it also means that a method that takes in a rectangle and modifies its height and width to different values will break, because the first value set will be silently overwritten by the second. Another classic example involves birds. What if your base bird type includes methods like Fly and properties like Altitude? Then, someone introduces subtypes for Ostrich and Penguin. Trying to substitute these in to methods that expect certain behaviors from Fly and Altitude is likely to cause problems. The problem here is that the initial assumption that all birds can fly was inherently flawed. In business software, we don't usually worry about birds or squares, but we often model things like policies, accounts, orders, etc. and often there are different varieties of these concepts. You'll know when you're violating LSP when you see code that shouldn't care about the specific variety of something, but has to run a type check to do its work properly. A method takes in an Account, and then checks to see if Account Is PremiumAccount, for instance. This signals an LSP violation, and can usually be corrected with a refactoring that shifts behavior up or down the inheritance tree. Pretty much the only place where you might have a conditional on the specific type of an instance of a class is in a factory method that's responsible for creating that specific type. Otherwise, the Replace Conditional with Polymorphism refactoring is your friend. Use it to eliminate excessive conditional logic from your code by making proper use of inheritance in your object model. Obviously examples of these principles are tougher to describe in a podcast than in video, so to see them in action check out my courses on Pluralsight on the SOLID principles. I just produced a revised course for 2019, but my original SOLID principles of object-oriented design course is out there as well and uses different examples, so you might get benefit from seeing both of them. You'll find links to both in this episode's show notes. Show Resources and Links devBetter SOLID Principles for C# Developers SOLID Principles of Object Oriented Design -and the DRY Principle Refactoring Fundamentals That’s it for this week. If you want to hear more from me, go to ardalis.com/tips to sign up for a free tip in your inbox every Wednesday. I'm also streaming programming topics on twitch.tv/ardalis most Fridays at noon Eastern Time. Thank you for subscribing to Weekly Dev Tips, and I'll see you next week with another great developer tip.
Hi and welcome back to Weekly Dev Tips. I’m your host Steve Smith, aka Ardalis. This is episode 52, on feedback loops and continuous testing with guest Al Rodriguez. Continuous Testing Continuously This week's tip is brought to you by devBetter.com. Sponsor - devBetter Group Career Coaching for Developers Need to level up your career? Looking for a mentor or a the support of some motivated, tech-savvy peers? devBetter is a group coaching program I started last year. We meet for weekly group Q&A sessions and have an ongoing private Slack channel the rest of the week. I offer advice, networking opportunities, coding exercises, marketing and branding tips, and occasional assignments to help members improve. Interested? Check it out at devBetter.com. Show Notes / Transcript This week's tip is on how to be more productive by reducing feedback loops. Our guest is Al Rodriguez. Al is a multiclassing wizard spending most of his time using .NET wherever possible but levels up in other tools to get the job done. Take it away, Al: Hi. I'm Al Rodriguez and I'm here to talk to you about Continuous Testing. One way to improve development productivity is to reduce the time of your feedback loop. A classic example of this is application startup time to validate a UI change. A 3 minute wait for an application to build and startup feels like an eternity when you've only changed a background color. This is why some tools exist to hot reload only the part of the application that has changed. Thus reducing the time that you, a busy developer, have to wait. We see tools like this all over the development space to reduce the feedback loop time. One example is inside our Text Editors. If you miss a semicolon or misspell a variable name, you immediately get feedback in the form of a red squiggly underline. Another example of this is a Continuous Integration pipeline. Once you check code in, a pipeline is invoked to build your application, run any tests it needs to, and alert the team if there are any issues. All three of these examples I've mentioned have wildly different feedback times because they're for very different types of tasks. But lets move on and talk about unit tests. The common loop I see when working with unit tests is to write the test, then click the button to run it. It's a very manual process. The feedback loop there is usually a couple of seconds. Short and sweet. As time goes on you'll change some code and eventually click the button to run the tests again. But which tests? All of them? One class at a time? The individual tests you think are impacted by your changes? Even worse, what happens if you forget to run the tests? Now you're checking code into source control that hasn't been fully tested. What does the feedback loop look like in that situation? Best case scenario, the tests are run after a few changes are made. Worst case scenario, they're not even run. And that's just you. There's also the scenario of people on your team who don't think to run the tests. On a project with historically low, or no, tests, the idea of running them doesn't cross your mind because it's not part of the normal flow. So new code could have broken the tests, and since they weren't run, no one will find out for a what may be a few weeks. That's fun and all. But you know what's better? What can reduce that feedback loop? What you said is right, sure, but the answer I was looking for is: Not clicking the button. Or more accurately, not having to click the button. Having a tool that will run your tests for you. Continuous Testing is when you have a tool to run your tests as soon as the they are created, changed, or any code impacted by a test has been changed. And if that's not continuous, I don't know what is. Which would be a problem. So if that's not what Continuous means, please let me know. I can't have another situation where I go years using a word wrong. That would be unfortuitous. Other benefits of Continuous Testing tools include a UI element to show the current state of the code under test. For example, when looking at your code there is a visual indicator inside your IDE to show you each line of code that has any failing tests, or if there are no tests for that line. Which is a great reminder that you need to write those tests. If you want to get started with Continuous Testing there are several options depending on your choice of tooling. In the .NET space you can use the Live Testing feature built-in to Visual Studio Enterprise. If you don't have an Enterprise license, another great tool is NCrunch. You can only get NCrunch by purchasing a license, but it's cheaper than upgrading to Visual Studio Enterprise. Which is the reason I use it for my own personal projects. Finally, if you're working with .NET Core you can use the dotnet CLI command: dotnet watch test The watch command listens for file changes. Once a file has changed, the test command is run on that folder. Note that this isn't as efficient as the previous tools because it re-runs all of the tests, not just the ones that have related changes. If you're in the javascript realm you can do something similar with npm's watch package. Using the command npm run test --watch will continually run your test task whenever files change just like we saw with dotnet. In summary, do what you can to reduce your feedback loop with automated tests. And that's all I have to say on this topic. If you'd like, you can find me on twitter under the handle @ProgrammerAl, that's P-R-O-G-R-A-M-M-E-R-A-L. Or you can find me interviewing people on their side projects on the Developer Side Quests podcast. Now go forth and forget where that Run Tests button is. Or even better, remove it from your IDE if that's an option. Thanks for letting me ramble on your show Steve. Back to you! Thanks, Al! Great tips! It's great that CLI tools make it so easy to set up this continuous feedback loop, even for developers who don't have access to great commercial tools like VS Enterprise and NCrunch. I hope a few listeners will give continuous testing a try, and if they have any questions or feedback, leave it on the show's page at weeklydevtips.com/episodes/52. I've also added links to the resources covered this week. Show Resources and Links devBetter NCrunch Al on Twitter That’s it for this week. If you want to hear more from me, go to ardalis.com/tips to sign up for a free tip in your inbox every Wednesday. I'm also streaming programming topics on twitch.tv/ardalis most Fridays at noon Eastern Time. Thank you for subscribing to Weekly Dev Tips, and I'll see you next week with another great developer tip.
Hi and welcome back to Weekly Dev Tips. I’m your host Steve Smith, aka Ardalis. This is episode 51, on the Open/Closed principle. Open/Closed Principle This week's tip is brought to you by devBetter.com. Sponsor - devBetter Group Career Coaching for Developers Need to level up your career? Looking for a mentor or a the support of some motivated, tech-savvy peers? devBetter is a group coaching program I started last year. We meet for weekly group Q&A sessions and have an ongoing private Slack channel the rest of the week. I offer advice, networking opportunities, coding exercises, marketing and branding tips, and occasional assignments to help members improve. Interested? Check it out at devBetter.com. Show Notes / Transcript My goal is to have every other tip for the next few weeks focus on one of the SOLID principles. If you're listening in order, which I recommend, you'll note that episode 49 was on Single Responsibility. Thus, here we are with episode 51, talking about the O in SOLID, the Open/Closed Principle. The name of this principle is somewhat oxymoronic. It sometimes reminds me of the classic Star Wars scene where the stormtroopers are chasing Han Solo, yelling "close the blast doors, close the blast doors!" only to find themselves blocked by the doors moments later, crying "open the blast doors, open the blast doors!" What does the principle of being both open and closed mean, really? The full principle says that software entities (no, not those entities - we mean classes, modules, functions, etc. here) should be open for extension but closed for modification. Ok, so what does each of these mean? Open for extension means that it's possible to add to the behavior of the class or method. We can make it do new or different things. Closed for modification means that the class or method itself should not be changed. Imagine that it's inside of a nuget package or its source is otherwise unavailable to modify. If we think about open for extension all by itself, it's a pretty easy one. It's saying some class or method should be open to changes in how it works. We do that all the time. We need to fix a bug or add a feature, we find where the code is that does that work, and we add a few lines to change the behavior. Often this just means adding an if statement or something similar, to account for the new behavior required. This is the typical, obvious way to add behavior to our systems, and generally there's nothing wrong with this approach. But it doesn't follow the open/closed principle, because such code is clearly not closed for modification. Now imagine that the code with the behavior you need to modify is not available to you to edit. How might you change its behavior, then? This might sound like a trick or impossible question, but we do this all the time, too. You change the behavior of classes and functions by changing their inputs. Passing in arguments or modifying data accessed by the class or method, such as configuration files or data stores, are all examples of ways in which you can modify system behavior without modifying source code. And there are some parts of your application that will benefit from being closed to modification, especially the parts that are depended on the most. By following OCP for your most fundamental classes, you'll make changes to them far more rare, which in turn will result in far fewer issues downstream due to updates to them. If you'd like to learn more about OCP, check out my courses on Pluralsight on the SOLID principles. I just produced a revised course for 2019, but my original SOLID principles of object-oriented design course is out there as well and uses different examples, so you might get benefit from seeing both of them. You'll find links to both in this episode's show notes. Show Resources and Links devBetter SOLID Principles for C# Developers SOLID Principles of Object Oriented Design -and the DRY Principle Refactoring Fundamentals That’s it for this week. If you want to hear more from me, go to ardalis.com/tips to sign up for a free tip in your inbox every Wednesday. I'm also streaming programming topics on twitch.tv/ardalis most Fridays at noon Eastern Time. Thank you for subscribing to Weekly Dev Tips, and I'll see you next week with another great developer tip.
School’s out and summer is here! Why not take the time to learn something new by working on different online certification programs. Interested? Check it out.
This week, we're going local. In lieu of Fleur, we are joined by Sam Anderson to discuss the British constitution. If that's not enough for you, we touch on Welsh UKIP, Vernon Bogdanor and 'the infamous pizza rat'. We talk to Professor Simon Hix about a new electoral system. Interested? Check out more here: The British Constitution - Vernon Bogdanor The Electoral Sweet Spot: Low‐Magnitude Proportional Electoral Systems - John Carey & Simon Hix The Irish Constitutional Convention offers a potential routemap for renewing UK democracy - David Farrell The Dutch Electoral System on Trial - Henk van der Kolk & Jacques Thomassen
Welcome! My guest today is Dr. Steven Masley, who is an accomplished physician, chef, and nutritionist. He is also the author of four cookbooks. I’ve been a big fan and follower of his for a long time and am excited to have him on the show! He has a new book coming out soon on the topic of healthy fats, so join us to hear more! Dr. Steven discusses the following : His new book is an outgrowth of the discussion about the REAL cause of heart disease, which is metabolic syndrome and pre-diabetes. His plan is based on clean protein, smart fat, fiber, and flavor! “Smart fats” include nuts (almonds, pecans, pistachios, walnuts, hazelnuts, and macadamias), salmon, sardines, avocado, dark chocolate, and olive oil. He discusses the controversy about oils, their processing, and their uses. Regarding oils, you have to know your smoke point! Some oils are safe for cooking and some are NOT! Neutral oils are those with no proven benefits or harmful effects, like grapeseed oil and unclarified butter. The goal is 5 servings of smart fats daily. There are smart carbs and bad carbs. The smart carbs are those with more fiber and a lower glycemic response. Nut flours: Is there a difference from regular grain flours? Aim for 30-40 grams of fiber daily. Dr. Steven sums up his principles with four points: Know the difference between smart, neutral, and bad fats. Eat more smart fat! Add fiber, clean protein, and flavor! Don’t cook fat at the wrong temp to make it toxic! Dr. Steven has a 30-day meal plan and numerous recipes on his website and in his new book. He shows you how to turn back the clock on aging, and how to prevent hypertension, heart disease, and memory loss. He can help you lose weight and feel great! Interested? Check out the resources below! How to reach Dr. Steven and more: www.smartfat.com Smart Fat by Dr. Steven Masley (available in January) Now it’s your turn! WHAT changes have you made in your diet? HOW have those changes affected your health? WHAT has been your biggest challenge while implementing a healthy lifestyle? WHO do you want to hear from? Let me know in the comments below and I will try my best to get them on the show! I want to answer your burning questions and for YOU to add your thoughts to the conversation. So go ahead and leave a comment now. And if you want even more resources to heal yourself naturally, make sure you sign up for my email updates, because I share some insights in my email updates that I don’t share anywhere else. Thanks so much for stopping by and until next time, remember to eat consciously, because the world needs a healthy and vibrant you! BECOME A FOOD AS MEDICINE VIP FOR FREE. ENTER YOUR EMAIL BELOW AND RECEIVE: My free gift, “The Clean Eating Rules.” It’s my #1 guide for how to eat to lose weight, improve your biometrics, and get more energy. Summary of Pearls shared on the show Occasional Love Letters from Dr. Anh, where I share my favorite recipes and products, upcoming events, new information I’ve learned, and other goodies ☺
Cheese Grotto creator Jessica Sennett : Meet the Cheese Grotto on this week’s episode of Sharp & Hot. Conceived of by Jessica Sennett, it is the optimal cheese storage unit for the fridge, cellar, or cupboard. It is essentially a cheese cave for the home. They are taking old world technology into the modern age and rescuing your cheese from the back of your fridge. Hear how the idea came about and what Jessica has in store for this beautiful piece of kitchen gear. (Interested? Check out their Kickstarter) Also hear Emily address some listener questions at the top of the show! This program was brought to you by Cain Vineyard & Winery. “We’re doing this in a DIY fashion, but we know what we’re talking about! I’ve been making cheese for more than a decade.” [30:00] –Jessica Sennett on Sharp & Hot
There is a lot of glamor in a large public ministry. You get to be in the spotlight and speak with authority. You have thousands on your fanpage. There is money to be made also. Because of this some who are totally unfit spiritually and morally are attracted to it. This is only one side of the coin, of course. There is a price to be paid for participation in public ministry. Only those who have borne the weight and responsibility and have faced the spiritual attacks of ministry can know the dark nights and weariness of soul they have experienced. How to keep the ministry pure has always been a pressing question in the church in every nation. Interested? Check out this episode of the Thread Podcast.Play Episode