Today, I'm sharing all the latest wearable fashion trends this 2021. What to wear this spring and how to style it. Rightly so, after last year, the 2021 fashion trends are all about positivity and feeling good. Despite being virtual, there was definitely an air of happiness on the runway. Hopeful pops of neon, flowers galore, and even tie-dye rearing its colorful head for another season. In short, it looked like the designers are set on getting us out and about again this year in an array of joyful tones. So I've scoured the high street, the independence and the designers, and I want to share with you all the most wearable fashion trends for 2021. If you're new to my channel, hello, I'm Jess. It would be really lovely if you could subscribe and don't forget to tap all notifications on the pop-up which will just let you know each time I upload a new video. And at the end of this video, follow the link in the description box below to find my daily-style pictures over on Instagram. Right, so many fashion trends and so little time, so let's get straight to it. Now it wouldn't be spring summer if there wasn't at least some interpretation of the floral print. But this year, the designers have made the trend slightly easier and cheaper for all of us by saying that pretty much any floral print color will tick the 2021 box. Now you've probably already got a floral dress hanging in the depths of your wardrobe, so now is the time to dust it off again. The brighter and bolder the better, or maybe take inspiration from the color trends I'm about to share with you and blend the two together. I found this beautiful bargain for just 15 pounds in sales. How cute is this little number, new in it and of the stories? A little bit more high-end, but how stunning is this asymmetrical dress? I think that print is just beautiful. Cezanne haven't launched their new spring collection in full yet, but for now I found this pretty little number to keep us going. One of the most wearable fashion trends this spring summer 21 has to be the khaki trend. And it's one I must admit I'm particularly fond of. A bit like shades of camel in winter, khaki in summer just adds that air of sophistication to any outfit without even really having to try. It's elegant and classy, yet it's really easy to add a touch of cool if you wish. But personally, I love to keep this trend pretty classic. And while I'm thinking of khaki, the trench coat is going nowhere fast. So I thought this would be an easy and a really nice way to introduce the khaki trend. I found this gorgeous summer version at La Redoute, which I think would finish off many an outfit. More of a traditional trench coat now with this typical tan version. I really love those contrasting leather details. I love this new trench coat new in at Cezanne. I've definitely got that on my wish list. Then looking at other khakis, I found this pair of trousers at Mango. I would probably size up in those for more of a slouchy fit. It's not quite khaki I know, but I'm going to squeeze it in because I've just received this set from Everlane and I absolutely love it. The fabric is so beautifully soft. Found a lovely chic for less option at H&M. I tend to live in dresses like this either on holiday or in the height of summer. When it comes to classic chinos in khaki, I personally don't think there's anyone better than going to Gap. In my humble opinion, they've got the perfect shape, perfect color. So if it's not broke, don't try and fix it. For something a bit more special, I found this beautiful floor length silk dress. As you can see, this has already become one of my favorite fashion trends for 2021 and we saw it all over the runway. One gorgeous palette of pastel sorbet tones. It's pretty, it's feminine, girly even, but given a tougher up-to-date edge with soft buttercup yellows, blush pink, mint and gentle lilacs, it's one of the prettiest and surprisingly wearable fashion trends I've seen for a long time. And it has to be said, a great antidote to 2020. So as you can see with my outfit today, I am personally really loving these sorbet tones. I picked up this pretty silk blouse just before Christmas and I absolutely love it. This new in blush pink shirt would also take the sorbet box perfectly. I love that little detailing around the collar as well. Then I found this really affordable satin midi dress. I'd probably always styled that with the tie open at the neckline and maybe adding a belt at the waistband too. And then a lovely pop of yellow with this cotton dress that's currently got 50% off in the sale, so retailing at just 26 pounds. A nice way to introduce the sorbet trend would be with a pair of trousers. This blush pair are unusual, I know, but there's something about them that I really love. Or this mint coat, for example, makes such a statement, but I think that would completely make an outfit. And other stories have actually got quite a few pieces with this sorbet trend. I also found this yellow cardigan with those really pretty little drone reply buttons. Now I'll start this fashion trend by saying it's not the easiest look to pull off. There are lots and lots of versions of this cut out trend already all over the high street, but a lot of them are so tacky, I can't even bring myself to share them with you. I've even seen some celebrities get this look horribly wrong, and you know that they've probably spent a fortune on the outfit, but somehow it still looks cheap. One celebrity, however, who in my humble opinion got this trend spot on, was Sienna Miller. Seen here in her Gucci cut out creation at Gala in Monaco. She somehow manages to make this PVC cut out dress look every bit as expensive as I'm imagining it is. And I actually really like her in more of an edgier look. But fashion trends don't have to be so in your face. You can adapt them to suit your own personal style. Take this Reese version I found, for example. It's elegance personified, and yet it takes the cut out trend perfectly. And I think a woman's back is far sexier than any amount of cleavage could be. Another example, an easy way to do the cut out trend would be just with the bodysuit. The cut out across the chest is really interesting, but at the same time, it doesn't feel too over the top, which I like. It did fall in love with this dress as soon as I saw it. And I think that cut out is small enough and delicate enough to get away with. And I know from experience, the shape and cut of their dresses is beautiful. Going higher end, Camilla and Mark have bought out this interpretation of the trend, just a really simple cut out at the waistband there. And then we have absolutely nowhere to wear it right now. I think this floor length dress is the perfect way to do the cut out trend for the evening. I am a sucker for a white dress. I just love that look. I'm pretty much everyone in summer. And I truly believe there's a style on budget for everyone. It's just a matter of finding it. Or finding me who's more than happy to do the searching for you. Now, while white dresses are a big 2021 fashion trend, I do feel slightly fraudulent saying it because they're pretty much always a trend in summer. But hey, they are so wearable, I'm definitely not complaining. I personally love when they've got little added details, a sprinkle of brodery or lace or some crochet detailing. And if I'm lucky, that perfect vintage version that you just happen across. In short, what I'm trying to say is I don't think I've ever regretted buying any of my white dresses that I have in my capsule wardrobe. They've always had more than their wear over the years. First of all, I found this organic cotton dress in the sale at Netta Porter. It's retailing at 35 pounds. And I think the joy of it is in the simplicity. Now this T-shirt dress is just the sort of thing I love to wear throughout summer. It's very simple, it's elegant, but those little details make it just that extra bit special. Then to a really girly version with those shoulder ties. Looking closely at that fabric, it looks like it's some sort of gingham with a really nice frill detail around the trims. Back to Reformation again, but they do create some really flattering dresses. I really like the nipped-in waist. It's very thin straps and that little bit of detailing at the back. This little dress is really affordable and it's the sort of shape I tend to wear a lot throughout summer. Forgive me, this one is obviously not a dress, but I just spotted it and thought it was definitely worth showing. 2021 might finally be the year that I put my well-worn skinny jeans to one side, for a break at least. Because the new denim trend this year is all about going a bit 90s baggy. Thankfully, we're not talking scruffy, just a little bit on the looser side, which definitely feels a lot more comfortable. Color-wise, it doesn't seem to matter from light blue wash through to dark indigo. So as long as you have a little bit of slouch, you should be right on the money. A gold seemed to be one of the brands doing this trend to the best and I actually found a couple of pairs on their website that I would like to add to my collection. So this is the first pair I found that I really liked on a gold. You've just got that little bit of distressed details around the top pockets and then a slightly baggy version with this one, which is nice to see that waistband just coming down a little bit lower. H&M Conscious Range have bought out their own version, which I think is a great interpretation. And then it's got a slightly different waistband. I actually really like this version. I'd be interested in trying those in my usual size and sizing up. So I have a feeling it might work even nicer. Matches Fashion own collection called Ray really rock this trend. They've been doing it for a while actually. So they've got the perfect baggy jeans on their website if that's within budget. I've been a big fan of oversized or boyfriend blazers for a while now. And lucky for me, it happens to be one of the big fashion trends for 2021. Not only do I love that slightly masculine style, but I also find them hugely wearable. And they mix and match with so many different outfits that the cost per wear shrinks really quickly. If you can't find the right style you're looking for an easy fix this season would just be to size up. You want that slouch to it, but a bit of an elegant slouch. Famous Viscos Blend checked version at H&M, so really affordable with that one. My oversized blazer in this khaki tone came from Everlane. I think it would work nicely with some of those sorbet tones actually as well. I love the shape of this one. It's got that perfect masculine boyish shape to it. And the tone looks like a cross between khaki and camel somewhere in the middle, which I really like. We saw a lot of stripes on the runway as well. And I thought incorporating that trend into an oversized blazer would be a nice way to interpret it. Or you could just keep it classic with a really great option in black obviously something that will never go out fashion in your wardrobe. A bit like jeans. Trails are staying wider this spring, summer, but when it comes to the color the world is your oyster.  In terms of style there was an awful lot of choice as well. You could go with paper bag versions, pleats, tailored seams.  Obviously it's relaxed but there is an understated cool to the look that really does inspire me. Now I believe this pair of trousers are the matching suit bottoms to the blazer I already have. So these are definitely going straight to the top of my shopping list. A super affordable option next. I think those pleats will give this pair of trousers a really nice shape. And I'd probably style those with a classic work tee and a pair of trainers. Just keep it really understated and effortless. Then I find this paper bag version and I actually really like the styling in this of those cowboy boots. It gives it a different vibe but I do think it works. And I also found a lighter fabric version in a very, very gentle pink tone which is something different. When it comes to monochrome, black and white will always last in your wardrobe and it does tend to show off the hardware on your accessories at the same time. We saw a lot of monochrome on the catwalk which is obviously hugely wearable but I hazard a guess a pretty affordable fashion trend as well as we've pretty much all got something black and white in our wardrobes.  Adding my classic black bag and a sprinkle of gold jewelry with my watch and my bracelets just to lift the outfit a little bit. Anina Bing, of course, has got this trend spot on straight from the start. I actually love everything about this outfit. The blazer, the trousers, that little strapless top underneath with those shoes, absolute perfection. Another really pretty dress with those staggered, frilled hams. I like how those sleeves just gently fall over the tops of the shoulders and then I found this little gem from the sails which is actually perfect for a couple of different trends this season. You've got that sheer fabric across the shoulders, you've got monochrome and then, of course, it's all about these lovely pretty dresses so this one ticks an awful lot of boxes. One fashion trend that's left over from 2020 and we definitely see through the colder spring months is the knitted cord. It was seen all over the high street to the point that I was almost sick of it until I saw this slightly different version of Hobbes. It's got a sprinkle of sparkle which I love, it's just gone into the sale and I'm thinking it's one of those trends that we're gonna see winter after winter or just keep coming back round again. So with that in mind, I don't feel too guilty stocking up on them. I do love a contrasting trim and that looks like a really cozy option. Cozy and super affordable at the same time and I think you could easily dress this cord up once we're out and about again. If you're looking for something a little bit smarter, perhaps wanting to wear a skirt, I found this option I really liked. Going with that tonal vibe, obviously it looks more polished and expensive and nice to get out of trousers once in a while. Saying that, I then spotted this set with another contrasting trim, this time a bit more defined. I think that's a beautiful cord option. The 90s are definitely back in fashion and not just when it comes to baggy jeans but the infamous little slinky dress made an appearance too. I do like this trend, one for its wearability but also I think you can feel safe in the knowledge that the trend will come back time and time again. Find one made to last and I don't think you'd ever regret the purchase. If you're on a budget, I would look for options made from the hugely affordable tensile fabric which just so happens to be really sustainable as well as having a beautiful drape. H&M actually use this fabric an awful lot particularly in their premium collection so worth keeping an eye on their website. But if you've got the budget to burn I would always say opt for silk. It's surprisingly breathable in summer and the drape is just stunning in these types of dresses. Or mid-range price point I would say go for satin. I found this gorgeous golden brown version by brand called Liner Dot. I really hope you found this video helpful discovering all the latest and most wearable fashion trends for 2021. I will do an updated version of this as we get towards the height of summer. But for now, hopefully that's lots of outfit ideas and inspiration to get you started. I'd love to hear from you too in the comments section which is your favorite trend you think you'll be wearing this season. Do let me know your thoughts. Thank you so much for watching. Again, if you're not already subscribed I would really appreciate your support and don't forget you can also find me over on Instagram at fashion and style edit. I will be back in a couple of days with more outfit ideas and styling advice. So hopefully you will join me then. Take care.


let some people trickle in. Welcome, thank you for coming. My talk today is called Beyond Validates Presence Of. I'm gonna be talking about how you can ensure the validity of your data in a distributed system where you need to support a variety of different views of your data that are all in theory valid for a period of time. So my name is Amy Unger. I started programming as a librarian and library records are these arcane, complex, painful records, but the good thing about them is that they don't really often change. If a book changes its title, it's because it's reissued. And so a new record comes in. We don't deal with that much change in alteration within the book, data, obviously users are a different matter. So when I was first developing Rails applications, I found active record validations amazing. Every time I would implement a new model or start work on a new application, I would read through the Rails guide for active record validations and find every single one that I could add. It was a beautiful thing because I thought I could make sure that my data was always going to be valid. Well, fast forward through a good number of consulting projects, some work at Getty Images, and now I work at Heracu. And unfortunately, this story is not quite as simple. And so I wanted to share today some lessons I've learned over the years. First, kind of speaking to my younger self, why would I let my data go wrong? That would be how me five years ago today would be reacting to this. What did you do to your data and why? Next is prevention. Given that you may have accepted that your data may look differently at different times, how can you prevent your data from going into a bad state if you don't only have one good state? And then finally, detection. You know, if your data's gonna go wrong, you just better know when that's happening. And if you were here for Betsy Habels-Talk just before me, a lot of this is gonna sound familiar, just be a little bit more focused on the distributed side of things. So first let's talk about causes and how your data can go wrong despite your best intentions. And I'd like to start with reframing that by asking why would you expect your data to be correct? Five years ago, me would say, but look, I have all these tools for data correction, correctness. I have database constraints and I have ORM code. I have active record validations. They're gonna be in my corner. They're gonna keep me safe. So let's take a quick look at what those would be. So for database constraints and indexes, we're looking at ensuring that something is not null. For instance here, I'm trying to say that any product that we sell to you should probably have a billing record. For the health of our business, it's kinda important that we bill for things that we sell. And so this statement would keep us safe in the sense that anything, before we can actually save a record of something that we have sold to you, we also need to build up a billing record. The core allowing there would be an active record validation. The inspiration of the title of this talk where product validates presence of billing record. Although after I submitted this talk, I realized the syntax is a little bit new. So here, this is what you may recognize and I need to clearly review something. So why would this go wrong? Well first, let's get a product requirement that gosh, it's taken too long for us to sell things. You got so much work going on when a user clicks a button, I want that. We really wanna speed up that time. So you think, gosh, I've already extracted some of my email mailers. I'm doing all the things I can in the background. But billing only needs to be right for us once a month, at midnight hour, beginning of the month. Until then, we have a little bit of leeway. So why don't we move that into a background job? Well that leads to a kind of sad moment where we have to comment out this validates presence of billing record because we want to get our product controller to have this particular create method. And what we're doing in that create method is we're taking in whatever the user gave us. We're saying, hey, all right, we now have a product that we have sold. And we're gonna enqueue this job to create the corresponding billing record. And then we're gonna immediately respond with that product. And that's awesome for them. They can start immediately using their Redis, their Postgres, their app, whatever they want. And it just leaves us with, within a few milliseconds, we need to get that billing record created. So it sounds great. Unfortunately, what happens if that billing creator job dies? You're in a tough spot for having a product that is not in fact filled for. Then we have another fun complication.  That does not seem like the right engineering decision. So let's pull out all of our billing and move it into something that can be scaled at a far better pace for that kind of application. Well, now our job billing creator just gets a little more complicated because when it is initialized, it finds the product, builds up this data, and then calls out to this new billing service. And now we have two modes of failure. One is your job could just fail, but then most of the job could succeed, but your billing service could fail horribly, which leads to our fun discussion of all the ways your network can fail you. So some of these are easier than others. You can't connect. Okay, well, you can probably try again. No harm, no fail. Let's just give it a shot. What happens if it succeeds partially on the downstream service?  Well, is it gonna immediately error? Because it's like, I'm in a terrible state. I refuse to accept anything. Or is it going to say, that looks weird. Maybe I'll create a new one. You have another option. The service completes work, but the network cuts out in such a way that it thinks it's done, but you don't see that. So do you retry that and risk the fact that maybe you're gonna bill for something twice? And then this final one is kind of a corollary to that. Do you distinguish between the knowing which systems will roll back if they see a client-side timeout error? So with all of these aspects that are critical to designing highly-performant systems that are going to be distributed, I think we have to move to accepting that your data won't always be correct. Or at least it will be a variety of different ways of correct. It is perfectly fine now for a product to not have a billing record, because all that means is that the billing record is in the process of being created. What we want to be able to express is the fact that eventually we truly expect something to coalesce to most likely one, but maybe multiple, valid states that we expect it to spend the majority of its life in. Now, of course, that's not always true. People create products, or buy things, and then decide, whoops, that was exactly the wrong thing to buy right now, and then immediately cancel it. So you may not even get to see this thing finally coalesce into something that you might think would be valid. But what if you don't always know what correct is? So let's move to prevention where it's more about handling those errors. We've stopped really caring about making sure that everything is in a perfect state. Let's just sophisticatedly handle the errors we're seeing. So we have a number of strategies. The first I'd like to talk about is retry. I mentioned this earlier. If you can't connect, might as well just try again. But this brings in to question a couple of issues. First, you wanna be aware of whether the downstream service supports item potent actions. If it does, you're good, keep on retrying. Even if it succeeds, keep on trying. It's fine. The next is a strategy that if you're doing mostly just background jobs, you can implement some sort of sophisticated locking system. I haven't done that. It seems a little more work than I would want to do. But then again, if you are only doing jobs within one system, that might be the right solution. You can choose if you don't trust your downstream service to be item potent. You get to choose between retrying your creates or your deletes. Please do not retry both. Or have far more confidence than I do that your queuing system will always retrieve things in order. And the reason why you might think you don't have to choose is because, sure, if you put them on a queue, you can get first in, first out. Really well.  Right? Why retry just once? What if the service has a 15 minute blip? Should that require manual intervention? Probably not. You probably wanna say, hey, retry this thing like five or 10 times. If it fails on the 10th time, that's fine. But try it five times. Well, so what happens then if your delete call takes far longer to fail than your create? What that means is that by the second time round, your delete that is being retried for the second time is higher up in the queue than your create.  And if you end up in the unlucky position that your delete call gets pulled off before your create, then you're left in a situation with someone who just wanted to quick buy something, realize that they did something wrong, delete it, and yet they're being billed for this, add an infinite item, and nobody is happy. A final thing to mention with retries is, if you are gonna do many, many retries, do consider implementing exponential backoff in circuit breakers. Don't make things worse for your downstream service. If it's already struggling by increasing its load. Another strategy you have is rollback, which is a great option if only your code has seen the results of this action.  But what about external systems? And the fun thing here is you need to start considering your job queue as an external system, because once you say, hey, go create this billing record, even if the end result is that that billing record is going to be in the same local database, you can't delete the product, you can't just have that record magically disappear. So roll forward would say, you have a number of options, right? You can in queue a deletion job right after your creation job. Even once you create something, you can delete it. You can also have cleanup scripts that run, that detect things that are in a corrupted state and clean them up hopefully very quickly. But rolling forward is all about accepting that something has gone wrong, but that something existed for just a short period of time. And we can't make that go away because something out there knows about it. All right, so you say, okay, this kind of makes sense, maybe. What does this look like for my code? First, let's talk about transactions. So transactions will allow you to create views of your database that are only local to you.  If you wrap that all in a transaction, and any exception is thrown and bubbles up out of that transaction, all those records go away. Now you're downstream services, you still need to worry about those. But it's a nice tool for making local things disappear. With that in mind, there are a couple of things you might want to consider. First is understanding what strategy you're using. Usually this will be the ORM default. So if you were in Betsy's talk earlier, you saw ActiveRecord.Base.Transaction do. That chooses by default one of four transaction strategies. If you're in Postgres, if you read Postgres' documentation, you'll see they choose a sophisticated default, but please understand which one you are using because it has implications for what things outside of the transaction can see in and what they can. The next thing I'd like to suggest you consider is adding your job queue to your database. Now this, if this causes you absolute horror because of the load that you foresee putting on your database, you are correct. And this is a little bit like me. If I were from LinkedIn in the days when they had rumors had it like 20 people working on Kafka and then they told people, everybody should use Kafka. Heroku has a decent number of very intelligent people working on Postgres. That being said, if this doesn't totally terrify you, you should definitely absolutely do it because what it means is you do not have to worry about pulling deletes off of the queue. They just disappear. So instead of having that crazy race condition of a delete possibly outrunning a create, just never happened. You can write code as if you just were able to go ahead and think, but then if you have an error, it's as if that job never got enqueued. Next suggestion is to add timestamps. And I would suggest adding one timestamp to an object for every critical service call. So for a product that you sell, you might wanna consider adding billing start time and billing end time. And what you do is you set that field in the same transaction as you call to the downstream service. If the downstream service fails, it'll raise an error that you choose not to catch which will exit the transaction and result in that timestamp not being set. Timestamps obviously allow you some fun debugging knowledge and they do help you with additional issues debugging across distributed services. But the nice thing here is if the timestamp's not set, but you know that call never succeeded and you should be able to retry if you know that it is safe to do so. The next one I wanna talk about is code organization. And this is one where I don't have any panacea and is really hard. But I want to advocate very strongly that you think about writing your failure code in the same place as you write your success code. And what I mean by this is if you have a downstream service, let's say you're calling Slack. In the next few slides, I'm gonna talk about creating a new employee. So let's say you're uploading or Slack, so you're creating a new employee within your company Slack. The same place that you are writing that create call, please only a few lines away have the code to do the wind back so that no matter where your call, whether it's further down the line from Slack, wherever your employee creation fails, the code, the path of the code goes right back through that. And what it helps do is it helps your developers think about failure paths at the same time as they're doing successes. So what would this look like? So let's say we're going to create an employee. And we have this beautiful app. This is a completely contrived example. So we're gonna have a local database. We're gonna register them in Slack. We have a HR API. We're gonna upload a headshot to S3. Then we have another bunch of jobs, I don't know, maybe getting them all set up in GitHub. So what happens if, let's say, S3 is down? Lovely thing that I'm already standing up, right? So if S3 is down, and I wrote this slide the day before S3 went down, let's say S3 goes down, then your employee creator class has a pretty clear path for unwinding this all, right?  And that's lovely. You can think through that, right? But this is kind of more like the code rewrite. And if this does not look like any code you've ever seen, congratulations. This is awesome.  You will get all the job applicants. So do you know what to do to unwind this mess if it fails right there? I don't. I have absolutely no idea. And sure, I can stare at this long enough and try to figure out what's going on. And I'd probably get close. But if I'm tired, if I haven't spent time with the Slack API since they updated it, I'm probably gonna make a mistake. So something I'd like to suggest you consider is something called the Saga Pattern, which allows you to create an orchestrator that essentially controls the path that things walk through and then keeps all of your rollback or roll forward code encapsulated in the same spot as the creation code. All right, so with that in mind, that obviously it's hard and we're gonna mess up, how do we detect when things have gone wrong? So the first thing I wanna talk about is SQL with timestamps. And since we have added at a previous date, timestamps saying deleted at, created at, and billing started at, billing ended at, we actually have some degree of hope of trying to reconcile things across a distributed system. So we may never get to this. We're definitely never gonna get to this. But with a bunch of different small SQL queries, we can get maybe close. So let's say we wanna tackle one small aspect of this. Shockingly, you all do not want to continue paying for things that you no longer have on Heroku. If you delete an app, we probably shouldn't continue billing for it. So this query may look a little bit complicated, but what it does is it says, hey, for our billing records and the things we have sold, find all the billing records that are still active, that are attached to products that are not active, as in canceled, someone deleted them, goes where the product was deleted 15 minutes ago. And what that does is it gives us 15 minutes for us to become eventually consistent into a state that we're pretty confident in. I say pretty not because we wanna continue charging you for stuff, but because let's say the billing API goes down for longer than 15 minutes. This thing is gonna start yelling at me, and that's a pain for me, but most of the time, I mean 15 minutes is a pretty darn long time. We're likely gonna be safe. So SQL with time stamps has a lot of benefits. Some of them are incredibly subjective. The first is absolutely subjective. I am far more confident of my ability to write business logic in really short SQL statements than I am about writing a very large auditing code base. That SQL statement to me was far more readable and something I can maintain confidence in that it will continue to run successfully. Then I am about writing the same thing in Ruby. That's probably gonna be something that your team is going to be different on depending on where you work. The other nice thing about SQL with time stamps is that you can set them up to run automatically. Betsy was talking about Sidekick earlier. We have just an app that will run these. We also have drag and drop folders, so make this easy to write new ones. It shouldn't be hard for someone to think, wow, that record looks weird. Let me write a check to see if there are any others like it. So these drag and drop folders will take SQL and they'll make sure it runs. Alerting by default, if you have ways of making it really easy and consistent, for us that means wrapping our SQL in Ruby files that say, hey, alert me if there are zero of these or alert me if there are any of these, the more common. And then finally, documented remediation plans. As an engineer on call, I have really no interest in relearning our credit policy. So I mean, I'm happy to do it because it means that my mistake is cleared up. But let's not have us have to talk to our head of finances every time. He's not gonna be happy. Some of the challenges here, as you might suspect, are non-SQL stores. And I specifically say non-SQL because you could be shoving structured JSON files in S3. I don't know what you're doing. But yeah, so no SQL, non-SQL, who knows what? And everything I've talked about so far has been built on the concept of the big, beautiful reporting database. And every large organization I have worked at has one of these. Like, you have so many distributed services and someone has just decided there will be a central one. I think it's probably a corollary of Conway's Law somehow, but in any case, what happens if, let's say, one of these is read us? For us, we usually try to just do a quick ETL script and if we need to, get it into Postgres. There's also the fully functioning model of just flipping this on its head. You don't have, if you don't want to use that big, beautiful reporting database and you are fully confident that you can write good admin code, then you open the doors to so many other options. So you can talk directly either to read us, get a direct read us connection string, or hit some API that is backed by read us. You can hit arbitrary APIs and then you can also hit all of your other distributed systems. For me, the concern is that writing an application that will talk to every single one of your distributed systems seems a lot more bug prone than just SQL off of one big massive giant database. But I've done this. So it really depends on the scenario. So as I mentioned, some of the challenges are non-SQL data stores where, you know, you can call pull transform and cache, those are usually the verbs we're using, but it's really just ETL. You can end up writing code in non-SQL which may be the right choice. The other challenge that we're running to is systems that do not have timestamps and so you can't do anything that says, like, gosh, I expect for five minutes this thing to be in flux, but after five minutes, if it's been created for five minutes, absolutely start checking it. If you can't get timestamps added, then I would move to a strategy close to snapshotting, analyze the whole gosh darn thing, write in records that say, like, hey, at this time it was correctly configured. At this time, this thing wasn't correctly configured, but hey, maybe next time it will be. And then we threw together some SQL to determine whether things are coalescing. You may wanna, again, do this in code. The SQL was about 60 lines long and included a self-join on a table and it's a little scary. The other option in addition to SQL timestamps that I wanna talk about is using event streams. And this may sound somewhat similar to log analysis, which it absolutely is, so if you're doing that, this will be very similar. So let's walk through the process of the events of buying a thing on Heroku. And so each time we hit one of these events, Heroku will emit an event to a central Kafka and we can read all of these events from one consumer. So for buying a product, we'll first see an event that says, hey, someone really wants a Redis. That's cool. We then move into sorted events on, okay, are they authenticated? Hey, is that product available? Are they allowed to install it? And this goes on, many, many, many events are emitted even for the smallest requests until we get to the end, which looks roughly like, hey, this Redis cluster is up and available. Billing has started, user response has been generated either to send them a web hook to say, hey, it's available or because they were in back waiting in line for us to do all this work. And you can start to see patterns. If the user is an average authorized user, right, we can create that list of what events we should see and in what order. And we can use this to determine whether something was actually successfully created and whether we should expect the data to be in the correct form at the end. So some benefits of event streams. It's a single format. You're not having to negotiate, oh, that thing is backed by Redis. That thing like, why are we still on flat files? Why? It is one place. And you can just register a new consumer to walk a stream or walk many streams. It has the added benefit of essentially black box testing your application. So again, if this sounds similar to log analysis or you're trying to determine whether your application is successful based off of, hey, if someone hits the search button, we should probably see some results returned and we see those, that kind of structure in the log. And therefore we're gonna validate that this AB deployment can slowly be scaled up. This is, it's very similar. Just used for a different purpose. I do have concerns about this approach and we're not using this explicitly for any business critical auditing right now. But it's something we've discussed heavily and it's the direction we want to go in as we factor things. So I wanted to show you some of the concerns I had with going down this road. What do you do if you admit the wrong events? Data on disk is something I have far more confidence in than whether we're continuing to emit the right event. I write typos. Anything that sounds similar, I'm probably gonna write. I'm probably gonna exchange it. I've been known to exchange cash for cats. In my defense, there were cats on my lap. But you might have random pillars like that. What if you continue emitting events, even if you're not actually doing the work, people make mistakes. And while it's one thing to scale up an AB test and say, hey, this canary deployment is great. We're gonna go full out with it. It's one thing to rely on events and log analysis for that. It's another thing to trust the health of your business to the accuracy of your events.  What if the stream consumer code is wrong? What is your confidence level that your team is going to be able to write really good auditing code? So this is the end of my talk. But I wanted to leave you with a caveat for what I have been proposing, especially towards the end, which is that everything I've been talking about is a lot of engineering effort. Especially building the beautiful, big reporting database if it's not there. Building an auditing system that will touch every single component of your distributed system. My time isn't cheap. And the reason why my company has chosen to invest in some of these is because there are certain things that we just fundamentally cannot get wrong. We've talked a lot about billing because it's a pretty easy thing. It's kind of visceral, us charging you for something that you should not be paying for. That's bad. But this also applies to security concerns. And for us, those are absolutely business critical. And it's why we're willing to put in this effort. But if you're building something that's a little more lightweight and is not going to take down the business if you get it wrong, maybe consider a lighter weight solution. In any case, so I wanted to say that I hope I have had something that was relevant for everyone in the room, whether that's talking about why your data might go wrong, how you might prevent it, and then detecting when mistakes inevitably happen. I wanted to say thank you. I really appreciate you all sitting through this talk. And I have about five minutes for questions. Nola's trying to clap. We can. We can. We can.


What's going on guys got Kyle here relating sports cards and we're ripping two personals for Robert A It's going to be two boxes of 2023 tops archive signature series Good luck Robert. Let's see what we got just complete your order here. That's true. That's true Shohei does get the uh, or uh, Pete does get the Shohei's We have to 99 going to be JJ Blede on the auto. It's like 2020 Bowman or 2021 Bowman JJ Blede 31 of 99 Marlin's there And one more. Good luck Robert. Let's see it is going to be number to 99 Ian Anderson for the Braves That is on 2022 tops 29 of 99. All right, Robert now we'll do it for two boxes of archive six series. Thank you so much We will get them right out to you


When talking about salvation, have you ever heard someone use the term or say, we invite Christ into our heart, or won't you please invite him into your heart? When you hear that statement, is that a true statement? Is it a biblical statement? Well, one, it's not necessarily an unbiblical statement, although it's unbiblical in the sense that there's nowhere in the Bible where that phrase, that statement is actually used. One, or actually two places where you'll find this brought up where you kind of get this whole concept of inviting Christ or accepting Christ into your heart. You find it one in Revelation 3.20. Let's go there. He says, Behold, I stand at the door and knock. If anyone hears my voice and opens the door, then I will come in and will dine with him and he will, and he with me. Well, that's not necessarily talking about them salvation. What I'm really talking about to this church is allowed to see it. It's talking about kind of how they have really left him out. And so this is Jesus saying to, I want to come back in. Can you make the tie, making this to be somewhat salvific, if not totally salvific? That's fine. I don't necessarily have a problem with that, but this is one of the places where they get that from knocking at the door and him coming in. But that's quite, that's not really quite how salvation works. Another place where you might find this idea, this concept of Christ being in your heart. And by the way, it's a true concept. We'll come back to that in a second, but in Ephesians chapter three, let's go there. Let's start in verse 16, that he would grant you according to the riches of his glory to be strengthened with power through his spirit in the inner man. So then here it is, that Christ may dwell in your hearts through faith. So the idea of him coming in and then dwelling in your heart. Well, the truth is, does he come into us? Yes, he does. Does he dwell in our hearts? Yes, he does. And we were really speaking in terms of the Holy Spirit. And so it is correct to say that Jesus or the Lord, however you want to put it, I'm not going to argue this point right now, but however you want to put it, does God live in your heart? Does the Spirit live in your heart? Well, yes, he does. However, do we accept him into our heart? Is that what salvation is? And then even more to the point, a better point that needs to be brought up, how do you know you've accepted him? How do you know that he's in your heart? How do you know that you are saved? Because when we say this, except Christ into your heart, we're really talking about becoming saved. Well, let's just kind of talk about the mechanisms of how this actually works. Romans 10 kind of gives us where we can start off at. So let's start in, let's start in verse 9, that if you confess with your mouth that Jesus as Lord and believe in your heart, that God raised him from the dead, you will be saved. And so you have to confess with your mouth, acknowledge that Jesus is Lord. Well, how does that actually work? Now the person that makes that profession of faith, it's a true profession. It is a faith that Jesus is Lord, then that person is saved. But what does that actually mean? Well, 1st John 1 9 also tells us that if we confess our sins, he is faithful and righteous or just to forgive us and cleanse us from all unrighteous. So that way, if we acknowledge that we sin, understand that I'm a sinner, I confess that then Christ is faithful and just to cleanse me, to forgive me and then cleanse me of all unrighteousness. So in doing so, and then also acknowledge the fact that he's Lord, so that truth be told, they really kind of go hand in hand. There's no one that acknowledges their sin in this way without also acknowledging Christ as Lord. There's no one that acknowledges Christ as Lord in the way they were speaking of without also acknowledging their sin. To be saved, you are simply stating that I need a Savior. It's the understanding that I'm a flawed fallen human being. I'm full of sin. I need someone to save me and the only one that could do so is Christ and he's done so by way of his work on the cross, his shed blood. I place faith in that. And so because of that, I'm saved. But now to say that, do we accept him into our heart? Not really. The truth be told, it's not so much us accepting him as it is he accepting us. Remember, a believer has to be born again, born from above. The whole conversation that Jesus has with Nicodemus and John 3, this has to happen before anything that you can do, your profession, your acknowledgement, anything before you do it, he does something. So the first thing is that you must be born from above and Peter brings us out. He says in 1 Peter 1 3, Blessed be the God and Father of our Lord Jesus Christ who according to his great mercy has caused us to be born again. Notice he caused us to be born again. And so that work happens in our life first. He actually it's him that invites us in. And so that's really how salvation works. It's not that we accept him in, it's that he accepts us. He chooses us, then we choose him. He loves us first, then we love him. And so if you want to say, if someone wants to use this phrase that I've accepted him into my life, I've accepted him into my heart, that's fine. I'm not going to fight because we understand what's being said. Now the bigger question is how do you know you would accept him into your life? Or how do you know that you are in Christ? That's a more important thing. Not so much again that he's in you, he is, but the way that he's in you is that first you be in him. Paul says that every man should examine himself to see that he has Christ. And that can be difficult for some people sometimes because there's some things that might be happening that causes you, one, if you are genuinely in Christ to kind of rethink, maybe I am and I'm not. And there's some people who aren't in Christ, but they think they are. And so for both, the call is by Paul to examine yourself to make sure that you do indeed have Christ. I'm going to give you three things that I think you ought to look at to be careful about to examine to see. First of all, sin does sin bother you, yours and others.  You should not laugh at it, glorify in it. It should be, it should be a daily struggle with you. Why should it be a daily struggle? Because you have a heart. You have flesh. You have desires that are counter to God. And so he's working in you. Otherwise there would be no need for him. Just like Paul says, this struggle that he's talked about in Romans seven, you're going to have that struggle. Now hopefully it should be that as you go further in your law, in your law, that the struggle is lessened. Some of the things that you struggle with, the sin that bothered you, should not bother you as much. But as long as you are human being on this planet, sin is going to be an issue that you're going to be dealing with. Now fortunately, thankfully praise God, that you have been delivered from the punishment of sin. Another thing that you need to be looking at is, are you living in sin? Now, other people might be able to look and see you and say that you are living in sin. However, they truly don't know either. It's hard for them because they don't know what's actually happening because a sin is committed here and then committed there and then committed there. Those on the outside might look and see, well, look, he keeps doing the same thing. They don't know what's going on internally. They don't know what the circumstances are. They might not even know how long apart, how far apart these sins are. And if you're struggling with those, because again, going back to the first point, were you really broken over the sin? A truly repentant heart will be broken over sin, no matter how the sin comes. If it's a one-time sin or something that they're struggling with, a stronghold because Christians can have strongholds, addictions, things that God is working out of them. And because they don't come out fast enough either for you or for others, that means that the person is not repentant. But this person is not trying to practice and that is not his goal. He doesn't want to just do sin. And then the third thing just as important is, do you testify of Christ? I don't mean that you have to get out with a bullhorn on the corner and let people know that Jesus Christ died for their sins, but something about you should be testifying to others about Christ. Sometimes it's vocally and outward, plainly outward. Sometimes it's kind of subtle. Maybe you might have a word here or there to a coworker or at least tell him what Christ has done in you in your life, how he has come into your heart going back to the topic at hand. So those are the three things that I would say that needs to be present to kind of give you a good guide when someone says, how do you know that you've accepted Christ? More importantly, how do you know that Christ has accepted you? Well, these should be some of the things and you walk by the fruits of the Spirit that we're told. So to wrap up the first point, is it okay to say I've accepted Christ? I've accepted him into my life, into my heart? That's fine. There are going to be some folks that are going to be sticklers for that, but it's not really that big a deal because we understand what we're talking about that I am a Christian that he literally is in my heart. But I was first before he got to be in my heart. I was chosen by him first. Amen.


What's up everybody, Jason here with JasperCaseBricks.com. We just sold out this filler here that unlocks the last 10 spots in hip-brain basketball. This is the 1920 Pinion Mosaic Basketball Hobby One Pack Break No. 153. And again guys, first we do the break, roundabout, the Cousin of the Hits out, then at the end we'll take the 30 Cousin of the Names, top 10, get into the hip-brain break. So there you go guys. Let's click dice roll. It is a five and a four, nine times. Good luck. One, two, three, four, five, six, seven, eight, and it was a nine. Eugene down at D-Low, one, two, three, four, five, six, seven, eight, nine, Lakers down at the Bucks. All right, again guys, thanks for what you got though. This is just a quick little pack filler. All right, here we go.  So let's see if we can get a nice hit, maybe we got an auto, maybe an auto, we got something here. Damian Jones? No. It's out of here though, the brawn base though actually, I'll go for a good couple bucks. All right, well, I thought that might have been a number, a card or an auto. Anyway, let's switch scenes in. Again, top ten, get in guys, here we go. Dice roll it, customer names, boom, roll one and a four, five times, good luck. One, two, three, four, and fifth and final time, here we go, five, boom. All right, top ten, get in guys. Dilo just missing out, but Tristan you're in, Eugene, Dilo, Eugene, Dilo, Dilo, Terry, Dan and Dilo and Carlos, there you go, congratulations. Five times, top ten are in. So good luck guys, or congratulations I should say again. So let's paste in your guys' names here and then come up next is the break-it's office, thanks.