From Las Vegas, it's theCUBE covering Dell EMC World 2017. Brought to you by Dell EMC. Dell EMC World, we are theCUBE. We're here in Las Vegas. Dell EMC World, three days of back-to-back coverage. My name is Paul Gillan, and joining me right now, Jason Brown from Product Marketing at Dell EMC and Narasimha Krishnakumar, Director of Product Management at VMware. And we're going to talk about software-defined storage. What is software-defined storage? Well, everything's software-defined these days, right? Our networks, our servers, our desktops, and now our storage arrays as well. We've been talking a lot about hardware storage at this conference today, but maybe we won't need the hardware so much the same way we do. I don't know. What is it? Let's start with that. Narasimha, what is software-defined storage? So software-defined storage is managing storage through software, where you have a data plane that resides on any hardware that the customer chooses, and then the software is able to manage that storage. So that's software-defined storage. There are different flavors of software-defined storage, which we are here to talk about. One is hyper-conversion infrastructure, which VMware is pioneering with its vSAN technology. And we also have the Dell EMC ScaleIO product that is offering customers the capability to run multiple workloads on multiple hypervisor. Jason? Yeah, definitely. So you think about the evolution of the data center with software-defined. Started with compute, right? VMware did it back in 2001 with virtualization, where they were able to abstract, pool, and automate compute. Then we've got software-defined networking, which has been hot. And now the last part of the SDDC is storage piece. So the key message with software-defined storage is to essentially abstract the hardware, the storage inside the hardware, away from the typical array-type architecture, instead running on off-the-shelf x86 servers instead. So you're simplifying the data center, and you're standardizing as well on more common componentry to reduce costs, to increase efficiencies and things like that. Isn't this what SANs were supposed to be in the first place? Well, right. So weren't SANs created to get rid of DAS? And what we've seen is that customers are coming to us saying, I have a SAN model, but I'm finding it to be a little too rigid. Or I'm managing multiple silos of SAN, and it's becoming very cumbersome. And then, hey, guess what? What happens after three to five years? Data migrations, tech refreshes, dirty work, right? And so customers are facing some of these challenges, and so they're looking at software-defined storage to help solve some of those challenges they're facing with traditional infrastructure, like arrays. What you're doing is essentially, you're de-emphasizing the hardware as a vital component in the equation. Isn't that something that Dell EMC wouldn't want to do? I mean, why would you want to make hardware essentially something you don't think about? Well, it's essentially a portfolio approach. So, think about mainframes, how long have they been around, right? And they won't be going away. Same with traditional infrastructure. For certain workloads, perfectly acceptable to continue running them on traditional array infrastructure. What we're seeing with software-defined storage is that for some of these third-platform next-generation applications, as well as some less critical workloads, customers are looking to optimize the storage that is being run on, and software-defined storage does that by giving you common hardware with all the goodness, the reliability, the enterprise-grade feature functions set, the scalability of performance, who only lives in the software itself, and therefore just gives you a lot simpler data center to not only manage, but also build. So, you say SDS right now is not something that you would use in a mission-critical application. It's something that has a lower performance threshold, perhaps? So, I would say it's not lower performance, it's applicable to most workloads. So, if you look at the evolution of the market, X86 workloads have become mainstream. Virtualization is mainstream. Customers have successfully virtualized their data center. Most of the customers that we engage with at VMware have successfully virtualized their data center. For those customers that are there in their virtualization journey and have completed the virtualization journey, they are looking at how do we extend that virtualization to storage and manage storage within the same framework of a server without having to use a specialized storage array. So, we are increasingly seeing that, and most of the customers that are looking at digital transformation and transformation of their data center are looking at how do we take advantage of the software-defined storage where a majority of the applications are running on X86. There are a specialized set of applications that would still benefit from storage arrays, and they are going to preserve those storage arrays for those set of applications.  Would you have different SDS solutions for each of these, or would you abstract across the whole range of platforms? Well, Dell EMC's approach is a portfolio approach. So, we don't necessarily have a jack-of-all-trades, so there's a various products within the set. So, for block storage workloads, you'd have Scale.io. For file-based workloads, something like Icelon. Something with archive and object storage, ECS. So, it's more of a portfolio approach in that sense. But, from a customer's perspective, am I abstracting, am I software-defining all of those at once in one common pool, or to what level of control do I still have with where that data resides? So, you do have a level of control as to where that data resides. What we have seen customers do is take a step-by-step approach to software-defining their storage portfolio. For example, with the VMware vSAN technology, we see customers that are using virtualization solutions today with the vSphere product that we have. They have external storage systems, and they're looking at how do we take a set of workloads that are running on external storage systems, bring it into the software-defined storage approach. So, as Jason pointed out, I think the portfolio, Dell EMC, Dell Technologies portfolio, has all the assets for our customers to do this piece-by-piece journey. It's an evolution. It's not going to happen overnight. We believe it's an evolution, and customers will slowly start embracing software-defined storage. So, let's talk about use cases. Right now, what are some of the most appropriate use cases that you're seeing for customers adopting this technology? So, with VMware's vSAN technology, which is hyperconversion infrastructure, the first design goal that we started the product with was VDI. We see a lot of customers that are using vSAN for VDI. Now, we are at the sixth generation of the product, and customers have started moving enterprise class applications onto the vSAN platform. They now run Oracle. We are certified for SAP. We offer all the enterprise class features, such as deduplication on one hour, all flash platform, as well as erasure coding. So, customers now are embracing vSAN for enterprise class applications, tier one applications, such as Oracle, SAP, and mission-critical applications. And we see some of the similarities as well with Scale.io. We target more enterprise service provider businesses, looking to consolidate block storage workloads, looking to build a private cloud, and looking to do third-platform DevOps types of use cases as well, so containers, open stack, things like that. So, that's where we kind of target our use cases. So, these are not high-performance applications. They can maybe be mission-critical, but they're not high-performance, that's Sarah. They are high-performance in that the IOPS requirements from the storage, expected from the storage system, are enormous. So, for example, vSAN All Flash, a single, ready node of vSAN, can provide about 100,000 IOPS. And we can scale up to 64 nodes. We are talking about millions of IOPS that are available by the storage subsystem. And we are able to provide a policy-based management framework where they can apply policies with respect to what type of performance requirements the application needs and serve it out of the platform. So, these are applications that have high-performance requirements, as well as a blend of mixed workloads that can be supported by the platform. Do you work across purposes at all with your colleagues on the hardware side, where they're trying to sell the virtues of their specific hardware platform, and you're saying, put it all on software while managed as a pool? So, we do leverage the underlying capabilities of the hardware. For example, NVMe is one such example of a hardware technology that is readily available from our hardware partners. We work very closely with those hardware partners to make sure that the software leverages the performance characteristics that the underlying hardware provides. So, at VMware, we take this ecosystem approach where we work closely with the partners, make sure that the drive is capable of providing those IOPS, and we are able to take advantage of those drive characteristics. And provide it to our customers. This is the magic of software-defined storage, right? Depending on your workload and what you're trying to achieve, software-defined storage can support it. So, if you do have a high IOPS requirement, you get a bunch of servers with NVMe flash in there, put some 10-gig ethernet on the back end, and bam, you've got a high-performance system powered by software-defined storage. But, if you don't have that requirement, then you could build a hybrid-type environment where you've got some SSDs as a cache, but you've got more spinning disk with the back end. So, that's the magic of software-defined storage, that you're able to actually tailor the environment based on the workload. Whole new world out there. Jason Brown, Narasimha, Krishna Kumar, thank you so much for joining us, telling us about this topic that I knew very little about, but which clearly is going to be on a radar going forward. We'll be back from Dell EMC World in Las Vegas in just a moment. This is theCUBE.


I'm joining CBF 14 for networking purposes to meet like-minded organizations both locally and internationally that can help promote the activities that we are doing as having work in government. It's good to meet, develop my partners and also implementing partners in the ground to promote these climate change adaptive solutions and also for learning purposes to see what I can do in my role better and what we can promote in our communities.


in Acts chapter 13, we're going to keep our place in Romans chapter 8, and we're going to keep our place in Galatians chapter 5. We're going to have to start passing out bookmarks with Bibles, okay? But it's funny because I was listening to a, I don't listen to a lot of sermons online, but I was listening to a sermon that somebody sent me a couple of days ago, and I listened to part of that sermon, and then you know, you kind of get like suggested sermons along with that. And there was a, I was just thinking of our church and what we would consider like old IFB churches just kind of became very obvious to me. I haven't listened to an old IFB sermon since I was, you know, back in North Dakota at our church there, but this was, it was kind of an interesting title of a sermon, so I listened to about 10 minutes of this sermon, and it's not that it was a bad sermon or anything like that, and I actually did even look up the church after I listened to the sermon. It was an old IFB church. They had the right gospel and everything, but one thing that really stood out to me, and this is the intro before we even get into the sermon tonight, one thing that really stood out to me was how much Bible we use, which how much Bible, you know, like if you go to Verity Baptist Church or you go to First Works or even here, it's like we're just constantly, you know, you're, I mean, you're working during the sermon. You're turning to Bible verse after Bible verse after Bible verse whereas like the sermon I was listening to, it's not that it wasn't interesting, it's just that it was like one common verse in like 15 minutes of just stories and in personal, you know, things like that. It's not that I don't tell stories, but you know, honestly, I don't have that many stories to tell, so I'm glad that I use the Bible as much as we do. But anyway, just if you're wondering, if somebody ever asks you what's different about our church versus another Baptist church, that's a big difference, and that kind of was just reminded of that, just like how much Bible we go to. I mean, especially Wednesday nights, we're just going to really study through the Bible. So Acts chapter 13, that's the first place. So whenever you turn away from that, just keep your place in Acts chapter 13. Acts chapter 13 is Paul's, is the beginning of Paul's first missionary journey, okay? And we're going to get through four whole verses of Acts chapter 13 tonight, and we're going to look at the beginning of this journey, how it started and who is responsible for sending out Paul. All right, who is responsible for sending out Paul and Barnabas in this first very famous missionary journey. And then we'll study what happens in the missionary journey in the coming weeks. Look at verse number one. The Bible says, now, there were in the church that was in Antioch, certain prophets and teachers, as Barnabas and Simeon that was called Niger and Lucius of Cyrene, and Manayan, which had been brought up with Herod the Tetrarch and Saul, as they ministered to the Lord and fasted. So these people are all at the church in Antioch. And as they ministered to the Lord and fasted, this is the church, remember, this was the first church plant when Stephen was killed. Remember, in Acts chapter 7, everyone kind of fled, right? I mean, everyone was kind of in Jerusalem, kind of having a, you know, they're having a good time. Everybody was getting saved. The church, it was like thousands of people were being added to the church. Stephen was killed. Everyone was like, oh man, and like a lot of people fled, and that's what sparked the church, the church plant in Antioch to begin. Look at verse number two. And as they ministered to the Lord and fasted, so now we see kind of the growth of this church, right? Not only are they at church now, but now they're going to be sending people out. As they ministered to the Lord and fasted, the Holy Ghost said, separate me, Barnabas and Saul, for the work, for the work we're unto, I have called them. And when they fasted and prayed and laid their hands on them, they sent them away. So they, being sent forth by the Holy Ghost, departed unto Celusia, and from thence they sailed to Cyprus. And they began the missionary journey. But the thing that I want to point out, look back at verse number two. The thing that I want to point out tonight, and we're going to talk about, you know, the calling of the Holy Ghost, especially when it comes to the ministry, we'll talk about that in detail tonight as well. But I want to really point out, who's in charge here? I mean, who's leading, who is leading this first missionary journey? Who sends out Paul and Barnabas? Look at, as they minister to the Lord, the Holy Ghost said, separate me, Barnabas and Saul, for the work we're unto, who called them? The Holy Ghost called them. So the Holy Ghost is saying, I have literally called Paul and Barnabas for this missionary journey, and I want you to send them out. And then they prayed, laid their hands on them, and they sent them away. So they being sent forth by, it doesn't say they were sent forth by the church and Antioch, they were sent forth by the Holy Ghost. And what I really want to talk about tonight is, first of all, the Holy Ghost is leading this situation in Acts chapter 13. The Holy Ghost is the one that sparked it, that is leading it. And what I really want to talk to you about tonight is, we believe in the Trinity, the Father, the Son, the Holy Spirit. And I think probably, maybe it's not the case with you, but I think probably the most neglected, maybe the one we talk about the least, person of the Trinity is the Holy Ghost or the Holy Spirit. And you say, why do you say that? I say because he is the one, he is the one that has the most personal relationship with us. You say, what do you mean? Well, turn to Ephesians chapter 1. Turn to Ephesians chapter 1. So the Holy Spirit is really the one that is the, I guess you could say, the closest to us. If you look at Ephesians chapter 1, I'll read this verse, not every time when I'm out soul-winning, but I'll read this verse many times when I am out soul-winning. And I'll use this verse in this passage. I usually just use one verse, but I use this verse many times. I'll just quote it, but I use this verse to equate the words believe on in John 3.36 to, you know, what does that mean? So I'm not, I'm trying to explain to somebody out soul-winning that believe on doesn't mean I just believe in God. You know, I just, oh, I believe that my wife is sitting right there. No, to believe on means to trust. And Ephesians chapter 1 in verse number 13, it makes this definition for us. Look at verse number 13 of Ephesians 1, but it also talks about the Holy Spirit. In whom ye also trusted after that ye heard the word of truth, what's the word of truth? The gospel of your salvation in whom also that after that ye believed, I mean, that's just such a, there's so much in this verse. It's equating believed to trust. What does, what does it mean to get saved? It means, it doesn't mean I believe Jesus was born and lived. It means I am no longer trusting in myself. I am trusting in what Jesus did. And that's defined for us in verse 13 here. It says in whom ye also trusted after that ye heard the word of truth, the gospel of your salvation in whom also after that ye believed, using those two words synonymously there, and what had happened? So you did trust. You did believe. You did believe on. You did take the trust off yourself and put it on Jesus. Look, you got saved. What happens? Ye were sealed with that Holy Spirit of promise. That is just such a great picture there of eternal security. That the Holy Spirit literally seals you. You know, a seal means it keeps it. It keeps it in there together. You know, it keeps your salvation with you. Now look at verse number 14. Which is the earnest of our inheritance until the redemption of the purchased possession, until the praise, unto the praise of his glory. What verse 14 means, so the Holy Spirit, so when you get saved, I mean, look, this actually happens. When you're at the door and somebody trusts on Jesus, this is happening right before you. And what I'm trying to get you to understand is this is a real thing that happens. Okay? This person that trusts on Jesus is sealed by the Holy Spirit. How are they sealed? Well, verse 14 tells us how they're sealed. Because God gives, it's the earnest of their inheritance. Meaning, if you put an earnest payment down on a house, it's like a down payment. It's like a down payment. You say, how could eternal security even be possible with as sinful and wicked as people are? I mean, being saved doesn't make me like all of a sudden perfect. I'm still, I still have the flesh. I still have the same sin nature. I still, until I decide to walk in the words of the Lord, I mean, the Bible says that I'm saved, but I'm sealed by the Holy Spirit. Look, that's how the eternal security works. It's not through us. It's that God keeps our salvation. How? Because he gave us a down payment of the Holy Spirit. Well, how much Holy Spirit did he give us? Enough to keep you saved. That's all I know. I know that you could have more in you. I know you could be filled with the Holy Spirit. I know that you could be walking in the Spirit to the point where you could literally be filled with the Holy Spirit. I know that you could get more of it in your life.  Turn to 1 Corinthians 6. I don't know how much that is, but it's enough. It's enough to keep you saved. Look at 1 Corinthians 6. Look, it's a real thing. It's a real thing that's with you now. If you're saved, the Holy Spirit is with you. It is sealing you now. Look at 1 Corinthians 6 and verse 19. Where is it? Is it like, follow me around? Where is the Holy Spirit? Look at verse 19 of 1 Corinthians 6. It says, Know ye not that your body is the temple of the Holy Ghost. This is why we don't need a temple anymore, by the way. Which is in you. Which ye have of God and ye are not your own. For you're bought with a price. Therefore glorify God in your body and in your spirit, which are God's. So you have a body and you have a spirit and at the point you got saved, you were sealed with the Holy Spirit which came into you. The Holy Spirit is literally in you. It literally exists inside your body with your spirit. If you want to think about it that way. Now turn to Romans chapter 8. So look, all that to say this. The Holy Spirit that was leading this situation in Acts chapter 13, that same Holy Spirit is in you. That same Holy Spirit is literally inside you now. You're like, well that's pretty cool. Turn to Romans chapter 8. So what does it do for me? That's the thing, right? You say, okay the Holy Spirit's in me. Well we know that it keeps us saved. It keeps you saved, you're sealed by the Holy Spirit. It's the tool, think of it that way. I mean I hate to use analogies because it'll be wrong at some point. But the point is it's the method that God uses to keep you saved. Think about it that way. But also it does many other things for us. Look at Romans 8, look at verse 26. The Bible says likewise the spirit. This isn't your spirit. This is capital S, the Holy Spirit. Also helpeth our infirmities. This means your problems, your imperfections. For we know not what we should pray for as we ought. So it says the spirit helps you, how? And then it starts talking about prayer. It says for we know not what we should pray for, but the spirit itself make an intercession for us with groanings which cannot be uttered. Now that's super interesting. Okay that's super interesting right there. And this is the spirit in you. Think about it this way. The spirit in you is like God's ambassador. It's like God's ambassador for our lack of wisdom so to speak. So we get in a situation, we get in a situation in our lives, we get in a situation at work, we get in a situation with our kids, we get in a situation whatever. I mean we get in trouble in our lives where we need to like go to the Lord in prayer in our lives. Hopefully you don't just go to the Lord in prayer when you're in trouble. But we do get in trouble when we need to beseech the Lord. I mean some of the situations in the church is a perfect example. You know we have situations pop up with our brothers and sisters. We want to just go to the Lord in prayer about these things. But the Bible says the Holy Spirit is there as our ambassador. It's really there to make intercession for us. So if we start, you know, we think we need something. Like I said in our prayer series, it's probably best to pray like Lord your will be done, you know, Lord your will be done in this situation. But the Spirit makes intercession for us. So if you're like you're having problems in your life and maybe you're having problems, you know, with bills or something like that and you're like Lord just please help me win the lottery. And the Spirit's like, Lord that's not what he needs. He puts his hand over your face. He says Lord he doesn't need to win the lottery. He needs to learn what your word says, get better at managing his money according to the Bible, whatever. And the Spirit like literally like goes and translates what we actually need to God for us, to God the Father. All right. So the point is that the Holy Spirit in you is understanding your issues real time. The Holy Spirit in you is going through the issues that you are going through in your life and literally making intercession to the Lord for you. That's pretty valuable, I would say. He's really there doing something. Look at verse 27. Look at verse number 27. And he that searcheth the hearts knoweth what is in the mind of the Spirit because he maketh intercession for the saints according to the will of God. So I mean if I was a perfect person, this is really the answer right here. If I was just a perfect spiritual person every prayer that I had would match the will of God. But it doesn't because I'm not perfect. I'm a man and I'm a sinner and it's the same with you. But the Spirit makes intercession for us according to what God's will is because they're both God. So they know the mind of each other. Turn to Ephesians chapter 4 and you're going to keep your place in Romans chapter 8. Keep your place in Romans chapter 8. So I mean that's just one thing that the Spirit does for us. So it makes intercession to the Lord on our behalf. Look at Ephesians chapter 4. Now the Spirit that's in us can also be, we can also make the Spirit within us upset. I mean have you ever thought about, look we talk about all kinds of sins here. And the thing is some people have private sins and some people have sins that are very public. Sins that are very drunkenness. The Bible says you'll have red eyes and you'll have all kinds of outward problems. But there's a lot of private sins that people have. But look, the Bible says that there's really no private sins because you're sinning in front of the Holy Ghost, the Holy Spirit that is within you. So you should always keep that in mind. But look at Ephesians chapter 4 in verse number 30. The Bible says, and grieve not the Holy Spirit of God, where by what? Where by ye are sealed unto the day of redemption. That is such a great eternal security verse right there too. So that's just a circle that one. Somebody having problems with eternal security, that's another good one. Because here's the thing. Does it say that the Holy Spirit will leave you? Does it say don't stay in sin, don't go back to your old ways or wherever or the Holy Spirit is going to leave you? No, the Holy Spirit is going to be grieved. The Holy Spirit is going to be upset.  So even this person that is grieving the Holy Spirit is still sealed by that Holy Spirit. But look, they're making the Holy Spirit in them upset. Can you imagine? You're in sin and the Holy Spirit is always with you. So that's a grieved Holy Spirit right there. Look at verse 31. Then it kind of gives us some examples.  These are things that will grieve the Holy Spirit. And instead, look at verse 32, and be kind to one another, tenderhearted, forgiving one another, even as God for Christ's sake hath forgiven you. So look, you can grieve the Holy Spirit. The Holy Spirit is in us. It can be grieved if we're in sin and we're doing all these things in verse 31. But go back to Romans chapter 8 now. Go back to Romans chapter 8. So the Holy Spirit, it seals us. It keeps us saved. It keeps us saved. It seals us. The Holy Spirit intercedes to God for us. The Holy Spirit will be grieved if we get into sin. The Holy Spirit will be upset about that. But in context of Acts chapter 13, look at Romans 8 and verse 14. You say, why talk about these four verses? Because of this. Look at Romans 8, 14. For as many are as led by the Spirit of God, they are the sons of God. Who are the sons of God? Lowercase s. The sons of God are anybody who's saved. So what this verse is saying right here, one of the things, probably the most, aside from sealing you, it's hard to say what's more important than it does. But according to Acts chapter 13, the Holy Spirit was leading that situation. What I'm trying to get you to understand is if you're saved tonight, the Holy Spirit leads you. It doesn't say, it says for as many are led by the Spirit of God, they are the sons of God. It says everybody that's saved, the Holy Spirit leads. Now, whether you're following is a whole another situation in itself. But the Bible clearly says that if you are saved, the Holy Spirit is at least trying to lead you. Is at least trying to lead you. So Acts chapter 13 is nothing extraordinary in the Bible. That's just what the Holy Spirit does. The Holy Spirit leads us. You know, the Holy Spirit called Paul and Barnabas to go out and to preach. It called him. Now a lot is made, a lot is made turn to actually 1 Timothy chapter 3. 1 Timothy chapter 3. But the first point is that the Holy Spirit leads you if you're saved. Some people are better followers than others. But the Holy Spirit does lead you if you're saved. Now, let's just look at this idea of him calling Paul and Barnabas. Look, in verse number, let's see, in verse number, he ministered to the Lord and fasted, the Holy Ghost had separate Barnabas and Saul, verse number 2. For the work we're into, I have called them. A lot is made about this call to preach. I've heard some pretty elaborate stories, mostly before I moved to California about this call to preach. Look, I'm telling you tonight, look, it's real. It's real. I think some is more made of it that I think it turns into a fleshly thing.  Maybe I'm not that good of a preacher.  Have you heard stories like this? Just these really dramatic stories about this. Look at 1 Timothy chapter 3 and look at verse number 1. Look at 1 Timothy chapter 3 and verse number 1. The Bible says this is a true staying. If a man is knocked over by a hurricane, you know, he can be a bishop. The Bible just says if a man desires the office of a bishop, he desires a good work. All I'm trying to get you to understand is that that desire, that desire to go into the ministry should come from the Holy Spirit. That is the call to preach. Look at Galatians chapter 5 and you're going to keep your place in Romans chapter 8. Galatians chapter 5 and you're going to keep your place in Galatians chapter 5 as well. Keep your place in Galatians chapter 5. Don't turn away from there. But the Bible says if a man desires the office of a bishop, you know, a bishop is a pastor. He desires a good work. This is just one example of this. This idea of being called to preach, being called to be a pastor, being called to be an evangelist as Paul and Barnabas were. Look at Galatians chapter 5 in verse number 17. That desire should come from the Spirit, the Holy Spirit. Look at what the Bible says in verse 17 of Galatians chapter 5. It says for the flesh, lusteth against the Spirit. See, this is the problem right here though. So the Spirit is trying to lead you. We know that's for a fact. If you're saved, the Holy Spirit in you, it's his job to lead you. But the Bible says the flesh, lusteth against the Spirit. So the Spirit is trying to lead you this way and your flesh is trying to take you this way. Okay, so that's the first thing that we need to understand. So you say, some people, you look at, you're like, how could the Holy Spirit be leading everybody?  It's not that the Spirit's not, you know, trying to lead them or, you know, what, being grieved if you're going the wrong way, that's leadership. Think about that. You know, somebody in your life that loves you, look, if my children do the wrong thing, if one of my children is growing up and they do the wrong thing and I'm grieved against them and I'm, you know, I'm punishing them and they're getting chastised by me, that is leadership. So even the Holy Spirit being grieved against you when your flesh is pulling you in the wrong direction, that's still leadership. The Holy Spirit is still leading you. It's just, you're not following is the problem. We'll get verse 17 and the rest of it. The flesh lusteth against the Spirit. Oh, here it is. And the Spirit against the flesh. So look, the Spirit's not just laying down here, okay? And that these are contrary to one to another. So this is the answer why you'll see some people just like blasting forward in their Christian life and some people not. Some people are just letting the flesh take control and they're deciding to grieve the Holy Spirit in the look at the end of it. So you cannot do the things that you would. So look, the idea of desiring to be desiring the office of a bishop, it should come from the Holy Spirit. It should not come from the flesh is what I'm trying to get you to understand. So look, the desire for the ministry needs to be from the Spirit. Not the urge to be in charge, not the urge to be the boss. The Bible specifically talks about these things. Right here, turn to 1 Peter chapter 5. The Bible specifically says that a pastor or a spiritual leader in men, you think about this for your families because you are the spiritual leader of your family. So all of this applies to you in your home. Look at 1 Peter chapter 5 in verse number 1. You should be spiritually leading your family from the leadership of the Holy Spirit. Not your desire to be in charge of something. Not your fleshly, I want to have my way. That is a fleshly desire, not a spiritual desire. Look at verse number 1 of 1 Peter 5. The Bible says the elders which are among you, I exhort. He's talking about elders, bishops and pastors. Same thing in the Bible. The elders which are among you, I exhort. Who am also an elder and a witness of the sufferings of Christ and also a partaker of the glory that should be revealed. Feed the flock of God which is among you. Taking the oversight thereof. So it says feed them. Feed the flock of God. Take the oversight. What does that mean? That means like watch for them. Not by constraint but willingly. Not for filthy looker but of a ready mind.  It says but willingly. And it says you can't do it for money. It can't be for money but of a ready mind. And then look at verse number three. Neither as being lords over God's heritage but being examples to the flock. Okay and this is where the, you know, the qualifications for a pastor come in and look at it in verse number four. And when the chief shepherd shall appear you shall receive a crown of glory that fadeeth not away. So all a pastor is is the under shepherd until the chief shepherd comes back. But he's not supposed to be lording over God's heritage. This is the guy that just really wants to be the boss so he can just tell people what to do. He's like man I just want to be the boss so bad so I can get my way all the time. I hope that guy never gets to be the boss. And especially, you know, that's a fleshly reason, that's a fleshly desire to want to be a pastor. This is the diatrophies that would just wanted to be in charge so you'd have the preeminence that the Bible says. So you would have, you know, to be able to lording over people. But here's the thing, turn back to 1 Timothy chapter three. And this will prove to you that it would only work being a pastor. You would only be a good pastor if you got that desire from the Holy Spirit. Because look at verse number seven. So this idea of respect, this idea that some people would have, it's usually a younger person that feels this way. You know, like when I get to be the boss or I get to be in charge then people are going to respect me. They'll get that respect. That's not true at all. That's not the case at all because look at 1 Timothy chapter three and look at verse number seven. It must be a desire that comes from the Spirit. Verse number seven, the Bible says moreover, he must have, we're talking about qualifications for a pastor here. He must have a good report of them which are without. This is talking about qualifications before you can be a pastor. The Bible here is saying is that you should already have respect before you are a leader. And if you don't have respect, so going into leadership, just think of it this way, going into leadership to get respect is false because the Bible says a leader will already have respect as one of the qualifications to even get to that leadership position. So look, a pastor and all the pastors that I know, this fits them perfectly. A pastor should have respect. I remember pastor, he meant is just talking about just being a church member at the church that he was at before he became a pastor. And he was at an old IFB church where he didn't necessarily agree with everything but he served faithfully. He was quiet. He was respectful. He got on the program of the pastor and he just, he did everything. He served faithfully. He was at every event and the things that, you know, he didn't agree with, he was quiet about and the things that he did agree with, he just plowed forward on. And he, look, he had a lot of respect for the pastor. He was a respected church member. He was a respected church member. So respect doesn't come with leadership. Respect is a qualification for spiritual leadership. Okay? That's not how you get respect. You should have it already. So a spiritual leader should be led of the Holy Spirit. You think about that, men and your families, a spiritual leader should be led by the Holy Spirit. Not by the Holy Spirit. Not by the Holy Spirit. Not by the Holy Spirit. Not by the Holy Spirit. You should just be led by the Holy Spirit. Not by the desire to be in charge. Not by the desire to lord over God's heritage. None of that. You should just be led by the Holy Spirit. And look, the Holy Spirit will lead you. Go back to Galatians chapter 5. Go back to Galatians chapter 5. Let the Holy Spirit guide you because he will. And I'm telling you, it's a real thing. The Holy Spirit will lead you in your life. Look at Galatians chapter 5 and look at verse number 18. Galatians chapter 5 and verse number 18. Now this is going to match perfectly if you kept your place in Romans chapter 8. This is going to match perfectly with what Romans chapter 8, I believe it was verse 14 said. Look at Galatians 5, 18. It says, but if you be led of the Spirit, you are not under the law. Who's not under the law? Who's not under the law? We're not under the law. Look, if you're not saved, you're under the law. We are not under the law. We are under the blood of Christ. Okay? So the Bible here is just reiterating that we are led of the Spirit if you're saved. Now, verse number 19, now he gets into more detail about how to be good at being led by the Spirit. Look at verse number 19. It says, now the works of the flesh, we already know now that the flesh pulls against the Spirit. The works of the flesh are manifest. That means shown. That means seen. Which are these? Adultery, fornication, uncleanness, lasciviousness, idolatry, witchcraft, hatred, variance, emulations, wrath, strife, seditions, heresies, envoys, murders, drunkenness, revelings, and such like. Of the which I tell you before, as I've told you in the time past, that they which do such things shall not inherit the kingdom of God. But look at verse 22. It says, but the fruit of the Spirit is love, joy, peace, long suffering, gentleness, goodness, faith, meekness, temperance, against such, there is no law. Now look, the Bible is saying the fruit of the Spirit. So he starts talking about, he's like, here's the works of the flesh right here. It says, here's the fruit of the Spirit. So you say, how do I know if I'm letting the Holy Spirit lead me? Well, do you have the fruit of the Spirit? Do you have joy, love, peace, long suffering, gentleness? I mean, is this how, I mean, is this how you are leading your families? Is this how you are, you are leading? Is this, because this is what will come if you're being led by the Spirit. All those other things will come if you're being led by the flesh. Meekness, temperance, I just like how like, there's this idea that we should just be patient with people. This idea that we should be long suffering with people is just kind of repeated. We should be gentle with people. We should be meek and temperate towards people. Against such there's no law. Look at verse 24. And it says, and they that are Christ have crucified the flesh with the affections and lusts. If we live in the Spirit, now verse 25, if I was going to circle any verse in this whole thing, I should be verse number 25. Verse number 25 is the key right here. It says, if we live in the Spirit, you know what that means? If you're saved, you live in the Spirit. If you are saved, you live in the Spirit. The Spirit lives in you.  So he's saying, if you're living in the Spirit, i.e. you're saved, then look, what does he say next? You know, walk in the Spirit. He's saying, look, if the Holy Spirit is in you, this is what he's saying in verse 25, if the Holy Spirit is in you and he's trying to lead you, he's like, just follow him. Just walk in the Spirit. Follow what he's going to be doing. And then look, look what it says in verse 26. Remember all those things I told you about leadership and if you desire to be a pastor so you can be in charge of people or so people will listen to you or whatever. I mean, he's saying, let us not be desirous of Vainglory, provoking one another and being one another. Boy, is that just, that is somebody right there who is being led by the flesh who's getting desires by the flesh right there in verse number 26. But verse 25, he says, you're in the Spirit. The Spirit is in you. Your body's a temple, the Holy Spirit. You have to walk in the Spirit though. That's why he says all the time in Romans, you should do these things. Just let us also walk in the Spirit. Walk in it. Let him lead. Let the Holy Spirit, it's there. It's a tool. I mean, why would you not use it? You know, why would you not follow that leadership? Here's my last point. Turn to Luke chapter 2. Turn to Luke chapter 2. So, all that to say this, Acts chapter 13 is nothing new. You could experience Acts chapter 13. You could have the Holy, look, the Holy Spirit wants to lead you in the right direction. The Holy Spirit wants to lead you. You just have to walk in the Spirit. Which means you have to deny the part that wants to walk the other way, which is the flesh. Okay? But the whole, it's a real thing, folks. It's a real thing. The Holy Spirit literally wants to lead you. It's literally leading you. Just follow him. Walk with him. But look at Luke chapter 14. Here's my last point right here. As the Holy Spirit leads you, you say I'm in. You say I'm in. I'm shutting down the flesh. I'm shutting down the flesh. And I'm going to let the Holy Spirit lead me. And it's going to be great. Well, let me give a couple of disclaimers here. Look at Luke chapter 4 and verse number 1. Because guess what? Guess what? Jesus was led by the Spirit too. Jesus was led by the Spirit too. And Jesus, look at verse number 1 of Luke chapter 4. And Jesus, being full of the Holy Ghost, returned from Jordan. And guess what? He was led by the Spirit into the wilderness. So Jesus was led by the Spirit. And guess what? Jesus, of course he followed because Jesus was perfect. And he never, you know, went with the flesh. Jesus had the flesh. But unlike us, he never went against the Spirit. So he went with the Spirit into the wilderness. And there was a Ferris wheel there. And it was fun. And there was all kinds of people there that were just wanted to worship him and just like, just pour all kinds of praise on him and everybody respected him. That's not what happened. He followed the Spirit and look at verse number 2. It says, being 40 days tempted of the devil. And in those days he did eat nothing. And when they were ended he afterward hungered. You think? I mean 40 days he didn't eat anything. So 40 days he's in the desert and he's, look, this is part of what he had to fulfill. I get it. But the point is the Spirit led him to this. The Spirit led him to this. This is what God wanted from him. And he did this. He's in the wilderness. He's being tempted of the devil while he's fasting. He's not eating anything for 40 days.  It was a miserable 40 days. It was a miserable 40 days. But he was led by the Spirit there. So all that to say this, the Holy Spirit will lead us to the will of God. The Holy Spirit turned to Luke chapter 2, just a couple of chapters back. The Holy Spirit will lead us to the will of God. It doesn't say that the Holy Spirit will always lead us to great times. You know, maybe you want to go on some great day, but following the Spirit is going to require you to serve the Lord with your life, not serve your flesh with your life. And look, that may lead to temptation. That may lead temptation meaning tribulation. That may lead to persecution. That may lead to hard times in your life. To the point where you're like, why am I listening to this Holy Spirit? The reason you're listening to the Holy Spirit is what we talked about already and God's will are the same. So you just have to remember that. If you're denying the flesh and following the Spirit, even if it doesn't seem like the greatest thing for you at that moment, as long as it's the will of God, that's the important thing. Jesus was led into this terrible situation in the wilderness by the Holy Spirit, but that was God's will. And that to Jesus was all that mattered. Look at Luke chapter 2 and verse 26. Let me this is Simeon. Let me look at turn there myself if I don't have it written down. Luke chapter 2 and verse number 26. So here's another situation of someone being led by the Holy Spirit in verse number 26. And behold there was a 25. Behold there was a man in Jerusalem. His name was Simeon. And the same man was just and devout waiting for the constellation of Israel and the Holy Ghost was upon him. And it was revealed that he was the Messiah and it was revealed unto him by the Holy Ghost that he should not see death before he had seen the Lord's Christ. That's a pretty good promise.  I mean just that's amazing. The Messiah hasn't shown up yet according to this guy and he came by the Spirit. Look at what God did in the child Jesus to do for him after the custom of the law. Then took he up in his arms and blessed God. So my point is this, this guy was led by the Spirit too. So the Holy Spirit is going to lead us to the will of God. The Holy Spirit is going to lead us to great things for the kingdom of God. But we have to remember that that may not be interpreted by us as always being a great thing at that moment trying to get you to understand. Okay? As Jesus and Simeon demonstrate. But look you just got to have faith that you just got to decide I want to do the will of God in my life and then the Holy Spirit will just lead you to that. Look all I want to say before I end the sermon tonight is like look folks this is a real thing. This is a real thing. This is how I found myself in the ministry. You know a lot of people will look at my life and say you are really busy I don't know how you handle it I handle it one thing at a time when we moved to California I had zero thought of being a pastor I was just like one thing at a time what's the problem in front of me the problem in front of me is I don't have a church to go to my family doesn't have a church I need to be raising my kids in a proper church so we moved to Verity Baptist Church that was something as I possibly can in this church I helped the pastor I helped the ushers I helped whoever I can wherever I can that was problem number two I learned how to soul wind I become a soul winner and I'm going to try to get as many people and my kids to be soul winners look it was just one thing after another after another pretty soon I was just you know kind of praying we got doing the right things and things were on cruise control and that's where that desire came from and look that was not something I took lightly I prayed about it for months because quite frankly I didn't need I didn't need to be in charge of people that wasn't something I needed to be in my life I didn't need respect I had respect for my friends and my church members and everything I had that they respected me I respected them it's just I prayed to God like God if this is that's what happened to me no hurricane hit me and threw me across a room anywhere I'm sorry if it's not that fantastic of a story but I just prayed to the Lord and just let the Holy Spirit guide me it's really that simple and the Holy Spirit I'm just trying to tell you tonight that I used to be the kind of person 10 years ago that thought when people would speak like well the Lord just led me and the Holy Spirit just led me I wasn't even saved at the time but I'd kind of when you start denying the flesh and you start actually you know doing the things that the Holy Spirit wants you to do you will see God moving in your life and you will see the leadership of the Holy Spirit and I hope you all experience that I hope you all are experiencing that now because look it is that's why I took some time for the first four verses of Acts 13 because it is a very real thing the Holy Spirit is really there he's really sealing you he's really interceding for you and maybe you don't see those intercessions or hear what he's saying to God but I'm telling you you will if you can stop walking after the flesh in your life you will you will experience his leadership in your life and I pray that for everybody in this church everybody that here's a sermon like this it would be a shame for a Christian to have this this great thing inside them and not use it in their life because really I mean what are we here for you know what are we here for we're here for the kingdom of God just and we have someone inside us that is going to show us how this person that person that person can best accomplish the most for God's kingdom use it use the Holy Spirit he leads us and that's what we see in Acts chapter 13 he's leading Paul and he's leading Barnabas let's bow our heads and have a word of prayer


We're going to talk about core data in Ruby Motion. My name is Lori Olson. I'm a freelance software developer, trainer, and mentor. I'm from Canada. I just moved to actually, I used to live in Calgary, and I moved out of Calgary because I work remotely most of the time now, so I don't need to live in a big city anymore. I would like to quickly thank my current client though for kindly letting me sneak away for a week to attend this conference. Kudos, they do employee engagement and reward systems, so. I'm a developer, mostly Ruby, mostly Rails. I do my Ruby Motion stuff on the side for personal projects mostly. I did a little bit of JRuby. I've done a lot of JavaScript, jQuery, a lot of mapping and charting systems, and I've implemented JavaScript testing in far too many development teams that should already have been doing it. I also teach a couple of workshops. Ruby on Rails for real developers, which is focused on developers like Java developers or .NET developers, they're already familiar with the basics, but just need to get up to speed on Ruby on Rails. I also teach Rails for iOS developers class, which you guys probably don't need, but the stock Objective-C guys don't know anything about Ruby or Rails, so it's a handy course for them. I also volunteer with an organization in Canada called Ladies Learning Code, and I actually teach their Ruby introductory course to women who want to learn how to be developers. I also speak at far too many conferences, and I got to cut it down because it takes up too much time. So anyway, we'll start off with, this is a bit of a story. I wanted to actually learn Ruby Motion. When I set out here, I had tried and failed to get going on iOS development using Objective-C, just because I really hated Objective-C. I found it difficult, and every time I switch back to working on my Rails projects, switching back over to iOS and Objective-C just was painful, and I hated it, so I never actually finished any projects. So I always try and pick something I'm already familiar with when I'm trying to learn a new technology, just so I'm not trying to do too many new things at once. So I wanted to take an existing mobile web application that I had previously written and redo it as an iOS application. This particular application is called Welles in my Backyard. I'll just give you a brief overview so you understand the problems involved.  I thought at the time this story broke that that was absolutely appalling that you could have a well in your backyard and not know it. And since I actually was working for a company that had all of the oil and gas data there is in Canada, I thought, I can do something about that. And operating under the assumption that it's easier to get forgiveness than permission, I just extracted out all the abandoned well data and used it for my application. So there's a few challenges for this particular application. It's lots of data, and it needs to display on a map because otherwise people won't sort of understand location data. I also need to display this data in a list. And I need to do filtering by location so that people can see overviews or specific, you know, their backyard or their community, stuff like that. And I figured how hard could this be as an iOS application? I'd already done this as a Rails app, sure. So this was a screenshot from my data export of the abandoned wells. There were, I don't know if you can read that, there were 244,292 abandoned wells in Canada. That's just down from the over 750,000 oil and gas wells there actually are in the country.  I can use a gem. And I'll be able to load up all this data. There was Nitron, which seemed to be abandoned code. There was motion data wrapper. There's motion model, motion migrate, magic record. There's actually too many more to list. There were so many gems. And I kind of went through them all. Okay, that's the subject of another whole talk, is the amount of time I wasted going through them all. But the problems that I ran into were that the gems and DSLs that people have written hide a lot of what's going on in core data, behind a lot of magic and obfuscation. And the straight up iOS Objective C development relies a lot too much on the Xcode magic. And it turns out that when you have complex data, it's just complex. And large data is large. And sometimes these solutions, cookie cutter solutions that the gems provide just aren't good enough. And it turned out in my case, I couldn't actually get any of the gems to do what I wanted them to do. So sometimes you need to step back from all the gems and just figure out what the most base level APIs are that you can use and figure out how to use them. Now it turns out Ray Wenderlich has an awesome set of tutorials on core data. But this is of course all in Objective C code. So I went there and just started reading it. You know, my hate of Objective C aside, this stuff actually was fairly decent and I learned a lot from it. And it turns out that once you actually start going through these examples and you go to the Apple documentation about core data, it's not really as scary as it looks if you just sit down and read it. It's actually pretty straightforward and not rocket science. So the problems I was trying to solve are creating my models, entities in code, not in Xcode with its magic modeling tool. I also needed to define relationships between those models in code. I needed to load up that data to 144,000 wells and because it's so much data, I needed to do some work around optimizing it. So models in code. There is a sample for that. If you look in the RubyMotion samples, there is a sample app called Locations and it is a core data app. So if you haven't looked at it and you didn't know that, you should go and look at it. It follows the MVCS pattern, so model view controller store pattern. So I know Colin will be happy about that whole store thing. But I think it was the big nerd ranch guys that came up with that pattern and it's quite useful. So let's just go through it. This is the location model. That's a bit of a wall of code, so let's just break it down into its component parts. First we define an entity in code. And it's just defining in any description, giving it a name and telling it what class is its managed object class. It's pretty straightforward. The next step in there is defining its properties, its attributes. And in this case, there's a little bit of Ruby magic going on here, but we're taking pairs of attribute names and types and throwing them into a loop and creating our NS attribute descriptions. Using those, defining a property name, defining the attribute type. And in this case, we're just hard coding that these properties are optional. You could pass in a third parameter here and choose whether or not these things are optional or not. So we've now defined all our entity properties. It's not too bad. Then we need to actually set up all the stuff that... And this is something that you need to do in Objective C, by the way. Set up all the stuff that your iOS application needs to use a core data store. So this is in our location store file. And we'll break it down because it's not really as difficult as it looks. First we need to set up a managed object model and tell the model about our entities. So in this case, we have an array of one entity. There's only one, the location model. And then we need to set up a persistent store coordinator. And that needs to be initialized using the managed object model that we already just created. In this case, we're going to use a file in a directory that is writable because this application needs to write to it. So the URL is going to be in our Documents path and a file name is going to be called locations.sqlite. And then we get the store to add a persistent store of type sqlite. So again, this is a fairly straightforward process here. It's just step-by-step managed object model, persistent store coordinator, managed object context. That's the third piece. And again, this is not difficult code. It's just creating the managed object context and telling it about the persistent store coordinator. And that was easy because that's all there is to using core data in the location data. So if you guys bring that app up and look at it and create locations, you will be using core data and creating core data objects. But unfortunately, it turns out that's a little too easy because that's where I came to a grinding halt in my little story trying to get things going with core data because I didn't have one model, I had two models. Two models with relationships between them. And there's reasons for that. When you are displaying things like on a map, you need stuff like information, textual description for something that's going to be on the map, and you need location coordinates. That's pretty much all you need. But when you want to display, say, the details about those things that are on the map, then you need a lot more information and you probably don't need the location at that point because you already saw where it was on the map. So in this case, I had two different models and I wanted them joined together in a relationship. And that's where that whole thing breaks down because when you set up the entity and define its properties, you need a reference to another entity to define a relationship. So you're creating an entity, so you're creating your first entity, and then you go to define the relationship to the second entity, but you don't have that object yet. It hasn't been created yet. So how do you do it? Yes, it is the classic chicken and egg problem. You can't set up one without the other. But there is a solution. Defining relationships in code doesn't have to be difficult. I know in the Xcode data modeler, you just wire everything up with pictures and it's all pretty and nice and it just works. But you can actually do this in code and it's not that difficult because what you do is you define your entities first, define all the entities first. Don't try to define the properties yet. And an entity's properties are actually a combination of its attributes and relationships. So you define those lazily. Later, after all the entities have already been defined. So again, we'll go back now to locations, which I'm starting to modify now into something a little bit more like Ray Wendellic's example, which is his failed bank scenario. He has failed bank info object and failed bank details object. These are two objects and there's a relationship between them. That was pretty much exactly what I wanted to do, so I figured I'd stick with this as an example. So if we just define the entity, I was able to clean things up quite a bit and now we just have an entity being created, a name for it and I'm just giving it the class name and the manage object class name is just the class name and wait a minute, this code looks like you could put it anywhere because it doesn't have to be in my model because there's nothing real specific except for the name. So this is something that you could start abstracting it into a super class. This is probably where most of the core data gems start on stuff like this. I didn't bother, my example just leaves it like this and all of my models have this in it, but be smart and don't duplicate code. So our next step is back in our store class, which now is looking like a bank store, not a location store anymore. We're now creating a manage object model. We are setting up its entities, which is just taking those two classes and calling entity on them. So that gives me my entities and now that all the entities have been defined, I can go and define properties on them. So for each entity, we're going to set up the entity properties. So this is my set entity properties and this is just the first part of it where we are going to set up the attributes. And we're pulling out the manage object class just so that we can access its class level variables like attributes and relationships, which are defined in the class as well. We'll get there. So for the manage object class attributes, it's going to return an array of attributes and for each of them, I'm just going to define a new attribute. And it's got a name, a type, a default value and whether or not it's optional. If we look at, go back to my model class, this is the attributes class level method and it's just an array of these hashes with name, type, default and optional. This is pretty straightforward Ruby programming. This would be really, really ugly to do in Objective C, by the way. Okay, back into our property setup. Now we're going to do the relationships and same as the attributes, there's a class level method called relationships that's going to return an array, well in this case it's an array of one, but it's going to return an array and we're going to define an NS relationship description. And I know it looks like a lot of stuff, but it's all very straightforward. We define the name for the relationship and then we get the destination entity, which we have. We have this entities by name thing here from the managed object model. So it just gave me an array of all the entities by name there. So I can use that to look up all of the entities. So I can just pull out destination entity there and similarly I can define the inverse relationship because you should always do that guys. Even though if you don't think you're going to use it, just do it, it's a good idea. And it gives some hints to core data for doing queries and stuff. And again we have optional property, transient, whether or not it should be indexed, whether or not it should be ordered. The min count and max count is the arity, so is it zero to many, one to one, one to many, zero to many, whatever. That's what your min count and max count give you. And then the delete rule, which basically says, if I'm going to delete my object, what should I do with this thing that's attached to me? So I've given defaults, so you don't actually, in this case, have to define all these things if you don't want to in your little hash that's going to define these relationships. But you do need the name, the destination entity, and the inverse relationship. So this is back to our model again where I've defined this one single relationship in an array. So this is our failed bank info object, and we have a relationship to the details object. And the destination is the failed bank details class. And the inverse on that class pointing back to us is going to be called info. It's optional, transient, false, indexed, false, true, and this is going to be a one-to-one relationship because we're always going to have a detail for every info. And we want it cascade deleteable. So if I delete my info record, the details record will also be deleted. And the last line is setting up our entities properties, which is simply the attributes and the relationships. They're both arrays. We just add them together, throw them in, and we're done. This is just sort of more of the same back on the details record. I'm not going to break it down, but we have attributes for it, and we have the relationship back to the info record. There's nothing different here from what you've already seen. So that is all you need in code to define models and to define relationships between models using core data. So with this, you can define pretty much any kind of model relationship that you want to, and you can do it all in code, and you don't have to use XCode's data modeler to do it. I don't actually think this is that complex, so you ought to be able to do it without using XCode. My next step was that data learning problem. So I want to get all my well loaded up into my data store. So once again, I go back to raise wonderful tutorials because they are wonderful, but of course, all of his stuff is object-to-see, so I had to massage and translate it into movie motion code.  We'll break it down step by step. Again, this is pretty much a direct translation of Ray's example, so we're using his file, which is the banks.json file, and I just threw that into my resources directory, so we can pull that out. I'm using bubble wrap here, because it has some nice JSON parsing built in, so we just parse that file, and it throws it into a banks array. So next step, we have a banks array, but I want to put all this stuff into coordinates. So I get my singleton from the failed bank store class. That's something from the location example. Go and look at the location example for singleton. And I call add bank. This is just the direct translation of the add location that used to be there, but now we have two entities that we're going to be creating. The info and the details entity. And we're just going to populate them with stuff that came in from the JSON file. So in this case, it was the bank's name, city and state. We're going to do the update date as today's date, because I'm reading it in, so why not. The close date, that's a really nice little function date with natural language string that just translates dates for you from strings. And the zip code. So all of these are populating the two different objects, the info object and the details object, and then we simply assign the details object to the details relationship on the info object. But wait, what did that add bank method actually do? All it does is it yields to the caller. It's expecting a block, yields to the caller, two newly created entities. So we're creating an info object, any details object here, and passing them into that block. And after that block, they're all properly populated. It comes back here, and it calls save, which saves the data into the store. So again, that was pretty easy. I thought it was pretty easy. The bank's JSON file is a nice small file. So, yeah, so a small file is great when you're doing something like this, read in the whole file. Like seriously, how many wells am I reading in? I have a file that has 244,292 wells in it. That ain't gonna fly. So we're not gonna read in the whole file because that's a problem. That's a fairly serious problem. It's just gonna blow up when it tries to read that in because there's no memory. And this, by the way, is a problem, too. So we had this add bank, and we iterated through this array of banks. And I was just like, create a bank, save it to the database. Create a bank, save it to the database. Create a bank. Okay, if you're familiar with doing data loads, this isn't a very efficient model. You don't want to do a save for every add. What you should do is save that up, but you don't want to save it all once for the end because once again, 244,000. You're gonna run out of memory again. So that won't work either. So what we really wanna do is batch it. So you wanna get some sort of reasonable number of objects created and then save it as a batch and then do another reasonable number of objects created and then save those. Which seemed like an awesome idea, but I still wound up running out of memory when I tried to run this in the simulator or on my phone. I was getting really frustrated, but hey, Ray figured this out too. He actually had a really convoluted way of doing this in his tutorial, and then he went back and ripped that out and changed it over into something that actually works well in RubyMotion too because you can just use an OS X app and use all the same stuff because the core data classes operate exactly the same way on OS X. So I just created an OS X app using RubyMotion, copied all my models in, and I did it that way. So we have a new and improved load. We'll break it down again. This time I don't actually have a JSON file. I have a CSV file because I was exporting it out and that was what my database export gave me, and we're going to actually keep a count of the load because if you aren't doing this and you're doing a large load and it fails in the middle, you don't know where it went or how long it took before it failed. I also hacked up a version of faster CSV to work. I understand somebody else actually did a proper version of this, but if you look at my source code, this is a hacked up version of faster CSV that I'm using. And it streams the file. It's just reading parts of it at a time so you don't load the whole thing into memory. So one line at a time out of the CSV file. Now instead of calling add bank, we're calling create bank. Guess what the difference is? It doesn't save every time. So and now I'm using my real data, but I'm just going to stick with the failed bank thing, so I'm just stuffing values in wherever the types match up so I can see that it works. The next step is, okay, so we created a bank, no, a well, so we increment our load count and now for every 100, I want to save. So that seemed like a reasonable number. Every 100 I'm going to save to the database. And just because watching it run and run and run and not knowing where you are was really boring for me. I started printing out a dot for every time that it was doing a save. For 244,000, that's a lot of dots, so every 1,000 I printed out a star, so it actually gave me a nice indication of progress here. So saves every 100, progress at every 100 and every 1,000, there's a different progress indicator. That's a nice thing, and when it's running for 20 or 30 minutes, it's nice to watch.  So I finally had all of my wells loaded, and then my table of each hope because it couldn't display 244,000 items. So optimization. Hey, ready to the rescue again? He has a NSFetchedResultsController example. So we did NSFetchedResultsController because it gives us benefits, and it's made to work with core data. This is one of the reasons why I actually chose core data is because I had so much data and I knew I would eventually need to use an NSFetchedResultsController. It basically just avoids the problem of loading all that data at once. This is literally a direct translation from the objective C, so it's a little ugly, and again, some of those gems out there help you with that ugliness. Much greater fetched results controller. All you need to do is create a fetch request, tell it what entity you're working with, give it a sort descriptor, and give that fetch request to your newly created NSFetchedResultsController. Done. You do need now to use this in your TableViewController. So in my ViewDidLoad, I create the fetchedResultsController, and I set its delegate to myself, which is the TableViewController, and at the ViewDidUnload, I get rid of that so I don't have a memory leak. Yeah, so there's a couple... Again, this is the... Guys, use Promotion, really, but PromotionGuys, how do I use NSFetchedResultsController with it? Okay. Yeah, so breaking that down, there's at least three things you need to do here. You need to implement your TableView number of rows in section, and you just get that from your fetch controller. You need to have your TableViewCelferRowItIndexPath, and in this case, I have a subsidiary method here to actually set up the cell, which is, again, just getting the object from the fetch controller, and now I have my entity, which is my bank slash well. I use the name, city, state, boom. I've configured my TableViewController to use NSFetchedResults. There's one more gotcha. There's the delegate. The NSFetchedResultsControllerDelegate. Remember I set delegate to cell? That's because I have this included module. This is... I don't like this slide. This is big, scary wall of text, because you guys will just copy this, because that's what Ray said. He just copied his out of the Apple documentation. So that's what I did. I copied Ray's, and I translated it all into RubyMotion, and I recommend that's all you ever do is copy this stuff around. Unless, of course, you're doing something tricky with editing, you may have to change, like, one or two lines in here. So that was pretty much the end, and I got my app to work, and I got all my data to load, and it came up in a TableView, and it came up in a map, and I really wish I had time to do a demo, but I'm already running overtime. So we created models in code, we created relationships in code, we preloaded a lot of data, and we now know how to efficiently display it. So that's the basics of core data, and you can do it all in code, and it's pretty straightforward, step by step by step. There's also lots of great gems out there, so look at them, but now you know how it all works under the covers. So if you ran into problems like I did, you'll know enough to go in and make changes that I didn't know how to do at the time. So this is my dog, Finnegan. He thinks you should all use core data now, okay? So I did actually find myself with enough material to write a book, so I started writing a book. It's not quite finished, it's almost finished, it's about 80% done. It's up, and you can go to coredaydayinmotion.com. So does anybody have any questions?


Hello, good morning. Happy Saturday. I'm currently getting ready to go to the salon. I have four clients today. My first two are getting haircuts, third one is getting highlights and a haircut and then the fourth one is getting a conditioning treatment and a haircut. So keep your fingers crossed for me that none of them have a lot of super thick hair. I had a client like that the other day that had super thick heavy hair and she was also super tall. So the whole time I'm like this, like up on my tippy toes. Needless to say my shoulders were super sore afterwards. Anyway, I am going to finish getting ready. I'm just doing some quick light makeup. I'm just gonna leave with my hair wet because it's raining today and it's supposed to rain all weekend. So I feel like there's no point in trying to style my hair and it's highlights are currently processing and I am sitting down in the break room, color room. I'm having another coffee because I just need to sit for a second. She's on the phone with someone anyway, but we're the only people in the salon right now. One of the nail techs came in this morning and the massage therapist had a few clients in the morning, but they're all done now and I told the receptionist she didn't have to wait around. So she went home. So yeah, it's literally just me and my client now.  It was a lot and very heavy and literally what I said this morning that I was hoping, I wouldn't have to do is exactly what I ended up having to do, but they were so sweet. I really, really loved both of them. They were great, but my shoulders are feeling it and this client kind of has a lot of hair too. Her timer just went off. I'm gonna go check her foils and hopefully fly through the rest of this day. Also had a lot of hair. I just need to sit for a moment. It is three minutes to five. I actually ended up finishing right on schedule, but then I had to clean up and then I was filming some Instagram reels. Got to take advantage of being the only person in the salon and having like that setting to work with.  So I'm gonna order delivery. Happy Sunday. I am about to get ready to go to the gym and all I really have on the agenda for today after my workout is just finish like straightening up around my apartment. I don't really have to do much because I did like a full deep clean a few days ago and then I have a sponsored video that I have to edit and submit and then I would love to blow dry my hair tonight because it is just a crazy mess right now and I've been wearing it curly a lot lately. I always like to change it up. It's nice to just wear it smooth because I feel like when it's curly it gets really crazy and it gets tangled more easily. It's definitely easier and more manageable when I blow it out. What's my boy? Right first up, orchestra. 1990s Emmy awards and famous name overlaps. I have just been on my laptop editing the entire morning so I had to stop and take a little bit of a break because I didn't eat anything yet. The weather is still pretty cloudy and crappy looking but I don't think it's supposed to rain anymore. I definitely want to do something because I feel like the last few days it's just been raining non-stop so I've just been stuck inside working. I really just want to enjoy the day and you know do my hair, put a little makeup on, go out into the world. I will update you and let you know what I end up doing. This lighting is awful. I ended up going to Target because they were having a really good sale this weekend on clothes and shoes and a bunch of other stuff and I had a coupon that was going to expire today.  I'm going to make lentils soup for dinner either tonight or tomorrow. I needed some more paper plates. I got the Fabrice Small Spaces air freshener. I love these four in the car because I feel like just regular car air fresheners are not strong enough. I really like these though and they are so strong so I got one to keep in my car and then this one I'm going to put in my closet and it's the ocean scent. Smells really good. Then I got a bottle of Prosecco. I'm going to pop that open in a minute. Let me put it in the fridge actually. Got some tampon, more deodorant. The native lavender and rose scent is so good. I also love the, I think it's coconut and vanilla but I don't know. I love rose scented anything so got that. Speaking of which, rose scented hand soap. Then I got these popcorners chips. This is so good. Spicy queso flavor. So good.  I love these. They're energy drinks. I think it's like a more natural kind of energy and there's no sugar but I don't like the taste of most energy drinks. These actually are really really good and they don't make me feel like jittery. I don't crash afterwards so I don't drink them all the time but I do like to keep some in my fridge just to have in case if I really need one like before work or if I need like a pre-workout or something. The Kiwi Guava flavor is my favorite and then I also got wild berry and then the last bag is the most exciting. All of their clothes and shoes were 20% off so I've got this pair of overall shorts. They were on sale for like $20, $25 something like that and then I saw this dress in the clearance section. It was on sale for $7.50. Isn't it so pretty and it's like a really stretchy soft comfy material and then I have been also wanting some more flat sandals that are easy to throw on comfortable no heel but also cute because I have like my pillow slides and those kinds of sandals but if I'm wearing like a cute outfit and I want something like a little bit more dressy I didn't really have an option since everything was on sale. I figured anyways we'll take advantage so I saw these super cute and then I also got this plain pair which I had these exact ones in the nude color a few years ago and then I spilled color on them at the salon and I could not get the stain out so I had to get rid of them but yeah nice and simple really comfy soft material. I'm gonna be more careful with those to not ruin them. That's everything I got at Target. Let me try on these clothes. So cute. Usually I like to wear overalls with just the one strap but here's how it looks with the two straps and I like that the metal on it is gold because I always wear gold jewelry so very cute. Here's the dress so cute and here's the sandals. These are so comfy. I love them and there's the second pair and these feel really comfortable as well. So exciting. What do you think? You like my new shoes? Are they cute? You like them? Of course now the sun comes out just in time for it to set. Yeah it's almost eight o'clock. I made lentil soup. That is almost done. Oh I'm so excited. It smells so good. It's very easy. This is something that my mom and grandma have made like forever my whole life. I literally just take dry lentils, celery, tomato and minced garlic, add some water, let it simmer for like an hour or two and then I threw in some mini shells pasta and in the past I've also added carrots and spinach to it so you could always like add some extra vegetables, onion, whatever you want to do. So yummy. So I'm going to eat this and watch the new episode of Yellow Jackets and that's going to be it for my night. Hello good morning. It's Thursday June 1st. Happy first day of Pride month. I did not vlog anything the past two days because there was just not really much going on. Tuesday the first half of the day I edited and just did computer work and then the second half of the day I worked front desk at the salon and then yesterday I had the day off and I fully enjoyed the time off. I just stayed home and did nothing. I worked out. That was literally the only like productive thing I did all day yesterday but today I have a little bit more going on and I'm just like in a really good mood so that's always good but I am going back to the med spa I guess is what it's called where I go for like my Botox and whatnot. If you guys saw my last vlog I'm working on dissolving the filler in my top lip and I want to like redo it. She did say that because I had a lot and I had been doing it for a long time there was a lot like built up. I might have to do a second round of dissolving so she said I could come in for a touch up and then while I'm out I wanted to stop at Ulta and then I have a client coming into the salon for highlights. I think she's just getting her highlights touched up so it should be fairly quick and easy. Just got a little bit more dissolved. She has to inject like an actual fluid so you don't notice a difference right away. It actually looks a little bit fuller when she first puts it in and then over the next 24 hours or so it will dissolve it a little bit more. That works. I'm trying to find a good spot to put my phone. Now that I have this new car I'm like I don't know where I can rest my phone and like what's a good spot for vlogging. Let me show you what I got at Ulta. I wanted to get a new foundation because at the moment I only have one that is the right shade for me and it's almost empty so I was kind of looking around and I remembered Maybelline Fit Me Matt & Poor List used to be my jam years ago. The stuff like the finish of it was amazing and I feel like the wear on it was pretty good from what I remember. So I got another one. We will see if I like this as much as I remember and if it's a good shade match it's in the shade 245 Classic Beige. And then I got another concealer. I've been using the Nars Radiant Creamy Concealer. And I love that concealer but the shade that I have it in right now is not like super brightening. It's not like that much lighter than my foundation. So I wanted to get something that was going to be like extra bright. I remember seeing Carly Bybal use this in a video. This is the Revolution IRL Filter Finished Soft Matte Concealer. And then I needed a new brow gel and I wanted to get a lighter shade because right now I have a clear brow gel and then I also have a super dark brown one. And I wanted to get a lighter brown so this is in the shade Soft Brown. Then I got a new lip product. This is the NYX Shine Loud Magic Marker. I swatched a few shades of it here but it goes on matte and it stays on. It's supposed to be if you're with the sign said like 24-hour wear or something like that. And then it comes with a clear gloss that you put on top to make it shiny and it's just basically a long wear like lip stain. And then lastly I got some lash glue because I stopped getting my lash extensions and I have some strip lashes and like individuals and stuff but I don't have any lash glue. So wanted to get that just in case I decided to put on some falsies one night. So yeah I'm definitely gonna have to try all of those products out later in this vlog. We'll do that either tomorrow or Saturday. But anyway I am going to head to the salon. Maybe stop and get Starbucks first on my way and I will try to get some clips of my client. Feels good to be home. I stopped at Trader Joe's on my way home. So let's do a quick haul. We got some pita bread, some slice Italian bread, protein, peanut butter bars, chocolate croissants. I'm about to have one of these right now. I'm so excited. Grape tomatoes, strawberry basil, vinaigrette.  I haven't really bought like frozen stuff in a while and I don't know it's nice to just keep stuff like that in the freezer if I don't really have the time or don't feel like cooking so yeah.  Oh and then I got these hydrangeas. I'm gonna throw on the Vanderpump Rules reunion part two. I'm so excited. I have been looking forward to this all week. I am so extra exhausted. My whole body is so sore from working out because I was just feeling good this week so I was like really going hard in the gym and just like up to my intensity on all of my exercises and that's probably why I feel so tired because my body is trying to recover. Anyway hi good morning. It's Friday. I'm getting ready to go open the salon working front desk. Then I am gonna probably just come straight home and rest. Go to bed early so that way hopefully I will feel better tomorrow. I'm gonna try the new brow gel in the lighter color. Here's the brow gel. It's not really that much different than what they normally look like. Here's my outfit for today. I'm wearing a bodysuit from Zara. These jeans are Abercrombie, the new Target sandals and then this thing I have literally had since college so it is at least 10 years old at this point and the tag says it's from this website called Choe's Choice. Comment down below and let me know if you guys remember that website. I don't even know if it exists anymore. I haven't heard anything about it but it was like one of those like fast fashion you know kind of websites kind of like she in. Sorry I can't share a link to it but maybe I can find something similar. I mean it's basically just like a blazer without sleeves. So blazer vest? I don't know. I swear every Saturday I wake up and I think oh I don't have my first client till 10 so I don't have to rush and start getting ready right away. I can make some coffee and just sit and relax for a minute and no I don't know why I always do that.  I had one of my co-workers wash my hair for me at the salon yesterday which was so nice and then I just blew it out really quick when I got home but it did air dry a good amount by then so I have some like weird looking pieces so I'm just gonna go over that with my flat iron to smooth it out and this I every time I use it in a vlog I always get asked this is the Dyson Corral cordless flat iron and I do really like this. I wish that it held a charge longer that's my only complaint about it but otherwise I like that it's cordless. It doesn't create as much heat damage. I've had it for a few years now and it's the only flat iron that I use on my hair anymore. I really want to try this new makeup so I put on a little sunscreen and the say Star Glow Glowy Super Gel adds like a nice glow kind of works like a little bit of a primer as well and now I'm gonna apply the Fit Me foundation. Oh I really hope this is a good color match. I feel like you can't even really see it. Oh yeah that looks really good right? I feel like that's a perfect undertone. Now I'm gonna put on the IRL concealer. I really like the applicator on this. It's very large and it's like curved. Oh it blends out really nicely. Sorry I know this is not good lighting or the best angle to really see everything but you know this is just real life. Just trying to get ready for work really quick. I don't really feel like that gave the best coverage. You can see that so I'm putting a little bit of the Nars on top just right there just a little dot. I'm gonna set the under eyes and my lids with the Cosas tree. What is this? The cloud set powder and I'm gonna put some Charlotte Tilbury and some Rare Beauty Highlight. Then I'm applying that Maybelline brow gel. I wore this all day yesterday. I really liked it. I feel like it held my brows in place all day and they looked good. Just gonna do a little bit of mascara. This is the Thrive Cosmetics Liquid Lash Extension mascara. I've really been liking this because it doesn't smudge throughout the day because it's literally just like these little fibers. Like it looks like a regular mascara when you're putting it on but then once it dries the consistency changes. It's very weird. It doesn't smudge.  I'm gonna line my lips with Charlotte Tilbury pillow talk. This is also the first time I'm going to be wearing lipstick I think on my lips since getting them dissolved. This doesn't say the shade name on it which is very frustrating because I cannot remember what the shade is called but you have the one side that is like the matte liquid lipstick that stains and those swatches I had on the back of my hand from in the store. Oh my god I was having to scrub so hard at them to get them off that night. Definitely stains well and then the other side is a clear gloss because like this is super sticky so the gloss I guess just like seals it. L'Oreal had a lip product like this a million years ago and it was like I think the first of its kind and I remember I used to wear that all the time like back when I first started my channel when beauty videos were like first popping off in like 2013 and this just reminds me so much of that. Here's my outfit. I'm wearing that Amazon dress with like the built-in shapewear. I love this thing it's so comfy it's like a dupe for the skims dress. This jacket, shacket whatever you want to call it I've had for a while I got it just at like a little boutique in Gettysburg. It doesn't have any tags or anything with a brand on it. It might have been locally made and then I'm wearing the other new sandals from Target. Here is the makeup up close. I feel like that foundation is a good match. I mean we'll see how it wears throughout the day but just like initially putting it on it's exactly as I remember. I love the finish it's not like too dewy and shiny but it still looks very natural it's not like too heavy or cakey. My only complaint is with that concealer like my under eyes already and this stuff has only been on for like 10 minutes if even and it's already creasing and not looking too great so and I feel like I don't know the coverage wasn't that good. I'm not really sure. We'll see how it looks when I get home. The lips look good though. I just got home it's like 315. I finished my client I don't even know what time. I want to say it was like three hours from start to finish. Yeah check her out at one so it was three hours which I feel like is pretty standard for a highlight and a haircut especially for like a first time client because you know we have to do our consultation and all that but her hair turned out beautiful. I really really loved her haircut and everything but then I ended up staying and just hanging out with my co-workers and we were just talking so that's why it's so late now but I wanted to show you the makeup up close after was it been like six hours so you can see the under eyes are looking kind of creasy I don't know I think everything else looks good though the foundation looks pretty good and it's so humid outside so I feel like it's been the perfect day to test it out but I have not touched up the lip product at all it like kind of rubbed off like in the inside of my lips but I think overall it looks pretty good they feel a little bit dry but I think if I just reapply that gloss they would look fine good afternoon it is sunday I just got an amazon package that came in I thought I'd show you what I got so I ordered this two piece set comes with the little like linen flowy shorts and then a button down collared shirt and then I got some balloons for my birthday it's a number three and a number one so I can take a cute birthday picture holding up you know 31 and then I got some nipple covers and then this was just like a random thing that I saw on instagram to clip on the visor in the car so that you can put your sunglasses and it's just magnetic so this like clips on the visor and then you stick your sunglasses in there and then it just magnetically holds them to store your sunglasses um now that I got my new car I'm trying to really be super organized in it I am gonna wrap up this vlog here though because I'm sure it's long enough at this point and it has been a full week we've come full circle tomorrow I'm gonna start a new video I have all of my little beauty things I'm gonna be doing and prep for my birthday ah I'm excited it should be a really fun week so stay tuned for that I will see you guys really soon in my next video thank you for watching bye


The International Men's Network partnered with the Department of Gender Relations for the Boys to Men conference to mark the observance of International Men's Day celebrated November 19th annually. Prime Minister Hon. Alan Shasne gave an inspiring address at the Boys to Men conference, which saw young men from around the island showing their talents and sending positive messages to all St. Lucia's men. President of the International Men's Network, Barry Innocent, expressed his joy at seeing the conference become a reality, stating that it would not have been possible without the support of the Department of Gender Relations. I'm so excited about this event. I think that not only myself, but also Miss Jenny Joseph, the Director of Gender Relations who have been working very hard with me, and together we have jointly planned this event. Let me also say that when you look at what's happening in St. Lucia as the chairperson so well put, most of the school dropouts are boys, much more than girls, and most of the gangulated violence activities happening in the crime land is by young men. So when Miss Jenny Joseph and myself had discussions, I mentioned to her, well, this is one of the things that the International Men's Network wanted to do, and she was very excited to come on board, and she said, okay, let's do it. The event saw several young men take the stage to perform original gospel-infused music of varying genres. AJ, Dreenotes, and Peter Augustine, also known as Jaren, were part of the performing ensemble. Distinct remarks were made by young Dr. Joshua Lesforests, who sought to inspire everyone watching by reflecting on his journey, as well as touching on the importance of values like respect and gratitude. Minister for Education, Innovation, Gender Relations, and Sustainable Development Honourable Dr. Gail Rigaburt, stated that she was honoured to support the conference. What it means to be a man is constantly changing, from one place to another, from one time to another, even from one context to another. Now more than ever in the COVID environment, the change in perception of what it means to be a man is clear. We all know that being a man has traditionally been associated with power and strength. This sounds really positive and progressive, but it is also laced with a set of expectations that set men up for heavy criticism and a disproportionate burden of responsibility. The minister also said that this burden on men is unfair to them and affects everyone. For his part, Prime Minister Shasne expressed warm thanks to the organisers and noted great need for more groups like the International Men's Network to support, inspire, and mentor the boys and men of our nation. Whenever we have a young man in particular who has not been given that lift up, that boost, that hug that I love you, and given the opportunities that when they feel the world is against them, and we all at some point have felt that way, that they also have access to someone who can be a mentor. And this is what your association has been doing, and I really commend you for what you're doing. So again today, International Men's Day, is for us to celebrate the successful men we have because we should not leave them by at the expense of those who may not be achieving to their fullest level. But to appeal to all of us as solutions, that when we see someone who is struggling, what does it take? Some time to reach back and not to be scared of the competition, but to welcome that competition and knowing that that person may actually be the person that's going to push us to the greatness that this country truly deserves. At the event, the Prime Minister took the opportunity to send best wishes to all men on International Men's Day. The objectives of celebrating International Men's Day include focusing on men's and boys' health, improving gender relations, promoting gender equality, and highlighting male role models. The International Men's Network is a faith-based collective of men pursuing initiatives that support the development of men and their role in the family, community, society, and on the job. IMN was launched on October 9, 2009 through the Men's Ministry of the Bethel-Tarbonacal Empowerment Center. Reporting for the Office of the Prime Minister, I am Daniel Dubois.