S08E04 - Data, AI, and the Human Touch: Michael Washington on Building Trustworthy Applications
Sponsors
Support for this episode of The Modern .NET Show comes from the following sponsors. Please take a moment to learn more about their products and services:
- RJJ Software’s Strategic Technology Consultation Services. If you’re an SME (Small to Medium Enterprise) leader wondering why your technology investments aren’t delivering, or you’re facing critical decisions about AI, modernization, or team productivity, let’s talk.
Please also see the full sponsor message(s) in the episode transcription for more details of their products and services, and offers exclusive to listeners of The Modern .NET Show.
Thank you to the sponsors for supporting the show.
Embedded Player
The Modern .NET Show
S08E04 - Data, AI, and the Human Touch: Michael Washington on Building Trustworthy Applications
Supporting The Show
If this episode was interesting or useful to you, please consider supporting the show with one of the above options.
Episode Summary
Michael Washington discussed his open-source project, Personal Data Warehouse, which aims to provide a platform for data-driven decision making without relying on AI. He emphasized that data is essential for humans to make informed decisions, but computers should not be relied upon to make these decisions. Instead, Michael’s project focuses on creating a system where humans are at the helm of the data analysis process.
Michael also discussed his concerns about the misuse of AI in applications. He cited an example from a pilot study where an AI program trained on specific data sets was unable to detect cancer in images that did not have the characteristic signs used during training. This highlights the importance of human oversight and intervention when it comes to AI decision-making.
The conversation also touched on Michael’s experience with the book “AI Snake Oil”, which explores the ways in which humans have used AI to harm others. He emphasized the need for caution and critical thinking when dealing with AI, and highlighted his own commitment to ensuring that his projects are designed to prevent harm.
Michael shared information about his online presence, including his blog at Blazordata dot net and his work on C# and blazor development at Blueky. He also mentioned his forums, where interested parties can engage with him about Personal Data Warehouse and other topics related to AI and data analysis.
Throughout the conversation, Michael expressed his enthusiasm for exploring the possibilities and limitations of AI in various applications. He emphasized the importance of human judgment and oversight, and highlighted the potential benefits of using open-source projects like Personal Data Warehouse to promote more transparent and accountable decision-making.
Episode Transcription
What do I mean by compute? Compute is whenever you want a computer to do a thing, okay, it requires the CPU to exist and I want the CPU to do a thing. How well it can do it Is based upon what kind of CPU you have. What kind of CPU they have since have it in miniature chip. So, if you have an NVIDIA chip, it does a lot of really good things, but as we know, they’re very expensive, and that’s why NVIDIA is like what, I guess, the largest company in the world right now.
Hey everyone, and welcome back to The Modern .NET Show; the premier .NET podcast, focusing entirely on the knowledge, tools, and frameworks that all .NET developers should have in their toolbox. I’m your host Jamie Taylor, bringing you conversations with the brightest minds in the .NET ecosystem.
Today, Michael Washington joined us to talk about his open source project “Personal Data Warehouse”, what a data warehouse is, and the why we collect data in our applications. We also talk about the differences between storing data in the database and storing it in a data warehouse—one of the biggest differences, as you’ll find out, is the difference in cost.
The only reason why we collect any data is because at some point a human being needs this data to make a decision. Seriously, and I challenge anyone to come up with any exceptions to that.
Along the way, we talked about the benefits and pitfalls of leveraging AI (particularly LLMs) in your applications. Both Michael and I agree that there is little “intelligence” in LLMs in the traditional sense, and Michael brings up the most important point when deciding to an LLM in your application: that a human must always make decisions based on what data they have and what the LLM can provide. We must never hand over decision making to LLMs.
Before we jump in, a quick reminder: if The Modern .NET Show has become part of your learning journey, please consider supporting us through Patreon or Buy Me A Coffee. Every contribution helps us continue bringing you these in-depth conversations with industry experts. You’ll find all the links in the show notes.
So let’s sit back, open up a terminal, type in dotnet new podcast and we’ll dive into the core of Modern .NET.
Jamie : So, Michael, welcome to the show. I have been… I don’t know, is it weird for me to say I’ve been a fan of yours for a while? But I have been a fan of yours for a while following all your early experimentations with Blazor. and all of your books and things like that. So this is a huge honour for me to get to talk to you.
Michael : Thank you for having me. I really appreciate it.
Jamie
:
No worries, no worries.
Yes. So before we get started on today’s topic, which is, here’s a lot in this one, folks. I was just wondering, would you mind giving like a sort of brief intro? I always like to get the guests to intro themselves rather than me just read from a script, because it feels more to me more genuine if you get to tell me how awesome you are. So what is it that makes Michael awesome?
Michael
:
Okay. Well, I could live up to that.
Yeah. My name is Michael Washington. I’m in Microsoft MVP for a number of years. I’ve been blessed to be a Microsoft MVP so that I have access to the Microsoft technologies, which is what I, my entire career has been based on. I actually started my first computer program that I actually created was Basica. You know, when you turned on your IBM PC back when I was, I was probably about seven or eight years old when we got our first computer.
So but my first real program was Microsoft Access. Yeah. And it’s interesting because that will actually lead into what we’re talking about today, which is the Personal Data Warehouse. When I was designing that application, I went back to Microsoft Access and how that is your data tables, your forms, your queries, your reports. And I actually put that into the Personal Data Warehouse.
But yeah, I’m basically a Microsoft technology developer. I concentrate on basically web stuff, Azure for development, Blazor. So I started way back when Steve Sanderson first showed us Blazer back at the Microsoft MVP Summit. I jumped on board, you know, and I’ve been riding that wave since.
Jamie : Awesome. And you’re an author, right? You’ve got a few books out?
Michael : Okay. Of course, if you’re a Microsoft MVP, what that means is you blog a lot, you do podcasts, and you write books. And so, yeah, like I said, I’ve been in. Microsoft MVP for a number of years, so that means I’ve written a number of books, most of them on Blazor, some of them on AI. Azure AI. I’ve also written some books for SyncFusion, so a number of my books are actually free on various topics such as Azure Maps. If you’re searching for information on using Azure Maps and Blazor, I’m your guy, and that book is free. So, yes, I’ve written a number of books.
Jamie : It does seem like a recurring topic when I speak to some MVPs. I don’t have the patience or ability to write a book. So every time that someone says, “I’ve written a book.” I’m like, “that is truly amazing to me. I want to talk to you about that.”
Michael : So, but I’ve never done a podcast. So I’ve been a guest on podcasts, but I’ve never. Done all the organization and scheduling and technical configurations and publishing. And so, some of us write books, some of us podcast.
Jamie
:
If only I could get someone to pay me to do the podcast, right?
So, yeah, so we’re going to talk about Personal Data Warehouse, as you said. Before we start that, I think it might be a good idea to sort of level set and say what a data warehouse is. Because, like, most of us devs have interacted with databases. Just, you know, we’ll load some stuff, put it on a screen, put it back into the database. But that’s different to a data warehouse, right?
Michael
:
Yes, it is, right.
So yeah. So to launch into that, in my day job, we have a lot of data. A lot of data is not a data warehouse. And it wasn’t until recently when Microsoft released a new product called Fabric. And Fabric is a collection of technologies that Microsoft has had for a while. For example, Power BI. I’m sure everyone’s heard of Power BI or has used it. That is a reporting and dashboarding product. They’ve also had a product called Synapse, which allows for the movement of data and is similar to another product by another vendor called Databricks. You’ve also probably heard of Snowflake, which is another vendor that does a product that. And of course, Google has BigQuery.
So what happens is that Microsoft created a product called Fabric. Again, they’re reusing a name that was actually used for something else. So, this is the new Fabric. It is a product that’s really good. I’m a big fan of it. And it allows you to have a data warehouse. And the difference, my definition of the difference between a data warehouse and just a big database is two things. One, what is its purpose? So a data warehouse, its purpose is usually for reporting. And what is the mechanism for storing that data? A data warehouse, all the big vendors, they store the data in a format called Parquet, P-A-R-Q-U-E-T. It’s an industry standard, it doesn’t belong to Microsoft, it’s an industry standard. And it stores data in what they call a columnar format, but it’s very highly compressed. It’s self-describing so that the columns’ names are in the stored in the document, kind of like an Excel file, but better. And it allows for massive amounts of data to be stored very inexpensively. So think of your data is stored in, say, literally Azure storage containers.
So therefore, when you want to interact with the data, they have what we call compute. We’ll kind of get into that with the Personal Data Warehouse. But basically, you have a computer program that reads the Parquet file and then shows that data so you can interact with it, whether it’s for reporting or whatever. And when you want to save, it saves to that Parquet. That’s what’s happening. That is extremely cheaper than a normal say SQL Server database or Oracle database.
The negative is, is that unlike a SQL Server database or Oracle database, you don’t have that fast read-write. So you’d want to use a database for read write. You know, someone’s updating this and, you know. But when data is needed for reporting purposes, right, so it just needs to kind of sit there and we just want to read from it, that’s when you want to use a data warehouse. Or if you have a situation where you just have massive amounts of data, for example, some of my clients in my day job, they have data in their mainframe systems. but they want people to be able to get to that data from the web. The way you do that is you move the data in batch jobs to things like Fabric. And then you then point your Power BI to it, and you can then read it.
So hopefully, for those who are not familiar with data warehouses, hopefully, that kind of gives you an idea of what a data warehouse is and how it’s used. And I just want to finish up with the cost is drastically like massively cheaper. Again, I have clients who have terabytes worth of data sitting in, again, I work with Fabric, terabytes worth of data sitting in Fabric, yet their cost monthly cost is only in the hundreds of dollars. If they try to put terabytes worth of data inside a SQL Server, your monthly cost would be thousands of dollars. With that, hopefully, that’s the crash course on data warehouses for those who are not familiar with it.
Jamie : I mean, it totally makes sense to me, right? So the way that I was thinking about it is if I am Amazon, for instance, and I’m selling products, I probably want those products in a fast-to-read database, like a SQL Server or Postgres or something. But if I want to do a monthly report of number of items sold, that’s data that I want to store in the data warehouse to be able to… my read-write doesn’t have to be super fast because maybe I’m only doing that report once a month. maybe twice a month, maybe once a quarter. So I can sacrifice the speed of access for the, like you were saying, the drastically reduced storage space costs.
Michael
:
Oh, drastically cheaper. Drastically cheaper.
For example, log files. A lot of us, we have our log files inside our SQL database. When we have to keep cranking up the story, the servicing of that database. It’s because that log file keeps getting bigger and bigger. The log file is something that should be going into the warehouse.
Jamie : Right, right. Yeah, because you’re going to be. accessing that on an infrequent basis when you’re creating your dashboards and your report.
Michael : Yep.
Jamie : Okay.
Michael
:
So all the logs. So matter of fact, all the orders that the customers have This is the sort of thing where, “okay, the orders for this month, fine, that’s in the current database because we might have to update that order or whatever.” But we would then have a job that would then push those orders into the warehouse. Actually, usually it’s at the same time, right?
And what happens is that if someone needs to get to an order from three months ago Just go get it from the warehouse. All the reporting, you know, sales wants reports, and all these other people want reports. They get the reporting out of the warehouse so that the load of that is not on my operational database.
Yes, we kind of think of that. Warehousing is for like if it was a store, right? The store, the products are on the shelf at the store. However, We have a warehouse in another location that has all the products that are, you know, about to go to the stores or you know, we just don’t want to crowd up our current store with that. So I think if we think about that way, the store is our SQL Server database and the warehouse is, well, the warehouse.
Jamie : Yeah. Yeah. And yeah, like it totally makes sense. Like you’re right here. You don’t want a million Billy the Bookcases laying around in your in your showroom, because that’s what they are, their showrooms. You don’t want a million of those because it might not be that you get a million people wanting a Billy of the Bookcase…
Michael : And it costs a lot of money. The rent at the mall costs a lot of money. I don’t want it. I want to put it in the warehouse where it’s cheaper, right? On the other side of town by the docks, right? I think that’s a perfect analogy, actually.
Jamie
:
Ah, thank you.
Yeah. And it fits with something that… so we had Jerry Nixon on an earlier episode. And he said, “the number one most expensive part of your app is your database.” And it fits exactly with what you’re saying, right?
Michael : 100%. Which leads us into the what I the Personal Data Warehouse, which we’re going to be talking about. That statement that he says, truer words were never spoken.
Jamie
:
So we’ve got an idea of what a data warehouse is. Either as a transaction is created or at some point after the transaction is created, you’re going to want to push or synchronize that data into the data warehouse so that at some point you can do a report on it.
So in that case, what’s Personal Data Warehouse? If, as a company, I have some data that I need to keep in a data warehouse, what would I… we’ll come up come on to that in a moment, but like have in the back of your mind as well, “what would I as a user need to have in a Personal Data Warehouse,”" right? Is there anything specific?
Michael : Exactly. So Andrew Brust, another Microsoft MVP, he’s a leader in big data, covering data warehouses. He’s an author, and a big industry leader in this whole thing. So at the Visual Studio Live last week, I had a chance to talk to him. And I go, “hey, I want to talk to you about this little open source project I have called Personal Data Warehouse.” And he stares at me, “you know that’s an oxymoron, right?”" And I just had to laugh because I go, “Andrew, this is what I expected you, your reaction to be, which is. Well, this makes no sense.”
Michael
:
So to answer your question here, let me just spend a couple of sentences explaining why I created this thing called Personal Data Warehouse. And if I explain why, then I think I’ll answer your question of what is it? Like I said, I’m a big fan of Microsoft Fabric. Okay, it’s an incredible application. I’ve been using it solves just so many problems. It’s so inexpensive. It’s a wonderful product. You should check it out.
But I realized something. The way Microsoft makes their money, it’s on compute. What do I mean by compute? Compute is whenever you want a computer to do a thing, it requires the CPU to exist and it requires a CPU to do a thing. How well it can do it is based upon what kind of CPU you have. So if you have an NVIDIA chip, it does a lot of really good things, but as we know, they’re very expensive, and that’s why NVIDIA is like what, I guess, the largest company in the world right now. So it’s all about the compute. Remember, I was talking about those Parquet files. You put it in Azure Storage. When it’s sitting in Azure Storage, Azure Storage is actually relatively inexpensive. So therefore, your monthly cost is not that much. But when you want to read that Parquet file, it requires compute to go read that Parquet file. And then Microsoft charges you for that. That’s how they make their money.
So I realized that just some simple things where I put a file, some data, maybe not even a lot of data, into my Fabric, but then I’m like, I want to read it. for whatever reasons, Power BI or my Blazor app wants to connect to it, that’s where the money was being charged. And I said to myself, I go, “wait a minute, some of this stuff is just so small, that can’t I just do that on my own computer?” And that’s where Personal Data Warehouse came from. Essentially what it is, is it’s trying to say, “look, I have a CPU on my computer. I’m already paying for it. Okay. I’ve already paid for it. Right. Can I use it for You know, obviously, I’ll still use Fabric and all that cloud compute for things I need to use it for, but there’s some things I just don’t need to use it for."
So that’s why I just started this open source project. Again, it’s open source, I’m not trying to sell anything. And it just allows you to duplicate what Fabric does, but on your own computer. I realize, “hey, I can open up Excel files, CSV files, Parquet files. I can connect to my SQL Server databases. I can even connect to Fabric, and I can pull the data down to my local computer.” Then I realize people need transformation. A transformation is any time the data’s changed from it’s initial state. And a transformation could just be: I just wanted to sort the states in order. You know what I’m saying? Or I want to see the last 10 records. That’s a transformation.
Welp, I couldn’t create my own SQL Server engine, right? So I realized that I could do any transformation using C#. So I wrote a thing where, you know, you got the little editor and you can write a little small C# program and it says, hey, combine the employees and the customers and the sales data, you know, “combine them together and give me a report on my top 10 customers.” I can just write a little C# snippet that does that. And I was like, “that’s great.” And then I realized, “well, wait, I can make it so that AI could help me out.” So I have a little button where you can have AI do it for you. And then I was like, “oh, this is kind of nice.” And then I go, “oh, but then people need the reporting.” Because then I was thinking back to Microsoft Access, right? Then I found out there’s an open source project that Mimics Microsoft SQL Server Reporting Services. So I just shoved that in there. So you can now make RDLs in the app. It’ll and you can also use AI to help you create it. So, I just shoved all that into, and I call it Personal Data Warehouse.
And the way I’ve used it myself personally is I just have certain situations where I only have maybe a couple million rows of data. I can quickly pull that into the application. I can then use AI to do a transformation. And then I can either export the results into Excel and kick it back to whoever needs it. Or I can literally create a report, and then send somebody a nice, you know, I then convert the report to like PDF, and then I can then send out the report. And that’s kind of how I use it, and it kind of works for me. So I just kind of want to share that with other people because they may find it useful.
And finally, some people that might find it useful are people who are power users of Microsoft Excel. Because that’s what they’re doing with Microsoft with Excel is they are pulling data in for whatever you know, whatever. When you do your little v-ookups and all your little formulas, that you’re doing transformations, right? And then you either export it out to someone else or, you know, you somehow have some little graph to do reporting. So I think that a power user of Excel might find this Personal Data Warehouse useful because one thing that it does that Excel doesn’t do is: if you have data that’s in the millions of rows, it handles it fine. Whereas Excel, as we know, blows up at a million rows.
Jamie
:
Right, right.
What blew my mind there is you’ve made me realize that not only is Excel Turing complete and therefore a programming language It’s also ETL, right? It’s a full ETL system.
Michael : It is. That’s what people are using, but they’re manually. It’s like remember we call SneakerNet, where we’re like, SneakerNet is when you take. The floppy drive, this drive, and you transfer it. You know, you don’t have a network, so you walk in. That’s what people are doing with Excel. It’s sneaker ETL, whereas they’re They’re the ones I’m ETLing it manually. There’s no automated process.
Jamie : Right, right. So I guess as part of that then, I mean, you you said yourself a lot of your work revolves around this kind of data warehousing stuff. But I guess it’s another example of someone taking something that they want to learn or improve on and doing it in the open, right?
Michael : Oh, yeah.
Jamie : And one of the big themes for this year on the show is like doing something in the open and learning in the open. And I guess, like you said, you’re already in that space of using Microsoft Fabric and using a different, a whole bunch of different data warehousing stuff. But I guess learning how to do it yourself, that’s probably not the best way to put it. But, you know…
Michael
:
No, no, actually that’s I mean, I learned so much by you know, this project was one of those it was a dumb idea. I’m glad I did it. But what was I thinking? You know.
So as I started working on it, “I was like, wait, where is this project going? Why is it going?” Then I’m like, “what is,” I literally like laid in bed going, “what is data? Why do we have data?” I mean, really, I did. So I ended up doing, matter of fact, I was in Visual Studio Live last week and one of my presentations was on, you know, what is data? Why do we need data? And it’s funny because when you really stop and think about it, you’re like, “well, data is obvious. I have an app, people are coming to the app, and they’re doing things, and I’m storing in the database. What’s there to talk about?"
And I’m like, now, here’s how I feel about this subject. Now, I’m like, “no, no, stop. Stop. Here’s the deal.” And this is now my theories: the only reason why we collect any data is because at some point, a human being needs this data to make a decision. Seriously. And I challenge anyone to come up with any exceptions to that. That app that you know, they come to us and they go, “oh, I need this app to you know, and I need to collect all this the sales information. And then we’re going to push that information out to these other people.” Okay, well, that app is because these other people need this process to happen because they are either going to ship more products to a customer. They’re going to, I don’t know, make sure that the buses Can get to the kids on time. You know what I’m saying? The human, some human being, not a computer, but a human being. Or human beings need to make some sort of decisions to do a thing. And this application, this data. its only purpose is to facilitate that eventual decision.
So when I started thinking about things that in that manner, that’s when I realized that, okay, data has three states. It’s collection, however it’s collected, it’s transformation, because the transformation is how the the usefulness comes out of it. And then it’s reporting. Either it’s an export of Excel workbook or it’s some higher level with bar charts and pie charts, and that sort of thing. But that’s it. That’s what we do. That’s it. We collect data, we transform it, and we report it. And when I started thinking about things that way, it allowed me to design the Personal Data Warehouse to follow that format.
Jamie : You know, I’ve never really thought about until you’ve said that, right? I’ve got nearly twenty years of forms over data, create a CRUD app to load some stuff, change it some way and store it back in the database, but I’ve never really thought about, but why? It’s almost like you’re philosophizing about data, right? And yeah, and it makes perfect sense. Why are we as a company, as a product, collecting this data? Because we need to do something with it at some point. Doing. Yeah, no, totally.
Michael
:
Can I toss out one more thing that was an epiphany for me? Data is never the thing. It only represents the thing. And I thought, I thought, “well, wait a minute. What about like log files? Log files, I mean, that’s data, and it is the thing."
Even a log file. It’s representing the fact that someone visited your site, or someone ordered a product, or someone changed a value of a thing from one thing to another, but it’s the thing that matters. not the data itself. Which, again, the reason why this was an epiphany that turned out to later, in my mind, be important is I realized I should never, ever, ever lose sight of the fact that the reason why we’re doing this is to facilitate humans making decisions.
And the reason why this has been helpful to me, now like I’m an application architect, right? Which just means you’re the guy who the humans talk to and then you talk to the developers who actually build the stuff, right? But with this new mindset of the only purpose is to allow some human to make a decision. That’s it. That’s all they care about. That’s it. I started getting rid of a lot of layers in the applications that I work on.
You know what I’m saying? Because we as programmers were like, “oh, I’m going to need to put the data in this box because I’m then going to use this box to do this other thing.” But then when I realized that, wait, in the end, In the end, with no exceptions, the human who came to me with this problem just simply needs me to move all this data around and transformation, blah, blah, blah, because There’s a decision that they need to make. And I mean, when I say decisions, I mean the direction that they use to create some sort of action, right? I then start to cut a bunch of stuff in the middle. I’m like, “wait, wait, wait, why am I doing all this, this, this, and that? Look at the end result.” So I really feel that my applications moving forward have gotten a lot slimmer. Because I realize I’m like, I’m not going to move data just for data’s sake. I’m going to, obviously, I’m going to collect stuff only because I need to help them in the end. I’m going to do transformations only because that helps them in the end. And then I’m going to give them that thing in the end in a way that’s the most efficient to allow them to make their decision.
So, in some cases, I’m just going to show you stuff on the screen. I’m not going to give you a bunch of PDF reports. In other cases, all I’m going to do is send you that email because honestly, in the end, that’s all you need. You know what I’m saying? And I’ll get rid of, “oh, I got this screen with 20 different buttons and tabs and all that sort of stuff because I’m like, you know what? They can’t make the decision because it’s too much.” You know what I’m saying? They’re looking at it. I got all these buttons and switches. And I’m like, are they using that screen to make a decision? No. Why is that screen there? Why? You know what I’m saying? Why is all that data there? Just give them what they need because, in the end, it’s all about productivity. Only humans are productive. You know, I mean also animals are too, but but through the humans, it’s a tool that that humans can use as you know to make the horse carry the stuff. But but yeah, I it just really changed the way I design applications now that I’m looking at data in this way.
Jamie : Yeah. I mean, why do I need a million charts on screen? Obviously, I’m being hyperbolic, but why do I need a million charts on screen to tell me to order more Nike sneakers? Right? I don’t, I just need to be told, “how many Nike sneakers do we have. And how many are we going to sell next month?” I need to order more, right?
Michael
:
Which leads us into AI. So the way I’ve been using AI, I’m one of these people that believes that AI is dumb. Just, I use it. AI is as dumb as a bag of rocks. It’s just an algorithm. It doesn’t think. There’s no intelligence. It’s just an algorithm. It’s a very complex algorithm, but it’s still an algorithm, garbage and garbage out.
However, where AI is very useful is if you take all that data and if you do a good prompt, all that data comes in, and then the AI can simply say, “you know what, it’s time to order. Jamie, it’s time to order some more sneakers.”" You know what I’m saying? So that’s where AI can actually help in, you know, and also collecting data. You know, there’s other, there’s various places where AI is helpful. in this new paradigm that I’ve been talking about.
And one more quick thing about AI and data. My other huge epiphany was this. AI cannot count. It can’t. It cannot count, it cannot add. I mean, it just can’t. The only reason why it knows 2 plus 2 equals 4 is because it read about it somewhere. You know what I’m saying? So that’s why we go, well, “what’s 2 plus 2 minus 6 plus 7?” It’s just, “I got nothing."
What AI can do, though, is it can write programs, computer programs, that can then manipulate data. So again, in the Personal Data Warehouse, the data transformation part. You can write these little snippets, whether it’s in C# or Python, and you use AI to write that code. But it’s always the code that can add. It’s always the thing that’s actually doing the transformations, not AI. AI is only writing programs to do transformations. So I just want to put that out there. Because people all the time are like, well, “can’t I just dump data into the AI and tell the AI and the AI will give me an answer?” It’s like, no. And if you go to ChatGPT, you’ll see that every time you ask a question that requires some sort of calculation. It goes thinking, thinking, thinking. We’ll click on the button and see what it’s thinking about. And what it’s thinking about is it writes a Python program. And then that Python program actually does the calculations, and then it kicks back the answer. I just had to toss it out there because. That was another huge thing: do not try to get AI to do mathematical calculations or to manipulate data. Only use AI to write computer programs to manipulate data.
Okay, thank you. Off my soapbox.
Jamie : Thank you for allowing us to listen to your TED Talk.
Michael : That’s my line. Thank you for coming to my TED Talk.
Jamie : But yeah, I mean, we were talking before we hit record about how I was telling some people that a client of mine. recently about, “it’s just a pair programmer.” It, to your point, it’s not smart. It’s seen C# code, it’s seen Python code. Someone has indexed that Python code and indexed that C# code. So it knows what a function to add two numbers is. It just doesn’t know how it works. It isn’t able to run it. It just knows that…
Michael : Nor does it even care.
Jamie
:
Yeah, right. It knows that var answer = inputA + inputB; means that at some point, the computer is going to add inputA to inputB and store it in answer. That’s all it knows. Doesn’t know how it works. Just, “you want me to add two numbers together, that’s what I’ll spit out of you because that’s that I know that when I look in my knowledge database,” that is what comes out, right? And and I feel as though that is lost a lot in the discourse between non-techies about AI in the hype cycle, I’m trying to very carefully choose my words. Because I have some opinions.
Michael : Yes. In the overblown hype cycle with a bunch of scammers. Yes. Yes.
Jamie
:
Yeah. The standard, the standard. I’m going to try and pick the nicest way to put this. The standard Silicon Valley bull effluent is what I will call it.
You know, but you’re absolutely right. If you if you have a stack of data and you say to an AI, “here’s my data that I could manually go through and find trends, but you can do it way faster than me because you can work effectively at the speed of electrons. Go and do what I would do. This is how I would work on that data. This is how I would sift through that data and look for trends, apply my algorithm to this data,” and then it goes it goes away and manages to do that somehow. It’s totally greater than that. It can’t create anything new. That’s the thing, right?
If I tell an AI, “I run a store and I sell sneakers. Do I need to buy more Nike sneakers?” It doesn’t have the data to be able to tell me. It will probably say yes, because it knows that Nike sneakers often sell out.
Michael
:
Right. But that’s it.
And the thing is, the two quick points on what you were just saying was: number one, I think the reason why people think that AI is smart is because LLMs, and again, there’s you have AI, you have predictive AI, which uses things like regression, and it was the AI, machine learning, that side of AI. And that’s actually something I was doing, you know, eight years ago. But when the LLMs came, the difference between them is is that uh the LLMs communicate using human language. That’s the difference. And because they communicate in human human language, that is why we have this perception, which is natural because we’re used to, “we talk to humans. So therefore, when it’s Talks in human language, we treat it like a human, we think of it as humans,” but it is not. It is only manipulating. Language in a symbolic algorithmythic way. That’s it. But there’s no intelligence back there. But that is useful, you know, in and out, if they’re useful. So So that’s my that’s the first thing I wanted to point out was that that’s why I think people think that AI is smart.
The other thing that I wanted to point out that I found with this whole AI discussion stuff is that people don’t realize that the thing that I feel makes a human a human or any living creature, a living creature versus a non-living creature is that we have desires. It really comes down to desires. And AI has no desires. It always only responds to our commands. I came upon this epiphany with my little niece. She’s three years old now, but when I was working on this stuff, she was like two. And a two-year-old, it’s kind of amazing. They have a lot of desires. And you know what I’m saying? It’s like, “I want this, I want that. And they just go through the life bouncing around with desires.” And I’m just sitting there watching her. Yet she grows and she tends. million times smarter than AI can ever be. She can learn and you know what I’m saying. But I realize I go, “that’s the thing. She has desires and it’s desires that cause things to move forward."
If you really look at it that way, you realize ChatGPT, all it does is just sit there and waits for some human to come by with a desire. And that’s all it does. It responds to desires, responds to desires with its algorithm. That’s it. And that’s fine. It’s very useful. But that’s it. And it’s not this… so, this whole thing, “if it’s going to take over the world, the reason why it would take over the world is if.” Someone decided I’m going to use this AI as a tool to take over the world. But as we know, as computer programmers for so many years, guess what? As soon as you try to take over the world, it’s going to hit a bug. So therefore, if you can write bug-free code that could truly take over the world like Terminator 2, you know what? You’re a far better programmer. Than me, because I’m sorry. You know, the T-1000 would start to walk, and suddenly it’s like it would just, you know, the leg would freeze up, and it’s like, “oh, darn it. Ah, yeah, Stack Overflow."
Yeah. Anyway, I’m just saying, I just we can’t write bug-free code. So now, yeah, AI is not going to take over the world. We just can’t write bug-free code. I’m sorry.
Jamie : That and the user story isn’t very good, right? “As an evil dictator, I want to overtake the world using ChatGPT so that I can overtake the world, right?” It’s not very detailed.
Michael : Exactly. Exactly.
Jamie : Oh my goodness.
Sponsor Message
Today's episode of The Modern .NET Show is brought to you by RJJ Software: strategic technology consulting for ambitious SMEs.
You know me as the host of this podcast, but here's what you might not know: I'm also a Microsoft MVP who's helped businesses from Formula 1 teams to funded startups transform technology from a cost center into a competitive advantage. At RJJ Software, we specialize in three things that matter to growing businesses:
- AI that actually delivers ROI: not hype, just practical implementations that pay for themselves
- Developer Experience optimization: we've helped teams achieve 99% faster deployments and 3x productivity gains
- Strategic technology decisions: from architecture reviews to fractional CTO services
The difference? We don't just advise. We ensure successful implementation through knowledge transfer to your team.
If you're an SME leader wondering why your technology investments aren't delivering, or you're facing critical decisions about AI, modernization, or team productivity, let's talk.
Visit rjj-software.co.uk/podcast to book a strategic consultation.
Now, let's back to today's episode...
Jamie : Okay, so we were talking about Personal Data Warehouse and how AI fits into it and all that kind of stuff. So let’s talk about that real quick. So how are you leveraging AI, right? So am I, if I’m using Personal Data Warehouse, am I using Azure OpenAI? Am I using OpenAI/ChatGPT? Like, what am I using to be able to use AI?
Michael
:
I’m glad you asked. So, when I decided to put the AI piece in there, because you know, AI can, like I said, be useful in various things. So, I’m like, “it’s useful for writing snippets of code that will then do data manipulation, and that’s darn useful, okay?"
For example, some of the examples I did was I had this mass amount of data. Some of it was collected at one day and the other data was collected another day. And what happens is I needed to know. per customer, what fields were different, and there was like fifty fields, you know? Now, you could write a T-SQL program to kind of figure this out, but it was so nice, I was just able to just pull down both. Like I said, it was big. It was like hundreds of thousands of rows. And then I was able to go into the AI and go, “you know what? I got these two file things here. And on the customer field, I need you to tell me what the differences are. They could be in any of the fields. I’m saying it was like the combination of fields could be different. And I need you to give me those differences in this format.” And just hit the button, and it wrote this kind of complicated code. I’m like, look at it, like, wow, this is oh, wow. And you hit the button and You know, actually, because there was a lot of crunching, I had to go off, you know, get a coffee and come back, and I come back. I had what I needed.
What happens is, is that because I knew the AI is you know very helpful in this program, but everything else in the program was running on your local computer. I realized that I need to allow you to even do the AI part on your computer. So, and again, this is Personal Data Warehouse. I’m sure you have the links that people can download it, but it’s on GitHub. You just pull it down, or it’s in the Microsoft store, again, free app, just search for Personal Data Warehouse. But when you open it up, and you connect to the AI, you can connect to OpenAI, Azure OpenAI, or LM Studio, which is a free program you just download, runs on your computer, or Olama, and I’m sure people have heard about Olama. So it allows you to use any of those. So you can truly do everything on your local computer.
And then some people have situations where, “oh, you know, it’s legal information or you know, credit card information, and you literally are not supposed to communicate outside.” This is a way, you know, using Personal Data Warehouse, you can everything is happening on your computer. So that is a feature that I have. for other programmers who are interested in putting that functionality in their own applications, this is some of the code that I would recommend that you go to my GitHub and steal that code. So the AI connectivity, the creating custom, the creating a snippet of either C# or Python code, having it create it and then executing it. It was very complicated. It was something that took me a month to figure it out. So that’s code that you want to steal. The reporting engine, that’s again code that you want to steal. Just pulling data in, opening up Excel files or CSV files or outputting Excel, or CSV files or pulling data from SQL Server or Fabric Warehouses. Again, all that code is in there. If you can you know, if you find it useful, you should yeah, should go steal it. Because, like I said, I borrowed the code from other MIT open source projects.
And matter of fact, I probably have, I think, almost twenty different projects where I’m pulling their code into Personal Data Warehouse. So you should come in and you should borrow, steal the code also, and then keep it going. And hopefully, people will have situations where they can also have open source stuff and keep it going. But yeah, this is Personal Data Warehouse was built on top of all these open source projects, like opening, you know, creating Parquet files. If that guy, and there’s like, well, there’s a couple of people, but the main guy, if he didn’t have that project there will be no Personal Data Warehouse, okay? Right? It’s like so, yes, it’s all open source. And I’m thankful to the hundreds of people who their work went into creating the Personal Data Warehouse.
Jamie : So let let’s talk about that for a moment then. Um I always if that’s okay with you. Like, I always think of open source software as like Building with Lego or whatever brand you want to choose, right? I’ll take a chunk of code which does communication with an AI. I’ll take a chunk of code which reads my files. I’ll take a chunk of code which draws to the screen. I’ll take a chunk of code which outputs to disk. I have my app, right? You just have to glue them together.
Michael
:
There you go.
But the nice thing about open source is that is how I learn and that is how I grow. And then I take that hopeful growth, good growth, and I then use that in commercial products so that I can pay my bills. But that open source being part of that; and again, Microsoft MVPs. Microsoft is giving us a benefit because we are sharing what we’re doing. You know what I’m saying? If you don’t publish somehow, if you’re not doing a podcast, if you’re not You know, doing books or talking, you don’t get an MVP. But in doing that, that is how I grow. You know, putting it out there, getting that feedback. Yeah, and I’m telling you, once you get into that mode and you get used to that, there’s no going back. There is no going back.
I’m sorry, for me to be closed is to die. You know what I’m saying? It’s death. It’s just what? I’m in an echo chamber. No, no. I need. I need open source to breathe.
Jamie : It’s a great way to get exposure to new ideas and learning in the open. Although it is super scary because we’re all worried about that one person coming along and say, “you’re doing this wrong, you should never be a dev, or anything like that.” Like that person, ignore them completely, right? You’re learning on your own terms, you’re doing it on your own terms. Yeah. But opening yourself up and learning in the open is, in my experience, one of the best ways to do to learn how we do what we do, right? To increase your skills and things like that. Because like you said, otherwise you end up in an echo chamber. “Oh, well, I’m doing it this way ‘cause I’ve always done it this way and everybody I know does it this way.” And then you you end up trying to shoehorn a solution into a problem, whereas actually it should be the other way around. Like what are the other ways to think about this?
Michael
:
Yeah, you got to be vulnerable. Like you’re kind of touching upon that because you’re right, you will get that criticism, but you got to be vulnerable because it’s like a relationship. You know what I’m saying? It’s like. If you’re not vulnerable, you’re, you know, how can you give to your partner or something like that? So, and it’s same thing with open source. And you got to be vulnerable. You got to be willing to take that criticism so that you can and like I said, for me, it’s like so I can survive, so I can live, you know?
So yeah. So yeah, so I’m putting that Personal Data Warehouse out there, knowing that some people are going to say, “what the hell is this thing? It’s dumb.” But so far the feedback has been mostly people just don’t understand it. They’re like, “I see some of the use cases, but they just don’t understand it.” And it is, it’s a weird thing. It’s a weird thing. So I just kind of want to share with people, and there you go. But yeah, it’s a weird project. And that’s why I’m so grateful that you allowed me to come on and talk about it.
Jamie : I mean, you’re saying it’s a weird project, right? But the wheel would have looked weird when it first it first came out, you see? Right? So let’s let’s just uh what is it? Let’s just like embrace the strange, right? Embrace the weird.
Michael : Thank you.
Jamie
:
Come up with an idea and just run with it because, you know, for devs like me, who’ve never done any data warehousing, our conversation now has taught me a whole bunch of stuff about it, right? But also, I can go pull that data and pull the repo. If I have some data that I want to churn through and get a report on me, let’s say, for instance, I have some medical data. I don’t, but let’s say I have some medical data on me, right?
And I want to know, I don’t know, how often do I have to see my doctor about something, right? I’ve probably noted it down in a whole bunch of different ways throughout my life in diaries, calendars. Whatever, I can pull all of that information together and get a report.
Michael : Yes, you can.
Jamie : So why not, right? But also, I can then read through the code and learn the basics of how Data warehousing works as well, right? So let’s do this.
Michael
:
There you go, and that’s it.
Yeah, and That scenario, for example, that scenario, one limitation is for now, it works only on columnar data. Okay, so data that’s that’s you know, that’s columns and rows. Maybe a future version will handle unstructured data, but currently right now, the limitation is columnar data. So if you were able to reduce whatever stuff you have into a columnar data format, then at that point you can go into the AI section and Because the structure of that data is passed to the AI prompt automatically. You don’t have to tell it, it’ll be passed automatically. you could then ask questions of, “okay, there’s the you know the tables,” they’re called tables when you pull in the different things. “The tables that have my test results versus my visits, the one that has my visits. Can you? You know, create a calculation that compares those to those.” And again, that’s where the AI, because again, I said that they’ll automatically feed the structures and it’ll know the, well, this is called that or whatever. Because again, we’re never asking for anything that’s really original. Someone’s done it before. So therefore, the AI is able to go, “oh, I’ve seen something like this before, and it’ll come up with a program that, a little snippet program that actually will usually come close.” And then you’ll hit the button and you’ll be like, “whoa, wow, okay."
And then at that point, you can then refine it. You go, “okay, that’s a good start, but can you put the months, you know, put it segmented by months and then year,” you know what I’m saying? And you work equal back and forth, you know, by programming it. And that’s kind of Yes, that’s a good scenario, I think, where that’s what the Personal Data Warehouse can do. And again, obviously, you don’t have to pay Microsoft. I mean, I love Microsoft, but let’s not pay them when we don’t have to. And also, the data is private. It’s only on your computer. But yes, that right there, I appreciate that as an example of this is what the Personal Data Warehouse can be used for. Yes.
You know that moment when a technical concept finally clicks? That's what we're all about here at The Modern .NET Show.
We can stay independent thanks to listeners like you. If you've learned something valuable from the show, please consider joining our Patreon or BuyMeACoffee. You'll find links in the show notes.
We're a listener supported and (at times) ad supported production. So every bit of support that you can give makes a difference.
Thank you.
Jamie : I do have a, I know we’re rapidly running out of time, but I have a question around testing, right?
Michael : Okay.
Jamie : We’re all you know, all of us enterprise engineers, we love testing, we love the unit test and all and integration test and all that kind of stuff. But I know from my experiments with different LLMs is that they are non-deterministic, right?
Michael : Very much non-deterministic.
Jamie
:
I won’t always get the same response, right? I might get the same response, but I won’t always get the same response.
Just to quickly level set for anyone who’s listening in going, “hat’s non-deterministic?” Take out the calculator on your phone and type, “2 plus 2” and hit equals. No matter how many times you do that calculation until the end of time, it will always say, “4.” Every single time, it is deterministic. You can determine what the outcome will be.
Michael : Based upon the same input.
Jamie : Yeah, that’s it, right? With LLMs, It’s… yeah, good luck, right?
Michael : But that by the way, that’s a feature, not a bug, but continue.
Jamie : Yeah, exactly. So you have a system that does a whole bunch of stuff, including talking to LLMs. How in the heck do you test something like that if it is non-deterministic when it gets to the LLM, right? Everything above it…
Michael
:
Thank you for that softball into my final point I wanted to bring up. So I’m so glad you brought this up. Again, Michael’s opinion here, strongly held opinion: AIs should only be used in situations where its inexactness and its not always being correct is acceptable.
There are so many situations where not having The correct answer all the time, or not being clear, is actually okay. And it’s usually with the human language. So recently I sent ChatGPT a picture of a sore that I had on my hand or whatever, and I was like, “oh, you know, is this something serious or not?” And ChatGPT was like, “well, you know, I kind of think, no, it just looks like, you know, blah, blah, blah. But, you know, if this happens, blah, blah, blah.” Mean Meaning the answer it gave me was not definitive. It was not maybe necessarily correct. However, it was still useful. Great. Therefore, do not, do not, ever, ever use AI in a situation where I got to have this answer.
So, therefore, every time I use AI. Even in Personal Data Warehouse, whatever the AI comes up with, when I present it to the human, the human therefore has to make a decision whether or not they will accept this or not. That’s what I do, but I would never have a program where you do a thing, you hit a button, AI does a thing, right? And then, for example, deletes files on your hard drive. Or it sends the email to tell someone that, “hey, you know, you have cancer.” You know what I’m saying? Never, ever, ever. Can the AI help write that letter? Sure, but that thing must be displayed to a human being. The human being must be able to easily make the decision: yes, we’re going to send this letter to the person that they failed the test, or, you know, or we’re going to order those sneakers.
That’s kind of, I guess, my answer, which is: AI will never, ever, ever, ever, LLMs. And actually, even predictive analysis, same thing. So, all of AI, I would say this for the entire AI universe. it will never, ever, ever be able to be counted on to be correct. So therefore, when you use it, you must always use it. in a way where the fact that it is not always correct is acceptable for that situation. Thank you for coming to my TED Talk again.
Jamie : You made a really, really, really important point. And I don’t want to detract from it, but the whole time, the moment that you said, “the LLM should never be able to send the email to tell you you’ve got an incurable disease.” I just like in my head, I started seeing what ChatGPT would print out. Like, “you’re absolutely right. Let me draft this email for you.”
Michael
:
And I also want to toss in one quick thing because I don’t want to forget this. One of the greatest books I’ve ever read on this subject was a book I read recently. It’s called “AI Snake Oil.” Every person who deals with AI must read this book.
And what the book is mostly about is all the ways AI has harmed human beings. It doesn’t intend to. But it’s how human beings have used AI to harmed other human beings. In most cases, they don’t mean to, right? But that’s why you should read the book. Because after reading the book, you will hopefully. Not use AI to harm people. And some quick examples they have were things like Epic, which is the largest, one of the largest computer programs in the world, which handles all that medical information and all that sort of thing. They had this AI program that was supposed to predict uh sepsis, one of the leading causes of of death. And because AI improperly done, people died because… you see what I’m saying? Whereas they could have structured it in a way, you still used AI, but structured it in a way so that, you know, it’s not killing people. And the problem is it killed people because it was trained only on a certain set of data. So these calculations were correct for the data it did, but then when people were outside of that norm. It was saying either you were susceptible to sepsis or you were not. That was the people that died. And bad, bad thing. So the book is like chapter after chapter after chapter of example after example.
So please, I urge everyone to get this book. “AI Snake Oil.” Either read it or I I of course listen to it on Audible. But please, please, please it should be required reading in every computer science program because it’s a great book and it changed the way I do things. And Personal Data Warehouse, I put that into the design so that I allow you to do a thing, I show you the stuff, but It’s always, “okay, this is what the AI came up with, but anything that happens with this, you have to, the human, have to get up and do that, you know, act on that information.” Anyway, more soapboxing.
Jamie
:
No, no, that that that makes perfect sense. I think it’s it I think it’s always worth repeating to people that AI is not like some kind of band-aid you can put on something and just make something work. It is really not.
There was it was two or three years ago now. I remember a pilot study was made for helping to detect various different forms of cancer early based on different scans. And in this study, the computer could, the AI that they that they trained was able to then spot 99% of all cancers or whatever in accurately, right? Problem is that what they didn’t say was that the data set that they used, there were two separate types of scans, one where there was a cancer present, but there was also a drawing, like a line drawing around it to say, “this is where it is.”
Michael : I saw that one. Yes, I saw that one. I know that.
Jamie
:
And the other set didn’t have that, which meant that if you presented the AI with a scan, but with just a hand-drawn circle anywhere on it, it would go, “yep, there’s cancer there, because I have,” and it makes perfect sense, right? If you think about it. It isn’t how it works. But if you think about it from a human perspective, if I show you a million pictures of something and say somewhere in this picture there is a thing, and then show you a new picture of something, you’re going to look for whatever features you picked out on. That made you think that the thing was present in that picture.
You know, when I’m talking to my kids about this, I say, “you know, a computer can only recognize something if you tell it what it is, right? So I show you a picture of a cat. You’re going to come up with your own interpretation of what a cat is. What properties make the cat a cat, right? Is it because it’s got pointy ears? Is it because it’s got whiskers? Is it because it’s laying down? It’s standing up. It’s orange, whatever, right?” Then I show you a different picture of a cat. your whole world changes because this cat looks different. It’s in a different position. Maybe one of his ears is up, another one is down. Maybe it’s a brown cat rather than an orange cat. So now you know that cats can be brown or orange. Then I show you a picture of a yellow cat, your world changes again. And it’s all about that sort of very varied data that you’re putting in. My understanding, anyway, my understanding is it’s all about the varied data you’re putting in.
And so if you are showing some kind of AI system, machine learning, predictive, whatever, a whole bunch of data, and they all look exactly the same, you’re drawing its attention to the thing. It isn’t the thing that it will remember, it’s how you’ve drawn its attention. So then, if you show it something without that without those signs of you drawing its attention to this, it will miss the thing that it’s looking for. Because it’s been trained that, “when you see this circle drawn around something, that means that there is cancer.” And so when you show a picture without the circle, it goes, “no, there’s no cancer,” even though there is cancer in the picture. Right.
And it is so important. What you’re saying here is so desperately important that a human has to be the decision maker all the time. It goes all the way back to what you were saying earlier on about, “data is there for a human to make a decision. It’s not there for a computer to make a decision. It’s there for a human to make a decision.” I love it.
Michael : End of story. Full stop.
Jamie : I love it. Oh, my goodness. I feel like I could speak to you for another hour about this, Michael. I know that we have gone over our time.
Michael : Well, have me back on. I have other projects. Please, I hope that you’ll allow me to come back to share some other projects I’m working on.
Jamie : A hundred percent, Michael. A hundred percent.
Michael : And we’ll talk more about AI. I promise we’ll end up talking about AI.
Jamie : The door is always open. The microphone is always switched on. The seat is there ready for you. I’ll even have a cup of coffee waiting for you. You are always welcome back on the show.
Michael : Thank you so much. Decaf, though. Decaf.
Jamie
:
Yeah, decaf. Absolutely.
But yeah, absolutely. We’ll have to continue our conversation another time because I feel like there is so much more to learn here about AI, about different projects, about all the stuff that you’re doing. I would love to have you back on the show. You don’t have to answer whilst we’re recording, but I would love to have you back on the show to talk about these things a little more.
Michael : I want to come back. Oh, well, that’s even better.
Jamie : Amazing. I mean, maybe we can meet up at MVP Summit or something. I don’t know.
Michael : Yes, well.
Jamie : maybe do something live.
Michael : I plan to be there, so yes.
Jamie : Cool.
Michael : Awesome. We’ll have lunch.
Jamie : Awesome. Okay. So, in that case, then, Michael, we’re running out of time. So, how can people find out what you’re up to? Like, you know, on socials like LinkedIn or whatever. And I’ve already got a link to the Personal Data Warehouse GitHub. But is that the best place to go for updates about that?
Michael
:
Yeah. And if someone wants to communicate with me about it, there’s the forums. Of course, I’ll be check those all the time. So that’s a way to get into a conversation. Blazordata dot net. That’s where my blogging about everything we’ve been talking about, that’s where it’s at.
I also have another website, BlazorHelp website dot com, that’s where I do all my other C# blazor blogging about. And then, of course, I’m on Blue Sky. As adefwebserver, and also, of course, on LinkedIn. So, yep, that’s it. I look forward to hearing from people.
Jamie : Amazing, amazing. Thank you very much, Michael. I’ve had a wonderful time, and I am gonna.
Michael : I did too, thank you.
Jamie : When I edit these. Oh, I don’t do the edit. The editor does the edit. I listen back to them about three times, and I know because I’ve been making notes the whole time, there’s stuff that I’ve missed. So I’m going to love listening back to this one. But thank you very much.
Michael : Thank you so much for having me. I appreciate the opportunity.
Wrapping Up
Thank you for listening to this episode of The Modern .NET Show with me, Jamie Taylor. I’d like to thank this episode’s guest for graciously sharing their time, expertise, and knowledge.
Be sure to check out the show notes for a bunch of links to some of the stuff that we covered, and full transcription of the interview. The show notes, as always, can be found at the podcast's website, and there will be a link directly to them in your podcatcher.
And don’t forget to spread the word, leave a rating or review on your podcatcher of choice—head over to dotnetcore.show/review for ways to do that—reach out via our contact page, or join our discord server at dotnetcore.show/discord—all of which are linked in the show notes.
But above all, I hope you have a fantastic rest of your day, and I hope that I’ll see you again, next time for more .NET goodness.
I will see you again real soon. See you later folks.
Useful Links
- Apache Parquet
- Personal Data Warehouse on:
- Michael on:
- Supporting the show:
- Getting in touch:
- Podcast editing services provided by Matthew Bliss
- Music created by Mono Memory Music, licensed to RJJ Software for use in The Modern .NET Show
- Editing and post-production services for this episode were provided by MB Podcast Services