a lot to cover here so I'm gonna go ahead and get started. This is open sourcing, real talk. So who am I? I'm Andrew Evans. I work for Hired. I've been there a little over two years. I've worked for all kinds of different startups for like nine, ten years. I've been working with Ruby on Rails since about 1.8 or so. If anybody remembers some fun Twitter-related arguments back then, good times. I've been writing bugs in PHP or QBasic or all sorts of things for longer than I care to remember. So what is Hired? Hired is the best way to get a tech job. As a candidate, you make a profile.  As a company, this is the best and fastest way to get great candidates into your pipeline. But this is not a pitch talk so I'm not going to focus on that. Instead I'm going to talk about open sourcing. This is something that Hired's been doing basically since the beginning. We have 46 public repos on GitHub. A lot of those are forks where we've needed to make some modifications or thought about modifying things. But some of those are open source projects that maybe you can use. These are just a couple. We have a PubSub layer over SideKick. We have a query builder for Elasticsearch. We have Fortitude which is our CSS framework which is built to scale. It's built for teams. We even have some smaller ones. We have a rack middleware that will log stats from the Puma web server. So if you're using that, it can be helpful for gathering more info. And we have a tiny thing which will change the color of the lights in your office. If you're using something like a Phillips Hue, we turn our lights red when the master build fails. So it's a good incentive to get on Slack and figure out what happened. I'm just going to dive deep into these two so we can talk a little bit about what producing these projects were like. I'm going to cover whether it would be worthwhile or not for you to do any open source work extracting anything out of your app and making it public. I'm going to talk about some of the challenges that we faced in doing that. And I'm going to talk about how it played out across our team, like how did that affect the dynamics. And I'm going to try and get a little technical and talk about what we learned about Ruby and Ruby gems and Rails. Hopefully we'll have some time for Q&A at the end. So why should you open source things? Well, if you've got some logic in your application, then clearly every other Rails app is doing pretty much the same thing. So if we all share our code, then we could all do this stuff automatically. When you open source something, the community will fix bugs in it. They'll add features. They'll document your things. It's free labor. It's amazing. You'll get developer street cred. You'll get lots of respect and appreciation. You'll get 10K followers on Twitter and hundreds of thousands of GitHub stars. And people will open issues and say, while there's no bugs or problems with this, I just want to say thank you and we love you. So literally none of that is true. You may have bits of application code that everyone needs across basically every Rails app, in which case what's it like working at Thoughtbot? But for the most part, you may be doing some pretty specialized stuff. Most of your app is business logic, so that lives in your business app. Some real talk about our projects in particular. I pulled some data off of Best Gems. Best Gems basically scrapes data off rubygems.org every day and tracks like total number of downloads, average number of downloads, et cetera. And it gives your Gem a rank out of the 130,000 plus gems on rubygems. You can see ours are not quite in the top 100 or 1,000. We're probably not going to be on the public leaderboards anytime soon. Our average daily downloads, I adjusted and got rid of weekends and like holidays for that. But basically it's a little bit over the range we'd expect for how many times a day we deploy to Heroku. So hopefully these aren't all just Git push Heroku. Oh, look, we got more downloads. I also pulled some data off GitHub. The number of stars and followers we have is a bit more encouraging. There's probably some people outside of our company that care about these repos. But we're not getting people opening issues just saying how great we are. I found some gems that are similar on the Best Gems ranking. So one of them is a framework that lets you build bots for Google Wave. Does anybody remember that? That existed for a hot second. One of them is a command line interface to the pirate bay. I think the founders announced a few months ago that they'd been sued and thrown in jail too many times. So that's dead. One of them combines ActiveAdmin and Trailblazer. Trailblazer is the object-oriented, explicit over implicit, loosely coupled, well-organized framework that you can add on top of your Rails app. ActiveAdmin is literally the opposite of every one of those values. So I'm not sure what you get by combining them. The last one is a command line app that gives you a random Mitch Hedberg quote. I used to use that all the time. I mean, I still do, but I used to, too. So what we found is if you don't market your gem, then people don't really just find it organically. We haven't done a lot of promotion for these. I don't think we post about them on our blog too often. This may be the first talk where we've gone deep into our open source stuff at RailsConf. So we haven't gotten a lot of people that just found this out of the blue and said this is the greatest thing. Was it still worth it for us to open source this code from our application? I'll dive in a little bit and we'll see. So Reactor is our enhanced interface to Sidekick. This is how we do a lot of our background processing at Hired. Sidekick, if you don't know, is the premier background processing library for Ruby and Rails application. It was made by Mike Perham, that guy. Mike is awesome. Thank you very much. It's been a wonderful system for us at Hired and it's been rock solid. So the thing that we were looking at when considering Reactor was, when you have, say, a candidate updating their profile, you may want to do a couple of different things in the background. You might want to notify the talent advocate that's working with them. You might want to bust a cache or update a saved search or something like that. So with Sidekick, you have worker classes for these things and you perform a sync and those things will happen in the background outside of your web request. But if you're doing a whole bunch of things, then you may have a whole bunch of different workers that you have to tell to do the thing. So you face a choice. Do you want to copy and paste all of those calls everywhere that you're updating a candidate's profile? Or you can have one worker that fires off and then that calls other workers, which might then call other workers. For the most part, this isn't a huge deal. I think it's a recommended practice. But if you're like me and you tend to forget things, then you might throw a cycle into your workers and they'll spin up 100 or 10,000 jobs. However, many activate until you can shut down Sidekick and figure out what happened. So basically with that pattern, you end up with this big graph of things happening throughout Sidekick. You have to kind of model that in your head and it can make it a little difficult to track down where exactly specific jobs are coming from. So Reactor is a publish and subscribe system. Basically, you publish an event. That event has a name, which is just a symbol. You can pass it any arbitrary data. There's also an extension so that you can have active record objects publish an event. And then those objects are serialized and deserialized and available within your event code. So this will kick off a single Sidekick worker which then locates all these subscribers to that particular event name and it will in cue a job for each of those. We wrote a convenience method for our controllers called action event. This will publish an event from the current user and it will merge in parameters or any other data that we think would be useful for tracing, tracking, analytics, etc. So what do subscribers look like? You include this subscriberable module that gives you the class method on event. So you say on event, you give it the event name and then you give it a block of what to do when that event happens. So in our first example, we pull out the actor, which is whatever published the event. We get their ID and then we can bust a cache related to that particular record. You can also set a wild card handler. So this thing will respond to all events. And we use that for logging site activity to Postgres or to anywhere else that we want to have that analytics data available. There's more options to it. Instead of passing a block, you can pass it an event name. If your objects and functionality are a little more complicated and you want to unit test them, this can make it a little bit easier. You can also pass options to it like delays and perform later. So for example, once an interview request happens from this subscriber, then two days later we'll send an update. And you can do some logic in that, like figure out if it's canceled and then abort. We also have a system for creating model-based subscribers. So in this case, we create a subscriber called admin notifier. This is going to live in our Postgres database. And we define the on-fire code to say what happens when this event fires. The neat thing about this is you can have it subscribed to multiple different events from the database. So if I'm an admin and I want to be notified when these three different things happen, then I can just do that through our admin interface and not have to deploy new code to handle that. These can be a little bit magical, but also their use has fallen off a little bit. Finally, you can have records publish events based on the data in those records. So for example, if we have an interview that has a start at and an end at time, then we can tell it to publish events at those times. We can even pass it some conditions and some other things similar to validations and callbacks. And the nice thing is if the model gets updated, the start at or end at changes, then it will automatically reschedule that for us. So did it help that we took this code and instead of just building it in our application, we put it in an open source repo? Well, when you do that, you get this nice green field project and it actually changes your desktop wallpaper to the old Windows XP wallpaper. Green fields are great. You don't have to worry about your legacy code. You can just start developing fresh. And it keeps your code separate outside of Kansas out of your application. So that produces a little bit of friction to updating the library, which it turns out can be a really good thing. The code for reactor is kind of out of sight, out of mind for day-to-day feature development for us. So it discourages making small arbitrary changes. If I want to say, like, oh, this should be calling instance methods, not class methods or this or that, I'm less likely to take that on because I have to context switch and then publish to Ruby gems and go through this slightly higher friction process. Because it turns it into a lower churn section of code, it keeps the pattern and convention clear. This action event is used all over our application and basically it stays the same everywhere and it has just kept working. We had to make some updates for Rails 5 and I'm about to make some updates for Sidekick 5. But for the most part, we don't have to think about it too much. Also, when you have this in a public repository, instead of your private application repository, it's going on your permanent record on GitHub. So that might add just a little bit more pressure to do it right. You might be a little more attentive to things like documenting all of your methods and making sure that your test coverage is 100% and that your code climate score isn't going down. Finally, when you're publishing through Ruby gems specifically, you have to be a little more thoughtful about your versioning. When you're making changes, you really have to think about, okay, is this going to break anything? Is this backwards incompatible? Or is this just a feature or patch release that isn't going to break anything existing but maybe provide a new feature? Also, when you're building outside your application and you're not thinking so much about features, it gives you a chance to think more clearly about the pattern of what you're building. So, instead of thinking about what do I need to do this feature, you think about what is the minimum information that this open source library needs to do its job. So, you also have to think about how Ruby gems and Rails and Bundler and these other tools work. One thing I stumbled on to pretty early is that requiring Rails is harder than it sounds. I looked through things like device and paperclip and Sidekick and they all require Rails in totally different ways which I found amusing. Some of these libraries require Rails for all of their functionality and some of them have a few Rails specific extensions and that caused me to dive deeper into what is a realty? Is that something I need? Where do I put the required statements? How do I manage the dependencies for that? And then it makes you think about whether you want to use Rails specific extensions inside your gem that's living outside your application. So, do we want to use ActiveSupports concerns pattern which is a pretty nice way of extending objects or do we want to use the basic Ruby include and extend patterns? And then you think a little bit more about the overall design pattern. So, when we're thinking about React or we're thinking I just want this action event method in my code so I can just put events all over the place. But when you're designing a gem from the ground up it's like, okay, what's the name for that pattern?  So, we're going to make channels that events get passed along. These events are going to have arbitrary data. Some people get this confused with event delegation particularly if you've done a lot of jQuery, you can have multiple listeners for particular events there. But those actually form a chain and any of the listeners in that chain can abort the entire process. With a message bus, all of these subscribers get the message regardless of what each of them are doing individually. So, if you wanted to see some examples of subscribers and message buses written in Rails, then Shiny new Action Cable has a pretty well put together well documented example of this. I have a link here to the subscriber map. Or if you want something a bit more core, active support notifications has been in Rails for quite a while. If you're wondering how all of your database statements get from the application code to your development console, this is what's doing it. And this has a link to subscribers and the class that's responsible for organizing them and mapping them. So, TLDR, publishing the reactor gem didn't make us famous, didn't really help establish any of those selfish goals that we put out. But it did help our team establish a convention. It has quietly kept working for years and it's allowed us to write that code in a way that's smaller and more loosely coupled and better organized. It's also a good excuse when anyone wants to work on it to go in and look at the pattern, look at the examples and see how does message bus work, what's cool about this. The other one I wanted to talk about was stretchy. This is a composable query builder for Elasticsearch. Elasticsearch is a pretty amazing technology for full text search. It's based on Lucene. It's similar to Solar. Basically, when you want something more advanced than a relational database I like statement, then this is a good place to go. And yes, we spent an inordinate amount of time thinking about the name for this because no gem is going to take off and become popular unless you have a really clever pun as the name for it. So, I wrote the first version of this. The goals that I was thinking of were I wanted to have an active record-ish query syntax that we can use for Elasticsearch. I wanted to have these immutable query objects which make handling and caching responses really easy to manage. I wanted this to be just a query builder for indexing our models to Elasticsearch. We already have reactor. So, we can index on specific events. We have serializers. So, I figured we'd just keep our Elasticsearch gem out of all of that business. I wanted to make this flexible enough for pretty complicated Elasticsearch queries. Because this is just a query builder, it's taking in a bunch of method calls and then it's producing some JSON that we're going to send to Elasticsearch. That means we don't really need any dependencies which is pretty nice. We don't have to require all of Rails for this one thing. And the end goal of all of that is we have these composable scopes that we can use in the same way that we're familiar with from ActiveRecord. So, here's an example of what that looks like. This is a query that should get us back Lynn Conway. She basically invented modern microprocessors. So, it's a good person to find in our candidate database. You can see here we have the where method. Pretty similar to ActiveRecord. You can throw some fairly arbitrary parameters at it and it will figure out what the right query is to apply those. But then there's some more Elasticsearch specific stuff. This match query, for example, is like the most basic full text matching relevant sorting query in Elasticsearch. And then we have these boost methods. That gets into what's called a function score query. It lets you tweak how your search results are going to be ranked. When you look at the query that's generated, it's this giant messy JSON thing. When I first started working with Elasticsearch, I tried to figure out how to make these giant JSON documents composable so that we could mix and match them in different ways. It turned out to be really hard, which is what inspired this whole ActiveRecord-like approach. So, some other example methods. I won't get too deep into these, but you tell it what index you're going to search, what type you want to get back. And then you can use where for filters. You can use match for full text matching. You can or multiple filters together by using the should clause. This comes straight from the Elasticsearch DSL. And then you can add boost to tweak your relevance algorithms. And finally, if what stretchy has isn't enough, then you can go lower level. You can say this is just a query and then throw some raw JSON at it, and it will figure out where that needs to go in your final query that's going to be sent over. Elasticsearch has a whole lot of stuff in it. It has about 7 million tools for doing different kinds of searches and figuring out relevance and producing the set of results that you want. So, it became obvious pretty early we couldn't support all of that. So, the goal was just to get to a system where we could do what we needed to in the app and then hopefully expand that as we got more and more features and hired. So, how do I get started making an active record chainable interface? I pulled out this 2010 blog post that I've had bookmarked forever, RailsTips.org, thanks John Unimaker. This stuff still works. It's still pretty much the same in Ruby 2.3. Basically, you have a class that class has some data, maybe an array of nodes, let's say, and each of your chainable methods returns a new instance of that class with some new stuff added to it. So, when you get down, you're like, okay, we're building up this array and then we're going to compile it to this JSON query. What does that look like? Is there a name for that? How does it work? Turns out it's called the visitor pattern. I was looking around at how other repos do this. I looked at active record and, oh, that uses A-REL and A-REL has a visitor pattern. So, that has a collector class and then it has a tree manager for figuring out what was collected and compiling it and then it has multiple different visitor classes to take that tree of abstract nodes and compile it into a query for, say, MySQL or Postgres or Oracle, I guess, if you're into that kind of thing. This is an example of what that tree of abstract nodes is going to look like. You have a select node and then that can have multiple child nodes, like what are you selecting, where are you getting it from and then any filters that are going to be applied to your query. And then those filters can have child nodes and those have child nodes. So, the visitor will traverse all of those and compile it into the final string. So, Stretchy didn't need that full stack. There's really only one elastic search. We decided because time, we only wanted to support the latest version. So, we can basically combine the visiting and compile steps. But the pattern was still pretty much the same. Some challenges we ran into in having this query builder live outside of our repo and kind of its own thing. I was a little confusing to the rest of the team initially. If you look at other gems for integrating elastic search into your Rails app, they do a lot more. Elastic search Rails and search kick and chewy. They all tie into active model. They have some other miscellaneous helpers and Stretchy doesn't do any of that. So, other developers were like, how do I do this or that with Stretchy? And it's like, well, we don't actually do that. And it turns out when you have this API-like active record, the whole point is to make it easier so you don't have to look at all the documentation for everything all the time. But that turns out it hides a lot of the actual features of elastic search. It hides the underlying complexity. So, other engineers will look at this and say, oh, I'm just going to make this active record-like thing. But it's like maybe you're missing out on a lot of the stuff you could be doing there. When we have an open source plus our internal application queries, it can be a little fuzzy deciding what should go in the open source versus what should go in the app. Obviously, all of our business logic should be in the app. But if we're using this particular style of query for text relevance or that particular style, like, is that worth having a convenience method for in the open source package? And then early on, we had a couple of cases where it's like, okay, we want to make this feature. But then the gem doesn't support that yet. So, your open source library ideally should not be blocking any future development. So, to fix that part at least, we had to make it more flexible and easier to customize within our application. And then a little bit later, we made it more flexible and extensible so that we could optimize those queries in our application. And then later, we made it easier to customize and more flexible and more extensible. And that turned out to be a huge win, actually. You can really see the process of editing and refining to get a flexible, extensible solution because, ultimately, it needs less code. And it makes clear what the bottom level versus mid-level building blocks are. So, I actually graphed this for the strategy repo. I took each of our master commits and looked at how many lines of code are in it. So, we've done one or two rewrites. The first one, I'm not going to call it bad, but it certainly added a lot of code. And then, over time, we've been able to just keep cutting that down. And at this point, it's back to being a pretty small gem. So, the TLDR for that, by making this open source gem in this nice green field, we got to learn the cool new visitor pattern and see how do you do that in Ruby. For me, it was a great excuse to dive in and read a bunch of code from Arel and Mongoid and other, like, more mature frameworks. By having the core interface be open source, that allowed us to keep that very simple and then keep our complex business logic in the app where it belongs. And it's helped us keep a good separation between elastic search queries and the internals of, like, our models and our controllers. So, to wrap up, this whole thing, open sourcing has been pretty cool for us.  Even if this guy is your only watcher on GitHub, you can still get a lot of technical benefits for your organization. And even if you don't get free labor, it can help you internally with your team. It can add a little bit of friction, which can be a good thing. It can be a bad thing occasionally, but we found the trade-offs to be worth it most of the time. Thinking outside of Ruby on Rails and sort of leaving behind the conventions and crutches that gives you can make your code simpler and clearer, easier to understand. Developing open source can give you a good excuse to learn more about computers. You learn more about Ruby and Ruby gems and Bundler and all the other systems for how you get that back into your application. And with Greenfield Blank Slate Projects, it's a great opportunity to be a little bit more thoughtful about the code that you're writing. So I told you we'd save time for Q and A, so here we are. Any questions for me or about these open source projects or about Hire? Yeah, so the question was elastic search changed versions from 2.x to 5 because reasons. They completely changed how the query DSL works. There used to be this big separation between queries which handle relevance and then filters which just affect your result set but don't affect relevance. So I think it took us about three or four months to get that upgraded internally. So as part of that effort, we upgraded the open source gem. That was surprisingly easy because we have this stack and tree pattern. We basically just had to change, okay, in the tree, instead of doing this, we do that. So I can point you to the pull request for that, but I was actually shocked how simple that was. Alrighty. Well, thank you all very much for coming. I'm Agias on Twitter and I've got the slides up on my website. Use hired. If you're looking for a new opportunity or if you're a company looking for candidates, get online. Give it a shot. Or come work for us. It's a pretty cool company. So, alright. Thanks, everybody.


Hey Virgo, welcome back to the channel. This is Kelly from House of Virgo. If you're new welcome, please smash that like button and subscribe. If you enjoy the reading, keep in mind this is a general love reading. Some messages may or may not be for you. This is a channel for Virgo Sun, Moon Rising, or Venus, but all signs are welcome. All right Virgos, let's get into this personal reading link. I have a special discount for August for personal readings, so just click the link in the description box below if you want to get a reading with me. Okay, let's get into this. Okay, wow, you got the dragonfly. I've been seeing dragonflies like crazy. All right, you've got love, love call, the dragonfly, and okay, grow the snake and talking. Okay Virgo, let's take a look and see what's happening here. Okay, you've got love call. Someone expresses their love, a message of love, saying thinking of you and letting you know. And so it definitely looks like you're going to be getting a phone call soon. You also have the dragonfly be light-hearted, finding something out, things coming to light, adapt, change, and heal. Okay, so there's a call that's definitely going to be enlightening for you. You're going to hear and probably be surprised that someone is or has been thinking of you and they just want to let you know expressing their love. Okay, the girl with the snake empath and narcissist paradigm being charmed or used and navel and boundaries and you have talking interested in conversing more, a weighted message arrives, text, call, email, some hoovering. Hmm. Okay, so I can already tell you where this is going to some degree. So I kind of feel like, you know, with this girl with the snake, for some of you, maybe it's just you and you have a tattoo of a snake or you have a snake or you own a snake or someone has a snake, but I do feel like there is a dance between you and another person. I do feel like somebody's going to be reaching out calling and trying to talk with you, but somebody here is questioning about a relationship. And I don't know, Virgo, I'm really like this is kind of confusing. Well, no, it's not confusing. It just kind of makes me feel like there's somebody here who's looking forward to talking to a narcissist. Okay. Yeah, that's really what I'm getting. And you know, I guess there might be someone here listening who is not sure if someone is a narcissist or not, but there is an energy of questioning whether or not to put up boundaries with this person. And there is some kind of empath narcissist paradigm dance between you. You must attract these people. Do you attract these types, Virgo? I feel like you attract these types of people in your life.  Is this going to be the same type of situation? I'm going to be hearing from someone or start talking to someone and they turn out to be this anarch person. You know, whoever this person is, I mean they're definitely going to be reaching out to you in August. Okay, let's get a little bit more into this reading. I want to see what's going on with you here, Virgo.  Okay, you got the star and you've got justice. Hmm, and the magician and the emperor, all this major icon, what the heck? Aries, Gemini, Libra, Aquarius. Okay, this really just feels like somebody is coming in here to talk to you who has really changed from being very selfish to becoming like this emperor energy, doing the right thing, being honest, healing, trying to focus on, you know, laying all their cards out on the table.  What? Okay, Virgo, I can't even with this. There's definitely a love offer coming in here and I kind of feel like your response to this call or this somebody trying to, you know, hand you their cup of love is like, I thought this was over. I thought this thing was done. I thought I was never going to hear from this person again. And now things are kind of confusing because now this person's coming in with this Hierophon and they want a full on like commitment. I thought I was like, I just, I don't know if it's like I'm done. I thought I was done with these types of people or this particular person, Taurus, Pisces, Scorpio, another Virgo, Taurus, like I said, Capricorn. So yeah, Virgo, I just kind of get a sense that you're going to get this love call or someone's reaching out whom you're not going to be this and you and this person, it looks like they want to start talking to you or they're interested in you and, you know, coming in with that Knight of Cubs. I kind of feel like you're not sure though here, you know, if this is going to be another one of those narc relationships or someone who's just, but I don't see that. I don't see that. I actually see this person coming in who's, you know, that the empath and the narcissist relationship is really just a codependency dance. Oops, just a codependency dance and you guys might have like taken turns or maybe, you know, you've been in relationships with someone like this where you guys have taken turns where one person would be super, super needy and then the other person would be like, oh, I got to get away and then you guys would flip flop and the other person like the chaser runner and the other person would run and then the chaser would become super needy, you know, and that's the paradigm. That's the dance here.  Pretty much telling yourself, you're not going to get into a relationship like that again. It won't happen because you're, you've secured your feet to the ground. You've become more grounded, but yeah, you definitely have somebody. Now look, I'm not saying that this person is a narcissist and I'm not saying that they're not, but I will tell you that for some of you, there is like a renewal here with the star. Okay. And someone trying, wants to renew the relationship and really lay all their cards out on the table here, but you know, I got to pull some clarifiers. Look, now here's the world. Like I cannot even believe of all the cards here. It's just a queen of pentacles in the night of cups. That's not a major arcana and that is very significant. There is a major shift happening here and a major change going on in August for sure. I almost said September. So for some of you, could be a September thing, but it feels like the energy is happening in August. Could be going into September, but I look at this and I just kind of feel like the love offer comes in and you're not really sure. Like you're kind of like, look at her face. It's like, it's not bad. It's just, you don't react. You kind of sit and observe this offer like, what is this about? And it mostly feels like this is someone, you know, where you think this or thought this thing was done and it was over and you were going to never hear from this person again and it just ended and la-da-da and you hear somebody comes and, no, hi, I miss you. I've been thinking about you. Okay. That's some crazy energy right there. Let's see if we can get any minor arcana, arcana cards out of this reading. Of course not. It's all major. The strength, it's going to take a lot of strength and courage for you to face this person because some of you might not want to, but I feel like whatever energy this person is in, they, I feel like it's you who's not trusting it. I feel like it's you who's not sure, you know, what the situation is with this person, but there is adaptation changing and healing here. So I know it's like, well, narcissists don't heal. Well, not really. They can change behaviors. If they really want to, they could. I've heard that. Look it up. Don't count on me. Do your own research. But I definitely, so we have Leo energy here too. I mean, everybody's here.  Everybody's here to talk to you, Virgo, and you've got this, all this major shift and change. It's, oh my gosh, it's confusing. A lot of thoughts going in your head is, is this person healed?    Do they really want to commit, you know, or do I got to walk away? Because it's just too many unknowns and it's all this shifting energy. You know, there's a strong, strong connection. Oh, you know, I can't, I feel like I need to just be done only because all these major iconic, listen, look at my deck. I swear it's all shuffled and everything. Gemini energy there. I mean, it's pretty much like everybody's on the table just about. There's a decision. You're going to have to make a decision because this person is like coming in to tell you how much they love you and that they've been thinking about you and they miss you and they want to talk to you and they want to get to know you and, you know, learn more about you and converse and all that stuff. And, you know, either it's either a phone call or there's texting. Yeah, you have like a big decision to make about this relationship here. If you want to stay or if you want to go.  It's not like nothing's happening. Unless the tower comes out. I mean, I do get a sense that there's a little bit of like surprise or shock, but I don't know. Some of you are just kind of like, you know, I've already walked away from that. I've already like, I made my decision already. Too much sneakiness, too much with that snake energy, you know. Gosh. Ah, ah, ah, did you see me shuffling? Did you see it? Did you see? Did you see? There's the tower. Just like, like, there you go. You are just going to be like floored the way this person comes in. I don't know, Virgo, I feel like before you accept any kind of love offer from anyone, I cannot even believe all the major Akana because this is, whenever we have major Akana and entire reading, like almost the whole thing, this is at this almost 100% is going to happen. And especially during the Venus retrograde. And I feel like you really need to read between the lines or look at the fine print. Don't jump to say yes with what this person's coming in with this expression of love because you're, like when you get this call or when you talk to this person, you're going to be all over the place. Look at all your emotions. Like, like what? What is going on? Is this real life? Is this real life?  You guys, like seriously? Laugh with me, please, because this has never happened where I have shuffled and all the, all these majors come out. Like just that in itself, that's what I feel like this is going to trigger so many emotions and feelings. And you know, you might feel really lucky that this person is expressing themselves, but there's some doubt because of the snake card there. And then there might be like, okay, this is working out for me. This person is finally connecting and they're coming in with this good energy.  I mean, there's definitely a major shift. Here's another major arcana that just flipped out there, aren't it? You're going to have to go in and do some serious soul searching when you get this love message or call or whatever it is. Absolutely. Okay, there's queen of cups. So really check your feels, really go in and see how you feel about this. And then don't trust your feelings because your feelings are going to get triggered by this, this night of cups energy because remember the night of cups, prince or princess charming, you know, coming in with this, the sweets, coming in with the sweets here. Hmm. Okay, so finally we're down to, of course, of all the minor accounting, you have the seven and one. So this is kind of like back off, just back off. Don't push me, right? Because this person is trying to love bomb, right? You got seven ones, there's going to be an eighth one. You're pushing back on the six of ones, which is someone who's trying, you know, like an energy, not necessarily someone, but you're pushing back on the six of ones, which represents someone who's trying to be like, see me, see me, pay attention.  I feel like you're not going to give somebody any attention, maybe because you're not sure what to make of this. Here's the six of cups now. So for some of you, thinking back on the past, you know, all the good memories too, you might get a little bit triggered here by this person. Okay, there's temperance. Yep, lots of major accounting. So I feel like this person, not this person, I feel like the energy here is, let me get stable, let me get balanced, let me have, let me just look at the whole thing objectively. Like, is this person coming back into love bomb and try to, you know, I just, I'm hearing this, put me in the spider's web, trying to get clarity.  What the heck? Dealing with someone, I don't know if you've been conditioned or if you've had some kind of, oh gosh, this is, this is some crazy energy here and I'm not going to tell you how it's going to end up here because I kind of feel like you're going to be looking at this thing and the decision that you make, whichever way you go, is going to be a very impactful decision in your life, you know, and I feel like this is one of those situations where you might be tempted to return back to somebody, maybe for the physical or just the tension or filling a void, you might be tempted to keep something going or you may have thought this person wasn't interested in you anymore and they just bolted and then the tower comes and then you get this message and you thought that this thing was dead in the water with the death card and maybe you go through this thing, well did this person, like did they really change, did they heal, is that, are they telling the truth? I mean just remember you've got the deception card here which is the moon, so not much is revealed but I feel like you're going to be super shocked to hear from this person you know and seriously yeah see there might be some physical traction too going on there so big time somebody's getting a, somebody's getting a you know what okay and if you're dealing with someone who has one of these they got it bad for you that's for sure are you, if you have one of those you might be like ah damn something about a physical connection that's all I'm saying right there in regards to that you know because I know I have some guys on here so some you know men and women are different I know a lot of the ladies don't want to have a fling and I don't think some of the men do either but I do feel like there's some kind of magnetic charm of some sort yeah that just kind of throws you in jail here you get like stuck like connecting with this person this type of person might sabotage you you know all your any of your own healing and growth right so the overall message here I'm just going to say is expect the unexpected this person whoever they are and all the signs are here so I can't narrow it down but whoever they are could be um cancer too um they're coming in here Virgo and and you're not going to use you saw you must have I don't know what happened but this is going to be a surprise hearing from this person okay in the month of August here let me see if I can find like an actual day oh here's King of Swords hello okay let's see Gemini Libra Aquarius let's see an actual day for Virgo that this person will be reaching out sometime around August 7th okay um yeah there's a ghosting thing going on here for sure somebody got ghosted and now they're surprised I'm back okay all right another major arcana I'm back I'm pregnant just like I'd let you know it's the baby's yours for some of you um this could be like um an ex uh parent there's a co-parenting thing there's someone that you raised children with um for some of you might have this person show up pregnant and they um they don't have anywhere to go that might not be your child but they say it is I don't know where that's coming from and you know you could be a grandparent and this is like your kid your kid's going through this right someone that they're connected to is showing back up in their life and it's affecting you right because you're listening to the reading your Virgo so a lot of different stories there but I do kind of feel like there's this element of holy this person has made a return and we collectively did not expect this we thought this was done we thought this was over this person is not giving up we thought they gave up and now they want to reassemble themselves and they say they've changed and you know all this bringing this clarity and this truth you know um I'm a funny thing though I'm not seeing an apology here but we're gonna have to wait and see yeah look five of swords so there was a cutoff that was done for sure definitely a cutoff and some a b u s c energy okay yeah look somebody cut another person off and left abandoned ship nope somebody's returning oh yes somebody is returning out of the blue unexpectedly just when you thought it couldn't get any more interesting here you go Virgo here you go let me see what the messages of love are okay abundance you've done the work abundance flows to you now okay support lean on your inner circle during this time hmm and rejection the rejection is actually divine protection okay and children are important to this partnership so children might be involved for children are involved for some of you okay in this connection here could be your children their children grandchildren um a need for children desire see there's that chemistry the attraction you feel some of you there's an attraction if this is someone that you are dealing with here there's definitely an attraction like if there's a romantic connection here uh the chemistry and yeah that might be a little difficult for you to kind of uh discipline yourself in regards because there's I just kind of feel like you know once you have a taste of that sweet sugar it's really hard to not have more taste of that sugar even it's in the beginning it's it's it's it's easy to not have the taste of that sweetness when the relationship goes sour then it's it's easy but when time goes by and then that those those feelings of those cravings or desires punch up again then it's like oh well it's been a really long time everything you know maybe they've changed and they're getting better their behavior is better their you know what have you um and this person might just be very like codependent and enabling um and they can't it's like if you go somebody and you leave somebody why keep going back you know why keep going back if you're done aren't you done like what what's going on so there might be like an empath situation here with this person they might not be a narcissist you know um like I said there might be this back and forth dance between you and another person and they're coming in as this empath what you know with these emotions and these feelings and I've you know changed and I've seen the light that kind of thing oh it's great this is crazy the way this has come out I just cannot believe all of those major akanas I want to see what this person will say because I just want to see what this person's gonna say I mean it's still so over the top like if somebody's been gone and the thing is ended and then they just come out of the blue and they're like hey I changed I love you want you back I mean that's strange that's just kind of strange all right um so yeah you came closer than anyone I was just in this thing and and I really just didn't know and I let my guard down with you when I ran because it was so you know whatever and nobody ever nobody ever get that close to me before I hide behind material things so you know this person I feel like these are things that they'll say to you I hope that you can forgive me I really want to be back with you and love with you I want you want to get married or I want to just be with you I don't want us to be with anybody else because I can't stop thinking about you since you've been gone I can't breathe for the first time it sounded so horrible right there I shouldn't sing but that song just popped into my head oh my god Kelly Kelly Clarkson right so Virgo come on now it's gonna take everything you have to possibly like resist I feel like there's I don't know I don't know Virgo I just get this strange feeling that this person um kind of triggers and like there's in some strange I feel like I'm on the outside looking into this relationship and it's so freaking toxic it's like you know I feel like there's a this person reaching out and connecting with you it gives brings a smile to your face but why because it's an ego thing and they've done that to you you know and they have some kind of magic charm or something to make you forget all the bad yeah Virgo's like oh but they're worth waiting for divine timing is it work in my love life and I'm waiting for them to change okay are they gonna change I mean maybe this is tough but they're definitely reminiscing thinking about you for sure let go of control issues last situation unfold naturally I mean Virgo I kind of feel like if you're gonna open up that door again to this person then you're gonna have to like don't open the door and just let the flood you know waters run through they crack it open little and see what's going on with this person and see what they're about um because anybody can come in and say that they've changed and then you know Virgo I don't know I got nothing I got nothing as far as like advice here because this is a tough one I mean if you've been in a toxic relationship with someone you're toxic too you know because that shits like a virus and it bleeds and when someone's treating someone bad um the one who's being treated badly acts out of character um and they do things they never thought that they would do before because of the way they're being treated you know do you ever hear like you know when like when someone gets kidnapped you know I mean they fight like like a freaking night you know like they could kill somebody trying to escape and you never know what you have in you until you're in a difficult situation like that and I feel like if you've been in a toxic relationship you are not yourself you were you were doing things you didn't expect it and then this person whatever they did they left or they ghosted or whatever happened and I kind of feel like here you are you know with the butterfly here healing changing things are coming to light for you about maybe this relationship or just you yourself and then you know put out your can here comes a garbage man I mean I feel like somebody here is coming in to trigger but I can't really I kind of feel like maybe they're making changes but I'm not so sure and I don't want to say 100 yes and then you leave the reading and then go and not that my opinion matters all that much but I it's general so take it with a grain of salt I would hate for you to for me to tell you oh they've completely changed and then you just go and open the door and then boom something terrible happens you know and I I have a disclaimer here so hopefully you guys do take these general readings with a grain of salt because at the end of the day like I always say when you leave this reading in this and this energy happens you have to you're the one living your life so you gotta deal with it but I don't know Virgo I don't I don't the dance between the narcissist and the empath it's like they're made for each other they are made for each other one is taking and one is giving and the empath gives and gives and gives and gives because that's what the empath is built to do and the narcissist takes and takes and takes and takes because that's what they're built to do and that's why they always find each other in these relationships you know I mean some of you are like no it's fine it works we actually work together this is a good thing like we actually he or she just I get to give as much as I can give and they keep taking and taking and taking and it works for me because I cannot give to people and the narcissist takes and takes and takes and it works for them because they don't know how to give back you know so that relationship it's like a one-way street in this relationship and some of you not all of you but or let me not say that someone here someone here and it most likely it's not you listening but someone here is listening and they're like yeah no this works for me and I hate that MFR and but it works I don't know I'm taking my fingers off this reading for real like I I can't like I just I don't know what to say I guess I could say like if you're the one who's listening to this and you're like no it works and I'm I'm really happy they're back even though it's awful relationship I guess all I can say is is that's what you're doing then good luck to you I don't know you know I've never been this I've never been um this crazily unsure because you know what I usually say like keep it moving all that stuff I say over the years bloody stump and yeah you gotta have that bloody stump but I don't I just get the sense that there's someone here that is complaining and complaining and complaining about this person and everything they did and then as soon as they reach out and call they're super happy to hear from them super happy to hear that their person is reaching out to them and even though they were treated really badly they're almost like that's codependency so there's this is getting real psychological so I'm gonna stop right there and I think maybe we should all just lay the candle for the person here who is stuck in this situation and maybe say a little prayer say a little prayer for you and just kind of give it over that this person can kind of like I don't know see the light all right let me get some Chinese signs here okay year of the goat year of the dog year of the rat dragon goat again just fell monkey pig and an ox okay tough tough read tough read y'all tough read let's get some other messages here and see what's up all right so somebody's name initial g initial a I see someone in their car going to get gas they're filling up at the station right now somebody okay they give me the number 63 so that's either an age or a date of birth year of birth someone is 39 okay all right somebody just said they just gave me the name the actress what oh umma thurman umma thurman wasn't she in I don't know what she was in I remember some movie she was in with John Travolta I forget what it's called um was it like a Tarantino movie tip of my tongue I can't remember um let's see someone was born in 69 someone was born in 93 okay um I'm hearing the name mini m-i-n-i-e our mini our mina and ninja ninja ninja maybe it's ninja I'm hearing a ninja okay someone is 59 someone is 35 okay August 26 23rd 29th 25th okay let me see say zoom me zoom me maybe somebody's on zoom talking to somebody on zoom someone's a pilot flies a plane or is connected to a pilot or yeah just getting that right now someone's 38 did I say that already we got 33 and also someone was born in 1998 1983 and 1989 and 1938 1938 okay watch out for the snake in the garden I just heard a garden snake watch out for the garden snake definitely a same-sex relationship I'm seeing an older woman also with glasses and short blonde hair and she's working on some kind of project of some sort okay somebody's eating Oreos they just told me Oreos oh my god I love Oreos I can't eat Oreos but I could eat them but I don't I shouldn't um okay and so I see a blind man walking with like a stick a walking stick blind leading the blind here okay now this person who's coming in I just want to say that I have an amazing chest male or female an amazing chest like what and I feel like that kind of has something to do with this reading it's like oh my god something's going on there with the chest that's all I'm saying okay we're giving steve a break and I'm going right to the charms okay um also initial letter M someone's name starts with an M there's a J okay okay and I'm hearing Edward okay so you do have a musical instrument so someone plays a musical instrument someone might be in a band or you know some kind of musical thing plays a guitar does something along those lines okay we also have a monkey okay so that's just more confirmation that someone is their Chinese sign is a monkey all right and you also have Christmas bells sleigh bells ring are you listening okay Christmas bells something magical might be a wedding at Christmas so some of you might decide to tie the knot with this person around the holidays also because there's a proposal coming in like I said um all right let me dig in here oh this darn thing okay we've got a unicorn uh somebody calls someone a unicorn is like oh you're like a unicorn to me that's a very curly haired unicorn is it or is it flowers oh it's flowers so there's like I know you can't really see it too well but there's like sunflowers or flowers in the unicorn's hair main and tail okay very good so many somebody calls another person a unicorn that's all I'm saying maybe you call them that or they call you that or they just refer to a unicorn as far as um who you are to them very unique and different I'm not trying to like uh romanticize this reading I really don't know what to make of it very honestly I've been doing this for a long time and this kind of this just tells me that whoever the person is that's listening to this they love their narc or their their empath there's this bond um and it feels like whether I'm gonna judge it or you're gonna judge it or anybody else is gonna judge it it feels like someone's super super happy to hear from this person um not happy to be abused but definitely happy to to give I don't know you guys this this is touchy um maybe I need to take a break from doing readings for a while because the stuff that I'm channeling lately has just been through the roof but I'm gonna leave it there I know it's kind of short but if you guys want to get a personal reading the link everything you need there's one link only one link in the description box click that and that will take you to my link tree and you can just like peruse that whole thing for your readings and everything else all right Virgo I'm gonna leave that there uh you know if this is you and you're happy to hear from this person this relationship's not healthy I mean I wish you all the best and I hope at some point you um well I just hope you have your angels and guides along with you the whole way that's the best I can say all right you guys go leave that there love ya see you later


Hi everybody, Joe for jazzy's case breaks.com with a 2021 mosaic baseball hobby pack break number 10 with eight of those dual case spots being given away the brand new tops chrome black that just dropped today eight spots being given away there but first we're gonna do the break big thanks to this group for making this happen and all the teams are in and then the giveaway part will be in a different dice roll separate dice roll four or two six times for names and teams one two three four five and sixth and final time after six we got those names right there after six times and then four or two six times for the teams one two three four five and sixth and final time all right there's the first half of the list here and the second half of the list right over here and no trade windows let's just print and rip oh do we have an autograph here we do nice all right well the autograph not bad for a filler pack is going to be Alejandro Kirk rookie autographs mosaic pattern i believe he is a blue jay yeah he's a blue jay and that is going to go to paul and toronto there you go paul and there you go all right now let's see who's going to win those spots in the next break so let's grab everybody's names let's roll it let's randomize those names three and a six nine times so it's going to be top eight after nine good luck one two three four five six seven eight and ninth and final time three and a six nine times after nine so it's top eight so from so from nine on down paul on down sad times at least you got the autograph paul thanks everybody for giving this a shot happy times though for the top eight you're in the next break we've got mark timothy devon darin fred jonathan martin and david happy times for you because we're going to see you in the next break we'll see you for that jazby's case breaks dot com


direction. So we're talking about Hurricane No. What's it called? Ida.   No. Completely, it's like if you're in Mumbai and the other places in Calcutta, essentially. That's essentially the distance. It's as far as that.  Registration to Corbin. I hope that's not blurry. This is the top 10 magical spin deliveries by a R. Ashwin. R. Ashwin.  It's the quality of video that we actually can have access to, because a lot of the times Corbin mentions this every time we do a cricket video, that they get blocked and it's very difficult to get good quality coverage of cricket games. You can't do any ICC. Yeah, it's really hard. Basically, if there's a game it's almost impossible to do a highlight because it'll get blocked. Yep. But we try. Okay, so 10 magical startings. R. Ashwin, I keep wanting to say, hey, dyslexia, is not only an amazing off spinner, but a worthy batsman too. Time and time again, he proves his worth to the Indian team currently, we believe, is the most valuable player in India's tests squad. So this is a apparently a good, really good spinner on the Indian team. So I thought it'd be a good one to learn about other players. And are some bowlers, like in Major League Baseball, this is the only thing we can compare it to as a bowler in a pitcher, there are some pitchers that are called power pitchers, and then there are finesse pitchers. Yeah. And I would assume a spinner may be more of a finesse comparatively. But I think they use it more than the baseball uses the finesse, because obviously the baseball uses a lot more power than they do finesse. Correct. The finesse is when they need, well, the finesse is typically used to make you off balance in between power. But we'll check it out here. Hello guys, welcome to top 10 cricket. R. Ashwin has been one of the most consistent performers for team India in test match cricket. Not only is the ball, but the off spinner is capable of batting long in his toe. This makes him one of the most valuable players in the current team in India's sport. In this video, we are covering top 10 magical spin deliveries by R. Ashwin. So sit back and enjoy the whole week. It seems Alistair Cook has had a lot from the opening day. What? Back shift is he took to the pitch like on day two. Ashwin play me the English. It looked like it was going to go that way. Wow. That's what you trade for. Just for the exact ball every single time. That's beautiful. That's incredible. It looks like a replay. Wow. It's crazy. He throws like this and then it goes. Look at that. It's spinning like. Dang, that's pretty. It's right on the edge of the wicked. Wow. Viracoli. That went behind him. Behind the right of him. Oh, that's pretty. That's like a half an inch of a millimeter heavier. Literally millimeters. Straight through. That was standing even. Look how good it's spun. Did it bounce back kind? I think it just went back. I thought it just went straight. That's spinning sideways. You see that? Wow. Covering the left of the line. Look about the wrong line. There was every indication that this ball is up to the third. And he's playing for the turn. Wrong line.  For it just six inches. Oh, yeah. Yeah, yeah. Literally can't see the ball. Yeah, the other ones were great. That was a violent spin. And the other thing about that is it looked like it was going to come up much higher and it stayed down. It's the same one as that one few ago. Hey, he thought it was going that way. It did rotate. Okay, the rotation should have done that. It looked like it should have gone that way. So I don't know how they do that. I have no idea how they do that. It's not too much of an offense. That's good with the ball. They're still in the air. Five wickets for Usher. Yeah, the slower one didn't hit me. Well, well, well deserved your fight. And well, that piece, it'll do. It was a slower one. It's a hand. I wonder if it also has to depend on the speed it's going out. The speed and the softness of hardness of the ground. For Usher in, yes, and very quickly as well. See, keeping low and surprising, hardly bouncing. Oh, give me a second. Show me it again. The rotation on the thing. Yeah, it's incredible because it's coming out. You see it spinning to the right, but sometimes it doesn't go to the right. So like you can pick up. All right, it's getting bonus. Karam ball delivery. No, seriously, what the freak just happened? Did it bounce off? Oh, did it hit him? It's blocking. It karamed off his pad. They hope you like this movie. It hit him. But I'm guessing that's considered blocking, right? I guess.   And so there's like, that would have hit the wicket, kind of like a strike, essentially. I'm guessing there's two rules in that regard. I think depending upon where you're standing, you are interfering. And then I think depending upon where you're standing, the ball's in play. And if it ricochets and hits the wicket, it counts. Okay. I think, I'm not exactly sure. By the way, one of the best videos we've ever seen as far as the clarity. Yeah. That was great. Great clarity in this one. And I really would love if you guys can find an instructional video on bowlers doing what they do, where they're either teaching someone else or just teaching the camera about grip, rotation, what's required for a ball, maybe with the same rotation to go one way versus another based on the speed of the ball. I would love that. A detailed instructional, like how to be, how to bowl. Yeah. Right? Yeah. I think that'd be great. We'd love that. I know we got, we did our one cricket video and we kind of got a little tasty explaining it, but obviously it was very basic and it was a long time ago and I don't remember anything. I just remember I was better than Rick. Yes. It's true. Actually, I don't remember if I was. I think you work with him. Yeah. I would like to play again. But yeah, that was a great video. Please don't just know what other cricket videos we should react to. If there's players or if there's different styles of hitting, throwing and all that kind of stuff we can react to down.


Hello again, I'm Chantastic, you're amazing, and this is Reitolidate Day 10. Today we're talking about lists and how to render them. Well, first we need a list. So we're going to grab a collection by hitting our use Pokemon hook and getting the same endpoint that we use for Pokemon. But if you hit that bear slash, it just gives you a collection. And we can see that logged out right here. We have some metadata and then our results, just a list of 20 Pokemon. Now down here, I have a little bit of pre-baked code, which I'll uncomment out. It's everything that we've covered before with the conditional turneries to render a fallback while we're waiting for a Pokemon. And then once we have one rendering out that collection count, which you see here. Now I want to dive into that results array and render a list item for each one of them. Now to do that, we're going to use the map function. And this is how we do lists in React. Map allows us to take an array and for every element call a function that will transform it before copying it to a new array. So we can take our Pokemon data and then in return on this new array, we're going to return a list item that interpolates out Pokemon.name. Save that. And in two lines, we've been able to render a list. That's amazing. Now if we refresh this real quick, we see that we get this new warning and this unique key prop warning is just saying that React needs a little bit of help from us when rendering lists this way. So we just need to provide a key prop and it can be anything that's unique. Now, if you have an ID from your API, that's a, this is a great place to use that. In our case, this Poke API doesn't, but we know that the name is unique. So we'll just use that. Now you know how to render lists of things in React and that's like 99% of a web developer's job. So congratulations. The whole internet is your oyster.