Are you ready for this? She got this at a thrift store for $35 and she took a best offer of $750. How incredible is that? Hey, fellow buddies, thanks for watching. Amazing, right? All right, let's get started. Hey, fellow buddies, thanks for watching. All right in this video I am going to share with you Bolo items items to be on the lookout for items you can buy low and sell for a profit I am going to tell you where they got the item what they paid for it and what it sold for these are members of my Bolo buddies channel and I'm going to share with you the items that they sourced and sold for big money or Items that are maybe a little bit unexpected that didn't sell for as much money But you should definitely pick up if you see it. All right We are going to get started here and the first person that I am going to share with you about is Abigail's artful abode and her I just love this banner. Is that not so pretty? Love it. Anyway, she has an amazing YouTube channel and she thrifts totally different things for me but I have heard her say I picked this up because I heard about it on Bolo buddies and She's tinkering around with some different stuff so we are definitely both learning from each other which is super cool and Definitely subscribe to her channel, but I'm going to show you some things. She sold on Etsy The first item she sold are these 1800s antique their black floral silk embroidered Slippers how incredible are these? Wow from the 1800s. I mean how on earth. I always wonder how people date things like that like I do not have That special Way of figuring things out like that. I'm just like it's antique or it's vintage And I usually just go with vintage to be safe But she got these at a summer market for ten dollars and sold them for eighty five dollars plus shipping The next item. I love this one also is a vintage pre 1945 so again, she's really good at dating things. She's good at antique and vintage stuff You guys are gonna learn so much from her.  Oh Jisha's Jiha's I'm not sure how to say that G E I S H A S. Sorry guys bookends. These are bookends and she got these at a Grudge sale for five dollars and sold them for eighty eight dollars on Etsy Got junk in our trunk love love love this new newer. I guess it's not new series She's doing it's called why did I buy it and she picks a category and then she talks to you guys about why she bought it Rhonda has a huge background in Estates she used to do a state sales. So she is super super knowledgeable. Check out her what sold videos I just love it because she does a lot of bread and butter like me and but some of her bread and butter is so Unexpected and I just love it. So you guys will definitely dig the things she sells All right, she sold this solitary game. It's from 2004 It is a handheld electronic game by radical radical is a great brand to look for this one sealed in the box So that's gonna make it worth more money, but these will also sell if they are not new So be on the lookout even for the pre-owned ones They make a good bread and butter and if you can find a harder to find one You can still get decent money for those this one She got at a thrift store for two dollars and ninety two cents and sold it for a hundred and twenty four ninety nine plus shipping The next item she sold is this vintage Miss Noah plush toy Nelsie and elf Christmas stuffed doll. It's sixteen inch and it is signed So let's take a look at these photos here and see what signed means Okay, it's still got the original tag on it and it is signed right there. That's very cool She got this at says Freebie Does that say freebie can't read my writing and yeah, she sold this for ninety three dollars and fifty nine cents That is awesome. Wow. Look, does it even have a face? Where's the size? Oh, they might be hiding under there How cute is that? Would you guys have picked it up and would you have thought that it would have gone for almost a hundred dollars? Or would you have walked right past it? Let me know in the comments the next item. She actually did a let's or why did I buy it on this and it's the read Posters and she picked a whole bunch of these up at a friends of the library sale for twenty five cents each This one is Orlando bloom and it sold for eighty nine dollars and ninety nine cents plus shipping Definitely go check out that video for more information Vintage Christmas ornaments lions glow in the dark silvered surface and These came from a yard sale. She paid twenty five cents for these and she took a best offer of sixty dollars plus shipping So there you have it Ray Nathan RZ09 no YouTube channel This is her eBay store and you can check it out down below I will have all the YouTube channels all of the eBay stores will be linked down in the description You can go and follow all of the eBay stores by clicking on the heart. Let me show you that They all have a heart that says save seller and you can click on that and then you will get notifications like if they create coupons or if they put something on sale or add new items and You'll get to see their Bolo's because these people are Bolo finders and also the YouTube channels are linked below So definitely follow them. All right. She sold this African American Santa Christmas figure cream gold by dandy and here is some other shots of it and Maybe if I click on it, it'll blow it up more. It's kind of cut off, huh? Wonder if that's because I don't know. Okay, but anyway Now I forget what she sold it for was that thirty nine dollars I think thirty nine dollars and she got this at TJ max for eight dollars and ninety nine cents plus shipping This is Disney store. Is it Lilo or Lilo and stitch? Stitch plush stuffed doll PJ pajamas with slippers. How cute is this?  It's called jammies stitch. So it's really great when they put it on the tag for you, right? She got this one at a thrift store for two dollars and ninety nine cents and sold it for fifty nine ninety nine plus shipping The night before Christmas pop-up book hallmark and it says African Americans. So I am gonna look at the pictures here I think I just saw where someone else sold this sealed and it went for over a hundred dollars I think it was one of my members when I was looking through their eBay store Or they had it listed. I can't remember But anyway, this one sold for forty seven dollars and she picked this up at the Goodwill for ninety nine cents Let's see Yeah pages flip down and reveal a pop-up Christmas scene great collectible All right, we got P and W flips and she talks about Google lens in her latest two videos So if you want to know more about Google lens, you can go check out part one and part two of that And she sold this holiday Santa Claus head face Christmas cookie jar and you know, right now Christmas items You'll want to be listing them. They are selling She got this at the Goodwill for five dollars took a best offer of forty two dollars plus shipping and Speaking of Santa doesn't this look like a little Santa hat, but it's made by car heart How fun is that and it's got the little pom-pom on the top and it's a beanie Those are great words to put in your title if you find something like this She did have free shipping on it. So this is more of a bread and butter And she got this at a thrift store for two dollars and sold it for twenty nine ninety nine This one I just thought was interesting because she got this at a grocery store clearance and she paid two dollars each for these and She sold them for twenty five forty five each With free shipping, but she sold three of them How fun is that right? I don't know just one of those retail arbitrage things. Okay, oh Right, we got the rebel reseller and if you are not subscribed to rebel You definitely got to go check her out because her and her husband Robert I will tell you they will they will get you laughing during their videos. So go check them out She's getting really close to seven thousand subscribers. So go and sub her up She specializes in plush, but as you're gonna see from her what sold videos She is really or I should say they are really starting to branch out into other categories as well So you will definitely learn a lot from them Speaking of the department 56. This is the White House building and I believe her husband picked this up at a garage sale I'm sorry in a state sale for ten or twenty dollars. She couldn't remember but it sold for ninety eight dollars and ninety six cents plus shipping This one right here is this metallic house village a lot of three sequin Bombay company and this is what they look like. How cute are those? Let me know. Have you ever seen anything like this? Would you have picked them up? Would you have guessed that they are so valuable? I Want to see that sticker on the bottom. There it is. That's what it looks like retail 12 bucks 5 bucks 12 bucks, don't you love it when things just increase in value with age a state sale $3 took a best offer of 70 on those This guy, I just love it. It's just a bread and butter, but come on. Would you have expected this to go for so much money? It's a subway PD Pickle pullback action car from 1991 and it still works and Let's see. Where did this come from a garage sale one dollar and sold it for twenty six ninety five plus shipping The next item I had to pull this one because she had a post in her Facebook group, which If you type in Facebook the rebel reseller, it'll pull up her group. I can't remember the exact name of her group I just search rebel and Rebel the rebel reseller is her YouTube channel But it's also her name is actually rebel you guys so That's where she got her YouTube name from and she sold this and she told her husband Honey, it's time to ship this. Could you imagine? I'm sure he was thrilled to ship this It's all breakables all these little pieces. I'm like, oh my goodness Like these are things that I don't buy because I don't want to ship them the little village Let's see. Or I guess it's a train She picked this up for twelve dollars sold it for forty eight dollars and Also had a house that came with it and the house sold for sixty eight So twelve dollars for the whole lot But yeah, he got to ship that I'd like to know Robert if you're watching how did the shipping go? How long did it take you? Let me know if you guys avoid things like that because you don't want to ship them All right flippin hot finds. Oh my goodness. She is a bolo finder and She sources about 70% of her items from YouTube auctions is what she said and she finds some really fantastic stuff So let's start with her first bolo here. It is a department 56 in the city Flat iron building Are you ready for this? She got this at a thrift store for thirty five dollars and she took a best offer of seven hundred and fifty dollars How incredible is that and I love her first photo because she's showing all the angles She's showing it has a box. She's showing it with a light without a light Really a great first photo in my opinion $750 Wow Okay, the Christmas story or a Christmas story. This is the leg lamp. It's a replica. It's new in the box and This one she got off the curb somebody threw it on the curb. It's like brand new in the box I mean, come on. Who does that? They just threw it to the side and she sold this for forty five dollars and ninety nine cents plus shipping This here is a another word that I cannot say h a l c y o n how cool How Keon how con I always think I'm gonna nail it and I don't how Keon That's what we're gonna go with days Disney Rare Trinket box three cheers for poo limited signed and numbered and This is what it looks like on the bottom So right here is that word that I can't say and it looks like it is numbered and it's got all this great information on It so definitely an easy item to research if you find it and She got this for twenty bucks at a thrift store and sold it for a hundred and forty nine dollars and ninety nine cents plus shipping The next item comes from be carried away and she is definitely a bolo finder She does a lot of vintage clothing and I always say how good she is with key words and Describing the clothing so if you guys struggle in that area, I know that's an area I struggle in with how to describe clothing especially vintage clothing Definitely check out her channel. She's been taking a little break, but she's coming back soon So be sure to subscribe right here. She sold this MCM teak wood tray. It's a palm leaf hand carb dish Serving tray and it says monkey pod So a lot of times she has a lot of key words that I don't even know what they mean But she does a lot of research and all of her descriptions are super detailed So if you want to learn check out her videos Um, she got this at the Salvation Army for three dollars and ninety nine cents and sold it for fifty nine on poshmark This is a vintage austrian Loaden army green wool olive trench coat corduroy buckle trim size medium See what I mean like all the words. They're just incredible She sold this for ninety nine dollars. She got this at the Salvation Army for ninety nine cents So ninety nine cents into ninety nine dollars. I mean talk about some great margins, right This one here is a vintage blonde tan women's leather coat jacket from the 70s And here is what the tag looks like You've got some inside buttons. So lots of really good pictures to show you the item. I mean look at her Look at her description. I mean she's just incredible Salvation army five dollars and ninety nine cents sold it for ninety eight dollars Carrie will tell you she is a long tail seller I am also a long tail seller. I list it and I forget it and It sells eventually everything sells. I don't pull my inventory and donate it Um, I just leave everything listed now I'm sure that that is going to vary for every person depending on how much space they have and You know, what works for them? Some people don't want a big store I just I'm like if I took the time to list it it's going to sit there. The right buyer will come along So this took her two years to sell but she's Six dollars into ninety eight. So to me worth the wait, right? It was what probably hanging in a closet Just waiting to sell simply savvy deals And here is their ebay store and these monster high dolls see how they're missing their arms They will still sell. Okay So if you see them you can part them out. You can sell the heads Monster high brats all those dolls you can part them out. Okay Stay tuned. I'm gonna have a video on that in the future. All right. Simply savvy deals on ebay And this is what they sold charlotte mason original home schooling series volume one through six pink covers complete Uh, these came from facebook marketplace. A dollar is what they paid for these and they sold for 62 dollars and 99 cents best offer So anything homeschooling can be a big money bolo. It can also be a great bread and butter Red dead redemption So it looks like it is an official game guide book That's interesting. Definitely would have walked right past it and that is why I do this This is from the goodwill three dollars and 99 cents and sold it for 50 dollars And you can see right here. It shows the different. Um, it's a game guide All right, the next item they sold are these spring raid spring made two pillowcases They are vintage if you guys see vintage pillowcases vintage, um, linens Sheets different things like that Definitely consider picking them up a lot of times they're going to be bread and butter But sometimes they can go for big bucks They got this at an estate sale for a dollar and they sold it for 20 dollars plus shipping The next item comes from thrift and style 11 56 and here is her ebay store And again, all of these are linked down below if anybody's looking to do some christmas shopping And she sold this needle point samplers book by marsha van balan 1998 early architecture and this is, um Doesn't say where she got it, but she paid a dollar for it and took a best offer of 50 dollars for this The next item is this auto sock wheel covers tire cover new in the package One set of two socks, so I don't know what a tire sock is but I kind of want to know like are they do they go over your tires? Does anybody know let me know in the comments if you know because She got this at the salvation army for four four dollars and sold it for a hundred and 1997 So I am not going to forget wheel socks or wheel covers This is a monogram super fortress aircraft model kit lucky 11 11 leven not 11 11 Interesting it's an airplane model kit and she got this at the goodwill for eight dollars and sold it for 120 plus shipping Oh, I'm sorry free shipping on that one Janie's jewelry boutique and plus clothing Janie Marie 310 is her store. She is a newer member. So, um If you guys are following all of the ebay stores that I share Head on down and definitely follow her down there And here are some of the items that she has listed lots of great items I see lots of stuff that I would definitely be selling All right. This one is pretty incredible. This is a countdown clock and she said there was a big lot store that was going out of business and she got this for eight dollars and I thought I wrote down what they I want to say they took a best offer of 250 Sorry, I can't remember. I think they told me after the fact and I forgot to write it down So that's my fault, but they do have a video that shows how it works And this is definitely a big money below. They said they researched it and couldn't find another one like it So indoor outdoor This here is a women's plus size 2x leather mini dress under wire cup And it's got the tag still attached and I will tell you that thing is fancy um Church thrift store that does not look like it would come from a church thrift store But anyway $5 on that is what they paid in a sold it for $150 plus shipping Rock and revival boot cut jeans church thrift store $2 And sold them for 115 plus shipping and they actually auctioned these So if you're not familiar with this brand, it looks like they are still a Big money bolo because an auction means people were bidding on this item driving up the price 1966 vintage mattel barbie london tour outfit When you find these vintage barbie clothes If they're the older ones with the black tags and the or the white tag with the black writing They will have an item number if you can find that item number and use it in your title It's definitely going to help you sell the item. It looks like this is complete Or near complete with all these little accessories I'm surprised it didn't go for more sold for $68 and 66 cents With free shipping on that one. She got a barbie lot for $25 and has pennies in this The next one comes from auctions for you And um, what I do is I just go into her store and pick three items She doesn't list as much on um ebay anymore because her and donna telebotelino do Live auctions on their youtube channels and they go back and forth on each other's channels And they sell to resellers so they buy At wholesale prices and then they sell to resellers so that we can still make a profit And if you guys watch my channel, I've got lots of unboxings of things that I've bought from them Highly recommend their channels. I've been Man, I would say it's probably going on over three years. I've been going to their auctions. So Um, definitely recommend them. I will link them down in the description if you're looking for inventory And auctions for you her husband does a lot of the ebay stuff. He helps her out over there, but there for a while She was bringing Irving rice These are mirrors and I know she sold a ton of these at her youtube auctions And she was selling them at a price where people could still make a profit But it looks like she still is selling some in her store. I'm not sure how she Spaces out her inventory or I mean they just have so much great stuff But anyway, she has sold two of these for 79 dollars and 99 cents plus shipping and she still has one left if anyone is interested This is a Corgi, I think it's corgi or corgi or corgi. I think it's corgi. Heineken lager beer. It's a truck It's a model truck here And again, she picked up a huge. I'm thinking this probably came from her toy Bundle it's from 1998 and she sold this for 99 dollars and 99 cents plus shipping And the one toy buyout she did She just did huge Buy it now it's like, okay I'm going to give you this many items and this is the price and then she shipped the items out So some of those items didn't even come to her youtube auction She just wholesaled them out to people because it was such a huge buy So be on the lookout for deals like that as well. This is a waterford crystal La more list more. I'm sorry list more covered butter dish made in Germany And again, I don't know where she got it, but it sold for 159 dollars and 99 cents plus shipping So they buy storage units They buy from estates Just all kinds of places they source So definitely check out their channels vintage booth pro So she sells on multiple platforms, but she has geared her channel more towards teaching you how to sell In a booth. So if you want to learn how to have a booth, definitely go and check her out, but she is also Sells on multiple platforms. Okay. So here's what she sold She sold these susie zoo acid free stickers three sets of these if you guys don't know Stickers can definitely be an incredible bowlo. Some of them go for hundreds of dollars Many of them are bread and butter. I think this one's right there in the middle 38 dollars. Actually, let me see I'm sorry. She took a best offer of 27 on these and paid a dollar each So her cost of goods is three dollars and the buyer paid shipping on that This is a wood world handcrafted old santa norway eight inch figurine Christmas. It is vintage Let me see if I can get you a bottom lookie. Maybe there's no markings on it She's got the tape measure. That's exactly what I do I think it's really important to definitely put measurements. Then there's no question Goodwill three dollars sold it for 39 99 plus shipping The next item she took a really low offer on these Aurora monster die cut set from the 80s. I have not heard of aurora I've heard of aurora stuffed animals, but never For the die cuts. So let me know has anybody heard of these. I have done really well With some die cuts. Some of them can go for crazy big money. This just may be a brand that's not as popular she said that um She priced them high just to see if she could you know, maybe get an offer on them but uh Ended up taking a best offer of 25. She picked these up at the Goodwill for three bucks But she said after looking at worth point and really studying the comps She felt like 25 was fair and went ahead and took the offer if you guys are not using worth worth point It is an awesome tool Um, it has made me so much more money on my items because there's things that I can't research on ebay That I can research on worth point and because of that I sell my items for more so it definitely pays for itself I do have a referral link down in the description if you guys want to check that out you can look at the The pricing there's different levels that you can uh sign up for like One level you can learn about like the different marks on the bottoms and of like pottery and I think jewelry and stuff like that I don't have that. Um, I just have the one where I can look up comps So you'll have to figure out what works best for you. It's kind of pricey I held off on it on a lot for a long time And now I wish I would have gotten it sooner because I've realized how much money it's made me And I do have videos um on worth point if you guys want to see how I've made more money using it because I like to show you guys Why the product is working for me and why I think it's worth it if I'm gonna recommend that you get it So um, and it's not for everyone Like somebody who does clothing. I'm not sure if worth point would be beneficial or not Um, because I've never really researched clothing because I don't sell clothing anymore. Um, at least I don't I still sell it because I still have stuff listed in my store from when I did sell it But I don't actively search for it. So if you are a clothing reseller and you use worth point Let me know down in the comments. I'd be curious to know that maybe vintage clothing. I don't know All right. I love this one. It's a sun arrow my neighbor Tatoro Big Tatoro gray plush made in japan She got this at the goodwill for a dollar and one cent and she sold it for 52 50 plus shipping And the last item I just thought this was kind of interesting It's a coca-cola ice pick things go better with coke would handle nine inch long Plus the box she got this at an online auction for one dollar and she sold this for 30 dollars and 21 cents best offer All right, you guys thank you so much for being here again These are members of my bolo buddies channel. That means they have joined memberships to be featured in this video There is a join button Right over here if you don't see it that's because sometimes it doesn't show up And I do have it linked down in my link tree and there's also a separate link down below If you're interested in joining memberships to be in a video like this, it is level two Um, no pressure at all.  It's linked down below Just go to the featured announcement section and look for the share post. All right, you guys Thanks so much for being here. Leave me an owl emoji or just write the word hoot. Thanks for watching Hey, bolo buddies. Thanks for watching. All right, you guys This is a featured members video where I am going to share with you a bunch of Bolo is what's a bolo a bolo is an item to be on the lookout for an item You can buy low and sell high or for a nice profit. I'm going to tell you where they got it What they paid for it and what it sold for Um It's got too much going on. All right Um


Happy Friday everybody. Mitch here, behind this mask, as I hope you are. You know, we're now at the end of our second week of a busy campus, our first week of full classes, and it's way too soon for conclusions. It's surely way too soon for celebrations, but it's not too soon to say thank you for the overwhelming cooperation and compliance we've seen that's really helped us get off to a good start. At least that's how it looks to me, but let's go to somebody in a better position to be credible about that. A couple of our ambassadors, Mitchell and Maddie. Mitchell? Hi everyone. It's been a great first week back on campus for me, and I hope it has been for you too. It's been really amazing to see everyone doing such a great job, wearing masks, social distancing, and taking all the necessary actions needed to protect yourself, protect others, and ultimately, together, protect Purdue. Maddie. We've done a great job so far, but it's up to us to keep going. The Protect Purdue pledge doesn't end when classes end on Friday afternoon. It's a 24-7 commitment to keeping our campus safe, and it's up to us to continue to uphold the Protect Purdue pledge to ensure that we can stay on campus this fall. Together we can, and will, protect Purdue. Maddie just made a really important point. The challenges we're facing don't end on Friday afternoon. In some cases they actually get bigger. We all know the weekends are the times of the greatest risk where inadvertently somebody could spread this virus, so please be extra careful this weekend. Keep up the vigilance that you've shown so far. We're sorry that Purdue weekends for now don't have all the activities and fun that they will when we get through this, but we're putting on some new programs that we hope you'll enjoy, and please give us ideas about things you think would be fun that are consistent with the behaviors we all have to exhibit. Thanks again for a great couple weeks. Let's keep it going.


This is decoupling Drupal modules into PHP libraries. I am Bon Jovanovich, Bonzi, and I am the Commerce Development Lead, which means that I am paced to work full-time on commerce to the techs, our Drupal Commerce rewrite for Drupal 8. And outside of the commerce ecosystem, I'm also responsible for view bulk operations and inline entity form. I work for a company called Commerce Guys. We are the creators of Drupal Commerce and Platform.sh, which is our cloud hosting solution. We have offices in Paris, London, and in Ann Arbor, Michigan, about 40 people growing percentage being remote, including me, I remote from Serbia. So we started Drupal Commerce when Drupal 7 was still in beta. We started it from scratch with the sole purpose of making use of the new technologies that Drupal 7 gave us at the time. And that meant using the entity API for data model, using views for all kinds of listings, including the shopping cart, including the administrative tables, and using rules for all kinds of business logic, the business logic being the kind that the merchant adds that's specific to their sites. And by doing all of this, by starting from scratch, we created a solution that was instantly recognizable. If you knew Drupal 7, then you already knew Drupal Commerce. And we also aimed for it to be minimal and to make as little assumptions as possible so that you can take the parts that you need and use it to build your site. If you don't need a cart, no problem. If you need just the product catalog or you're building a custom checkout page, all of that should be possible. And four years since the first release, the release being at DrupalCon London in 2011, we have now grown to 60,000 reported installs, not all of them alive due to the nature of Drupal's install reporting process, but it's still an impressive number and certainly the high point for e-commerce on Drupal. But in those past four years, a lot happened and the world around us changed completely. PHP 5.3 and 5.4 changed the way we write code. Composer changed the way we share code. Symphony 2 happened, Drupal 8 has almost happened, giving us a new base to build on. And if we want to repeat the same success, then we need to start once again from scratch, re-evaluating all of our ideas but staying true to our initial values. And that gives us a good opportunity to also re-evaluate our problem space. Because when you think about it, there is no such thing as the e-commerce problem, just like there is no such thing as the content management problem. Instead, it's a collection of problems, problems such as payments and addressing and taxes and pricing and catalog management and order workflows and a lot more. And when you think about it, none of these problems are Drupal specific. They're not tied to Drupal. So if they're not tied to Drupal, maybe we can try and solve them outside of Drupal and by doing that, gain additional exposure and additional users. So this is what we decided to do. Instead of starting with the Drupal code first, a year and a half ago, we decided to start with libraries first. So we would build these libraries as completely independent PHP code, not tied to any framework, and then we would build a Drupal code on top that requires those libraries, pulls them in via Composer, and then provides the rest. The first library we built, and I'm going through these libraries quickly just so that you can see an example of what I'm going to talk about, the example of these kinds of use cases. So we built the INTL library first and it was needed to solve our currency problems. So in Commerce 1.x, we hard-coded the currency list and we told the community to provide patches to keep it up to date. But currencies get, that list gets out of date pretty quickly because old currencies disappear and new currencies appear and symbols change and minor units disappear due to inflation. So what we saw is that every few months that list would be out of date. So we decided to look for a source that we could use to automatically refresh that list from time to time. And we found that in the CLDR project. The CLDR project is a Unicode project that's maintained by large companies such as Apple and Microsoft and Google, and it provides a large, completely open repository in JSON format of locale data. So it gives you lists of currencies and countries and languages and a lot more. It's completely amazing. And it even gives us the list of currency names and symbols in all languages. So we decided we wanted to use that and we decided to create a library that would pull in the data set and then provide a data model on top. We also knew that we would need locale specific currency formatting because if you have a euro amount, it does not look the same in France and Germany. So we knew that there's an INTL PHP extension that can be used for that. It has a number of formatter class, but that extension is not present by default on many installs. And even Symphony, which is much more developer oriented, did not manage to get away with actually requiring the INTL extension. People kept complaining until they added a fallback. So we knew that we couldn't do the same for commerce. We couldn't tell people go and install the extension. What we found out was that CLDR actually has all of the data for formatting currencies. So we managed to build a number of formatter in 300 lines of code. And with that last piece, we completed the INTL library. The next one is called addressing. And it's basically the library version of our address field module. So it handles storage and validation and formatting of postal addresses. Now postal addresses are different from country to country. Different countries have different address formats. They have these rules for which fields are used and in which order and how they're labeled and how they're validated. So we take these rules and we list them all in an address format. And we use that address format when formatting an address and validating an address or when building an address form. Now, when we had all that, we realized that the next step is, of course, to have a good data set, to have the data for the countries. And we used to have our own data set back in 777, but we actually managed to find an even better one using Google. And I don't mean we Googled for it, but instead Google created their own data set for Android that has address formats for 200 countries and subdivisions for more than 50. That's things such as administrative areas and municipalities. So we contacted them and got the permission to release that in an MAT licensed library. And that's how Commerce Guy's addressing was born. And it's our most popular library at the moment. The next one we created is Zone, which introduces the concept of geographical zones. So geographical groupings, a list of countries or states with or without postal codes. And that's very frequently needed when you're doing shipping or taxes, because you might say, I have one shipping price for Spain and Portugal and the other for the rest of the European Union. And it's also used for tax because tax does not apply strictly to country lines. For example, German VAT is used in Germany and a few Austrian postal codes. But Austrian VAT is used in Austria without those postal codes. So now that we have this concept of a zone, a zone entity, we can actually describe that and attach it to a tax type. And our crown jewel is the tax library, which represents more than three years of research into tax problems in e-commerce in general. It includes a data set with tax rates for all of the European Union, present and historical. And we are relying on the community to provide more for their own countries. It includes a smart data model that has support for changing tax rates. So it has a start and end date and will choose the correct rate based on the calculation date. It also has a pluggable system of resolvers that can have per country specific logic for determining which tax type and tax rates to use. So that means that we can handle things such as B2B versus B2C, physical and digital products. And we even handled the use case of digital VAT in the European Union that has been a problem this entire year, which says that if you're a Spanish shop selling to a French customer, you need to charge French VAT, which means you suddenly need to know all of the EU tax rates and the logic of how it applies. Well, we did all of this and we implemented that in a library that was never seen before. And all of that got us a lot of attention. We were trending developers for a while, which felt really good.  So the first thing that happened is that we managed to influence Symphony a bit with Symphony INTL. So Symphony INTL was a library where Symphony had English-specific fallbacks and after we did the CLDR data approach, they decided to do the same thing and we even managed to share tricks on how that should be parsed and used. The Symphony version of the library still doesn't have all of the parts of the data set that we do and they don't have the number format that we do, but I'm hoping that in the near future we'll actually work with them to merge the remaining parts and into the Symphony library. We also got in touch with the developers of the Celias project, which is a really promising e-commerce solution for Symphony with a really smart and enthusiastic community. And when we talked about our libraries, they decided that they would like to start using our addressing zone and text libraries for themselves. Unfortunately, that hasn't happened yet, mostly because they don't have any full-time developers, but if any of you are looking to start contributing to a Symphony-based project, I think this would be a good start. And the last part is that we have been adopted by SAS Solution, so both Foxy Cart and Conk have started using our text library to handle their own text needs. And this has been great because they've been using the text library in production for six months, which means that they found bugs such as incorrect percentages in the data set or, for example, you forgot about American companies registered in the EU to collect EU VAT, so they've been finding edge cases. And we have benefited from all of that and have a much more solid solution now, both in the library and for Drupal Commerce itself. So it has been a great ride so far. And we have more to come, so we've been thinking about interaction between taxes and discounts and shipping and payments. There are a lot of problems that could be explored there, but this time around we decided that we want them to first mature in Drupal Commerce itself, and then we will start separating more, simply put, the existing libraries took a lot more time than we originally anticipated, and that's something that I will comment on. But the main question is why would you do all of this? And my first need was to just re-examine our problem space. If you're solving addressing in a library, then you really want to know how to solve that complete problem space. You want to cover the edge cases, you don't want to take shortcuts. If you just need an address form for a large application, you are much more likely to just implement the simplest solution and continue on. So by doing this, we did end up with a much more solid implementation of the various subjects that we attacked. We also got additional exposure because people came to us, they learned about the libraries, and then we could say, you know, there's more where that came from, which is definitely good. We also got a chance to validate our implementation. So Drupal Commerce 2 is still not ready, won't have a beta for a month or two, more at least, but our addressing and text parts have been in use for many months now, which means that many bugs have already been solved. We already had the bug reports of your postal code validation is not precise enough in Taiwan or the various tax issues. All of that is already being solved, allowing us to have a really solid release on day one. And this allows us to also get development maintenance and help because it's really time consuming to maintain an up-to-date list of tax rates for all countries and a list of address formats. But if we do it at the level of the PHP community, then we can actually produce something that's much more solid. And it gives us time to focus on the more fun parts of our e-commerce projects. And finally, this allows for backports because this code is nicely isolated, which means it can be plugged into Drupal 7 and Drupal 8 and Symphony and Laravel. And wherever I go, I know that I can at least bring those parts with me and that makes me motivated to try and take out even more. The not-so-hidden cost of that is time. You know how if you build something for your own site, it's much quicker than building a generic contrib module. Building the contrib module takes a lot more time. Well, the same thing happens when you compare building just the contrib module and building the module and the library. And this time cost has three pieces. The first one is just learning how to write a good library. And when we started, there were almost no good libraries because everyone wrote libraries that were tides, specifically to Symphony or some other projects. We needed to learn a lot, but I think there are more examples now, so that cost is smaller. The second cost is, of course, the cost of evaluating and solving all of the edge cases. And that benefits us, so it's a good cost to have. And so those are some of the costs that we have. The third one is evaluating the differences between the various systems. The code that we write needs to appear native to developers of different systems. It needs to feel native to a Symphony developer and a Drupal developer and a Laravel developer. If code feels weird just because it uses an external library that we've lost already, and that's going to be refactored out at one point. So this means that we needed to evaluate all of these systems and the differences between them to make sure that we are solving the right subset of the problem that makes sense here. And it means taking into account how different these systems can be. For example, Drupal is this dynamic introspective configuration-driven system, which means that users expect a UI and a slightly different flow. But Symphony is this static code-driven system, which means that people expect to write more YAML and just don't care about configuration that much. So all of that needs to be taken into account. So let's look at how a single library looks like. We start with the interface. Let's say we want to represent a currency. So in this case, we start with a currency interface that has only getters. This is the basic contract that the currency needs to fulfill. This is what other services need from a currency. So they need a way to get the currency code, the name, the symbol. So you might wonder why I have no setters. Well, because I don't actually need to make assumptions for how that object is going to be populated. It might be a value object, or it might be an entity because users are creating currencies in the database. Or other than allowing the parent application not to have setters, it also allows them to have different setters with different type hints. For example, if the currency interface is a type hinting against the country interface, but the parent application extends the country interface, it will want to type hint against the extended interface in most cases. So in that case, the parent application can define their own extended interface with the setters and do what they need. We do provide extended entity interfaces that have the setters for projects that need it. If you know that your doctrine or Drupal site will use those exact setters, then you can go ahead and extend the more extended interface or just use it directly, but we don't actually enforce the usage. We also provide a default class, and this class is used in two cases. It's not used by Drupal or Laravel, but it's used when we load data from the data set. So from JSON that ships with the library. For example, we loaded the currency from disk, and it's used by Doctrine, because Doctrine is a system that allows you to specify a mapping separately from the entity, and you can describe how the entity is persisted and loaded, and then just reuse an existing class. So all of our classes are usable by Doctrine directly, which makes bundles a little bit smaller. Sometimes these entities have just bits of logic, so some kinds of helpers. Object-oriented purists will tell you that a totally anemic data model is usually not a good thing, and at the very least, you might have small helpers. So for example, in the address format, you might have methods that tell you which fields are actually used in the address format string or give you some other format of that. So what we did for sharing here is use a trait. So who here knows how a trait works? More than half of the room. When I did that in LA, there were five hands, so that's awesome. So a trait is basically language-assisted copy-paste. We define the trait like a class, and then we use it from the default class and the Drupal class and the Laravel class, and we share those methods, those methods that are common and have some logic. And by doing that, we can also unit test just the trait and not repeat the test on each side. So it's just a nice little trick to share these bits and pieces. And Drupal actually uses traits for the same thing in its own entity API. Now, the next thing is collections. Many entities have relationships. And for example, a blog post has comments. And Drupal will give you just an array of comments. But doctrine has this really neat trick where they actually give you a collection class. This is a class that behaves like an array, but since it's a class, it can actually lazy load the data, which means that the first time you actually want to access the comment by specific ID, it will then load it on demand.  It's a separate library up on GitHub that has just those two small classes, those two small collection classes. And this allows us to actually depend on the collections class and provide the required type hints and behavior in the default class. So this allows us to have the default class that's usable by doctrine directly in a way that doctrine users expect it. But at the same time, we get this really nice way of dealing with our local data as well, because for example, I use it with subdivisions. I'm not going to load the Brazilian municipalities until you request them because you might not need them in this request. So this does not affect Drupal at all, but it does provide a more flexible implementation all around. And once we have entities, we need to know how to load them, where to get them from. In Drupal 7, this would be a controller class. In Drupal 8, this would be a storage class. But the outside world usually refers to them as repositories. So you can see here a very basic interface that has two methods get and get all for loading a single address format or all of them. And this is all a service needs. It says give me an object that can give me a single address format or all of them. And then we can have implementing classes that pull the data from disk or from Drupal entities or from anything else we need. And once we have the data model, we want to do something with it. That's one of the main reasons why we created the library. We need to offer some kind of value, some kind of business logic. So this exists in classes that we can call services. And the service is just a regular PHP object that implements an interface. And it does not assume it has a dependency injection container. So it just asks for the dependencies it needs in the constructor. And then that can be passed manually or it can be wired into a symphony bundle or a Drupal module. In this case, we can see a zone matcher, which is a class that will return the best matching zone for an address. And you can see in the constructor that it needs the repository. It needs the repository because it's going to load the zones. We type in using the interface because we don't care which repository we get as long as it gives us some zones. And then below, we just use the repository, load the zones, match the address against them and return them. This is an example of a service. A service is a small class that does one thing and does it well. Validate an address, format a currency amount or determine which text type to use and so on and so on. We need to have tests. Ideally, we would have anything resembling 100% test coverage. We write tests using PHP Units the same way we do in Drupal 8. And PHP Units is great because it runs really, really fast. We basically aim to have a matching test for every class that we add. And after a while, it just becomes second nature and then we can use Travis on GitHub to run that on every commit. Let's look at some problems and how we can solve them. So the first problem that we have between applications is translatable strings. Now, I don't mean translating entities. We can always assume that entities can be multilingual. For example, a currency can have translations in multiple languages with the name and symbol in German, French, and so on. But we have a problem with a single string. Let's say that administrative area types. An administrative area could be called a state or it could be called a province or something else. And we need to localize these strings before we show them on the address form. Now, Drupal and Symphony do this differently. Symphony and Laravel, for example, will tell you to separate your strings into a separate file and give them an ID. And then in your application, you will say, give me a translated string with this ID. For example, commerce guys addressing administrative area type state. But Drupal has that T function that wants the original string as the argument. So this means that we cannot have unified translation. So what our libraries do is they reference constants. And then it's the job of the parent application to replace that constant with a translated value. And this is possible because we have a fixed set of possible values. And it would be possible to have a lot of them which would pollute the interface that we're using. So we started using this concept of an enum class. This is, other languages have enumeration. So in this case, it means that it's a class that lists the possible values. So for example, this is the list of labels a city field can have. It could be called a city, a district, a post town. And then the class has just a little bit of sugar that allows us to say, give me the default value or give me all values, which is really useful when you're building UIs. For example, the UI for defining where I think address formats. The commerce guys enum library is a hundred lines of code, but it has helped us clean up some of our other libraries. The second problem we need to think about is pluggable implementations. So let's remember how text types are resolved. We call resolvers until one of them gives us the answer. So we call the one for France, one for the EU, one for the US, and we keep calling them until we get something back. Now, the main class does this invoking. It does not care where the resolvers came from. The library does not care about discovery, and it shouldn't. That's the job of the parent system. Now, both Symphony and Drupal 8 have this concept of tagged services, and it's one of the most, one of the new major Drupal 8 extension patterns where basically in your services YAML file, you add all of the resolvers that you have, and you give them a tag, and since it's the same tag, the container can get all of those services, and then you can pass them to the central class. So that's one of the ways that it can be done. Now, Drupal 8 has one additional extension pattern, and that's plugins. A plugin is a class that gets configuration from somewhere else, usually a config entity that's edited through the UI. And here below we have an example of a plugin. This is a constraint plugin, which is used in validation. A plugin is not registered in the container. It has an annotation on top, and in this case we can see that Drupal decided to use a plugin to integrate Symphony validator. So the plugin is extending the Symphony validator library class to make it discoverable and make it work. So this is one additional pattern that might be expected from integrators if there's configuration coming from outside. The important part is knowing when to stop. Know which problems should not be solved. For example, Symphony and Drupal have wildly different form implementations. And Laravel has none, it has no official one as far as I know. So this means that it's highly impractical to provide forms in your library. You just don't want to do it, leave that to the parent application. You might be tempted to say, okay, I will build a generic form and then implement transformers that output the Symphony form or a Drupal form, but that you're once again back to weird code, code that does not feel native to the developers of either system. So just don't do things like that. I also wanted to mention a few details around the Drupal integration that we came across when doing commerce. So of course the first one is that once you need Composer libraries, Drupal modules are only installable using Composer. You cannot download the module manually using a tarball and then download the library manually to some folder and have it work. Libraries and all PHP packages in general must be installed using Composer. And if you've been following along Composer and Drupal, it has been this long battle but a constant set of improvements. And it basically means that you need to edit the root Composer JSON, it's at the root of your Drupal install and add the requirements there or use Composer as a drush make alternative and download the module. So if you do Composer require Drupal commerce since it does recursive dependency checking, it will also download all of our libraries because they are the dependencies of that package. Now I would need a whole talk just for the Composer details so you can look at a blog post that I wrote just recently detailing all of the tricky details around Composer right now. I should mention that we've had a series of talks here at the Drupal con that will make that blog post significantly smaller and less awkward. So we are definitely making progress just in time for RC1. The second thing I wanted to mention is implementing entity types. So let's say that we have a Drupal currency entity. This allows us to have a config entity where users can create a custom currency or edit the details of an existing one. This means we need to have a currency interface and interfaces can extend multiple other interfaces. In this case, we are extending the library one saying this behaves like the currency the library expects and it extends the library for a config entity saying this object behaves like a config entity should and that's all there is to it. But it's good to remember because if you implement only the library interface then you've missed the config entity one. Let's talk about library ideas. Which problem should we actually tackle now that we know how to tackle them? The first one is the set that I call hard problems. These are the problems that require domain knowledge. These are the problems that require experience. So that means that you can actually take your knowledge and turn it into code form and create immediate value. A good example of this is tax. So these are the problems that other systems frequently get wrong and e-commerce is full of such problems, taxes and addressing and so on. The other kind is boring problems and these are the problems that are not hard but they have a lot of edge cases. So an example of that is making sure that you have all of the address format information that you need and you've handled all of the quirks of Monty Negro's VAT system and so on. So sometimes the boring and hard problems overlap a bit. And in this case you really benefit from the additional attention and the additional users that you can get by releasing to the wider PHP community. And when I talk to other e-commerce maintainers, they say, yeah, we love libraries. So let's create a cart interface. The problem with that is that nobody cares about your cart interface. Why? Because someone else can create a cart interface in 10 minutes. Everyone has an opinion about data models. If your library can be reinvented in an hour, it will be reinvented in an hour because you're obviously not providing enough value. The library should be something that saves someone a week or a month of effort. And by doing that, you know that you're providing true value. And an example of a boring problem that you probably don't want to solve is, for example, logging. When was the last time you wrote a logging library? You don't. But if you use monologue, suddenly you have a hundred handlers for all kinds of backends. So this is an example of good value that you probably wouldn't reinvent. Unlike routers, for example. Everyone has their own. And now that we've seen all this, it's time to think about what it is that the troupel can give back. People say that you can find anything on packages, but there's quite a lot you cannot find on packages but things that the troupel has. And this is just my personal opinion, so I'm just throwing ideas out there. It's definitely something we should have a big discussion about. One of the examples they have is migrate. Migrate is one of my favorite projects from troupel six times even. It has a great API for loading and extracting and transforming data and performing data migrations. If we had a generic ETL library, then there would definitely be value in that. And we should look at whether we can move some parts of migrate outside of troupel. The second one is our darling views. We always say that views is something that makes troupel special. And what I've seen is that views is starting to get reinvented in the symphony community. For example, Celius now has a reports bundle and Oro platform, which is a really advanced technical platform that powers Zakenel and Oro CRM. I don't know if you've heard about them. They also have their own views thing that basically allows you to define a view in YAML and then transforms that. But it's all very primitive. It doesn't have the concept of pluggable fields and displays and all of the bells and whistles that we've accumulated over the years. So there would be value in providing some pieces of that, at least as a guide to follow. And there's more. Let's take the incredibly cool Drupal 8 render caching. So if you've seen the talk that Wim Lear's and Fabian have given, you would have seen that Drupal 8 is really smart about knowing what it can cache and for how long. Because each object that's a part of the rendering provides its own cacheability metadata and then that is used to assemble the final knowledge that's then used to cache different versions of the page or decide whether they can be used. So I don't know what can be taken out of that, but there's certainly some knowledge there that could be taken. And there are more and more examples. You can surely think of them. Modules that have been worked on and reworked for many years that have some kind of domain knowledge that can be documented and shared. So that's something to think about. Time for questions and a discussion. Let's see how much time we have. Okay, so we have five to 10 minutes. So there's this shy period every time when no one asks and then I get one question and there's five more. So let's start with that first one. Hello, so first of all, thank you very much for this talk. It's good to see people getting together. It's more of an idea rather than question because twig is something that we use a lot everywhere. And probably on that, like even twig extensions, do you have any twig extensions yourself that you maybe thought that you could share because those are in general really, really simple to share across different programs? Yeah, commerce does not define its own twig extensions. I don't know if core has something that's unshared, but I do know that people behind twig and core have always been in tight contact with the rest of the symphony community. So if there's anything shareable, I think they are probably aware of it, but I haven't looked into that myself. Yeah, it's just very simple for everybody to do. And even like in general, share these kind of simple snippets with the community at Drupal and everywhere. I will be at the commerce guys booth downstairs in the exhibition area for the rest of the day and tomorrow as well. So if you have anything else to discuss, feel free to find me. We also have this huge sprint on Friday. We will be working on Drupal commerce. I will be available to discuss libraries. So feel free to find me, get a small task maybe you want to work on or just work on anything that's correlated. We do need to get RC1 out after all. And make sure to evaluate the talk. Thank you.