The talk is about debugging Ruby. These slides are up on the script. You can get a bit of a delete slide debugging Ruby and a follow along if you want. My name's Amon. I go by TMM1 on GitHub and Twitter. And like me, in writing Ruby code, you probably want to do a couple things. One is NastyBugs. Flow code Ruby is known to be flow and memory flow. And this talk is essentially about tools that you can use to fix these issues. There are tools to help you debug. And so we're going to talk about a bunch of these tools. And these are tools for Linux. Since most of us deploy on Linux, it's pretty useful to be able to debug issues that happen in production. Tools for C code, since MRI and most of the extensions we use are written in C. Tools for networks, since most of us are working on web applications that talk to web services and databases and other web applications. And of course, tools for CPU and memory usage, since ultimately that determines how far we can scale and how much it costs to actually run and maintain our Ruby application. So one quick note before I dive into these tools. A lot of these slides have a lot of fine print, essentially, details on how to get up and running, what flags to use, what command line options I use these tools with. I'm going to gloss over these. But the idea is basically what I want you guys to focus on is what are these tools useful for? When would you use them? Why would you use them? And then later on, when you actually find a reason to use them, you can come back to these slides to look at all the options that I use and I recommend copying pasted commands in to get up and running. So don't let those details bother you for now, but be sure to check them out later when you're actually trying to get up and running. So the first tool is LSO. This is something that's available on your Macs, give a Mac, and runs on Linux as well. It's essentially used to list open files. So you would run this on any PID, basically. And the cool thing about this is you can take any running process on your system, Ruby or not, and run LSO on it and get a sense of what it's doing. And this is usually the first thing I'll run because it sort of gives you a high level overview of what the process is doing, what it's all about. And so you'd run it and you would see some output like this, and immediately you start noticing some things. First of all, you'll see it's pulling in some shared libraries. And in this case, we see the JSON library, you see the Mancache library, we see the MySQL library. In addition to the shared libraries, it also lists all the open files and open sockets. And so you'll see there's connections, actually two connections to MySQL server, running on port 3306, and another connection to a Mancache server running on local list port 11211. In addition to that, there's a HTTP outgoing connection, presumably talking to some sort of web service. And there's other random stuff you'll notice from there, the current working directory of the Rails application, you'll notice that SCD out and SCD error both point to an NGINX error log, and then there's this rack multi-part file, which is presumably dealing with some sort of file upload. So that's also, again, it's pretty useful because you can run it against any process and sort of see what is it doing, get a sense for what that process is all about. The next tool is S-Trace. S-Trace is a Linux-only tool that creates its system calls and signals. So system calls are basically calls to functions that are defined in the kernel. When you make a system call, you switch out of user space and into kernel space, and basically execute a function that was defined in the kernel. The cool thing about S-Trace is, similarly to else of, you can run it against any running process by just providing a PID. And it actually prints in real time all of the system calls as they happen. So you can attach to any process and you watch it actually calling functions in the kernel. So there's two ways that I like to run S-Trace. One is in the summary mode with the dash C flag. And the way this works is you attach, you run it for a while, and then when you control C, it'll print out the summary of what happened during the time when it was running. And basically what it does is it shows you what system calls are called most often and where you're spending the most amount of time. So this is pretty typical for any sort of web application. If you're doing a lot of reads and writes, usually you're talking, you know, you're reading back data from MySQL server or web services, stuff like that. And so most of the time, 50% of the time here was spent reading from different sockets. So that's summary mode. The other mode is tracing mode. This is sort of the normal mode. And I use a bunch of flags that are listed over here, but you end up with output that looks like this. Basically streams in real time or you can tell it a file to pipe into. So if you take a closer look at this output, it basically shows you all of the details for every single system call that's going through the system for that specific process. And so you might start noticing certain things. For instance, a Rails application will be doing a lot of reads and presumably we'll be getting incoming HP requests. And so here you can see it's reading from file square 22 and it's reading what looks like an incoming HP request. And it tells you some details such as how long that we took and how many bytes ended up reading. And again, FatherScript 3.22, if you remember back to the LSO output, you could run LSO on this process and see what FatherScript 3.22 points to and see the port and the IP that it maps to as you could get the client's IP. Another thing you might notice is lots of reads and writes from MySQL database. And so again, here, FatherScript 5 corresponds to a MySQL connection and you can see we write a select statement. It's pretty fast and then we read the response from the MySQL server and you'll notice on the right, it shows that that read took about a second, almost a second and a half. And so that right there is indicative of a slow MySQL query. So I've used S trace a lot. It's actually really cool. You can run it on any process, like I said and sort of get a sense of what's going on.  And one thing I noticed was Apple like this, tons and tons of signals, SIG VT alarm. And I was wondering, what's going on here? And I started digging into it a little bit. It turns out Ruby 1.8 sort of uses the SIG VT alarm signal to manage its green threads. And basically it tells the kernel, send me the signal every 10 milliseconds. That way I know every 10 milliseconds to switch threads. The problem with this was, my application was not using the threads and I was still seeing this. And so I started digging into this and came up with a very simple patch. And the problem was basically, once you started a thread, an additional thread, even if that thread went away, it would continue getting the signal for the entirety of the process. And so I submitted the patch that was recently accepted. It took about a year to get accepted, but it is gonna be part of Ruby 1.8.8. And it basically, all it does is, as soon as the last additional thread dies, it kills off the timer. And so you're no longer getting interrupted. Another thing I noticed in S-tracing Ruby processes was, again, this is summary mode. Tons and tons of calls, here there's almost between a half million calls to a function called RT SIG PROCMAS. And so I started digging into this. And what's going on here was the default builds for Ruby on Debian and Red Hat Ubuntu all compile with a flag called enable pthread. And this actually doesn't use native pthreads, it's sort of misleading. But what it does is instead of telling the kernel to send it that SIG-BT alarm, it spawns off one additional kernel level thread to do that timer. The problem was because of a slight bug in the configured script, in addition to enabling that additional thread timer, it would also force using SIG PROCMAS every time a signal was delivered. And so this actually caused a huge slowdown, a 30% slowdown, which is why most people recommend that you don't use the default Debian package for Ruby when you're deploying it to production systems. And so, again, I submitted a patch to this, which is now part of 188. And as of the next Debian release, they actually incorporated the patch as well. So this is no longer going to be an issue. But again, something as simple as just S-tracing your process, looking at what's going on, sort of asking questions about what is this, and sort of dig into a little bit, leads to pretty major wins and a better understanding of what's going on. The next tool is TCP dump. Oh, yeah, question. Do you know if RVM enables pthreads with you? RVM does not enable pthreads by default. The only reason that Debian does this is because the only reason it's recommended to enable pthread is if you're using Ruby TK. And Debian has to sort of accommodate everybody, whereas most of us don't use Ruby TK and RE and other builds don't enable by default. Yeah, over here. Should you enable pthread on Ruby 1.9? Ruby 1.9 probably doesn't have this option because the 3D model is completely different and there are no more green threads. There's fibers that are the equivalent of green threads, but threads by default Ruby 1.9 are actual native threads. Any more questions? I'm gonna stop probably at the end of each tool to get any questions, just so it won't be easier. So the next tool is TCP dump. This is really useful for networking. And again, like I said, most of us are writing sort of web applications and applications that are talking of a lot of different network services. Again, there's a bunch of options that you can use. What it boils down to basically is an expression that you pass in and that expression dictates what sort of traffic you want to watch for. And so you can type an expression such as this one. Find the all TCP traffic that's going to port ED and that's basically outgoing HP requests. And so you'll start seeing both incoming and outgoing HP requests and you can sort of get a sense of what's going on on the system and here you'll see here's an HP request that was probably incoming for a PNG and you can see what IP it came from, what IP it's going to, et cetera. Similarly, you can do the same thing for MySQL. Start seeing MySQL queries coming in and out. We're probably the most useful way to use TCP dump is with dash W, which basically takes all the data and puts it into a file. And the cool thing about this is you can run this on your server, collect a bunch of data, you know something weird's happening, either with MySQL or Memcache or some sort of web service you're hitting, you'd be a tutorial API and you can write an expression to capture only that data right into a file and then download that file loaded into Wireshark. And Wireshark is an awesome utility. It's all a really nice GUI. The cool thing is it understands a lot of protocols and so it'll show you here's an HP request and it basically parses out all the headers from the TCP data and you can drill down into the actual protocol and it understands all of the major protocols to make it real easy to dive into problems and try to figure out what's going on. So any questions about TCP dump? Cool. Next tool is Perf Tools. Perf Tools is actually a set of tools that came out of Google and it's used in Google on their production systems and it's actually really, really nice. Here's again a bunch of details on how to get up and running. You basically have to download it and set it up and then the way it works is it provides a shared library that you can either link against or LD preload and then as long as you're linked against the library all you have to set is an environment variable called cpu profile to tell it where to dump the profile information and once you have that, you can use the pprof tool to analyze that profile and give you a bunch of data. Really cool thing about this is it provides a graphical output like that on the right and basically just by looking at that you can see where most of your time is being spent because the bigger the box is, the more expensive that operation is. So again, I ran this on a bunch of my Ruby stuff and the first thing I did again, since this is a sampling profiler it's fairly low overhead and you can actually run it in production if you want and so I ran this on a production MRI instance and just wanted to get a sense of what's going on inside MRI and I found something pretty interesting about 10% of the time was being spent in a function RV store sub bang which translates to string sub bang in Ruby land and I was able to trace this back to the time dot parse function and so 10% of CPU time in my production Rails instance was being spent essentially parsing out time being fed back from my SQL and I was curious what was going on and I pulled up the time dot parse code it looks something like this over here where it basically runs a series of about 2,000 regexes on your string because it supports a bunch of different time formats so that was pretty useful and the solution for that was to switch to one of a variety of different solutions for time parsing there's a bunch of gems, home run, third base, a bunch of other ones that basically move all that logic and see also the new MySQL 2 adapter does all this stuff and see because it knows exactly what the MySQL format stream is going to look like and so basically save 10% of CPU cycles I also ran this on a mem machine so I maintained a mem machine and for a long time there was a known issue where a mem machine and Ruby's green threads did not interact well together and so I ran first tools and 26% of the time was being spent in mem copy and it turns out you can actually follow the mem copy up and see it's being called from RB thread save and restore context and so what was going on here was a weird interaction in between how Ruby's green threads basically switch state and the mem machine was doing something weird where it was allocating a bunch of stuff on thread stacks and so was spending a lot of time copying that state in and out but once I knew what was going on it was really easy to go in and one fixed mem machine so it wasn't allocating so much stuff on thread stack but also we spent some time Joe and I patching Ruby itself so that it didn't need these mem copies in the case where you were deploying on an Intel CPU so again a simple tool and the whole idea here is when you run into a blog you need to sort of get started and a lot of these tools provide a way to get you a little bit of data so you know where to start looking and once you know what functions start looking at you can set a break point there you can sort of put prenefs in there you can do any number of things to figure out what the exact issue is once you know where to start looking so work tools was really cool but the thing I wanted was after running this a few times I was like it'd be really nice these graphs actually showed me Ruby functions instead of C functions and you know in some cases it's easy to see RV stirs up bang sort of understand that that actually corresponds to string sub bang but wouldn't be awesome for that actually send strings of bang in there so I created this project called perftools.rb which is essentially a fork of the project that adds Ruby support to it so again here's how you get started you can just install it but simple example here's a simple scenario application has two actions one is sleep heavy sort of weight heavy so it's not actually doing anything on the CPU but it takes a long amount of time it's sleeping for a quarter second the other one is CPU heavy so it's basically calculating the first 10,000 Fibonacci numbers so you can run perftools.rb on this and I'm sending each of those requests 50 each of those actions 50 requests and what I end up with is again graphs like this and so there's actually two different modes you can run perftools.rb and one is the regular mode which is the CPU profiler mode and one is the real-time mode and so on the right and the CPU profiler mode of course the compute function shows up at the top because it's doing a lot of CPU burning and in the real-time mode the sleep function shows up on top because it's not a CPU intensive but it actually takes long and so you can run it both and on the left in real-time mode it's stuff like HP requests and MySQL calls and anything that's sort of IO intensive is going to show up whereas on the right anything that's CPU intensive is going to show up so again I use this on a bunch of projects early versions of Redis.rb would use the system timer jam on every single operation and that was really expensive and it was really easy to see in here and so we were actually able to go in and get rid of that and only use that when connecting and use normal and cheat-to-be socket timeouts for the actual read and write operations it's actually also really cool this sort of graphical output that gets created for just understanding a piece of code and sort of seeing the call paths and how the functions call each other and how the code is laid out and so for instance, running this on RubyGems you'll notice RubyGems spends a lot of time querying the file system because it's trying to figure out where the gem specs are and what gem specs especially when you require a file that has to go on the file system and check all the load paths and try to figure out where that file exists and you can sort of see where these are getting called from and start looking for spots that you can sort of optimize these things Recently, I ran this on Bundler and I noticed that about 23% of time when running Bundle install was being spent in gem version spaceship was basically comparing a bunch of gem version objects starting to get out of which one to install and so I knew there was some sort of optimization that could be done there and a simple patch to RubyGems was able to improve performance overall performance of Bundle installed by about 15% and it was just some micro-optimizations in gem version but knowing that a lot of time was spent there those micro-optimizations actually made a big difference overall and then finally, this is actually really recent probably a couple weeks ago I added an object allocation mode to Perk Tool and RB and so in this mode each sample corresponds to one object that was created and in Ruby, it's really easy to create objects and objects are actually rather expensive and it's nice to be able to see what functions are creating a lot of them because the more objects you create the more work GCNs do to garbage like those objects the more memory, the more pink memory usage you end up hitting so again, this is on a Rails application running in the object allocation provider mode and you can see again, date parsing and time parsing is not only CPU intensive but also when you're doing it, Ruby creates a lot of objects because you're doing a lot of string manipulation and again, we switched to MySQL too recently and all the stuff went away because it all moved down into C and so you were no longer creating like 16% of the Ruby objects created overall over being created in date parses so that's Perk Tools on RB any questions about that? Cool, so the next tool is Elatrace Elatrace is very similar to Strace but instead of tracing system calls it traces library calls again, you can run it in summary mode or you can run it in a tracing mode so this is the example from before with the mem machine and threading and again, this is just sort of confirmed that mem copy was taking a long time and you could actually see that the mem copies were happening right after each signature alarm so the kernel would tell the process it's time to switch threads and it would do two mem copies and you can actually see the arguments mem copy where it's copying, in this case, over a meg back and forth every time it was doing a context switch and that was because the mem machine was allocating a bunch of stuff on the thread stacks and again, this is cool because you can actually see it happen in real time and you can see the arguments but the big problem with Elatrace is that it doesn't work with the re-extensions and the reason for this is because they're loaded at runtime and they're not linked at compile time so Joe DeMotto worked on a branch of Elatrace that adds libdl support so here's how you use it there's a bunch of options that he added but basically what it lets you do is trace calls to any C function inside Ruby and so you can go ahead and trace all the calls to garbage collection, for instance and so you can actually watch in real time all you're doing is passing a PID to a running process and you can start watching in real time when a garbage collection is happening and how long it's taking and so here you can see this and this was again in production in Ruby and since I was running it against every garbage collection cycle was taking about 200 milliseconds and it was running almost every five seconds and so what that means is in Ruby, in MRI at least and even in 1.9, the GC is stop the world GC and so if the garbage collection gets involved during request response cycle that's 200 milliseconds that's gonna be added to the response time similarly you can run this against other queries other, sorry, other function calls so here's the query function and leave my SQL and so you can actually watch all the mysql queries and how long they took you could do this for memcache if you use this in the past you're trying to figure out where cache collisions are happening and you could just run this for a couple of hours and then run a Ruby script on the output try to do some analysis that's Ltrace, any questions? yeah so one of the first ones you showed that mincopy was being used as a revenue by min machine how did you get mincopy up to figuring out the min machine doing it? the easiest way is with GDB so you attach to the process instead of breakpoint and then you can basically check the entire stack grace I'm gonna dive into that a little bit so any other questions? yeah how do you give the function names to those people that use the breakpoint? just looking at code I guess any questions? yeah the question was how do you get the function name in the first place so you know what to Ltrace and this was just I guess I knew my SQL was making queries so I pulled up a look at my SQL client and tried to figure out what functions to start tracing and the thing you have to do with this is actually provide the function signature so it knows how to show the arguments so you just give it an Ltrace cough that has all the function signatures you care about so GDB is like the standard C debugger and since we're all using again MRI which is written in C and a bunch of C extensions it's a pretty useful tool overall the most useful use case for this is debugging segpoints so every now and then you'll end up segfaulting and you have no idea what to do and you end up, you know, Ruby tells you that and that's not really useful Ruby 1.9 actually shows you a back trace a C level and Ruby will back trace which is far more useful but to sort of demonstrate this I wrote a simple C extension that defines a global segv function so whenever you call segv it's going to segfault and then I wrote a simple Ruby script that does a bunch of stuff before segfaulting so it's, you know, doing four dot times and a door.thdir or a hash.new and then finally segfaulting so there's two ways to catch segfaults inside GDB one is to attach to a running process and you'll notice a lot of these tools have sort of a strong emphasis on being able to attach to a running process and this is really useful because a lot of times you have problems that show up in production and it's really hard to replicate them on, you know, a different environment your Mac is a different environment than your Linux production system and it's hard to replicate them and so it's really useful to be able to go to your production box and say, you know, attach to this process right here and start seeing what's going on so the way this works you, you know, find a page of your process attach to it and it's going to drop you at a prompt and you continue or see and that basically waits until something happens and something in this case is going to be a segfault and so it's going to sit there until you get the segfault the other way to do it is to force the process to coordinate the way this works is you have to do a couple of things one, you have to tell the kernel where to put your core dumps and two, you have to inside your process set the max limit of how big your core dumps is allowed to be by default, this limit sets a zero which is why you never get a core dump if you know your process is about 300 megs usually you know, you can set it to 300 megs and as long as it's under 300 megs it'll dump out a core dump to whatever directory you want it to dump it out to so once you have a core dump or you caught it inside GDB all you have to do is type where or back trace and it basically shows you the entire C stack trace and once you have this I mean you could start looking at the final line numbers or the easiest thing to do is copy and paste this into a GitHub issue or something at least let the maintainer know sort of what's going on they're going to have enough knowledge about their code base where they can start looking at this issue and try to solve it so again here if you remember you know we called four dot times to our CH to our hash nu and you can see the C equivalence of all those inside your backtrace as you see it's due times in numeric dot C which calls RB yield and you end up in dirt dot C and you end up in hash dot C and you can see how that relates to your C code which again was useful but what I really wanted was the actual Ruby function inside my backtrace and so again I worked on a project called gdb.rb which just adds a bunch of Ruby level folks to gdb so you can do a bunch of cool stuff in here again you can attach to any process and you can start evaluating the Ruby code inside the context of that application so again you know you're running thread.current or thread.list size and you're actually getting details about that Ruby process you can get a lot of details about the threads so how many threads are running which one's currently running what state they're in you know the third one down there is waiting on a file descriptor five again I could run lsol on this process and see what file descriptor five is the first thread which is the main thread that's waiting on another thread which is the third thread down there so interesting details it also provides a little bit of introspection into object space and what types of objects exist and so here you can see there's you know about 900,000 live objects and 83% of those are nodes and so it sort of gives you a sense of how much memory you're using how many objects we have created and you can start to see if there's memory leaks in certain areas and then you can actually even dive into different types of objects so you can dive into all the strings and see you know if there's a certain string that's being repeated over and over again unnecessarily so again going back to the example from before we have the site fault and now with gdb.rb instead of just running back trace we can run Ruby threads and see the stack trace for that thread and instead of getting C level file line numbers we're getting a Ruby level file line numbers and it makes it much easier to debug so again I've used this on a bunch of projects to fix a bunch of issues the first one was Rails Warden which had a weird leak Rails Warden is basically a sort of authentication and optimization framework and what was going on here was it was injecting a rack middleware but the middleware was leaking and since middleware has references to the previous and next middleware it's basically causing a leak of all the middleware in the chain and so this was a production application again that had about 4,000 requests and so there were 4,000 instances of every single middleware and once we saw this we were like okay we know where to start looking at least we know why this process is taking up with gdb.rb let's start looking at all these middleware and try to figure out what's going on fix this issue I know that interesting thing I noticed just running this in production mongrel has this really strange piece of code in it where every single mongrel instance has one thread that all it's doing is a loop-sleep one and the only reason I came across this was again I was looking at all the threads inside a Rails instance and I saw there's this thread in mongrelconfigurator.rb that's just doing a sleep and I want to look through the code and it's just like the global thread that exists for no reason as far as I can tell the next one is God God for a long time had a lot of memory leaks and using gdb.rb Eric Lindvall was able to find at least five separate leaks to fix them all and so God is now very very stable and he's been running it for last year without any leaks and again you can dive into all the arrays and what we noticed was there were a bunch of arrays that had almost 100,000 elements and so these were arrays that were just constantly growing until we knew something was going on there and again just looking at instances there were a bunch of driver events and even watches, 43 watches even though I'm just watching one process there's 43 instances of God watch something's going on there. So that's gdb and gdb.rb any questions? Cool. Next tool is a leak house and so a lot of tools are covered so far through the standard Linux and Linux Linux and C utilities. One thing that's unique about Ruby is the way it manages memory which is very different than you do it in C. C is all about explicit memory management allocating, deallocating stuff where in Ruby land you just sort of create objects and let garbage collector deal with it. The problem with this is it's really easy to leak references or hold references such that the garbage collector thinks a certain object is still in use and it's not going to get rid of that object and so there's a variety of tools that help figure out where these objects exist where they were created, why they're sticking around. So the first one is Bleak House. Bleak House is similar to, so gdb.rb shows you what sort of object exists but Bleak House goes a step further and when it actually tells you where those objects were created which is extremely useful because there's specific parts of your code that are leaking objects, right? And so the caveat of course is that you actually have to install a patch version of Ruby and reinstall all your gems and then use that separate Ruby on your application. But once you do that you can get reports like this that basically show you for each file, line and object type combination how many objects still exist. And so you might notice there's 5,000 objects, 5,000 strings, but then you actually get the final line number and you can go to that piece of code and try to figure out why they're being created and why they're sticking around. The next tool that's sort of similar in a similar vein. Before we move on to the next slide with Bleak House so you have to patch your Ruby VM and then reinstall the gems does it have any performance load if you're not actively debugging your code? Yes, so the question was what is the performance impact of Bleak House and basically what it does is for each object that's created it saves somewhere the file and line number. So CPU-wise it's not that intensive but it increases the size of each Ruby object because it adds two fields to it. And so your memory usage will increase which might or might not be okay for production. Do you recommend running that production then? Usually it's not recommended to run production. I mean, if you really have enough memory on your box you can. I'm gonna talk about our tool that's a little bit easier to use and you can turn on and off. Question over here. What do you feel about Bleak House in RBM? The question was how do I feel about RBM in Bleak House? Like, is it playing well? Yeah, so the way this works is when you gem and solve Bleak House it'll actually download into Power Ruby. It'll probably be pretty easy to just add an RBM build for Bleak House. I think, so Evan Weaver wrote this and used it on Twitter for a while but I think it's mostly superseded by the next tool Memproff. Just because Memproff's a lot easier to use and you can turn on and off. So I'm actually not gonna talk about Memproff at Linn because there's not that much time but if you're interested in checking it out bit.ly-slash-memproff is a talk I did a while ago about Memproff. So the cool thing about this is basically it came out of, it's sort of the evolution of GDB.RB and Bleak House in that it does not require any patches. It's just a gem that you load and in addition to telling you what types of objects and where they were created it also tells you where the references are that are holding that object. So the coolest feature by far of Memproff is that you can basically snapshot any Ruby application and upload the set of all objects to memproff.com and you get this sort of GUI that you can start clicking around to navigate all of those objects. And so for instance you could click on an array and see all the elements of that array or you could click on the references for that array and see what other objects are referencing it. Actually, I think I have a few minutes so I'll run through a quick example of how to use this. So I used, we were using Rails 3 in dev mode and we noticed this was Rails 3 beta one and we noticed that over time you get slower and slower and it was actually leaking a bunch of memory. So by the end of the day my Rails application was two gigs and basically crawling. And so I decided to let's try to use Memproff and try to figure out what's going on.  And the way you use memproff is you basically run it and give it a PID and your API key and stuff and basically what it does is it attaches to that PID, dumps out all the objects and uploads that dump to memproff. It gives you a link so you end up on a page like this. And so you can start clicking around to figure out what's going on. I clicked on, do the classes by name, just clicking around and so I ended up on a page like this and this is all built on MongoDB and so at the top there you see the MongoDB query and the number of results and basically the view of all the results. And so what I noticed here was there were 30 copies of test controllers which is really interesting because I sent exactly 30 requests to the application. So I knew something was going on there so I clicked on that and again it just does another Mongo query where it's saying show me all of the classes that have the name test controller and so you see all 30 of them with their memory addresses. So I clicked on one of those to get details about it and then I clicked on references and so again here you can see all of the other objects that are referencing this test controller and so if there were no references garbage collection would go, oh there's no references let me get rid of this object as long as there's references it's gonna stick around with it. So in this list of references I noticed a hash that had length 30. Again 30 requests, 30 copies the hash with exactly 30 elements that's probably where the leak is. So you click on that you get details about it and sure enough there's all of your test controllers and so what's going on over here is it's using the controller class as the key into a hash and it tells you where this hash is being allocated so basically tell me your line to look at and it was able to pass this but basically what was going on was this was a Dev Mode thing where in Dev Mode every request it reloads all your application code in case it changed but at the same time there was a bunch of caching logic in there as an optimization to speed things up that was caching all the partials associated with every controller and the problem was basically since you were reloading all your controllers it would get inserted into this hash over and over again and the patch was really simple instead of using the actual class object we used the class's object's name as the key and so if you use the string test controller it would just overwrite that entry over and over again instead of inserting an entry. So that's Memproff and again if you're interested bit.ly slash Memproff has a lot more details about not only Memproff.com but also sort of the API's that you can use even locally to try to do better so. Any questions about that? Cool. So this is the last tool and I say the best the last if you do nothing else I would recommend you definitely check this out get up and running with this and what this is is basically it's a Rack Perp Tools profiler it's something that Ben Brinkerhoff wrote and it's basically a Rack middleware around my Perp Tools app out of your project. And the way this works is you basically just pull in this middleware and you pull into your Rails application to not know whatever it's just Rack middleware and once it's in there you can profile any web request and the easiest way to do this is on any URL you just append profile equals true and times equals whatever 10 times 100 times and it'll spit back instead of the actual response it'll spit back the GIF profile that we saw earlier. And so this is extremely useful because on per URL, per request basis you can get a profile out and it's so easy to get up and running and this is the way I usually use it down here at the bottom where like the home page or you know certain URL is taking a long time you just append profile equals true take the output, stick in a GIF open that in preview and turn out you'll see the biggest boxes in there is where you need to start looking and again you can set different modes all three modes work with this so you can do it in object allocation mode and see which functions are creating most objects or you can do it in real time mode and get a sense of what sort of IO and other real time operations are taking on this. So that's it for most of the tools any questions about that one? Yeah. Yeah. The printers are, there's text, GIF there's a couple other ones if you check out the Perf Tools RV documentation it's basically all the ones that the Perf Tools project itself exposes there's like PS there's like a PDF one but it's basically either text or graphic. So that's basically it but the main point I wanted to make is you know like when you have a problem it's really easy to sort of ask what the fuck and to be confused but if you have the right tool to go to then you can start chipping away at the problem and it's all about knowing what tools to use and so I really recommend you know at least start playing with these get a sense of what's available at least have in the back of your mind you know this use case why if there's a site for GDB is kind of gonna do the right thing and let me know where to start looking and once you have sort of stuff in your toolbox when you run these problems it's gonna be much easier to go into that tool box try to figure out what the right thing to use is figure out what the problem is once you have at least a small clue about what's going on then you can start making progress and end up fixing that issue So that's it, any questions? Yeah? So I've tried to do these Perf Tools type things in a situation where I'm doing a lot of forking a lot of them kind of fall flat on our face once you start forking because it's really hard to work across processes do you have any of those in particular that you thought worked well or any other tools for debugging forks? Sure, the question was how do you debug across forks? And Perf Tools actually does a really good job of this the Google Perf Tools code itself anytime you fork it'll start the profile over again and basically take your profile or path and append it to it and so it actually works pretty well I don't know how well it's supported in my Ruby stuff but it should be pretty seamless where it should just work and so Perf Tools is definitely the one I would check out The other way to do it is to use some of the APIs directly and sort of add some code where after before you start the profile explicitly which can get a little bit messy but it does work Any other questions? Cool, thanks a lot


الله أكبر إنا الحمد لنا نحمده ونسكعينه ونسكوفه ونعود بالله من شرور أنفسنا ومن سيئات عامالنا ويهنه الله فلا مضللا وليد الفلا هادينا وشلوا الله إله إلا الله وحده يا شريك له وشلوا أننا سيدنا وحبيبنا العولى سيدنا محملا عبده ورسوله خير النبي اجتبه من بدا للعالمين أرسله أرسله الله بدين الحقه ليوله على دينه كله ولو كريه الكافرون الله صلي وسلم وبالك على سيدنا وحبيبنا مولانا سيدنا محمد وعلى آله وأزواجه وغورية وصابه وتابعين بإحسان إلا يوم الدين أما بعد إباد الله وذكركم إنياية بتقل الله سبحانه وتعالى وذكركم بقوله سبحانه وتعالى في القرآن كريم يا أيها الذين آملوا بتقل الله حقا تقاتي ولا تموتن إلا وأنتم مسلمون وذكركم إياية بالحب القرآن كريم وسنة سيدنا محملا صلى الله عليه ورعاله وصحبه وسلم الله أكبر الله أكبر لا إله إلا الله الله أكبر الله أكبر وللله الله أكبر كثيرا as the count of people who perform the Hajj الله أكبر the number of grains of sand in the desert they crossed الله أكبر as many as the times they chanted لا بيك الله هما لا بيك will respond to the call of Hajj or Allah الله أكبر as many times they have circled the Ka'ba الله أكبر as many as the count of the people who perform the rituals of staying in Mina who were present at Arafat and spent the night in Mosdalifar and returned to Mina الله أكبر الله أكبر as many as the count of the people who cast their stones at the Jamarab who sacrificed the Udhia and cut their hair and completed the Hajj rituals in glorification to Allah the Creator of the heavens and the earth الله أكبر الله أكبر لا إله إلا الله الله أكبر الله أكبر وللله الحمد we praise Allah SWT abundantly for the numerous opportunities that he provided for us to worship him and to demonstrate our obedience to his will the reality of all of us sitting here at this moment is that this is a manifestation of what we read in all of our prayers of saying الله أكبر that Allah SWT has heard all of our glorification that Allah SWT has heard all of our praise and that Allah SWT has responded with this means of Hidalp when he asked Ibrahim A.S. to make the call Ibrahim asked him يا الله how were they hear me the order was to make the call and that Allah SWT will fulfill the rest and we praise Allah SWT we see a manifestation of that we praise Allah as we said for the bandies of these 10 days that he provided for us and remembering him the fasting in these days the forgiveness in these days but the Hajr in these days and the charity that we have given in these days and we witness that there is no deity worthy of worship but Allah SWT صلى الله عليه وسلم is his messenger and servant and we thank Allah SWT for picing us in the Ummah of Sayyidina Muhammad صلى الله عليه وسلم from his infinite mercy from his infinite rahmah we thank you ya Allah for that and we witness that Allah SWT that the Prophet SAW conveyed the message completed his mission advised the Ummah and left for us this truth and whoever strayed from it will not have clear guidance Allah SWT gives us many opportunities in this life to stop and think and to examine our lives and our actions and our relationship with him SWT so just like a person who is on a journey and they stop to check their vehicle the time and their directions you look for landmarks on the road and you use them as indicators to ensure that you are traveling in the right direction and we have to use these landmarks to reevaluate our situation so similarly in our spiritual life we have five times a day when we pause from our busy schedules to perform that quick check we have a weekly opportunity each Juma'an to perform the Juma Salat and make another check and reevaluate and we have Ramadan where we overhaul the entire system and recharge our souls and then we have the Hajj once in a lifetime opportunity to cleanse our souls and renew our commitment to Allah SWT in preparing to meet him some of the scholars that I studied with they said that the Hikmah of Allah SWT as why the Hajj is only two months after Ramadan is because the Ramadan is that time for you to prepare yourself spiritually for the Hajj and the Hajj is nothing more as I just stated as a preparation to meet Allah SWT may Allah open that reality for us and I mean Allah also give us the two Eids two fresh starts after the Ramadan and the Hajj two new starts to provide us with the enthusiasm of the beginning of the hope and looking forward the Prophet SAW said of children of Adam or he tells us in the Hadith that it says oh children of Adam I am a new day and will testify about you on the day of judgment so make the best of me every day we are given that we are given life from Allah SWT that translates into giving an opportunity an opportunity to change what is past and insha'a to Allah fulfill those obligations that we were not able to fill on the days that were before it so Alhamdulillah each one of these days is an opportunity for us and we should thank Allah SWT and the best thanks that we can do the best way that we can show gratitude is to be the best that we can with regard to our relationship with Allah SWT with regard to His creation with regard to His servants Alhamdulillah we thank Allah for this last day we thank Allah SWT for making us Muslims we thank Allah SWT for making us Muslims Alhamdulillah and our Lord in the world so we said and today Alhamdulillah is the E so it's not just any day it is a new day that is a special day so E is an opportunity for us to reevaluate ourselves to reevaluate our course to reorient ourselves so that we will be among those that are successful in this life and the year after one of the wise sages of the Ummah had said that today is E tomorrow is E and every day that passes without disobeying Allah SWT is E today is E tomorrow is E and every day that passes without disobeying Allah is E so what does this mean means that the pleasure of Allah SWT is something that should be a cause of celebration we should be celebrating with the greatest enthusiasm our talk be about and saying Allah who Akbar Allah is greater than all things because of this guidance that He has given us how many times have we ignored our duties to Allah SWT and gone off of the straight path how many times have we ignored Allah SWT's command and followed the whims of our own souls and how often do we neglect our opportunities to perform righteous deeds and charitable contributions how much time do we waste in vain and how much time do we spend in useless affairs so it's time for us to stop and examine where we are to look around and where we think that we should be and stop and think about what is going to happen after this what is going to happen when is the last day and there is no one or a night for us or is the last night and there is no more day for us not to be morbid but Alhamdulillah to use it as an opportunity to reorient ourselves to the reality that we're all going to meet Allah SWT and through His generosity He makes it easy for us to meet Him in the state in which He is pleased with us that is our Lord SWT so as we said that this عيد provide just a great opportunity to reflect and Alhamdulillah this عيد is a reward from Allah SWT to those who are righteous and that fill their lives with good deeds so Alhamdulillah we want to ask ourselves on this day what does عيد mean to us what does the عيد mean to us so this عيد as I said represents opportunities to start with a new and a recommitment to sincerity and the expression of love for the one who loves us SWT it's time for each of us Insha'Allah to increase our repentance to Allah SWT to increase our forgiveness to Allah SWT for the shortcomings of our deeds and the lack of sincerity in our works and Allah SWT and Ramadri when he said he said judge yourselves before you are judged and weigh your deeds before they are weighed as today you can work without judgment and tomorrow it is judgment without work أقومي أقولي أقولي أقولي أقولي أقولي أقولي أقولي أقولي أقولي أقولي الله أكبر الحمد لله��حملهtor نستعينه وسنفروه ونعู้ه بالله من شروع أنفسنا ومن سيعكان رالنا من يهدي stations لا فلا مضلنا ومن ي책د فلا هادي إلا واشر Ultimately إله إلا الله وشاروا أن لا سيبنا وحبيبنا مولانا سيدنا محمن عبده ورسوله خير النبي اشتباهه وهدى للعالمين أرسله أرسله ضد بدين الحق ليدر عدين كل ولو كريه الكافرون اللهم صلي وسلم بالك على سيدنا وحبيبنا مولانا سيدنا محمد وعلى آله وأزواجه وخورية وصحاده واتهابعين واتهابعين برسان الى اليوم الدين أما أبعر إبان الله وذكروا بهم بتقلوا الله سبحانه وتعانا وذكركم يقوله سيدنا محمن صلى الله عليه وسلم حيث يقول اتقلوا حيث ما كنتم وذكركم بشرف المكان مصوافا صلى الله عليه وسلم وصحبه وسلم حيث يقول الله صلى الله عليه وسلم إن الله وملائكته يصلون على النبي يا اجمه الذين آملوا صلوا عليه وسلموا تسليموا اللهم صلى الله عليه وسلم بالك على سيدنا محمد وعلى آله سيدنا محمد كما صليت وبارت على سيد إبراهيم وعلى آله سيد إبراهيم إنك أنت حميد مجيل اللهم أكبر اللهم أكبر لا إله إلا الله اللهم أكبر اللهم أكبر وإلا اضعوا مع هذا الحمد لله اللهم فبعاله يتكلم عن هذا وعك تسيبوا بحب لله جميعا ولا تفرقوا وعليا وقال يجب أن نتكلم عن هذا ورائع أخبرت أنه لأنني أمت into Memphis في مرسل السنة مع أمي زيت ويسألت عن هذا الشيء لأنك تساعدت أخرى على مجموعة الشيء يجب أن تنقل لنا من المشاهد ومجموعة الشيء لذلك أريد أن أقول لك أنه كذلك لذلك اليوم أن الله سبحانه وتعالى يتحدث عن السن رمو the service community as well too و الحمد لله أنه كان مجموعة في إمام سراج و أخرين كذلك لأن هذا العمل الحمد لله من أجل هذه المجموعة أن هذه are the days of remembrance of Allah سبحانه وتعالى days of joy and happiness and visitation so visit each other with love, purity and sincerity all for the sake of Allah سبحانه وتعالى and realizing the rewards that we have from Allah سبحانه وتعالى may Allah سبحانه وتعالى accept our sincere deeds and His cause oh Allah most gracious most merciful we turn to you in prayer to express our thanks on this blessed day of Eid that you have bestowed upon us in the blessings of this great day we beseech you ya Allah we call upon you O Creator of mankind free us from our egos, greed, lust and hatred and replaceable humility, contentment, compassion and love we humbly place ourselves at your mercy forgive us of our sins and shortcomings and protect us from all forms of evil oh Allah bless the parents replacing a kalimah on the tongues of their children and helping them to express it in their deeds oh Allah free us from all the chains of the evil powers relieve us of loneliness, pain and suffering of our age our brothers and sisters who are ill fulfill the needs of those who have no voice except for your grace we pray for those souls who have departed from this world grant us the strength and the faith to tread the months ahead for the revitalized patience and sacrifice and may the blessings of this great day abide with us and serve as a source of comfort during the moments of suffering and despair we have answered your call to draw closer to you we beseech you ya Allah oh Allah answer the call that we make to Thee on this blessed morning إن الله يأمركم بالعادي وحسن وإتائف الطرباء وينحن فحشاء الموت وبغي يعذكم ذعبكم تذكرون فذكروني أذكركم ولا تذكرون ولا ذكروا الله أكبر والله يعلم ما تسمعون السلام عليكم وكل عام وانتم بخير


This video is about Iron Crafts. Sometimes in your lifetime you're going to be lucky, you're going to meet extraordinary people. And I was lucky when I met Gonzalo Budi. He's an Argentinian visual artist with an incredible craftsmanship. In this video you're going to see an interview I made him in his Buenos Aires studio. Hi, my name is Gonzalo Lenedi. I'm a designer, architect and PhD candidate. And this channel is all about design and other sweet tricks. So subscribe and hit the bell to receive notifications. Gonzalo Budi is a multi-faceted artist. He doesn't like to be tagged into one specific area. He rather smooth like a chameleon, changing his skill in order to accommodate to the project he's working on. Arbudi is a true representative of the old traditional arts and craft movement, but today in the 21st century. But before meeting Arbudi, let's talk a little bit about Buenos Aires. If you think about Buenos Aires, probably the first thing that is coming to your head is Maradona, or maybe Madonna, interpreting Evita, or Tango, or maybe a Milonga, or maybe an Asado, a delicious Asado. And sometimes you're going to think about those huge bookstores that are open till very late. And of course it's wonderful parks. But for me, Buenos Aires is much more than that. For me, Buenos Aires is rock and roll. I had a grandfather who taught me how to work with the tools, this grandfather that I always count on.  It's something important for someone, unlike your friends, when you're a kid, that you know how to do things, nail it, fix things. And that wasn't something that I had as something to win. Until the adolescence or the time to enter the university and choose a career. I made visual communication design in La Plata, which was a design career that I wanted to do. I had everything that I could have now in visual art careers. And I was good because I also had a good industrial design, graphic design, very good.  That was the third year there and in parallel I did the plastic career in the same university. I got bored of the two because I was already doing other things that surpassed a little more my expectations about the career, about the university. So I left, I went to study cinema, I went to work, I worked in the shopping bag while I was studying. Yes, because my old friends lived in the south, they lived in the south and I wanted to work and I wanted to do something else. And there I went, it was the first time I started to leave the university and have my own workshop. My workshop at that time was always my room, the desk, that I had to see with other things. I started to work the most in three dimensions and that's where the idea of the workshop appeared, what a workshop is. Until that moment I did not consider it as my study. And well, then when I came to, I obviously put myself in, that I came to the capital, here, where I rented the first house with Lucia, with my wife, there it was, I had to have a workshop. And there I started to work, I bought electric machines, all that, and I really started to give shape to this workshop and research into the pieces that were, let's say, that I faced already with more, with more intensity, more seriousness, and more research. Well, then I started to give classes, I gave classes for kids, I started giving classes more for adults, I set up places, I set up a toy shop that was mine, a toy brand from Madeira, then I set up an office house that was Palermo's, the office house of Palermo's, and, in parallel, I was growing up with Vistager. Until then I went through more, more frustrating experiences of commercials, I was finding more the format of teaching, let's say, if that allowed me to have a workshop space. Well, the workshop space also allowed me to have more time for my research, let's say, the absence allowed me, somehow, not to depend on being making something to sell, but to be researching something that would be part of my work. I think in the last ten years I developed a more research method that has to do with what I had already studied, visual arts, but more than anything, from a morphological research. And, in my case, with Madeira, because Madeira was the office that I had chosen to develop an investigation. Well, there they appeared, forms that, let's say, I was compromising more with the morphology of the workshop through my work, and this appeared, this is what you see here. Are you a designer or an artist? I am a visual artist, and that, as I always say, that is also what I talk about today, there is no, let's say, especially now, perhaps at the beginning of the past century, but now, all of them are designers, all of them are visual artists who study these careers, somehow. I am a visual artist, a sculptor, basically, from each of the three-dimensional pieces, but what I always say is that visual arts are everywhere. Now there is a competition of an architecture study that invites you to make a facade for four buildings that are going to be very important awards, it's great, and the competition goes on and says, for architects and visual artists. I say, no, for everything. There are no architects and visual artists. Architects are visual artists. No, there is no upper rank between the two. Well, and also the interesting thing is that, let's say, a graphic piece, which could be graphic design, is also part of a plastic search. In fact, now in the brand that I am doing with these friends, we were working on the design of the, to upload it to social media, and so on, that I did not think about finding a typography or finding a box, the logo or the type, and I also love it, I like it. But it's part of the same. What is design? Design is something that I do not feel very committed to, precisely. Design, if you were to say that, in the open world, that interruption during these ten years they invited me to talk, they invited me to tell my work, always. I do not give classes at the university, but if they invite me, I go to all the categories that have to do with industrial design, graphic design, architecture. And I, in general, speak against design, because, let's say, since I have an investigation that has to do with morphology, the morphology freed me from design in some way. Design is, let's say, an invention of consumer society, basically, because it kept going, let's say. But what design does, design careers, they limit us to become designers. An example that I always use if you have received an industrial design career, a job account and say, well, now we design a lamp, that action, that request is already limited, because the first thing it is going to do is always think as a designer, it is going to think of a lamp from design. And in that case, what it is going to do is going to think of all the lamps it liked him during, let's say, forever. It is going to try to convince its bosses that they will ask for the lamp and it is going to try to understand the taste of its bosses. But it already works with a limited idea, it is a lamp. And it changed, if the design careers were more about design, if they were more about morphology, about housework, the investigation of the shape, it has much more value than suddenly working on the investigation of something. It is always like a geometric investigation. Suddenly you find a piece, or you find yourself with a lot of pieces that can be divided into a lamp, into a chair, into a wheelchair. And that is going to be only a lamp. So it means morphology opens paths, opens, and suddenly you find yourself with that investigation and it could be what it wants for a daily use object. Instead, the design closes, the design is very within the orbit of what is consumer society. Yes, it is not design. What is not design? Not all the rest. Well, it is true that what the design did and what the consumer society did with us is to make the arts and offices, the origin of the design careers, to have relegated, they relegated precisely the way of working, not with the offices, the carpenteries, the railway, the ceramics, the banisteries, the sesteries. It was an exercise where one finished doing repeated actions of the same to reach an object, but with that you acquire fine motility with the hands, that makes fine motility also have to do with our own head and that makes us somehow have aesthetic decisions about what one is working on. The design a little came to occupy that place in some way in consumer society. Like it ordered, according to the design, for consumer society that and everything became design. So nowadays, what is not design is difficult. Because also one day a plant has been studied, the growth of the plants to see how it compares with the design.  So nature can be said to be designed in a natural way. What do you think is the border to the limit of what one is designing? The limit between what is and what is not. The border, well, I talked a little in Malva we talked a little about that because I did a sample of my objects in the Malva store, a museum store that supposedly is like a trap that we made because showing sculpture that they are objects made by, it is supposed to be I am in the Malva store since it was made with my designs my toys and more. But this time the first is that no designer is supposed to be known inside the store to show objects. The border that is made that in front of the look of the others is not an object of daily use what I am presenting but it is also an object if one wants to buy an object of decoration on the side of his library or his polterine of the Inns I hang a Egon Salarusti mobile and I buy it in a store so the limit is to put it on the market maybe there are also people who buy a piece of Enzo Mari of a vase or a chair made of plastic that was precious or a puzzle that is a game and has it as a ornament does not use it as such so the limit is to put it on people and on the market What do you think are the elements or components of the design? About in what sense? What do you think what does the design do? be a design when you work with certain things with certain elements certain characteristics what does the design do for those parts that have to be present so that one can as you said a little while ago it has to do with the market the design is more connected in that case something more well finished although it could and something serious because it has to do with the serious beyond that it can be pieces of one to a hundred numbered or serious and beyond that they are not made completely by machine or made by hand has a special finish that could be and it also depends on the object but that could be some of the elements that have the design has as certain elements that one recognizes this let's say people who are also committed to that or not who know that it is a piece especially worked from that look Do you think the design is static or dynamic? It is dynamic It is dynamic depending also precisely of this of the new looks or together here it is put also now if it is all design there if it is static not like one enters to a store where exaggeratedly there is a piece of each this of each designer known I imagine this house, I don't know the name but suddenly it becomes static only the piece there there are brands of friends, Argentinians who go very well happy for example and I always insist on Pat it is a brand that sells a lot in Buenos Aires very very well but you have to do something you have to invite an artist you have to invite someone to put a piece that is not only related with the design that accompanies, that takes the look in that place when it becomes something static something that gets tired that is not very cold it seems this already cataloged where where do you want to design to make visual arts I hope yes yes, something more integrated more integrated those are all questions well there is more? do you want to do it like this? volume or what? no, it is difficult because it depends also on the regions because in Buenos Aires I am in the middle I am like an outsider I am I am not a plastic artist or a designer I try to run from all those places because I do what I want in that sense so if I am very linked to something even as carpenter carpenter is not a carpenter sign if I want to get my deer meat or whatever what I want is that you also need to label the names designer visual artist, architect all in the same in fact today more than ever when I started around there a visual artist I think of a friend from Chile, Nico Nico Armu who makes furniture, wood, wood or Rodrigo but Rodrigo is more industrial but Nico is an architect but he dedicated himself to architecture exclusively but he makes furniture he is very nice suddenly he makes a file of a series of furniture that he is making and the graphic piece is beautiful it is also very nice there you think there is what is there? yes it should be it should be part of the new design career design that is why I would have to change the names because integral design, morphology now the genotica is a morphology professor from Fado is making an integral design career in detail which is a very good private university and it is called integral design as everything is integrated it seems that it makes more sense because now it leaves to you yourself, it leaves you to free yourself a little more and be all within that design to be a visual artist, to be a sculptor that suddenly one could project a house as a designer then that of the integral allows a student I imagine to free himself a little more the subject of time in your work of time in evolution in how it evolved you speak a little bit at the beginning for example, everything has to do with tradition for example, art of architecture of visual art a lot of things in the background recur and they are going to see past knowledge of this form I always talk about William Murray for example, of the Salton Craft that from a paper for a room a carpet, a furniture and an editorial for the paper the cover, the translation the typography for that the library the house it was all from the beginning and the time you refer to the time of creation also and it is going to give I sometimes I would like to dedicate whole weeks to develop a leg of a table that I was doing but in my head I have three plastic works that I am doing suddenly you mess with each other and you end up doing everything at the same time and it also depends on the workshop you have I find it interesting that the universities of visual art and design should have all the workshops those workshops should be integrated somehow work that I final work that you should do to get a product or whatever an object that has had to be done at least for three workshops that have things of the workshop wood, ceramic and iron to say something like the Bauhaus yes, it happens that Bauhaus Bauhaus has these things with which we don't let's say it is interesting, it was interesting for the time let's say this integrated thing yes but then it didn't end it stayed in Bauhaus nothing else happened and to close your work your work what importance do you have that you are in Buenos Aires now in 2019 no, I don't know no I have the other day a friend bought me a work a small work of the objects that I am doing for practice and he told me I thank you, that you have sold it to me it is a composer he lives as a composer younger than me he is multi-instrumentist he lives 6 months in Europe and 6 months here it goes well, it goes well he just came from a trip that in Italy and in I think in Frankfurt they had bought him two pieces of music and he went to prepare what is called the rehearsals when you buy you have to go well he is a genius he is a master's work he even paid me more than I had sold and then he said let's go to Europe if you went to work in Europe you would break it you are genius but those things can never be known I live in a context where I was born here I formed a family here although I try not to belong to closed groups I have a gallery but not because I went to look for it the gallery looked for me I try not to belong to closed groups of artists or designers I do what I can it is true that during years Gonzalo Aruti is a recognized name in I do not know what for some in the plastic for others as a designer for toys or for students like Carpinter you can count as a carpentry master and morphology that is a recognition later in Argentina it is very difficult economically what we all know and to stand out with something that really gives you economically I think to everyone except that you have a desire to do this and look for that path but it is not my case I am the antiempress somehow what I did since I realized I was not going to have a formal job with everything I knew or your life that I could do my investment my capital is to have bought me time with time to do my things I was lucky to realize that what everyone wants at the end of their life is to have time so I said how do I buy time of young people well the best way was to give up everything and buy me time I said I had the chance to meet initially Gonzalo here at Santiago de Chile when we invited him to do some workshops at the university we knew he had an incredible craftsmanship but what we didn't know was that he was also an extremely passionate person yes he was able to transmit technique but the most important thing our students learned from him was passion for what he was doing passion for the things that he was doing passion for what other people would see when he was doing so and passion for teaching our students if you are a design or art school director you can't miss the opportunity to invite him in order to teach a workshop at your institution you won't regret it your students are going to learn what I just said passion for what they do in the description you'll leave how to contact Gonzalo Gonzalo thank you bye


So if you've been subscribed to me for a while, you know that the main videos that I've been uploading are here videos. However, just want to let you guys know real quick that the content on my channel will be changing a little bit Just so that I can be able to upload videos more often, being that I don't spend much time on my hair anymore because I just don't have the time. I decided that I'm going to record more videos that are pertaining to what's actually going on in my life right now. In that way, it's easier for me to pull out the camera and film a video because it's something that I'm currently working on that I'll be doing anyways or it's easy to record and edit. So I'll be doing more motherhood videos, sharing more videos about things I learned, tips, more food videos because I cook a lot. We cook a lot in my house, so I might as well pull out the camera and record that. So if you're subscribed to me because of my hair videos, do not unsubscribe because they will still be coming just not as often. And if you're subscribed to me just to support my channel, thank you and I hope you enjoy the videos that will be coming along. So let's hop right into this video. This is something I just wanted to share being that it happened to me recently. So if you follow me on my quick disclaimer, excuse me, I am a little under the weather. I don't know unless I've been sick but a couple days ago I woke up feeling like this. Anyways, if you follow my business page at Gemsavistic on Instagram or Facebook, you would see that I uploaded a post a couple days ago stating that I found out that one of the products I've been using on my son since he was born changed their ingredient list and they added an ingredient that is not as natural. Well it's not natural and it actually is toxic and carcinogenic. Carcinogenic meaning that it is a cancerous or cancer causing ingredient or has been linked to cancer in some sort of way. That product was his baby watch. From the time myself was born I've been using shea moisture, argan oil and chamomile baby watch. I think that's what it's called. I've been using that since he was born because it was the only thing that I could actually use on his skin and not irritate it. A couple months ago I went to repurchase it and I don't repurchase this often because I buy them two, three bottles at a time. Usually I don't read the ingredient because this is something I've been using on my son since he was born. He's one now. So I usually don't even read the ingredient. I just pick it up and go. However for some reason that they I decided to look at the ingredient list again and I noticed an ingredient that I didn't see in there before called finnexy ethanol. So I hear trying to figure out if I've been missing it and it's always been in there or is it something new that they're doing to their formula. So I put the bottle back on the shelf first. I took a picture. I put the bottle back on the shelf and I left and I was like, you know what? I'm going to just start making my own baby wash because I have the ingredients at home being that I want to start offering a liquid body wash on my Etsy shop. So I might as well start with him. I went home and the first thing I did is look at the bottle I had home because I still had the bottle home. It wasn't completely empty yet. Like I thought that ingredient, finnexy ethanol was not in it. I was like, wow, why would she moisture at this ingredient in their baby wash? Now I am familiar with finnexy ethanol because when I was looking up preservatives to use in my products because I do make and sell natural skincare products. Finnexy ethanol is one that I came across and the reason why I decided not to use it is because of what I found. The information I found on it being they said it's a skin irritant, a lung irritant, it's harmful, and it's carcinogenic. So I didn't want to use something like that in my natural products. However, a lot of natural product companies actually use finnexy ethanol and that is because finnexy ethanol is formaldehyde and paraben free. And most preservatives has formaldehyde and paraben in it.  So using finnexy ethanol allows them to still market their product as formaldehyde and paraben free. However, there are toxic ingredients in finnexy ethanol that are just as bad as paraben than formaldehyde. That was my reason for being upset about, you know, she moisture adding it in their products. And I'm actually very disappointed about that because I used to swear by she moisture products. And although I don't buy their skin products anymore because I do make my own, I still did use their hair products. And now it just makes me wonder how many of their products are they adding this ingredient to now. And I did some research. I started reading the ingredients for a lot of natural product companies and a lot of them use finnexy ethanol. And it's actually really sad because as someone who makes himself natural products, I want to make sure that my products are as natural and as toxic free as humanly possible. And being that there is better option for preservatives than finnexy ethanol. I don't see why as a natural product company, you want to put this in your products, especially baby products and products for mothers. Like it just should not be in there. You know, I was doing my research and it literally says that it is very harmful if swallowed, inhaled or absorbed into the skin, especially for nursing mothers and infants. So why put that in a baby body wash? It doesn't make sense. Anyways, that is when I decided that I'm going to make my own baby wash. This is it here. We've been using it for a while, so it's kind of low. So this is like the third bottle, but the first two bottles were like little two ounce and four ounce bottles because I was trying to, you know, get a hang with my formula and I've been tweaking it. So once I felt comfortable with the formula I came up with, I made a bigger bottle, which is this. I'm going to take a picture of the ingredients and paste it on the screen so you guys can see everything that's in it. However, just so that you know, the surfactants that I use are coconut derived. So it's very mild surfactants, surfactant meaning it's the cleansing agent in the soap. So it also has aloe vera leaf juice in it, sunflower oil, glycerin, chamomile extract, beet sugar extract. Glycerin and beet sugar extract are both humectants that draws more strategic skin. It has oat powder and for the thickener, it has a xanthin gum. So the reason why it looks like this is because of the chamomile and calendula infused distilled water along with the oat powder. So, you know, some might think it's not really appeasing to the eye in terms of the color. However, it works great and is natural and toxic free. The preservative that I use is an eco-cert natural preservative. Eco-cert meaning, well, eco-cert is something on its own. It's not a part of the FDA and, you know, any cosmetic company. Eco-cert, they basically review ingredients and make sure that it's natural and toxic free. And once something is eco-cert approved, you can use it in organic and natural product and it can be labeled organic. So if you like, you can do more research on eco-cert approved ingredients and how that whole system works. I am very big on eco-cert ingredients and if you're eco-cert approved, answers are I prefer to use you because I know that you've been examined outside of the FDA and outside of any other cosmetic agency. No, eco-cert won't tell you, like, yes, this is toxic. It don't matter what percentage you use it at. By all means, feel free to do your own research. Feel free to correct me if you think anything I'm saying is wrong. I'm always willing to learn more. Yeah, this is the baby wash that I've been using on my son and it's not available on my Etsy shop yet. I want to continue using it on him and doing more testing and tweaking my formula just to perfect it, but it should be available around November, December. If you want one before then, you can always send me a message, a private message on any of my social media platforms, or email me via my business email at gemcilistic at gmail.com. All of my information is in the description box below and you can get one that way. The next product I decided to make is called my baby bum butter and this is for the baby's bottom to soothe any irritation they will get from pampers or the acid in their pee. If you don't know a lot of these commercial brand pampers, it has tons of toxic in it and it also can cause the baby's skin to become irritated or cause a diaper rash. So for the time my son was born, he's had a good 3-4 baby rash. I've always had to use some kind of natural diaper cream. I haven't had to use it in a while because he hasn't had any diaper rash in a while, but this has been doing a good job at preventing it. So I'm going to continue to use this and test it out, but the ingredients are natural, pure. There's no water content in this, so there's no preservative in it. I wanted it because of the baby's bottom and private area being so delicate. I want everything to be as natural and pure as possible. So the ingredients in this is shea butter, sunflower oil infused with calendula, coconut oil, cocoa butter, olive oil, olive wax, glycerin, vitamin E, arugula powder, oats powder and bentonite clay. So I'm going to take a picture of this as well and put it on the screen so you can see for yourself. And again, if you would like to try one of these, you can DM me on any of my social media platforms or send me an email. So yeah, that was the reason for that post. I uploaded on my business Instagram a couple days ago, and I just wanted to share with other mothers so that if you have natural baby products that you are using on your little one and you haven't read the ingredients, I encourage you to read the ingredients. No matter how natural or organic a product claims to be, always read the ingredients. And it's not always easy to understand what's in a product. Because of the guidelines, companies have to follow in terms of their label. A product might have shea butter in it, but because they have to use the INCI word, it might be some scientific word that you do not understand. In fact, I might record a whole another video to help you understand what's in your products because that's a whole different topic right now. Yeah, always, always, always read the ingredients, read the label, read everything. Do your research. Do your research. Don't even take what I'm saying. Just do your own research because you will always find out something maybe someone else didn't find out. That's about it for this video. If you don't know, I do make and sell natural skincare products on my Etsy shop. And the link for that is in the description box below. And if you haven't already, follow me on my business page at GemSelistic and my personal page at JAH underscore and press underscore. And don't forget to subscribe if you haven't already. And you guys will see me in my next video. Peace.


From Dearborn, Michigan, it's the Cube on the ground at Ford headquarters Now here's your host Jeff Frick Hi Jeff Frick here with the Cube. We're in Dearborn, Michigan at the at the further with Ford Ford trends event 2-day media event to really get up to speed with what Ford is doing with autonomous vehicles and really the bigger trend about Mobility and we're excited to have Cube alumni a season Ken before he came on his wife's gonna get jealous the way we keep meeting like this Ken Washington the VP research for advanced engineering for Ford Ken It's great to be here and in your turf and not in Palo Alto for a change. Yeah, it's great to have you here Welcome to Dearborn. Absolutely. So a lot of exciting news You know we've talked to you over and over since this kind of journey began when you guys first opened up in Palo Alto Then a couple weeks ago Mark came out to announce really the moonshot He didn't describe it that way, but I described it that way You know fully autonomous cars level four and five years for ride-sharing services And then last week I get the announcement more news coming you guys bought chariot, you know Kind of a ride-sharing service and you announced the bicycle Initiatives so you guys are really all in on this mobility. This is not just you know talk and PR You guys are all in said it right. This is this is serious for us And we are absolutely serious about being an automaker and a mobility company. So absolutely So how do all these pieces play and I'm just curious culturally at Ford, you know We had Ken on before and and how do you get the culture around this thing that we're more than just a car company? Are people buying in is it a new day at Ford are they excited? I mean clearly you're excited clearly Mark's excited, but how's it kind of playing here in Dearborn? Well, it starts by being like I said all in and Our employees they they're noticing that we're all in because we're putting action behind our words And the action today that you're experiencing is we have our cars on the road today And we have been doing this for over 10 years and now we actually have the vehicles on the road Our employees can see that our autonomous vehicles are Working on public roads. They're they're going through stop signs through stop lights. They're recognizing pedestrians Navigating safely on a route. That's that's a true open public road That kind of evidence tells our employees that we're in this for real and that we are making very good progress And we've got great momentum toward our 2021 goal the moonshot that Mark talked about and We're making progress. We're getting there. You're getting there So what are the topics? I don't think he's talked about enough and it really should have got more pressed when when the poor fortunate guy crashed his His his car on autonomous mode, but he was not paying attention in the car crash You talked about Ford is going straight to level four and when we took our drive in the autonomous vehicle here Which was pretty fun, but kind of boring, which is what you hope in an autonomous drive You know, I noticed Gus our driver, you know had his hands the safety driver ready to go at a moment's notice And it really begs a question on these kind of halfway solutions because what's a driver to do if you think you're in autonomous mode? But it's not fully autonomous you have to pay attention do not pay attention and we all know it's about reaction time and Emergency so if you're already kind of not paying attention How do you get somebody to hey wake up and pay attention and then execute whatever the maneuver is? So you guys have just said forget that we're gonna skip right to fully autonomous. It's really important You said it well, you know, we we really put safety first and by putting safety first We we want to make sure that when you're in a vehicle and that vehicle has the capability to Assist you as a driver that we're clear that this is assistance as a driver All right, our vehicles you can buy today that have driver assist technologies on them And the vehicles that you'll be able to buy over the next few years Because we're tripling our investment in driver assist technologies They're gonna be able to assist you even better with driver with traffic jam assist and ultimately with highway assist These are great features for making the experience of driving your vehicle more enjoyable and a little more Comfortable, but they are driver assist technologies what you're seeing today with our fully autonomous test fleet our fully autonomous level four vehicles that the driver can be out of the loop and we're doing it that way for two reasons one is because it like you said you can't Wake up the driver and re-engage them if they haven't been engaged right right so in our research We found that that's that's a hard thing to do So we're focusing on level four But the second and probably the more important reason is because it opens up the business model to enable a ride service Well, you don't have to have a driver right so we're working toward that capability And as we work toward that capability We need to make sure we safely test the Features, which is why we have that safety driver there ready to take over control because it's still a work in progress Yeah, Gus was on it I was like Gus you got to be getting tired as his hands were like right over the thing the whole time But it really begs the question because again if it's not fully autonomous. It's not autonomous. It's an assist So you got to pay attention. That's exactly right The other thing I think is really interesting what you guys are doing is in this whole mobility thing from the bikes to the Cars to the ride-sharing service, you know somewhere along the along the line cars in the cities Especially are less about freedom and excitement in the open road and more about kind of traffic and congesting and parking challenges So you guys again getting out ahead of the curve on that by taking this kind of multimodal Full spectrum and getting engaged across the board a lot different than when you and I probably turn 16 and look forward to getting That first driver's license. That's right, you know The future customers are thinking about mobility very differently And even today's customers are when when they live in congested environments because the world is changing The world is getting more urban and much more congested and traffic patterns are a lot tougher today And parking is harder to find and a lot of the traffic that you see in inner cities are driven by Parking challenges and so having a solution that allows Allows people to have choice Like riding a bike or taking a shuttle and sharing that ride and being picked up at a location Where you are inhaling that ride from an app. These are made possible with with the technology that's available today We're embracing that and we're bringing it to our customers with our smart mobility program Right and ultimately we're going to bring autonomy to that as well But the first priority for us in autonomy is to open up that ride service on our campus in 2018 And then in 2021 for a ride service for the public So the whole another topic beyond the technology is the regulation So I was at a great event a bloomberg event put on by western digital a couple weeks ago And they had a bunch of representatives from the department of transportation There's a lot of really complex social and policy And those types of issues that have nothing to do with the cars and the technology That have to be kind of sorted out and you know, generally the government kind of trails technology because they're You know, they're kind of following as the developments come about What are you guys doing on that realm to worry about some of these kind of softer aspects of what's going to make autonomous vehicles really real Those are really important questions So they have to be answered and the only way you can answer those is by having a conversation with the entire industry We need to engage multiple oems multiple technology companies and have the kind of conversations with policymakers to inform them about What the art of the possible is so they have the facts And so that we can be part of the dialogue around how to set policies to help make it a good experience for people But also make it, you know, the right policy framework that allow these services to be used in a in an environment Where, um, you know, there needs to be regulation Yeah, so we're one of the Founding members of One of the first Coalitions to have these kind of conversations the self-driving coalition for safer streets And we're excited to be part of that along with a number of other Technology companies and and car companies So it's a good start, but much more to come much more to come.  So good job for you and the team Oh, we like to think of ourselves as a as a technology enabled mobility company and an automotive company And and we're walking to talk and silicon valley presence in our rick palo Alto facility is Is really helping us a lot to to accelerate our move to being an automaker and a mobility company As well as the innovations you're seeing here with our autonomous vehicle program And our connectivity work and our mobility work. It's all coming together to to bring the future of mobility to life It helps get get you up in the morning. Hi every day. It's It is a good time Yeah, absolutely. Well ken. I'm sure we've seen you again. We look forward to the next announcement they seem to be coming in rapid progression. So Look forward to seeing that and thanks for taking a few minutes. It's been my pleasure. All right, dr. Ken washington I'm jeff rick. You're watching the cube. We're in dearborn michigan at the ford mobility event actually the further with ford Thanks for watching