Episode 59: The First One in 2019

Where we talk about Dave's forks

00:37:55 N/A download


Dave 00:15 Hi, and welcome to that Podcast. I'm Dave.

Beau 00:17 I'm Beau.

Dave 00:18 And it's been a while we've fallen into our usual trap of recording an episode telling everyone how it's been a while and then not doing another episode for a while and doing the same thing all over again. I've had a very busy time. I've moved house, so that's taken up a lot of my time, yeah, so I kind of been ... When we did we last record?

Beau 00:41 I think it was on my birthday last year, sometime toward the end of November.

Dave 00:45 Right, so yeah, long time ago. Yep. I've since moved house. That happened at the end of February, so a few ups and downs, but yeah. We're in now, we're comfortable, happy, so all good to go here, and I can probably get back into a bit more of a routine with recording. I don't know about yourself.

Beau 01:01 Yeah. Well, last year I was in a similar situation. We moved into a new place I think at the end of June or the beginning of July, so I know what those first few months are like. Yeah, it's ... it looks great. It's fun to be able to see your house now, because I haven't seen it yet, so I'm used to your old recording studio, air quotes, and now it looks like you have a dedicated room for your office?

Dave 01:29 Yeah, I do. That's right, yeah, so we were previously in a three-bedroomed, what we call a townhouse here. I don't know if you'd be familiar with that. It's in a terrace. Are you familiar with that?

Beau 01:41 Yeah.

Dave 01:41 Terrace? Yeah.

Beau 01:42 Only because I've lived there, now.

Dave 01:43 Oh, yeah, okay, so a terrace would be houses that are all stuck together in a row. A townhouse in UK usually would mean it's over three floors rather than just the two. And my office was essentially in what was a walk-in wardrobe for our bedroom. So now I'm in a four-bed detached house, so we've spent ... well, probably spent double the money really, and I have a dedicated office, which is so nice.

Beau 02:11 Nice.

Dave 02:13 It's different. One of the nice things about being on a three-story house was, when I worked on the top floor, then the kids were on the bottom floor quite often, so now, especially with them being off school at the minute, we're all downstairs together, so it can get quite loud, so I've been dropping on the headphones a little more than I used to.

Beau 02:31 You know, I just came to realize something. The fact that you had a walk-in wardrobe, that was essentially what we would call a closet. Right?

Dave 02:42 Yeah, probably, Yeah.

Beau 02:45 It was- Yeah, and it had never occurred to me that I've been talking to you this whole time, and now I know that those are pretty rare. Aren't they rare in the UK? Like a lot of the places we went to didn't have closets, at least the apartments that we looked at.

Dave 02:57 Yeah, that's right. I mean, it's getting more and more popular now. So any new build, so that house ... well, in fact this house as well, this house is 2003, so 16 years old, so anything from that forward, so of a certain size you'd like, you're going to get ... I say "walk-in wardrobes." It's actually called a dressing room in, I think, in that house. But, yeah, it's the same thing, it's like, it's just a room where you're supposed to put your clothes really.

Beau 03:25 Nice.

Dave 03:26 It's not very common. But in the same way that ensuite bathrooms aren't all that common in older houses in this country. But, yeah.

Beau 03:37 I think I see your modem back there. Is that a modem?

Dave 03:39 Yeah. So.

Beau 03:41 So, no more cable running 50 feet or however many meters that is.

Dave 03:45 Oh. Not to my office but I will be running cables everywhere else. I'm.

Beau 03:50 Yeah.

Dave 03:51 I'm plotting and planning. I've just got a brand new TV. A 4K TV so, the previous one was ten years old. So it was HD but not for ultra HD. So, the wireless has been holding up to that quite nicely with the some of the 4K concept from Netflix, but I'd like to drop a cable into there just to make sure and make sure I'm getting as much as I can down the pipe.

Beau 04:20 Does the TV itself have its own Netflix program or are you using like a Roku or something like that?

Dave 04:26 It does, it has its own Netflix.

Beau 04:29 Okay.

Dave 04:29 Because that's the other thing. It gets all kinds of complicated when you start looking at things like Roku. I mean I know for a fact that there's some Roku devices aren't available in the UK, because you get some better ones. Because I've done this, as I've been looking to buy a new TV I've done a bit of deep dive into the technologies and I'm so far behind and things like, its crazy because I've got a sound bar. I've not put it up yet, but, and the sound bar can do dolby atmos. And the TV can read dolby atmos from something like Netflix but it can't because of the limitations of the audio return channels in HDMI cables the TV can't send atmos to the sound bar and crazy things like that.

Dave 05:18 So I've been trying up to date and get used to all those kinds of things and work out which devices do at most 4K all these kinds of things. Like some devices will do atmos for Netflix but not for Amazon Prime. And back and forth and I think an Xbox, some Xbox there's like one something or other is the most, has the most compatibility so if I get a device anytime it will probably be an Xbox I think.

Beau 05:49 Cool. And you've also started to do some home automation stuff right?

Dave 05:54 Only a very little bit yeah.

Beau 05:55 Very little bit.

Dave 05:55 We have a hoover, sorry a vacuum cleaner that although I haven't actually linked it up to Alexa yet, I just leave it to come on every day at 8.00 o'clock and that's about it. But yeah other than that I haven't done anything. I'd still like to get some light bulbs and some switches, but I've just not got around to it yet.

Beau 06:17 Yeah. Beck actually, her Christmas present to me this last year was a Romba, so that was pretty exciting. It was one of those toys that I always thought would be pretty cool. But couldn't really justify it. So it was great to have her pick up on that and that was a huge surprise because that's not something that I would have expected her to even consider really, much less actually get me for a, a surprise.

Dave 06:49 Yeah, I mean Rebecca was quite skeptical and I felt a push to go for a more, a very, a Roomba and a more expensive one at that. But Rebecca seemed like skeptical about it. And she's still not terribly convinced. She can see how much it's picking up. But she's, and rightly so, you can't replace a human with a vacuum cleaner with the robot. But the fact that it does it every day for, and the batteries seem to last really for the time being as well. We got a Eufy. I have no idea if that's how you pronounce it, but the spelling is EUFY. The battery lasts great. The only thing that happens is there are three little senses on the sides. They're to sense drops to stop it going down the stairs, and if they get dirty or dusty it refuses to move, which makes sense. And that can happen at least once a day I would say.

Beau 07:49 Huh.

Dave 07:50 So I have to go and give him a little wipe and it carries on again. I just wish there was a way to software disable it because if I'm making the decision that there are no steps for it go down then it's a risk I am willing to take. But, yeah, other than that I have been very pleased with it.

Beau 08:07 Cool. That's awesome. Yeah, ours is just pretty nice. We do have ours on the second floor so there is potential for it to go down the stairs, but I haven't had that particular problem yet, but I do occasionally get the bin is full sensors trigger the bin being full even when it's not. I like open it up and oh there's nothing here. But otherwise I've been pretty pleased with it. It's only sucked up iphone headphones, the old white. It's done that a few times, its gotten into some cords a couple of times but we've gotten pretty good at picking things up which was one of the side effects I was hoping for, that would actually help us declutter by making sure this thing was going around indiscriminately sucking up everything that was on the ground.

Dave 09:00 Okay, Yeah.

Beau 09:01 It's actually been helpful.

Dave 09:03 Yeah, we're the same really. The only thing, one thing it did manage get of hold of the vertical blinds in one of the rooms and there's little chains at the bottom of ours. And one of them, one of the plastic hooks on the chain had broke so it was dangling down on the floor and when it gold hold of that it just, there's more than one of those little hooks are broken now so I'll have to replace it.

Beau 09:27 Yeah, nice.

Dave 09:28 So hey ho.

Beau 09:30 Yeah, so what have you been doing technology wise? Programming or work? Or whatever?

Dave 09:36 Well, lots of programming. It's bit of weird one. It's been a, feels like there's been a lot of tooing and froing and indecision for it. Particularly today. I was just going over this in my head about, we don't use a framework if, well we don't use a full framework as it were. And it's funny how I started putting together this feature today and I started having to do some of the sort of mundane stuff like form handling so, validation with the form, therefore displaying error messages that preferably contextually against form fields. Then mapping from data to an entity, assisting the entity after validating it and all those kinds of things just a simple, it's a very quite simple thing really.

Dave 10:26 But because we don't use a particular framework I quite often don't really like using the Symfony form component if I can get a way with it because it's a different monster. I use doctoring but I don't write setters or don't generate the setters automatically anymore because I generally try and avoid them. To be honest I'm starting to get a bit fed up with that if I'm honest. I think I can do with creating more setters and just making they do things sensibly. I'd rather have the setter there and prevent the object from getting in an invalid state by doing something in the setter than not having them and trying to name methods all the time or juggle things.

Beau 11:05 Yeah.

Dave 11:06 When other things will do it for you. If you, the Symfony form component will do that nicely for you. If you have setter methods, and you have the maps to form fields it will, and it's funny because I started that way, feeling that way this morning and be like it would be much nicer if I was using a more user friendly ORM and then even so, a more friendly framework just for the fact of printing out these form fields along with error messages for them and then mapping from those form fields back to the objects and things like that.

Dave 11:36 And then it's strange how quite quickly things can change. Tiny little, what I considered to be fairly tiny changes to the say the user interface mean that you just, all of a sudden you quickly have a breakdown between the form and the object anyway. Something that is custom and specific and wouldn't be handled by a framework or I don't think it would be anyway. Or even if it did, it would probably be some of sort of convoluted way that I may as well have programed it manually myself.

Dave 12:07 As an example, I'm trying to, it's most like an appointment form and given that the model itself, so the backend will store a start date time and an end date time. Sounds reasonable yeap? Like a calendar event. Now these things will never span more than a few hours. So if you or I were actually going to have a date field and then a start time and an end time. So the form has a date, a start time and end time. Where as the backend only has a start date time and an end date time. Does that make sense?

Beau 12:40 Uh hmm. (affirmative)

Dave 12:40 So they don't map one to one at all. And you also have to juggle because it could go for all it could last a few hours, if it starts at ten pm and ends at one am, you've suddenly got two different date times or two different dates if that makes sense.

Beau 12:54 Yeah.

Dave 12:54 Even if you only took one date as imput.

Beau 12:56 Uh hmm (affirmative)

Dave 12:59 So I was sort of, my emotions were a bit mixed. I was like well maybe if I'd had the full framework in the ORM I'd have got to this point much quicker and still have to think about this and write my custom code anyway.

Beau 13:15 Uh hmm (affirmative)

Dave 13:17 But then I was start, when I start to think about it, because quite often, rarely ever do I just leave something at the most basic use case that would have been covered by the framework anyway. So I think sometimes maybe i just be a little bit quicker at getting to the point where I was almost thinking about it too much,

Beau 13:33 Yeah.

Dave 13:33 When I should have got quickly got to the point when I knew I'd need that custom stuff. Instead of even thinking about the generic case and could i write a little helper here that will change this into this form automatically, and I wanted to do it again when, or could I just write the seven lines of code once and probably never revisit it again. I guess.

Beau 13:54 Yeah.

Dave 13:56 So, yeah, but that's pretty much, sometimes worries me that, because we're not running on a full stacked framework like today, is that we're - that I'm, how much time is that costing me on a monthly basis, doing some of the naïve things. I always think of the, whenever it comes to setting out a new controller, and new routes and things, I always think of the resource routing in rails. You know the restful. You can just tell it this is a resource pass or whatever it is for photos and it, you've got those seven methods for editing. New form, create, index get, and all that. And it always make you think that because they create, they have separate end points for the form, so the new I think. And that's get a form for creating a new thing, and then that obviously posts to a different end point and I believe they actually just then, if a foundation or something fails they will re render the new action if you like within that route. That's something I don't do.

Dave 15:08 But it's kind of like, because you got to think when you if you do it, Laravel do it differently. They do a redirect after post I think. So they do, if you're post fails it redirects you back to the form and passes errors and input values to the session I think.

Beau 15:27 Yeah, I don't actually know how that works.

Dave 15:28 Yeah, I think that's what it is. But either way Rails and Laravel both have specific mechanisms for doing this kind of thing, which I don't. And it seems like every time I have this indecision about how I am going to do it, how I am going to pass the errors back to form, and how I am going to. So it does a sort of worry me sometimes how much time is wasted. Yeah. That's that.

Beau 15:49 Yeah. I think with Symfony forms what I've noticed is that they will have different routes for the different things. Like new versus create. So just get versus post. But the same controller will handle both.

Dave 16:05 Yeah, that's usually what I do.

Beau 16:07 Yeah. It's a, just the other night, I don't remember if it was last night or two nights ago, but there was a P2P Townhall on Symfony. Did you happen to catch that?

Dave 16:18 I didn't no.

Beau 16:21 The, you mentioned Symfony forms and forms came up on there. It was Amanda and Matthew and Ryan were talking. And apparently there's a long running thing. Is Matthew, I think he is, is he with Open Sky, is that what it is? Do you know?

Dave 16:40 Which Matthew? Matthew Setter?

Beau 16:42 No, Trask.

Dave 16:43 Trask,, okay. I have no idea.

Beau 16:46 Okay. Well anyway. Apparently there's an internal debate wherever he is working about, not debate but it's well known that Symfony forms is a monster.

Dave 16:55 Yeah.

Beau 16:56 Yeah, and so he was saying that someone had told him, you figure out Symfony forms you'll be like the rockstar internally. And so it is something that's quite massive and it seems like a necessary evil because everybody uses it within Symfony as far as I can tell. And I've actually not had a big problem using it lately, which has been interesting. But I think the, the thing that I started doing was mapping to PTO's instead of trying to map to equities.

Dave 17:30 Uh hmm (affirmative)

Beau 17:31 And that seems to have really helped me quite a bit to better understand it. Because otherwise if you do have to write your entities to your handle. Weird edge cases from forms is just a pain. But yeah, Symfony forms, and then I think Laravel has something similar but it's more generic to HTDP. I think they have a general validation tool where you validate the HDTP requests versus validating a form. Have you seen any of that?

Dave 18:03 Yeah. I've seen some of that, yeah. But Laravel also has a bit more of, well, Symfony has the validation as part of models as well and you can do it with doctoring can't you but it's not all that nice. With Laravel when they might bind the model to a form it will instantly use the models validations won't it?

Beau 18:23 Yeah. Yeah, that's, that is one of the things that's weird with Symfony forms whenever you're working with doctored entities. There are certain things, there are certain validation rules that apply to the persistence layer so, unique user name for example. For unique column and they look the same as the same of kind of validations that you would put on the form itself, that are the form fields. So I know that, for a long time before I decided to always, at which making a decision to always do something a certain ways isn't necessarily as good either, but my default behavior is create a DTO rather than trying to work with the entity. It became a lot easier because then I never worried about the constraints that were on the model anymore because there weren't any. And it was very clear which things were actually going to be form input validation versus what's its persisted to the database. Otherwise it gets all messed up and you're putting both persistence level validation and form validation in your entity models and certain things are allowed to happen and if you don't know why because you think it shouldn't have been allowed, it's a mess.

Dave 19:39 It's one of the things where you are going to have to duplicate at some point anyway so, what I tend to do is, I tend to, particularly when I do duplicate I try to make the backend stuff a little more program or a errory and then obviously the contour especially with dealing with a website the errors I am going to be spitting out there are a little more sensible.

Beau 20:05 Right.

Dave 20:05 So I might, to validate I would expect validation in the control to at least return all of the errors, where as my backend might just return one for example. Does that make sense?

Beau 20:17 Yeap.

Dave 20:17 So if you try to persist, there's something that actually have seven errors in it. The backend will just get the first one and bail, where as the controller would obviously work out all of the errors to try and give the user as much feedback as possible.

Beau 20:30 Right, Yeah. So speaking of your internal framework, I had a thought recently. I was curious how you're handling it. You've essentially forked Silex, have you actually forked it at this point and brought it into your code base or?

Dave 20:48 Yeah, it's kind of the opposite fork in, and I've just, I've literally copied it wholesale into our code base. There are a number of reasons for it. Initially I needed to get up to Silex 2 and that was to try and follow Symfony basically. As you know Silex 2 required pimple 3 and pimple 3 had quite a big breaking change in that it required, the way services were shared was changed. And there were my sole migration plan for that was to use auto wiring so I had my own custom auto wiring which meant I could get away from actually defining our services. Sort of get away from the backwards incompatible part of pimple if you like.

Dave 21:32 So then when I wanted to upgrade to Silex 2, I was like oh well, my old pimples, I need my auto wiring, I need that in the new pimple. And the new pimple is actually more closed for extension than the old pimple. And it wasn't going to be possible for me to extend and use a trait or something like that which is what I had done previously. So I had to fork pimple and I started and I forked pimple and used the composer whatever it is. Is it provides, to say that this package provides?

Beau 22:03 Yeah. Provides or conflicts you can you either.

Dave 22:06 Yeah, it was one of those. And to be honest I was a bit fed up with doing that, it was just like pointless. Silex is abandoned. Pimples, I don't think pimples is technically abandoned but it doesn't receive much development, it doesn't need it. Never did. So what I did was I just copied my new version of pimple that I had already started in a repost somewhere, straight into my code base and then I copied all of Silex straight into my code base and just went from there. It was great. It's okay for me because I know both of those projects really well so it wasn't much of an issue I think getting around. I could quickly delete loads of stuff that I didn't need.

Beau 22:46 Uh hmm (affirmative)

Dave 22:48 Which kept the tests a bit slimmer as well. And yeah, I haven't really done a whole lot that I've needed to. Once I had done that initial migration and migrated us from Silex 1 to 2 I didn't need to change much. I could still go in there now and make some changes if I'd like to specifically because there are places where for example I don't use the monologue service provider that Silex ships with because monologues not that difficult to configure yourself and I'm pretty sure the one that Silex came with had sort of this sperious login and at particular times I didn't really need or care for so I was just like, there's no point even using it. But now I could maybe actually use it.

Beau 23:32 Nice.

Dave 23:33 There are other things as well where I've maybe overridden services in the default service providers. So now I can merge the two and just have one service provider rather than, well particularly that were much more appreciated, appreciative for our services and our hardware because there'd be less cycles because I don't need to extend, I can just do it all in one. But that's just a case of doing it as and when I come to it rather than, I'm not going to start doing that wholesale right now. It's working out fine.

Beau 24:03 So the thing I was specifically curious about is how you're doing with Symfony versions keeping those upgraded. I don't know where Silex left off if it was on Symfony 4 yet. Or if it's still on an older.

Dave 24:20 I don't either actually. I do know that before I migrated to Silex 2 we were on Symfony 2.8. And I know now we are on 3.4.

Beau 24:32 Okay.

Dave 24:33 Which I believe is supported for a good while. I'm not 100 percent sure. You might know.

Beau 24:41 Is that the last LTS for 3.

Dave 24:42 Um, 3.4 is yeah, I think so.

Beau 24:47 Okay. Yeah I was just curious how that worked. Because I know that you've been sticking with Silex for quite a while now and sort of building your own framework essentially from it. But I didn't know how easy that was to keep up to date with Symfony's actual release cycles.

Dave 25:07 It's not easy. To be honest when I did upgrade the form component in actual Silex itself wasn't too difficult because like I said it's absolutely, Silex is really just a lot of wiring of components together. The actual code base, the amount of code in Silex and even what I consider to be more logical code is very slim. There's a lot of sort of code that's more declarative where it's literally just saying if you want a router this is, these are the four classes that you need to put together. I had more of, keeping up with Symfony was more of an effort because there were things like the form component than any of Silex whatsoever.

Dave 25:49 The one change, I don't know where it was, it got deprecated at some point in Symfony 2 where if you were creating say a text field and you know it's just a regular text field, you'd say add field or whatever it is and you'd give it a stringy type text. At some point you had to, that got deprecated and you had to pass a class name instead so, text type, column co in class. I had done it everywhere. I almost have 30 forms across the site. Sometimes where I didn't even, I had forgotten about. I didn't notice. And things like that were a far bigger change for me. There was some sort of juggling with the select fields as well where they used to be able to be key value, now it was value key or something like that if that makes sense.

Beau 26:43 So wait a minute. You're actually using Symfony forms?

Dave 26:46 Yeah. Yes, I am yeah.

Beau 26:48 And you were writing another replacement for that?

Dave 26:51 No I wasn't writing it. I was, I just, I didn't write any replacement as such. I just literally wrote form HML with, and pulled it straight out of the request on the back end rather then actually using the form component. I do use Symfony forms. I'm using some quite big forms as well. To the point where I've got even horrible form hierarchies like embedded forms, sub forms. All of those weird and wonderful things you can do with it that actually you instantly regret I think.

Beau 27:25 But you were building something to validate that raw HDML form.

Dave 27:30 No.

Beau 27:30 No?

Dave 27:30 Yeah, but it was literally custom for that one controller.

Beau 27:33 Okay.

Dave 27:33 Nothing reusable. It was a.

Beau 27:35 Oh, okay. But how do you think.

Dave 27:36 In my head I'm thinking should I write something reusable so I don't have, so next time I've got this decision of shall I use Symfony forms or just write some custom code. But I didn't, yeah.

Beau 27:47 Okay. I don't think I fully understand what you were talking about before but now I do, so.

Dave 27:53 Okay. Yeah, so I'm just trying to think. I don't actually know. I'm hoping 3.4 is going to be supported for a good while now.

Beau 28:05 Yeah, I just looked it up. It'll be supported until looks like close to the end of 2020, oh 2022.

Dave 28:11 Yeah. So I've got a good few years. So that's good.

Beau 28:12 Yeah.

Dave 28:15 I don't know how big a jump it is to 4. We are already up to 4.2 I think or so aren't we?

Beau 28:20 Yeah. Well that's what I was thinking. I know that 4.2's there. I know that 4.3 looks like it is going to be released soonish as well. Yeah, so it's supposed to be released in May. But they'd only get support through 2020 so it's not an LTS so I'm not sure when the first 4.0 LTS is coming out. But yeah, so that's like four minor versions including a major version jump. I just can't imagine trying to keep up to date with the kind of breaking changes that they're known to make on major releases.

Dave 29:03 Yeah, I guess in a way I was lucky between 2.8 and 3 because it wasn't supposed to be a break in change. It was supposed to be all the deprecations and everything like that.

Beau 29:15 Yeah.

Dave 29:15 It wasn't. Anything that broke in 3.0 should have been a deprecation from 2.8 I think is what they said wasn't it?

Beau 29:22 Yeap.

Dave 29:23 Does that make sense yeah?

Beau 29:23 Yeah. Every, I remember being at the keynote or something and you and I were both talking about that, so okay so 3 is 2.8 without the deprecated stuff. So, I'm like oh so we've seen everything that we're going to from 3.0 that's boring.

Dave 29:41 Yeah. It was an enabler I guess but yeah as for, as and when we're moving up to 4 I don't know. It's just a case of really. I mean it literally is just a case of just changing the composer file, installing 4 and running the tests and see what happens. How much blows up in my face.

Beau 30:04 Yeah. I was surprised by how much change between lets see was it 4.1 and 4.2 or 4.2 and 4.3. because I think I'm on, like they changed something core about the way the skeleton works that, without that EMV files are being handled, which they were differently named. Previously .EMV was the file that you didn't, put in the repository at all and then you had .EMV.DESt that did and they switched that which I just thought was, it really threw me for a loop. .EMV is now the equivalent of .EMV.DEST.

Dave 30:48 Okay.

Beau 30:48 And now you can create .EMV.LOCAL or .EMV.DEV.LOCAL. So there's a bunch of new options but when I first looked at it I thought something had gone horribly wrong. Because why's it kind of in my .EMV file, it just feels really weird to have it in there. Apparently it matches what other core factor skeletons are doing. But I don't think I've ever seen that before where .EMV is just checked in and expected to be there and yeah. Have you seen that anywhere else?

Dave 31:23 No, I mean, although to be honest my only real experience with .EMV is with mails and in Laravel. So I don't have much experience with those.

Beau 31:35 Okay.

Dave 31:37 Yeah, the things is and again, and that wouldn't affect me anyway because I'm only using the components. I'm not using the

Beau 31:43 Framework.

Dave 31:44 .INF component. I have no real need to. Well I do I suppose. I don't use, I use environment variables to override some stuff, but I only use that on production servers, staging servers. Sort of other provision servers locally, if you want to override something you just override it in the comfig files.

Beau 32:09 Yeah.

Dave 32:09 So yeah. So yeah, that wouldn't affect me. Any of the framework bundle stuff which is stuff that does see quite a lot more change. They are quite good with the components, about maintaining reasonably sane API's and similar API's so I don't use the dependency injection container. So that's something that wouldn't affect me, any changes to that. Which I imagine are quite big between 3.4 and 4.

Beau 32:36 For the dependency injection container?

Dave 32:38 Yeah.

Beau 32:39 Yeah, there's a lot of new stuff in that. But I don't know, as far as I know a lot of that's opt in.

Dave 32:46 Okay.

Beau 32:47 A lot of the new changes like the auto configuration and much of the auto wiring stuff and the PSR 4 resource, resource paths, things like that.

Dave 32:59 I'm just looking now and the biggest section so far in the new grade is the framework bundle which won't affect me. Or shouldn't affect me much. HTTPP foundation affects everybody. But because that's used so much they're quite, I imagine they're quite careful and friendly with that.

Beau 33:16 Yeah.

Dave 33:17 HTTPkernel will affect me. And security, that's a big one for me. Yeah, I don't think it will be as bad this time. But we'll see.

Beau 33:29 Yeah, I was just curious how that goes for you generally. And kind of where you were at on that cycle because it, I realized recently when I was looking at the 4 releases and I think I upgraded both Silex and Dotcom from 4.1 to 4.2 and it wasn't super painful but I almost wish I could have just created the skeleton from scratch again because enough had changed that it would have been nice to be able to do that. Rather than trying to figure out which files need to be updated. But it sounds like you don't have to worry about that. So that's actually pretty nice.

Dave 34:10 Yeah in a way. Just things usually blow up quite quickly when something has changed. But yeah, I just don't know. It's one of those where I need to spend a week on it at least and I don't really want to give up that time right now. Especially when I've got two to three years within LTS. The nice thing is because it is so popular that a lot of the packages will strive to make sure that they are compatible with it.

Beau 34:37 Yeah.

Dave 34:38 I am slowly trimming down my packages anyway in a lot of regards so I'm less likely to have any conflicts. And the packages that I do use that would maybe cause conflicts are usually quite considerate as well. Things like PHP unit, I think they did use some Symfony components at some point, I'm not sure if they do anymore. But that's something that I like to stay on top of.

Beau 35:01 Yeap.

Dave 35:02 And then other things, I am just looking at my dependencies now and I can't really see much that clashes. Yeah so I am all good for now.

Beau 35:11 Cool. Well, we're coming up on our timing now I think.

Dave 35:14 Yeah.

Beau 35:14 Is there anything else you want to mention?

Dave 35:18 Well, I would say that we'd like to talk more about that kind of thing that I've done in terms of copy and pasting library's into our code. It's something I do quite often now. When I was particularly early in my career quite often I wanted to make packages and quite often when you're making packages you are particularly someone like me how I've been in the code base for nearly ten years now. This isn't, there are packages that I created for use with disco base and I haven't used them in any of the projects or packages that I've created for this project where I have used them in one or two of the projects.

Dave 35:58 I don't work for a webbing agency where, oh well we really need this media library package. We add the same thing to every website that we make every month. I don't have that. So particularly earlier in my career there are packages I created, and don't get me wrong there are other people that have gone on to use them which is nice but, they've never really been big enough to, it's not like I can make a career out of those packages or anything like that. So, quite often I see, there's just no need for all of the generic code that went into that library to make it generic for other people in our project.

Beau 36:34 Yeah.

Dave 36:34 And there's quite a lot of that and it's quite often and I can take a look at my composer Jaston, browse down the list and see yeah, I use ten percent of the code from that package, five percent of the code from that package. It just doesn't need to be like that. So yeah, I think, we are going to talk about it a bit more another time..

Beau 36:56 Yeah.

Dave 36:56 Yeah.

Beau 36:56 Cool.

Dave 36:56 Okay.

Beau 36:58 All right well let's call this one a wrap.