Panel: Performance... performance

Video in TIB AV-Portal: Panel: Performance... performance

Formal Metadata

Panel: Performance... performance
Title of Series
Part Number
Number of Parts
CC Attribution - ShareAlike 3.0 Unported:
You are free to use, adapt and copy, distribute and transmit the work or content in adapted or unchanged form for any legal and non-commercial purpose as long as the work is attributed to the author in the manner specified by the author or licensor and the work or content is shared also in adapted form only under the conditions of this license.
Release Date

Content Metadata

Subject Area
Is your application running too slow? How can you make it run leaner and faster? Is Ruby 2.4 going to make anything faster or better? Should you be upgrading to the latest version of Rails? Is your Rails application being weighed down by a large swarm of dependencies? In this panel the panelists will discuss their favorite performance related tools and guidelines. Expect to learn about changes in Ruby 2.4 and beyond that may help make your applications snappy and lean.
Type theory Computer animation Internet forum Profil (magazine) Semiconductor memory Multiplication sign Square number Coma Berenices Login Family
Group action INTEGRAL Multiplication sign Direction (geometry) Set (mathematics) Insertion loss Computer programming Information technology consulting Front and back ends Semiconductor memory Social class Software developer Moment (mathematics) Bit Staff (military) Instance (computer science) Benchmark Data mining Process (computing) Website Right angle Quicksort Metric system Row (database) Relief Observational study Open source Connectivity (graph theory) Online help Rule of inference 2 (number) Internetworking Software testing Form (programming) Stapeldatei Demo (music) Cellular automaton Interactive television Independence (probability theory) Database Line (geometry) Limit (category theory) System call Human migration Personal digital assistant Blog Speech synthesis Video game HTTP cookie Table (information) Routing Family
Group action Execution unit Source code Disk read-and-write head Software bug Medical imaging Roundness (object) Different (Kate Ryan album) Single-precision floating-point format Physical system Theory of relativity Mapping Software developer Stress (mechanics) Sound effect Bit Maxima and minima Arithmetic mean Process (computing) Chain Text editor Pattern language Quicksort Point (geometry) Content delivery network Open source Patch (Unix) Streaming media Event horizon Number Latent heat Profil (magazine) Term (mathematics) Energy level Data structure Default (computer science) Focus (optics) Graph (mathematics) Matching (graph theory) Information Content (media) Generic programming Reflexive space Basis <Mathematik> Total S.A. Line (geometry) Directory service Cartesian coordinate system Limit (category theory) Vector potential Radius Software Personal digital assistant Freezing Library (computing) Code Multiplication sign 1 (number) Sheaf (mathematics) Set (mathematics) Insertion loss Mereology Web 2.0 Mathematics Positional notation Meeting/Interview Semiconductor memory Data conversion Series (mathematics) Resource allocation Area Scripting language Closed set Feedback Variable (mathematics) Benchmark Measurement Steady state (chemistry) Website Right angle Lastteilung Freeware Resultant Row (database) Trail Server (computing) Game controller Mobile app Service (economics) Divisor Virtual machine Distance Theory 2 (number) Power (physics) Average String (computer science) Utility software Tunis Mathematical optimization Dependent and independent variables Debugger Graph (mathematics) Memory management Variance Kernel (computing) Blog Object (grammar)
Computer virus Code State of matter Multiplication sign 1 (number) Set (mathematics) Water vapor Mereology Disk read-and-write head Subset Formal language Software bug Mathematics Meeting/Interview Different (Kate Ryan album) Single-precision floating-point format Software framework Office suite Resource allocation Area Theory of relativity Linear regression Block (periodic table) Software developer Structural load Bit Benchmark Connected space Message passing Process (computing) Befehlsprozessor Duality (mathematics) Website Right angle Data logger Figurate number Arithmetic progression Resultant Row (database) Point (geometry) Service (economics) Computer file Real number Online help Branch (computer science) Code Element (mathematics) Product (business) Revision control Programmschleife Root Profil (magazine) Term (mathematics) Complex number Traffic reporting Mathematical optimization Condition number Multiplication Graph (mathematics) Debugger Expression Database Denial-of-service attack Total S.A. Line (geometry) Cartesian coordinate system System call Graphical user interface Word Loop (music) Integrated development environment Software Personal digital assistant Blog Statement (computer science) Object (grammar) Fiber bundle Freezing Library (computing)
you close now we have this and easing Panel on performance so many she's is the moderator Sam Saffron is a cofounder of the squares creator Anthony profiler memory profiler mean any research on this he's written extensively about various performance tactics and Sam saffron . com family was making sure discourse keeps running enjoy time and that is everybody still way well that and I can have a panel introduce themselves and then on my of good a bunch of questions prepared but also where accepting questions and there's a little chat they need to use login and type in question and all triadic will stuff is going on and anything really
interesting but supple and interesting books up or the question it it's back to
traditional but anyway let's start on so my name is neighbor back up on a independent forms consultants by a worker people's Rails apps to make them faster and I blogged about it I online at uh speech up . co I am Rafael Furcal I effects of as a producing hearing my job there is still make sure that shotfirers is more fully in your brother she since and they also a member of the risk the I am I mean so I work back my job is sometimes performance but not always but I've given you a few talks on performance on a speaking of integration tests and other stuff in rows and I'm also on the rules for a team with from the the we everybody my name is richard Schneemann migration evens on the internet I work for ASR epistemic Cisco called broke through so they're kind of incoming but some of you might have experience issues with them in the last couple minutes here and so so yeah I I do performance work of like when customers come up with an an issue then it's like OK well how can we make this fluvastatin tickled that I wrote down the benchmark set of any of you all have use that 1 but as well as I've got blog of I'm on the blogosphere so yeah that's me thank you could and so I think we should add like it started talking a bit about how to get involved in this whole performance thing so I guess the question to the panel as you haven't done anything publicly be Fuller and having done any performance work where it where do I start but we do this later down the line every time it right side we have a role that in what you are supported by figuring well alright I lose some of the other and I just thought that was the 2nd study ISO IVI concerted performance work because I used to work at an e-commerce company but and it was clear to me then and as so clear to me now that fast sites are sites to make money but and of sites that people enjoy using I was so I've kind of always had that very like customer-focused approach of like you know the speed of the website is a primary primary component of how you uses your customers and interact with that I'm so I mean I I I'm interested for that reasons I wanted people to buy more stuff on this web site and you know it's it was you starting in a way is like became like it's not often in programming that you can get like these very discrete problems which when you fix them it's like 0 I made this 10 0 1 that's really good right like it used to take 10 seconds that takes 1 2nd like that is better you know like it maybe that's just like the 1 rout that someone hits like once every blue moon but like it's faster for that good now so that's cool but so that concrete Impacts of like performance work became very addicting to me and you know you just keep doing and keep doing more of it I guess and you sort of start picking up the skills I guess so i'm cyanogen work for group you uh 1 of the things that I do it is when I a ticket comes in for Ruby someone is using Ruby and they can be handled by our a are support staff it'll it'll be escalated it'll end up on on my desk and a people occasionally will say hey and using roku and like like in the performance I want and um generally whenever I consider I consider performance issues involved in like generally would somebody is hitting a ball that any kind of the like hot route was breaking all my stuff was averse 99 per cent of the time unless it's like right this very moment that's not true thing and so instead of so I I mean it and it's very good amount of time helping customers due to the right solution but also a good about my job is also proving essentially that it's not good to think that it's it's it's you know it's not me it's you and I and I so that's that's actually what inspired us a bad opens watches out my was was getting a couple performance issues that I just could not and could not above on a rope you a and on this was before we had so we have uh some middle PS exact right now we can actually SSH into it I know and I'll get you know some extra metrics is up that way but before we could do that the only way to debug a a performance issue was to reproduce it and reproduce it locally which also happens to give out of the the benefit of now I can say all the performances you also happens locally like not my issue but now and then I got this great community met a bunch of other people out there care about performance and adjust like even even today people come to me and say hey this I'm experiencing this behavior on my hat likewise happening like this and like I don't know that's it's really like you know that's like telling Sherlock Holmes uh somebody analysts stole could get the cookie jar in but you know just like I have I have to begin and end in the deeper but yeah the is this is something like only advanced developers and devoted to uh from high and this has had then that is you got that like a lot with the performance work to study picked the many profile a German back in the day and you worked on this John community so as I have is that like that have you what what made you decide to just I guess get started with this and like get out there and do this kind of work while the 1st time got involved of performance was because I crashed staging database I trying to insert like a ton of data for the cells seem to use related demos and I don't really know I still I wasn't I will add a record is headed in counters shoved data into the database and then I use so much memory and a crashed the mice QL instance of besieging database so I hardly Figueroa wall why why is it so is aroused call is in my followers of my school's fault and I use that to figure out ways to in search work or update or delete data better so we have a whole memory book problems so for like the insert records I used the direct mines Huelva batch insert verses when I was deleting stuff I used to be answered astray because I just needed to like below the database away Our that led to my 1st talk on active all about really how active record is not it's not a time this fall because it can you like 0 by the way you should use this instead and I mentioned do for you because then you're callbacks are on like other things happened to your life and making sad and not just performance so you don't you know your activity table were free of mn because emissary getting involved in open source stuff and what you're made the many tests and so me profiler just it was like this big problem in that wasn't a problem that was our and remember when I where I worked on it was just something that you were like I need help and it was like the 1 open source private and I need help across the top of it like in big bold letters and as I call this case DeSR enough limitations have been assigned it the so 1st after the relief performers rule as I was all he as the subtlety in Brazil and 1 of my it so 1 of the things that made shall be widely used to do was to work through all the people problems in the use of the other class that we had had major performance problems because of in the reasons like sometimes was that the base that loss front-end performance in its nobody made you want this to work the spot and so I kind of felt may plates in that I enjoyed it because like MIT said it's because of following that you actually see differently being delivered to the users right away because you can
see that your machine to do so that also Wimbish started gives say that I did not to head in a kind of the content to if the scanner for before so doing that so I had to learn the all Disney World for mediators of different tools and yeah and the thing that's you need to be I experienced developer tool who perform a series you create dangerous no the how this CC or like let's say that your here be like a big issue that if you know good well enough to write applications will be sponsored due also will also perform so it will be a huge the I just as would Adelaide as far as experienced developer like I don't think you have to be an experienced developer do performance work like to think you have to be curious because performance work can involve so many different areas of the stack most of which you probably have no experience with that but you know if if a if a web request 6 5 seconds right information that we have out there is literally like 20 layers that right that that are involved in that 5 seconds it's like the network but the application servers your application code of the Ruby via the ERM kernel like there's there's there's an there's so many shades in between of all those different layers right so like I found that this work has made my knowledge pool like much having a very wide and shallow knowledge will now because when you're doing performance work the requirement is known you know it's this the same sloWNet at me a faster but oftentimes it's like that solution could be anywhere feature set to be curious the not be intimidated I think also the yeah sure been so of 1 1 badges generic piece of advice out of that I have really taken to which when somebody asked me like 0 how why do you think this thing I will there's a term there's a saying that says of writers right if you wanna be a writer you should go right like I want to come right away right and if I want do performance work well you need to performance work and AI and just like being generally interested in it but if you don't know where start like you can see what other people are doing or other people are talking about and like what tools exist out there a like I have I got my my even my 1st what things could possibly even be optimized and like I got from my adequate record from a keynote and was like 0 hey there's this thing called like memory allocation when you like created new object in like if you do that much like that's like bad in those cases where we're like at the library level maybe we can optimize that a little bit on the that doesn't have to be the case for everyone but like I I also want and they had a front end of workshop and was like your discrete examples of you know here's a problem and then here's a here's a series of potential solutions so it's just kind of an iterative process of doing the same things like over and over and over and like like he said exploring in in going deeper in the chapter and actually alive and full of questions so I can go off my question was to be checked questions and what 1 question that like to actually talk about here is is tuning the still needed in 2 X I remember that 1 Nynex defaults did not work well with or else a question but to any and all all start answering and in kind of a non obvious answers that if that's the wrong question to be asking because what you should be doing is measuring and if you are measuring and you have some sort of graph that you're trying to make the line go down and you twiddle with something along goes down and you know that the success but if I tell you that you need to edit this kind of GC 7 and you going editor time actually does damage on your performance and don't know then you are in a very serious situation I had discourse we do edits some juicy settings but the ones that we do edits are all based on feedback that we got from graphs that actually showed that changing that setting helped you regret publishing a blog posts that listed all those GC settings is because I think that I wish I knew the amount of people that just copy pasted those in the I'm sorry hit hard at the and of regret that I know and I don't regret information is good if I I don't regret information mentioning this the you rocks were about performance and I think a lot of like for when use 1st year performance problem like your 1st reaction is on a fix this but you can't fix anything with performance until you measure it to so you can't fix about without actually knowing what's causing the bunny here just like you can just shove a rescue in your controller units we have fixed the bug you didn't really hate they yes it doesn't turn anymore but it still there I'm as is amazing performance is making sure that you have a measurement before and after you fix something because otherwise you don't know you actually fixed it and there was a there is 1 time on Harrison and Ira trying to fix performance if you and if we look we were measuring because the profilers there is fixed but the benchmarks set it wasn't and so we discovered the profile alike speed that that number is no longer high after we benchmarked figured out it was still the same speed and slow so that's why you have to measure before after or else you don't know you actually changed anything for the matter it and other to the setting recommendation of so so on what was a conversation we had earlier about within the 3 of us you talking about 2 return of 17 GC the nice locker with other yes so there's a I had at the it's like I GC growth it's upwards growth and factor in it but all yet so it's a it pays to know what changing 1 of those settings is actually doing like I you won't wanna just like is this is a blog posts and my IQ for a while I wanna go through each GC tuning variable explain exactly what it does all but the important 1 of the 1 April and they were talking about is so that each Ruby object gets a slot of in the Ruby the and but this is a or value c structure of indeed the there's 3 variables I think which controls how this slot this the slots grow what 1 is a factor so each time we run out of slots we multiply the most slots we have by this factor and that's the numinous lots that we have not been there's 2 very to other variables which can put a max and a minimum of that number no and so by default we realize it was 1 . 8 I thought it was less than that and so in in vivo thousand slots and I decide anymore I will grow the heat to 18 hundred in the problem is that most people's applications have a million heaps lots from when there is a steady state you know after running for 6 hours or whatever and then you of slots some point GC happens and now you have 1 . 8 million slots which is probably a hundred thousand more than you actually need it would you really need was another 100 thousand slots right so setting those spare can sometimes reduce the amount of free slots that are in the review the and the you would know that this is a problem if in for example the of new relic of new relics Ruby VM tab will show you how many used in free slots but you have at any given time and if you have these huge numbers of free slots the Yellow the part of the graph on new relic then maybe you have a problem with this set and you can also add up all of these things you want to with like you don't want to just are optimizing GC until use you yeah you benchmarking you say OK yes this is the thing this is the thing I'm having problems with you could maybe tell if you have this problem if you look at your map your memory graph and it's you know it's gonna going up and going up and then just all the sudden you see this giant wall of of memory in his like OK will you know what after your servers been running for like whatever 6 hours or something and then changing and changing this value chain is growth factor will help with that of I've got a recommendation and the actual name of the growth factor the actual name of the GC setting up on a article on the dead center for
a grew under um if you like to search group of memory use for a group I think it's or or 14 maybe I a little section on that with a recommendation that things like 1 point 0 1 so it grows by like 1 per cent instead of like 80 per cent so the I mean if you're looking for specifics on discourse is actually open source and anybody can download and install and we have an official Dockery image the controls the whole installation so you can just look at the source there see what we're using and it's pretty well documented why not change whatever GC settings a change of so there's only 1 really that play with which is tapping regret and that of instead of the growing exponentially making it just grow by 100 a 100 thousand slaughtered at and there are more questions yes and the what does great performance mean to you is high up here fantastic superior Sociedad utilization sub 100 millisecond requests by Danny what is fantastic performance the so I guess yes pattern that yes that is fantastic and it that when I when I think about performance I think about the end result so a lot of times we like to think that you know the service says that it's able to render stuff uh to generate stuff in 100 ms everything is good and like we can go on now because all work is done when in fact like we have all these little Javascript snippets that we've collected from all these places and we put but we didn't think about upon performance at all and every user that does stress site actually experiences a 5 five-second delay because we didn't think about a CDN we didn't think about deferring on JavaScript we don't think about minifying tend have a script possibly and so on so for me like yeah I mean this is 100 millisecond thing that you know Amazon strive but there's also a you know that when when I think about performance I don't just look at the server side I 1 I think great performance I think about Wes Anderson movies that is good yeah as you as you go in and of itself the at the close of the of the we thank you have an idea of low so I I mostly focus on the server side of things and and I consider good I low request variants and so what that means is that all of its even if your average is like a were serving requests in like 10 ms but 1 out of every like you know that means maybe most of your requests like 1 millisecond and then 1 is like 10 seconds or 20 seconds 30 seconds I gets really high request variants and so on and that that ends up having of a lot of impact and yes that 1 person has to wait for that and 2nd thing but if you can also get this like this so in effect where slow requests will end up behind that our request lined up behind that slow request and then it'll feel a lot slower but and like a lot of these things like tuning UGC you're like you know modifying the server settings or something like it kind it doesn't matter if if you're in the code is just slow of and so like my be my approach when I end up with 1 working on Apr that is slow is I wanna know the slowest points and that's why I start but I mean the source and points that have a lot track and then getting getting those down and generally you not only do those become faster it actually speeds up there a little bit of the rest of your server as as well yeah it's just like queuing theory 101 that it's way easier to load balance something where the response that the time in the system that is has low variance and something that has high variance books that now the Judson which utterance-level Sunita the filter them out and the perhaps another that there's a good question no losses due ever find yourself preemptively over optimizing your code for performance full there is a need to consider it yes and all it's like performance but think this is kind of why sometimes measurement will go by the wayside is that and properly like benchmarking profiling is like I think I over here is like this but like the the solutions are like such like candy to me like gain implemented you know the level of the latest like little trick or whatever like I love that so like yes over so those do things to do it and and whether or not I really needed to and so in a and as long as you're not actually spending too much time doing so will have to but when you get like you know 24 hours deeper reaction of to like you know make whatever the new thing thing was work with your outside of the ways to yeah began the it's going to vote you're going and I was like and you don't really a of not from day the power is time request expired I guess I figured out so when you start learning like things you can improve for like for in your app performance-wise there's you know how there's just do that every single time the little I know it's faster but if you're doing that pushed upstream the 2 rounds or to a jam or to Ruby because if you're doing it over and over again chances are someone else is doing over and over and over again to and so then everyone can benefit from a when you push upstream rouser whenever you you if you do something we had someone change finding matches recently aroused something you could add more limits for yeah and so like now you know maybe some used in an apple now everyone in use it is in growls it's and it go if so event better that so you said he said push about distances for refer also like they're about what a thousand opened the braille floor and like how do I at all I managed to get away my the I'm now into the rails 5 2 and my performance fits into the what what can I do to make it more and likely that the change that I submitted will be reviewed by the team and actually merged in what what steps can occur I think there the 1st thing that you need to do is actually used prove that there is a problem in a different so you feel are measuring your application and you put that the they the show or the requests deceive show it is very likely to yield to have these br relation because the we know that someone is having that problem because what we try to avoid the radius is premature optimization was like where a bunch of B us Frosini streams everywhere in different will but to read those ones the that's like you we only want to solve real problems not to change how that would be basis to be the size reflexive but no really that's a saying about overall I cut down on time allocations in directories them it's less likely to be accepted for me in the coming down 50 thousand notations in me general like high then is that and that is what you're looking for the and then all also say different patches are are of every every single pull request has an overhead even if you're just adding that freeze to like a string on 1 line well now suddenly if I'm blaming doing get blamed than that you know that might mess up that it's you know requires overhead from from us and I've done I done see a bunch of rails performance stuff in the past a lot of those reasons are my fault I'm sorry but when I did it I submitted I said here's a here's the benchmarks here's how to reproduce use the steps I took like and not only that but by not only does it keep me honest it also gives other people eyes and the total to look at it and then previously said if you're interested in doing performance stuff then find other people doing performance stuff and hopefully if you if you hear 0 somebody so-and-so like yesterday there's a Camelbak 3 3 times faster right that's a that's a thing you can put a factor of 10 and
uh the 1st thing I did was I was be like OK or how am I message to that it's misspelled that horribly and then like a bunch people favored I and the other end but it did you pull request if you have here's my benchmarks and then you you can go in try and that I have uh a and like I've actually had a case where a people have done that and not got the same results and and actually it turns out that you know that they they didn't push the the fixer or whatever and it's like 0 that was actually really helpful to know that not everybody got the same thing and so yeah benchmarks I have a correction from smiley face 104 caller thing the only 700 issues in rails serotonin now this apologizing and he of and you and I it there's is a question by Nicholas should you refactor before trying to optimize the codebook about like the tension between fast code and pretty cool so where do you whether the panel see themselves in it but I guess continue most of you our fast progress that's the subject to sever questions I think in general you just you know I every time I touch something I try to make it better so if and touching of her performance reason I'm also to try to rewrite it to make it you know more readable or whatever but which is really just had a thing on Puma where we have an issue where um who processes are accepting too many the requests and and they're like conditional and the code that was like causing this behavior it was like really confusing but that we actually like read through without and we're like but what is this until last there like couldn't even like process of all ones so we we we wrote at the same time but the actual change was like just removing it on less from 1 line but then we we wrote the conditionals we actually understood what the change was doing so I I would use any tension there I think you you you kind of get like uh I mean the only Dusan review the like when people waiting in line stuff that you would like you look on role for loops or whatever like really do that concept of do you feel that you should we have a tension between kind kind of so like on the other on the other question which was I and remember that's it's the 1 that you said know about all that question the tension between pretty occurred and fast and so on like knowing a bunch of performance tips like a bunch a micro performance optimization sometimes that micro performance optimization is not as pretty as what you'd normally do in in Ruby I like this you know that recently there's a thing on like don't use case statements out there's like a blog post like stop using k state it's very large grandiose you know thing and it's like coming from a like performance work it's like a a key statements are actually optimized by the by like the the Ruby VM In some cases and like yes it might actually be harder to work with and not as pretty but there there might be cases there might be so sometimes when you just wanna make that thing faster and or words like 0 I can move moved this object allocation outside of the loop but it's you know it's not as like it's not as nice as as pretty and so I mean I I get that but I I tend to only optimise for 1 thing at a time ideally I want to no I want to be correct and then I want to be pretty and then I want to be fast right that's kind of like made a correct make it you know good to work with and then and then make it fast and generally why do it in that water I'm fairly happy with but then results I think I think freeze is a good example of this because adding freezer were major code of me but then it sometimes makes it faster so it's usually you have it and not trying to measure is the performance impact so much better you know the method in rouses called only once the ever on 0 point freezing it this is not an actual is not cobalt mobile times develop year allocation so you necessarily need that in the same way if you like calling it all the time and you wanted to your allocation step the we on another question what might you do to tackle major performance degradation from a framework library language upgrade but you only find with a lot of traffic actually other fellas been going through a big upgrade the term the shopify and like you have you have you tackle any performance regressions but you get from major upgrade so just so give let let T be alike radios to you want to know those 2 so the 1st thing you have to do is like all Bayesian please we want to fix that was as possible because what to read what of whites like this kind of regressions and the only way that to we have right now to know that is when people get to be from left to have we have some some poets like the whole beta-lactam websites that arose the areas some RIAs beechmast just see if you had a relations a lot but that's the that other case that's happening so if you find a major anyway shows breeze to different well so we can look together to fix those operations uh so had discussed those amount of those reports like I remember going the reviews and reassigned to he did a bunch of 3 parts saying that's really where locating mall it's also called bear false slower than before in refix of the the my agree reporting report is the key but like you pick-up petty pick up that you've got a problem for example like you've just upgraded at did you know the full or did you measure everything before ordered to deploy a member of monitoring of you with queso really adds up by we have some money is working in we also have a single root innovation offered a from what we do is only useful also we poets the new way in a small subset of service and we measure the performance difference between that and if anything is the end of the graphs are higher is because of the new facial we usually use some profiling tools like Shrek prove just see what's the difference in the cold bare yeah like what matters that being colored now that was not be colored before in do we get there we parted we averted dishing making this service and we get the departing we try to fix that but so I I can 1 answer a subset of that question and just the like how do you deal with that performs well the like only happens in production and so most of the time I'm able to isolated a little bit like say OK this endpoint is slow like this 1 specific endpoint is slow and if I can't reproduce it locally like will what is different between my server and and locally but like 1 big 1 is that our right like if you if you don't have data locally that is you might be doing like a select star and without a limit and if you have 5 elements in a database that we really fast if you've got a million elements you know it's it's like it's really painful on N so like a database you us out you datastores and and then make it might be the conditions it might not just be that end point and with that in your database it might be that all of those things but only 1 1 specific user is logged in and so that's when having like a a little bit of logging where if you did something like paper trailers or something and you say yes here here this 1 request like this very specific request is itself slow I'm going to try and reproduce my local environment as much as to simulate that request as possible I and that's got me a really really long way granted you sometimes you spend all that effort but it's still can't reproduce it locally but I 9 times out of 10 like find some really low
hanging fruit if I had a nickel for every time a developer said it's fast on my machine that like that yeah so there's a lot of time in different ways to make sure that your experience is experiencing the same thing the U users do the the big 1 that most reals developers and shops don't do is work in development with production like data you probably can't do that if you shop fire git hub but most of us are not shop fire get help and so just making sure that when you know that you call user got all that in development that might return 10 rows but in production it's going to return 10 thousand and so just exposing yourself as much as possible to but the same conditions that will occur and production on a on front end this is always our network in CPU we all have really nice MacBook Air is probably some fat fiber connection officers at home and Chrome dev tools but you throttle your network connection there's also there's totals for throwing our connection but Fraley in our connection slowing down the CPU call that for you and and and and making sure you experience your website the same where users to and I just want to make another comment about like major framework upgrade something that but the and referral do is they're able to run at the same time but an older version of rails and a new version of so they have the ability to deploy it into production with the new major from change say but what it doesn't work well just use the old version from now on and you do do get these think this is something that more and I guess shops should a practice small shop should follow with major roles upgrades or is this something that is very Nietzsche turgid haven't shop for well and the problems of general really really far behind and so on we kind of half intervallic have multiple versions because it's gonna take too long to upgrade the actually get to the point where we can deploy it without having to different versions in the previous most times actually in fact he theoretically could have more now we just don't do that more than 2 at once I I think that if if you have a beaker base it makes sense to have multiple rels versions going just because of the whole whole house how long upgrade process is gonna take it otherwise you're just gonna constantly befalling high and and and there's no way you don't work on a branch of fire salvia costly rebasing because the fixing in other people's conflicts over time and then you're gonna look like extra crazy have just rels of a crazy you get rebase crazy no as as 1 of things that we do in our again have is we have a conditional that if n and this is how I recommend doing the version currently on is your if statements so that's like a special case and everything should fall through so that we keep moving the code that special up to the if case and everything else should fall through and then you know it's broken for the new version and that it's not big enough confused about what am I running Rauss for coder when I running Rauss 3 coding is always your top condition and involves and on refer the so yes I believe that's doing this kind of dual with seen as recall it is better to a parade because it's making Istituto the point but the she finds bugs but also I feel it's a good bet what the entire community to all be able to do that early like we always tries to these radios in some head of the piece of light and 6 months but it's really really is recent they'd say a lot of different things every worse virus conveyed the is leading small obligations but the real part this only happens when people up agreed the major what applications like we shall fight discussed it the implications of a with because usually the get all of the they corner case of different walks so if you we always do that the other applications realities that are able to use 2 different ratio from 0 that's would be better for the donor community at also for the application the any resources that people can go to figure out how to do this because they're not now that it can be done but what what what magic to need to to to make the set yeah so the help has about also really really old both push but that's but I figures are the well but is somewhere someone from the it has made In official phi also has a blog posts of 2 years and will be the in I going to these ways slides they also a new book pose next week that's the by the all of this of this the are loud and the question is what do you do with the germ file and the gem file don't log of so we have that additional right now what we are doing we have a multi badge on but the is side knowledge if I 0 because data files are people doing the we can look at bedside the fights itself that's not so great so I tried to change that to use a different approach like the bundle team told me that there really is cultural politics involves your file that you can use to show different Joe difference he 5 In the unwilling to use steady expression so we have to log files but only 1 is if I when 0 yeah we we have to lock files there are regular Gentile has a conditional in it so if the if if it's get roles for wearing like it'll load the gems for that and otherwise lives the 3 2 returns you probably like whichever of our use no so neatly EI somehow the Muharram bum bumbler basically but everything as them but have environment there and variable in front of a severe was 1 and then it knows which GEM file block to load so it knows that for but I don't I don't know if we had on there because I I was in there for that so stuff I think we're running very very long time and we're already flooding over so I'm just way it was still here you can come ask us questions but here so thank you very much yeah hi how so
currently SHS and are