I am Ryan, this is Matt and Boyan from CommerceGuys, and we are here to talk about creating online stores with Commerce2.x, which is the Drupal 8 version of Drupal Commerce. CommerceGuys is actually a much smaller company now. It is the three of us with a plus one, wherever Doug is, there's Doug. We had a chance to reboot the company at the beginning of February. I guess basically we spun out of platform.sh, which was the Drupal optimized platform as a service that CommerceGuys had previously incubated. And we found a way to separate the companies so that they could each kind of grow at their own pace, unencumbered by the other. And it's given us a chance to kind of reimagine both what our company does, how we make money, and I guess also what our philosophy is for Drupal Commerce. Excuse me, I'm trying not to let the allergies get the better of me. It's just allergies. So in so doing, in starting over, we kind of took a step back to think about what is our mission and what is our purpose with the work that we're doing, both with Drupal Commerce and with our client services and other things that we're up to, as we kind of settled on this idea that we are collectively engineering simpler solutions to the hardest parts of selling online. So that's gonna change the way that we address core improvements in Drupal Commerce, the contributed modules that we're developing, the recommendations that we're making to our users and to developers, and also just the partnerships that we're able to form. And so we've kind of begun to rethink about Drupal Commerce as not just a truly flexible platform for building anything, but rather a platform that helps developers solve more problems, not less, whereas before we were very un-opinionated and just really focused on flexibility, now we're thinking more about how can we solve more problems than we're creating with our flexibility. We also changed the way that we deliver services and the way that we partner with other Drupal agencies and developers to develop the modules. So we actually have our friends from Acromedia here in force, I think there's more of them than there are of us in the room. And probably more Drupal Commerce contributors from their team than ours in the room now too. And with Acromedia we deliver all of our client projects in the US and Canada and we get to take advantage of their team's UX and design experience and their rich history of developing enterprise e-commerce sites. So that we're able to surface some of the hardest parts of selling online, not just for ourselves and our end users, but also their users and their customers and create better solutions together. So that's what we're up to, generally speaking, but more broadly speaking too, Drupal Commerce 2.x has a chance for us to take part in the Drupal movement off the island. So we've heard that for years, that Drupal needed to get off the island both in the core and contrib space and find projects that already exist that solve the problems that we're addressing and take advantage of them. But it wasn't really that easy to do before Drupal 8 unless you were willing to work without namespaces and with the library's module and so on. But with Drupal 8 now and Composer, it's a lot easier to get off the island. But what we found is that we just need to import onto the island, we actually have a lot to give as well. So it's not just about finding new dependencies for our projects like Left Pad or other dependencies to break our code in the future. It's also about thinking through what are the things that we are doing in the Drupal space with Drupal Commerce and the other modules that we're writing to support it that would be more generally useful in the broader PHP world. So that was actually the starting point for Drupal Commerce 2.x development. I think we've been active on it for a year and a half before we opened the branch on Drupal.org. And that was really about finding mindshare with a handful of libraries that actually did address some of the hardest parts of selling online such as locale-specific currency formatting. How do you format the Euro for Germany versus France versus in the US? Here we just don't yet. But also, how do you create address forms that are locale-specific that have validation rules where possible, that have formats for every country in the world, for every language that they support in their country? That all that stuff is really difficult to get right, but we found solutions to encode that knowledge into a handful of libraries that we've released on GitHub. And then before we ever even turned them into Drupal modules, found other projects that would be interested in making these a part of their stack. So Symphony is adopting parts of the IMTL library that Boyan was able to create based on the CLDR data set. Foxy Cardi's using the tax library. I'm not sure who's using addressing, but we're trying really hard to get some big competitors to use our addressing library. And they're actually really interested in doing so, which is really neat. So we got the libraries going and then once those were up and once we had actually achieved some market share and production usage of those libraries, we got to step back and think, well, what are the lessons that we learned from commerce1.x that we can use to redesign the actual implementation of Drupal commerce on Drupal 8? And I already mentioned one, and one of the biggest challenges that we faced with commerce1.x was that we essentially expected everybody using it to become an e-commerce expert. So it's nice as a framework to really focus on flexibility and interoperability with other systems and other sub-modules. But at the end of the day, they required each one of you building a commerce site to know how to create an optimal checkout workflow, to know how to customize the backend for your end-users fulfillment workflow, to know what analytics service to find, how to calculate sales tax properly, what payment systems are the best and the most PCI compliant and so on and so on and so on. At the end of the day, most of you don't have time for that and so then you end up using other systems. Or at scale, this is maybe not something that we've addressed before, but it's something we're finding now, is when businesses adopted Drupal commerce and then scaled, they quickly found out that a handful of contributed modules in our ecosystem weren't built with scalability in mind. And there's nothing that we can really do to prevent somebody from going off and creating a Drupal commerce project and sort of grabbing the namespace for like a big subsystem. And I'll pick on us the discount module or keep on modules that we kicked off. Once that namespace is taken, that becomes the de facto solution for that part of doing e-commerce with Drupal. And if it wasn't written with scalability in mind, then suddenly you have the marketplace module on a site that's doing $20 million and they're getting an order entry in the database every time somebody hits a product page, which is crazy. So we're trying to find ways to mitigate that, to be more proactive in architecting contributed modules and working with developers to make sure that the solutions that come out are really solid default solutions for stock, for shipping, for discounts, and on and on. I don't really know all the ones that we have going on right now. Licensing, various payment gateways and tax integrations. I can't think of what other lessons we learned. Well, we learned that we need to prioritize UX more. Yeah, yeah, definitely. We didn't have the inline entity form module whenever we launched a Drupal commerce 1.x. And so that was probably the biggest gripe that I didn't expect it, because I actually thought the user experience in UberCar was pretty poor for managing product variations and product pages. And I can say that because I made it and it sucked, especially if you wanted to ever change any of the SKUs that you had on a product page that would get blown away if you ever added a new attribute option or saved the form without resetting all of the SKU variations. And so we had what we thought was a better underlying data model. And I think I just kind of expected the user experience to resolve itself and contribute. And it was a really lofty dream that just basically hurt us for a year and a half in terms of adoption and real-life customer success. So inline entity form module was created. A few other modules were created that ended up improving the user experience. But you might say they were, in some sense, a day late and a dollar short, because people that already ruled Drupal commerce out as a solution because it didn't, I guess because it required too many clicks to set up product pages. So of course, this time around, we made sure that inline entity form module was done first, and now depending on every word within Drupal commerce. And so with Drupal commerce 2.x at a high level, it's been built from scratch on Drupal 8. We have an alpha four that was released two weeks ago almost. And really the last major system that's in development prior to a beta release is the payment system. And so we've been hacking on that this week and we'll do so tomorrow as well if you're here to sprint. We'd be more than happy to have your help. And also to get you up to speed on what it's like to develop for Drupal 8, because it's very different from Drupal 7. At this point, I think, I've probably forgotten everything I know about developing for Drupal 8 because that was like a year and a half ago that we started. And then Boyan really took over and has been leading the development since then. And he's doing a fantastic job, not just of Drupal 8 development, but also of integrating other contributors from other companies to the process. And then last thing that we have to do before we have like a real solid beta is our commitment for the beta release is that there will be an update path from one beta to the next. And so, of course, that means solving things at the core level, like updating default configuration from one release to the next and Matt's been working on that.  Yeah, one of the main things blocking us currently is that we still have active bugs around translations and how we do revisions. And we want to make that really solid before we actually tag a beta. But that doesn't mean you cannot start building today, it just means you would need to reinstall in like two weeks to re-import the configuration and templates you made in the meantime. But we are working hard to resolve that as well. Yeah. So I'm gonna actually hand the mic over to Boyan and Matt to take us through what it looks like to actually install the Drupal commerce site and then what features you'll find out of the box right now and what's coming. Just make sure you rock the mic so the recording gets in. So one of the biggest changes that Drupal 8 brought us is the usage of Composer. And if you've ever used Drush to download the module either using Drush DL, the command or Drush Make, then you already know how Composer works, except Composer is a PHP ecosystem wide solution that can also resolve dependencies. So that means that if you're downloading a module, it won't just download that module, it will download all of the modules that module depends on and any PHP libraries that the module depends on, which is really powerful. And since we have taken pieces of Drupal commerce and put them in external libraries, that means those libraries need to be present for commerce to function. That's why commerce can only be installed using Composer. And we've made that really easy. If you have an existing site, the only thing you need to do is run Composer, require Drupal commerce, and that will download Drupal commerce, it will download address module and inline entity form and all of our dependencies and it will download our libraries ready to use with a single command. And for people who are starting a new site, we have another command, Composer create project, which is basically the Composer response, well, way to do distributions where with one command, you get the latest Drupal release, you get Drupal commerce, and you can keep it up to date with one command. So when you run Composer update, it will update Drupal core, it will update commerce, and it will update all of our libraries, which makes maintenance really, really easy. And you can either do this on your server or you can do it locally and then commit or upload the result. So I really think that by enforcing this workflow, we've actually made it a lot simpler to simply maintain and keep our website up to date. You can read more about this on our documentation pages. So this time around, we are trying really hard to have great documentation from day one, and we started by documenting the install process, so you can read about why we are using Composer there, how, and of course, all of the details around the process. Of course, commerce has many module dependencies because it simply provides a lot of functionality, and most of the dependencies are the ones that we have built ourselves, and some of them are actually more popular than commerce itself. Inline entity form being the biggest one, so that's probably one of the most popular Drupal modules we ever built after views bulk operations and entity reference. Yeah, so inline entity form allows you to edit related entities on a parent entity form, and we use that for products and product variations. We use that for orders and line items, and this module is now in Alpha-6, soon to have a beta, which means it's in good shape and it's being used out in the wild with a few remaining bugs. I guess for media, I'm wondering. Yeah, so the nice thing about inline entity form is it's now shared with the media project, they are co-maintaining it with us, and Acquia has actually sponsored a lot of the porting and a lot of the bug fixing through the module acceleration program, right, along with MD systems and others who sponsor the other maintainers. Now, the next one is address, which is a module that inherits address field, so for Drupal 7, we had address field as a way to store an address, format and validate it. For Drupal 8, we've created an entirely new module that's based on our library and it uses the Google data set that was originally made for Android, which we got Google to release under an open license, and then we pushed many of the fixes we ourselves had in address field into that, so technically we are Android contributors now, and so we took that data set and started using it inside Drupal, and that means that we have an address format for every country and we have a list of subdivisions for every country, and when I say subdivisions, I mean states, provinces, for some countries, even multiple levels, for example, Brazil has two levels and China has three levels of subdivisions that you need to select when you're entering an address, so all in all, I think there's over 14,000 subdivisions for all of the countries that we cover, and we make sure that they are actually translated and cached and it was a really, really big effort, and I'm really proud of the work we've done there. And yeah, he's not tuning his horn enough. Yeah. Yeah. He's literally a committer now to the Android SDK because of Drupal commerce and getting off the island. We went far and wide. You can see that for example, we now have a UI for address formats. This was previously needed because of course, no address format can be completely precise. So if your client calls you and says, look, the postal code is not supposed to be required, you can just go into the UI and edit that and send us a bug report later, basically resolving your problem right away. We also created this concept of zones which is basically made so that your rules or codes are easier, so a zone is basically a collection of countries or provinces or postal codes that you can use for taxes or shipping, so that you can say that you have one set of shipping services for California, another for Texas, or you can group by postal codes or whatever granularity you need. So you create a zone and you can specify the least of geographical groupings and then use that elsewhere in the system for any kind of matching. This counts taxes, shipping, all of it. We also joined forces with the profile two team, so instead of us using customer profiles and profile two having its own thing, there's now only the profile module which is used everywhere in Drupal and we will make that the de facto solution and we use that for our billing and shipping profiles, working hard to have a beta there as well. We created a really good workflow solution. Previously when you had order statuses, you only had a list of them, so for example, validation, completed, canceled, but now we've extended that concept with full workflows so that we don't just have states but we also have transitions. So we know that based on the state that the order is in, we know which steps are next allowed and which steps you need to take to complete the workflow. And this is code-based, you can create the workflows in YAML and then use that to plug into our own workflows and add any processes that your client might have. So for example, when the order is placed, you might require the client to check the payments made for fraud and do other kinds of verifications, contacting of other systems and then so you can use a workflow to make sure that has all happened and that it's sent to the correct people, the correct department and so on. This is all nice, but we're here to talk about commerce, right? So let's start with the actual commerce features that we've done. We started with the currency management because Commerce 1.0 had its own currency list, which frequently got outdated. So we are now using the CLDR one. So CLDR is this really big project maintained by Google and Apple and Microsoft and others that creates lists of currencies and countries and languages and meant a lot of other data needed for systems like ours and we not just get a fully up-to-date currency list with releases every six months, we also get translations in over 200 languages. So that means that if you need to show a list of all currencies to the user, we always have them translated to the language that you're currently using, which is pretty great and we actually have the same thing for countries so you don't need to translate the country list manually either. We have all of that built in. Other than translating the currency names, we're also translating the currency symbols because we found out that the currency symbol can actually vary between countries. You don't show the dollar symbol the same way inside the US and outside the US. So all of these are the nice features that we got by cooperating with the CLDR project and integrating that into our libraries. We significantly improved price formatting to be locale aware because we realized that it's not just language or country specific, it's both. So that means that a price can look different for Germans in Germany and Germans in Austria and we now know how to handle that and we have the address formats once again from the CLDR project to make sure that currencies are always formatted the right way. So I think we've made a really big step forward there. You can read more about that on our blog. So on Drupalcommerce.org slash blog we have easily over 10 blog posts about commerce to the tax functionality going more into detail about all of these things. And then we worked hard to make taxes easier. We realized that tax rates actually change all the time. At least in Europe, you can expect the country's tax rates to change once a year or once every few years. So if there's a tax rate change planned that for example for January 1st that means you're spending New Year's Eve with your finger on the button so that you can submit that form and start charging 20% VAT instead of 19%. And this is becoming more and more complex because in the European Union we need to know the tax rates of all EU countries when we are selling digital products because we always need to charge the tax rates of the customer's country. If we have a customer from Germany we need to charge the German VAT same for French customers and French VAT. So we knew we needed to fix this to make sure that people outside the US can actually use e-commerce without needing to pay for a tax cloud. I mean the US is a lost cost to be honest. In the US you need to use a tax cloud but the rest of the world isn't. So for the EU that means we have a list, our own data set of known tax rates that's being kept up to date with Foxy Cart and others. And we are doing the same thing for other countries like Australia and South Africa and others. So that means when you install commerce based on the country that you specify we'll be able to import your tax rates automatically and then we have logic that allows us to choose the right tax rate based on whether your product is physical or digital whether you're doing B2B or B2C and many other things. We, this logic is now completely divorced from rules so you can write tests for it and make sure it's working well. I said the US is a lost cause and it's just my way of dealing with the complexity where basically US has tax rates that's for I not from states to state but from zip codes to zip code which means that there's no way for us as commerce developers to actually pre-define them for you. It's something that you must do on your own and then if you have Nexus in multiple states that makes the problem that much more complex. Yeah, so for that case we would integrate with Avalara and recommend using a tax service like them to automate taxability, tax rate selection, handling tax holidays and everything else that goes into that and remitting it, reporting it, et cetera, et cetera. Once again we have a good blog post describing all of these problems and our solutions on the Drupal Commerce.org website. A really big change that we've introduced is support for multiple stores within a same Drupal Commerce instance and this addresses two different use cases. So the first one is the so-called Etsy use case where you allow your users to create their own stores with their own products and then visitors can add, can have multiple cards from matching multiple stores basically buying products from your users. This is use case number one and use case number two is a company that actually has billing locations in multiple countries. For example, platform.sh has a presence in France and a presence in the US and based on where you are they will charge you from that country and charge those taxes and having a store entity allows us to do this because the tax settings and the currency settings are now store specific and all of the entities in the system are store aware. This is one of the things in commerce one of the tax that country try to do but it's much harder if you don't plan on doing it from the start. So that means that one order always belongs to one store because that's the billing location used but the product could be visible in multiple stores if need be. So for example, if you have the platform.sh products, right? Or selling kinder eggs. Yeah. You strict them from being in the US? Yeah, kinder eggs. Best thing ever. We worked a lot on redefining the product architecture and what we've done is an iteration on the product architecture that you saw in commerce kickstart. So instead of creating nodes, you create products which behave the same way as nodes used to do and then on the product page using inline entity form you create individual variations and those variations hold the skews and hold the sets of attributes and then they are the actual thing that is being purchased and compared to kickstart we actually have really robust dynamic generation for the variation titles as well as solutions for other problems we saw while implementing that kind of an architecture. So I think this really makes products much easier to use and I won't actually talk about product attributes because you deserve to hear Matt a bit as well. So product attributes and one dot X when you worked with variations like picking a size or color oftentimes we push for using a term reference and you'd use taxonomy terms and that would represent your value. Well, we're not controlling that as well. So in two dot X, Bojan created the product attribute value or commerce product attribute entity. So now your actual values like your small, medium, large or their own entity which gives us greater control and a better way to manage them. So instead of sending your store owner to the edit your taxonomy terms now they actually go into their commerce UI and they have a list here where they create a new attribute of color and then as they add their red, blue, green, et cetera they have a giant list that they can just edit and then save right here. So now it's in its own UI which gives us greater control and also when you're creating a product it's much more explicit because it's rendered from that list and there's just one single area to go edit them. Which maybe you have prevent nice things like letting administrators delete attribute terms that have already been purchased and suddenly your whole. Yeah, and so the fields are automatically added or not automatically added but when you wanna add an attribute to a variation type for your t-shirts they need to have size and color you edit the variation type, you check a checkbox and then behind the scenes we add that field for you so you no longer need to go in and say well I need to make this any reference field and pick the specific type that's generated for you. And at the same time one thing that's not covered in slides right now because we just worked on it is the concept of fancy attributes. In 1.x there was a commerce fancy attributes module which let you render colors as a swatch on the add to cart form and on the catalog which we're all pretty familiar with with the big e-commerce sites. So now using attribute value we have the form display and actually view display and we're rendering those when you need them so on that form you could display on the add to cart form you could display the color swatch so that way people have that experience and your catalog you could render an overview of all the available colors so that when they're browsing that one image of your product they can also see there's other colors available. And I'm not sure if that's a familiar concept to most people the idea that in Drupal 8 now instead of just having an interface to set the display of fields in different view modes you also have form modes where you can determine how fields and other attributes of an entity are rendered and selectable on different forms including just like not showing widgets at all on forms that you don't want that field to be present. And so we're using that for product attributes and also a few other areas that they'll get to. So the one great thing with it is that we now have a UI for order and line item types in core previously this requires two contrib modules that are now no longer needed. So that means that you could have separate order types if you wanted for physical and digital products or event registrations or trainings whatever you're doing and each different order type can have a different workflow, a different checkout flow and a completely different logic which means that for very different kinds of products you can provide completely different experience to your customers. One of the places where UX is of course important is the order UI on the admin side. We started by first creating a wizard which you cannot see in this screenshot but it's available in our blog post that allows you to create a new order step by step choosing the customer and then adding the line items and then adding the payments and everything else. We also adopted this pattern of two columns that core has and we are using the right column to show you information such as the IP address of the order geo location once integrated and to simply provide a better experience. And this form will be expanded as we add support for payments and adding manual discounts here. So one of the big complaints we had with commerce model text was the admin UI for orders was not powerful enough and requires additional contrib modules but now we are making sure that is really both powerful and extensible from day one and you can see at the top that it also shows that the state of the order that's the current step of the workflow. I'm not sure whether it says yes. It shows that the order is still in draft which means it hasn't been placed and it's not yet being processed by the system. You are still adding line items to it before the customer approves it. And to touch on what the product attribute values and the form mode. So we have the edit cart forms which are now based on the line item type. So this way your whole edit cart form is based on the line item that your product type is going to be using. So our variations can be rendered as radios as a select box or the rendered attribute as we are saying. And then let's say that you have a trophy shop or someone lets you buy custom cakes online and people can write that sweet little message on it. You would add a text field to your line item type and in your form display mode you would simply change that from being hidden to the text field widget and that would then display it on the edit cart form. So when someone clicks edit cart it creates that line item and sets that field value. So now you're able to easily customize your edit cart form, we're in 1.x. You're able to add line item fields but that amount of customizable functionality took some extra code possibly. But now you have full control because the edit cart form is powered by the form display mode and field widget plugins. So basically get to cart form is a form for creating a line item and we work very hard to clean up that code since it was very complex in 1.x due to the many things that code actually needs to do. It was so complex, I think we have like a four year old issue about making it function more like a line item ad form. That's not resolved and probably won't be. Yeah, because of backwards compatibility it's really hard to fix things if they're going to break existing sites. And so here's an example of the managed form display UI. So the purchase entity is what says in the order this is the product that the customer bought and selecting the attributes is actually just a field widget which means that if you have an advanced use case you extend our plugin class and you can write your own field format or field widget to customize that experience. And then at the same time for the custom text that's the text field there. If you want to expose quantity you change that from being hidden to the number field widget. So if you don't want to show quantity you hide it in the form display if you want to drag it on up. Before that used to be a check box hidden in the field form matter for the ad card form and you may not have always known it was there but now it's one single place to edit your ad card form. It shows a general pattern of us not hiding things in the field UI in the settings for an actual field or an ordinary format or so that it's more accessible to users. And then if you want to read more about the ad card forms check out our blog and the blog post on the alpha three and right after that there's actually a blog post coming the fancy attributes and how to set that up and explore that. Yeah, so as I mentioned when I was talking about stores we actually support having multiple shopping carts now so if I have two stores and ad products from both stores I will actually see multiple carts and be able to check out each of them separately which is basically the UI the test was. You could technically use this to allow people to see both a previous cart as well as a current one but it's probably not the UX that you want. One thing that I have explained to you is I've had different sites I've built where customer support engineers need to build a cart for somebody and then the question is how do they build that cart and how does the user check out with it? Well now in carts do we cover that? Carts are now a flag. So your customer support engineer could build an order for somebody and then while it's still a draft say that this is a cart save it and then instruct a customer to visit the cart page. Well now this order that they've constructed for the customer is there and the customer can go check out. No longer do you need to say like well actually let's set up masquerade and say that we're that user and check out as them. No your support team can build orders and then the customer can easily go check out with them since they can have multiple carts. You don't have to worry about it being hidden because they already had a cart that was active. I mean speaking of both carts we had the new shopping cart block and 1.x we didn't ship with the shopping cart block did we? Yeah we did. And just a view of the two desks to the side of the bar. So now what happens is it does provide everybody has an icon on their cart so we have that provided by default and it's just using CSS so you can easily change it. It shows the count and then it will say items and this is a block that's configurable so you can change it from say items to say widgets or leave it blank because you don't want that. If you click on it it will display a drop down of an overview of the cart. Which is a view and you're able to either disable that or then customize a view. And it will actually show an overview for each available cart so if you supply if you allow for multiple carts they can then see an overview of everything that they have that's available. It does have like a max height set to like 350 or something of that sort so that way it doesn't take up your whole screen. And at the same time when it was added there is a layout CSS and a theme CSS file using the new D8 library system. So that way if you don't want our shopping cart or some of the styling we've done so it looks good in Bartek you un-set that library or override it with your theme. You can keep our layout library for the cart block so that way you get the generic styling for doing the drop down but then just remove our styling that makes it gray or fit in a certain way. So now you don't need any more exclamation point and importance to override our contrib styling. Is that asynchronously loading yet or is that still pending? It's loaded on render it's not asynchronously loaded. Okay. So the actual block is a good example of some of the UX research we did both for checkout and for carts where we analyzed over 30 most successful e-commerce experiences and we read many reports and just try to see what the most optimal experience should be and in the case of carts it was very obvious that every site actually only had this icon with an optional expansion with a summary instead of an always visible cart summary somewhere in the sidebar and for checkout that meant recognizing that we needed additional functionality which I'll show later. So checkout is one of the pieces that we pay the most attention to. We've easily spent a month working on this and the code that you can see is actually the third rewrite of the same concept. You can now have different checkout flows for different order types. You can create your own completely custom checkout flows since the checkout flows are actually just pluggable forms. If you want to implement a completely custom form you are free to do so. On the other hand, you can use our own implementation which supports checkout paints. Now the checkout paints are pieces of the form that contributed modules can provide. For example, a paint that allows you to agree to the terms and conditions or to enter the billing address or to select the payment methods. And we've redesigned the actual settings page for the checkout flow so it looks like the one for managed display where you can use AJAX to actually configure each of the paints. And of course all of this is exportable since it uses a combination of plugins and config entities. So thank you, D8 and CMI. I think that the patch for actually making that exportable in one of the text lines that a week ago. And the improved checkout UX is not there yet but you can already see some of the things that we have. We have a checkout progress block so you don't need the country module anymore. We have a page where you can log in or continue as guest or if you do not allow guest checkout you can register. And we have a redesigned review page where you can click edits to go back and edits are relevant part of the form and many, many other improvements that will be rolling out over the upcoming releases. You can read more about some of this work on the Alpha 4 blog post and there will be more in the next one. And finally we are working on payments. This is work that hasn't landed yet. It's on a branch on GitHub and I will be pushing more as soon as the conference Wi-Fi starts working again. So in any case what we realized in one of the text was that the payment modules were too large because they needed to implement UIs or capture industrializations for issuing refunds and then they needed to integrate with the country module to support tokenization so we decided to bring all of this functionality into core to make the modules really small. That means our API is twice as big as it was in one of the text and it's taking a little while longer but it also means that porting the individual gateways should require a lot, lot less time. And since we are using Composer which is pulling in libraries automatically that means that each of your gateways can actually require the SDK and that SDK will automatically be present and used. In one of the text we didn't use many SDKs because they required an extra step but now that they're installed automatically they can be used to further cut down on the time needed to write a payment gateway. And we are starting with Braintree as our number one implementation. We want to volunteer for Stripe because it will work pretty much the same way and then AcroMedia is also starting work on an authorized.net implementation which is also popular. We will be of course working on more gateways as time and client work allows leading up to the final release. And so the hidden undernote there is that there are actually Drupal 8 stores being built right now that need these payment gateways and that's why they're being developed. So I mean as far as like readiness goes like we're already beginning to use Drupal 8 and planning launches this year that are using these modules and others that we've talked about. I guess it's question time. Which I want to touch on Ryan. Ryan said because I'm sure one of the first questions was like well when can we start when we can do something. By end of summer we will have an enterprise each Drupal 8, Drupal Commerce site ready and good to go. So if you're wondering. Or you don't have a happy customer. That doesn't mean that yeah. It doesn't mean that 2.0 might be there but we're building and we need to be ready by the end of summer with an enterprise client. So if you're in discovery phase get started you can work on architecture and fields. You know as Ryan said until we hit beta you might have to do a reinstall but you're not really gonna be adding that much content right now. You're still in architectural phase and discovery and making sure that you know all the fields are in place what product types you need. So we don't have definite dates but like I said we have a go live at end of summer so. First question. Hi Chris Weber super fan. I am absolutely thrilled with all the work and just one second of nerding out great choice of working with Braintree they're excellent. I've been having a lot of joy working with them. My main question is about some of your early blog posts we were talking about how would be possible to write your own entities through custom code and then be able to extend some kind of base class in order to make sure that that is a thing that the system works with. You're saying to make them purchasable? To make them purchasable thank you. But what extra work am I signing up for? If I do that do I have to create my own custom forms to work with my own custom entity do I have to work with my own custom workflows that my custom entity goes through what part is it hook in and what parts will I have to sign up for as a developer? Yeah you would implement a completely custom entity type with its own at edit UI or you would generate one using Drupal console and you would make that purchasable. But I should mention that most people will not need to do this the products which variations have the architecture needed for the 99% use case. The reason why this exists is to support alternatives such as bundles or anything that's very client specific. We had some big enterprise clients that had completely custom product architectures and this allows those kinds of architectures to be immediately visible to the rest of the system so they can be purchased and as to the order and everything else. I guess what I'm asking is if I create a custom entity do I have to create a custom checkout? Do I have to create a custom? No the whole point of the API is that commerce is automatically aware of your entity type so it can be added to the cart checked out, a discount applied, taxes and so on. Hi. Hello, thank you for all your work. I'm still using Uber cart on Drupal 7. So my question is I have three different beauty stores on three different platforms and I don't want to write anything. I just want to import data, is that feeds or is there an easy way just to like, how can I get products in it without one at a time having employees like, you know. That's a lot of... So you're looking for a migration path, right? Well yeah, just something where I don't have to pay somebody to type in 1,000 products where I can just dump it all in there. So it's not a migration? Yeah, yeah, I mean so the feeds module's not... Feeds isn't really for Drupal 8. Yeah, I know for D8 the main feeds module is still under porting and like a commerce feeds isn't being ported right now. I'm currently focusing on commerce migrate myself but I've kind of been making that a path to work on those kind of things. So that way when we're ready with 2.0 we have one, I've been focusing on migration path. People are gonna want to migrate over but then I would like to see feeds integration. But actually we are working, if you have like a CSV file you have to write some code. There is some code involved but I know we're importing about like a few thousand variations using migrate source CSV and we have a full product catalog being populated right now into commerce 2.0 or 2.x using migrate. But there is some code that has to be written. So it's a not yet? Not yet. Will that be on your blog or can you need help testing because I wouldn't mind. I think for that I want to try to push the person who worked on that to write a blog. They've started to write some things. I like to poke and prod them a little bit more because we need that, we need that knowledge share and especially we need to give visibility to it ourselves. Because it would also be nice to have customers but you know a customer comes and they'll log in again if they really want something but it would be nice to have them as well but the products I feel like, you know. Yeah, the reason why the imports are not ready yet is because Matt is actually working on multiple targets. He's got data imports from CSVs and from Drupal 7 we are using the Kickstart data set as an example and from Uberkart. So very soon we will have all of these targets to import from but of course since the effort is probably taking a while. Okay, all right, thank you. Thank you. I was wondering about the inline entity form and its use and wondering whether or not you have on your roadmap to allow for custom display modes for example so that the rows that are added instead of having like that status column which I pretty much never use and maybe not just the title but a image of the product or that sort of thing. And I'm wondering if that's on your roadmap and how soon if it is. Not yet, not yet because we spent a month rewriting the guts of inline entity form to reduce technical debt and make it more flexible and we are still in that mode until the code is stabilized we won't be implementing new features but I'm guessing in a few months we should be able to start accepting basically adding that to the roadmap. I would accept patches in the meantime of course. Okay, thank you. Can you talk a little bit about your vision for inventory management and any potential integration with like external accounting software? I'm thinking in the case where you've got a brick-and-mortar store that's augmented by their online store. Yeah, so two days ago Guy Schneerson who did the commerce stock module for 1.x posted his vision for stocking 2.x and he already has code implemented and the idea is to support both external stock systems and tracking stock internally. So that's being worked on from multiple places it's not ready yet. I think it will take a while longer but it is- Just as long as it's on the radar that will be happening. Is Jin Sheng's blog post not relevant? Diana's ready to launch. Yeah, that's also relevant from a UI side. We'll make sure to actually link to that from our own blog and then tweet from our Twitter. Yeah, there's a contributors website in Shanghai that uses stock management and he basically created the first pass of the stock module for Drupal 8 and we'll continue to make sure that that's transactional, multi-locational where and so on. And I had a conversation with an Australian contributor in the same, maybe same situation where he has multiple physical retail locations and is extending that to work online and wants to make sure that's all synchronized. So that's- It's the people on the way of only buying what you're out of stock. Yeah. Yeah. Yeah. Thanks. You bet. Hey guys, big fan. Eric, Peter. Eric is my name. So the order types I think is really surprising. I wasn't expecting to see that. It's exciting to me because there was a sort of half working solution in Contrib which when you installed it kind of ended up breaking a lot of stuff. How tied into, say, fields and how dynamic is that kind of thing? Like if someone adds a physical product, you know, if you have digital and physical order types, can that be changed kind of on the fly? Maybe you flip from one order type to another. Right, exactly. Yeah, vice versa. I think it's a discussion for after this. It's generally not a problem. We, I designed it for both the case where you're basically funneling, shipping and digital products into different types or maybe having both of them in the same one. Both are possible. We have a really neat idea for how you could add the same fields for two multiple types. We're calling the idea trades. We'll be implementing that as well. But I'll be happy to continue that afterwards. Awesome, thanks. Thanks, Eric. Hey, Ryan. I'm really sorry for using the WooCommerce.   Yeah, yeah. So Lee pinged me about a barbecue store, I guess last year, and ultimately decided not to use a triple commerce. Well, actually truth be told, I used UberCart in 2008. Yeah. Little did he know at the time, I also just released my first WordPress plugin.  Well, there's a little bit of honesty there, but I wanted to say the last two people that asked that. Hello. Hey. I'm here. The last two people that asked questions really helped me to kind of see that migration of products and inventory and stuff like that is pretty important. And so you mentioned something about discovery phase. I would say that not just for my barbecue business, but for where I work, that's gonna be something that I'm going to probably be pretty active in and just voicing some opinion on different kinds of data that we might be pulling over from our systems, which are very proprietary at work. But I just want to congratulate you guys on everything that I saw here was, it was a, it was a god, it's good work. And I've been talking to my brother about our barbecue sauce website. And he's been troubleshooting an error with WordPress all day. Oh, not surprising.  So I'm gonna give him a breath of fresh air that at least maybe by late summer or end of the year, we're gonna start playing around with the commerce too. So anyway, I had to give a confessional because I went from Shopify for a year and a half of being dinged to death by every little thing that I took for granted in Uber cart and Drupal commerce with other projects. Because a lot of the contributing modules you guys take for granted that you can use every day. If you go with like Magento or Shopify or something like that, get ready to shell out like 10, $15, $20 a month for each little thing that you think that you should be able to do out of the box. So hats off to these guys. And I look forward to end of the summer, early 2017. Hopefully we'll be selling our five barbecue products. I've got a huge, huge, huge list of them. I just heard a release date so I haven't even started the project. Yeah, I'm ready. I'm ready. We were just at an awkward point and I couldn't get it. But my question is my question is have you guys, I was looking at the entities and is it, I don't have a lot of experience with Drupal 8 yet but I have a weird way of making things into entities in Drupal 7 using like the data and schema module because that's where a lot of our stuff comes in. And it might help the other people that we're worrying about integration of the outside sources. Will any type of entity that is like an entity work be purchasable inventory or otherwise? You will need to explicitly code this to be that way. Like your entity pool needs to implement an interface. Okay. Part of the object-oriented nature of Drupal 8 is that you have interfaces that we can discover entity types that implement the interface and are therefore purchasable. In any case, let's explore your problem after the talk. Yeah, that's fine. I just, that's topical enough, but yeah, that's good. Cool. Thanks, man. Chris Urso, Sava Slabs, fellow Carolinian of the North Karate, nice to see you again, Ryan and Josh. Nice, nice. It's, maybe help me understand a little bit better. I guess my question, my question is are you all three just the primary folks working on commerce at the moment versus aero code and it's clear that you guys are working on some client work as well as the product and it's just clearly like a very important thing for the future of Drupal. And I'm sort of wondering if you're playing scale up or partner out more to ensure that you can. At the, I guess the core team within commerce guys is four people that are focused on developing Drupal commerce and then also doing consulting and architectural help and other development and integration work for customers. And I'd say that along the way we've probably had dedicated developers from a half dozen or more different Drupal agencies where people are willing to set aside somebody's time whether it's Sean or Jason from Acro Media to do work on UX or development. Gosh, was it, Thinkbean is gonna dedicate developer two days a week to help us during the build phase. So we're trying to scale ourselves by dedicating boy on not just two and developing commerce 2.x which we're able to still do full time but also to use them to integrate additional developers into the process. So I think that the core level of commerce guys have we've reduced the core team but it's still honestly a larger team focusing on Drupal commerce itself now than maybe it was before when we were very distracted. And then obviously like Acro Media and Actualis are both very helpful partners for us and not just delivering client services but also contributing to the development of the roadmap and modules and everything else. So I'm working full time, Matt is working about 20% and we're working to scaling him up but personally I would love it that we never actually have more than two full time people on commerce because commerce is not just our my project and Matt's, it's ours and we need to make sure that as a community we own it because it significantly reduces our bus factor and increases the ownership we have of the platform. So that it's not just me making the decisions that affect all of you but we are all together actually driving this thing forward. It looks great, I will see you at the sprints tomorrow and sorry I said Aero Media, it's Acro Media, my point. Orca, it's Orca Media. So we'll do the last two questions and then we'll wrap up, so go ahead. So earlier you touched upon. Oh you too, oh sorry. Oh my bad, we'll do the last three and then we'll wrap up. So earlier you touched upon the scalability problems that could occur in some implementations of commerce one. Can you talk more on the work that's been done to improve that for commerce two? Recommend read committed as your transaction isolation level by default, that gets you 90% of the way there. Yeah so some of the things we're doing, we've rethought locking because previously the pessimistic locking we were using didn't cause some problems for people who were not using the read committed transaction isolation mode so we are trying to make that better by switching to a combination of optimistic locking with explicit locking when needed. We are also reducing the number of inserts that are happening during the checkout, for example there are no more order revisions because they were just taking up space while increasing the number of queries. So it's a long death path and we'll be pursuing other optimizations as time allows after the day. Also we've made the decision to defer certain types of price calculations until actually necessary as opposed to the sort of commerce one.x method of on every page request recalculating pricing from scratch and also just like pursuing asynchronous like loading of dynamic elements like the shopping cart block. Like I said it's not done yet but we won't launch commerce two.0 without that being asynchronous and interested to hear more war stories and see what else we can do to improve the core. Okay, lovely, thank you. Yeah. I don't stand so well so I would say. No problem. Hello Ryan. This may be both trivial and misdirected but the way I learned how to use commerce was videos and so I'm just curious are there going to be videos for commerce too? Oh I don't know. Yeah Sean will make them. He just volunteered. Yeah, I mean we did the Drupalize Me series back in the day for commerce one.x and then we'll be able to work with Acromedia to do the same for commerce two.x and probably other partners as well. We just committed them to it so. Yeah, yeah. So this might play a little bit into the brain tree integration that you're working on but just the payments model in general is like recurring billing and sort of decoupling transactions from orders because you might make an order and then you'll rebuild against it for months or whatever like that. So that's something that kind of had to be filled in contrib space and in one.x but I don't know what your vision is for accounting for asynchronous transactions later on. The tokenization is in core so the change we made card on file is no longer a contrib module and that allows you to do recurring then in contrib recurring will definitely stay in contrib because that's use case specific and we are keeping the same general approach and in generally whenever you recur you really want to generate an order because that is the thing you are invoicing that is the record of the transaction that has taken place and the payment is a side thing just a record of the actual money transfer occurring. So you're envisioning is that gonna be in core or are you expecting that contrib is gonna handle in contrib suite like order creation on recurring? Yeah that's what commerce license billing does today for Drupal 7 and it's being ported already to Drupal 8 as well for our client sites. Well commerce license billing is in commerce licenses so commerce license billing will is yet to be started but we would be providing a similar approach in Drupal 8 as well. Thanks. Yeah. All right well thank you very much for everybody's time. I'm gonna enjoy the rest of the conference. Hey Mark. Thanks Steve. Yeah I think I know the... Okay. Oh yeah yeah yeah. Maybe we'll back port improvements as we can. In fact we're working with the client that's already like funding the back port of these new features we have. But we're trying to keep it minimal because of backwards compatibility. This is great.


Okay, this is going to be a rather short tutorial just building on to what we did last time with phone gap and their online builder for applications for mobile devices for iPhone Android Windows mobile blackberry so forth and so on and last time I showed you how to package your entire application that you wrote in HTML using JavaScript and CSS and all the necessary files for that into a zip file and Uploading it but I also mentioned and I know since I mentioned it people are going to ask so I figured might as well do a Video on it basically making app. That's just a portal straight to your site And I plan on doing this in a future video manually writing out the code in Java for a Android app in this series, but I'm going to show you how to do it very simply here And I actually haven't tested this out, but I'm going to assume that it works So hopefully I don't look like a fool here. I'm going to say Vim I'm in an empty folder by the way on my system I'm just going to use Vim as my text editor once again always just use whatever text editor you are most comfortable with for writing out your code so Looking at my web browser here This is the app that we created in the first part of this series Basically, it's just a list that we can quickly search through I've uploaded to my site at films like chris.com forward slash scripts forward slash list forward slash Index dot html that's where it is now if you're watching this video two years from now three years from now ten years from now It may not be there anymore. So don't ask, but you can go there. It might still be there. I'll try to leave it up So going back here, I'm going to use Vim as my text there And I'm going to create my index dot html because you may need an index that html For phone gap. It's going to be the main page of your application So now that I've I'm in the editor here. I'm going to say I'm going to say script. I'm going to just write this up just as it's a And html file, but I really don't need all the html stuff in here. It's not that important I'm just writing the script part of it and I'm going to say window dot location Equals and I'm going to give it my URL that I just said so http colon forward slash forward slash Filmsbychris.com forward slash scripts forward slash List forward slash index dot html, of course, this could be a php php file or whatever I can point it directly to Filmsbychris if I wanted to So this is a simple Redirect here using JavaScript. In fact, I'll go Google Chrome as my browser just to show you to test it out before we package it up I'll hit enter there and there you go It opened up my browser and redirected to that site automatically Going back here now. We'll just zip that up. I'll zip it up using zip I'll say I'll call it my app dot zip and Zip it my html. So there's one file in there to play it to 10% its size So if we list it out you can see it went from Well, since it's one file that actually got bigger But in most cases when you Compressing multiple files it does get smaller. There's not enough information in there for it to compress That's getting into how we compress files and it's an interesting read if you ever look that up. Anyway Going back here. I'm going to go to build phone build dot phone gap comm Also, you know once again as always be sure to watch the previous videos in the story Especially the one right before this because I'm skipping over a lot that I just did in the previous video There should be an annotation to the playlist somewhere on the screen. I'm going to go get hub Authorize this app. I'm already logged into my get hub account I'm going to agree to their terms and complete my registration here. Okay So now I'm going to upload that zip file. I'm allowed to upload one zip file to this and I need to go to My app. Okay. There's the zip file. We just created open We'll give it a name. I'll call it my redirect Of course call it whatever you want. There's also under settings. You can create an icon stuff I'm just going to leave all that blank. I'm going to say ready to build and it's going to start building it I'll click over here. And again if you go to settings here, you can create Icons and other information for this package. I'm just create. I'm just going to use the default and When it's done building and just as I showed in the last one IOS and Blackberry are going to fail at compiling because I don't have any keys I have to sign up to get some signature keys Android uses keys, but they're not required once again I think they're required if you want to post something in the Google Play store but if you're just going to distribute the APK on your website no signature key required and HP and and the Windows mobile don't require them at all So that's it for this tutorial other than showing you that it works in which case I'm going to cut to a camera view here and I'll scan this little QR code With my phone and install it. I could also click the APK there if I wanted to so Thank you for watching and here's the app working. Hopefully once again, I didn't really test this before I made this video Okay, here we are and I've got my phone ready. I'm going to open up Google goggles The only reason I see that this may not work is that it may not allow you to redirect outside of The current application like off the local domain, but we'll see I'll click the phone or the camera button there Come up here. It took a picture. It scans the bar code and I click the link and It starts to download it Go back to my home screen here. Go to the toolbar. It's done downloading I'll click on the APK. It gives me options.  I know you can't really read that I'll click open and in theory It should open up our application on the internet loading There we go it worked so that redirected to my site so we're actually inside a Local application. That's just a portal to my website so I can search through our list here Whoop if I type in letters that work and if those were clickable buttons They would do something so sorry about the quality of filming this like this But I just wanted to show you that it does work and all I had to do was either scan that QR code or Download the APK and install it on my phone. Thank you for watching. Please visit filmsbychrist.com. That's Chris the K and if you haven't watched the rest of the videos in this series on making your applications Work across platforming across device Chris with the K link in the description. Have a great day


So me, it's not about Dandha achalagya, you make you do achalagya. Do you want to solve this? Do you want to see this problem solved? So it feels idealistic, but I feel it's a beautiful way to live through every stage in this. Hi, I'm Karthik Reddy, co-founder and partner at Bloom Ventures, and I'm excited to be here on the digital cover of Entrepreneur India, champ Green Tranquility.


I think the main problem is that people have difficulty identifying expertise, identifying who is and is not an expert. And so the mismatch between people's desire to find experts and to extract knowledge from them is not well paired in this environment where it's very difficult for people when there's many different voices talking and saying many different things to identify who is and isn't an expert and where to actually gain the expertise that they're looking for. There's so much information out there now and it comes from so many different places but you know I like to know who I'm talking to and what they value. So you have a certain amount of anonymity and I'm not too trusting of that. Access to so much information within that environment, it becomes more difficult to figure out who to listen to and who might actually have the authority to make judgments rather than the ability just to have an opinion about something. And I think that's a really critical difference that I talk about with my students, particularly graduate students who are training to be experts in my field. I tell them you're going to make judgments, you're not going to have opinions in the same way. I mean there's a difference between making a judgment and having an opinion. I have an opinion about what's wrong with my car, a mechanic can make a judgment about what's wrong with my car and that's what expertise offers you. Information is so easily accessible, it is easier for people to gain that access and I think at times they then devalue expertise if they can find those answers for themselves. I think it's hard to be considered an expert in the current media environment because if someone doesn't like what you have to say they will simply reply with an article that it completely contradicts you even if it's not based in fact and even if you point out that that's not a reputable news source or that's not how things actually went the fact that they can go on Google and get the answer they want even if it's not reality makes it hard for truth to be discerned. People have a tendency when they encounter information that is counter to their own previous world view often reject those notions out of hand and that bias then can filter the type of information people let in and so people then will have a tendency to let in information that might be quite biased but is more commensurate with their own world view than other sources of information which in fact may be more factual or may be more truthful. People who write books are people who believe strongly in the information or the position that they are exploring but again we always leave things out and what is left out in anything tells you a lot about what the producer or creator is pushing for so it's always there we're only human we only have so much time to read and research and balance things but I think if we are at the very very least aware that bias is unavoidable I think that's a really really good start now whether that's enough I'm not sure but without that knowledge then again we really are just at the mercy of whatever information or source or person comes along and tries to sell us something who is doing the talking can you see their identity in the way they present the information the way they make arguments but you also have to be careful about that you can't dismiss people's arguments just because oh well that person has this political leaning or has this gender or this particular perspective doesn't invalidate their argument so you need to be aware I think of bias but you also can't just assume that everyone is biased which I also see among students and other people that just won't believe anything that I think is another kind of abdication of the hard work of sifting and thinking about the information and so I think one of the most important things that people can learn is how to suppress their own biases enough in order to get a nice sampling of different points of view especially ones that as was mentioned before are more trustworthy and more accountable to getting things incorrect and so the more that people can control their own biases and understand their own biases the more that they can correct for them in the information that they allow themselves to digest clearly if I find myself agreeing and nodding along to everything that I'm hearing or reading then there's a bias and consequently if I find myself wanting to throw something at the television set I realize there's a bias there too so for me what I try to do is hear something from multiple points of view and see if at the end the facts are the same I would advise people to look for multiple sources and to see if they can glean the same story or facts from different points of view when consuming news look outside of American media and see what the spin from a BBC or The Guardian or a different news source just to see what the take on it is and if it delivers the same content differently Having a PhD in history does not mean that you're infallible that you know everything there is to know about history and that your judgments are sound or reliable they may not be so I think you have to balance the idea well does this person have credentials are they an expert in the field with a judgment of the work itself when I'm looking at an information source what is the quality of the work what are the sources how do they talk about the ways they came to the judgment the way they arrived at the conclusions that they come to I think that's important and you can develop that only really over time I'd like to know why people are involved in something you know what do they bring to an issue or a situation you know if I believe that there is some bias there for whatever reason and we all have our biases but I'd like to know what they are then that helps me make a judgment about whether I trust the information that I'm getting medic cognition comes in that you need to think about the way you're thinking about things and you need to do things like examine yourself for bias and so forth but that's a constant process that you need to think oh no I've transcended bias I'm an expert now I don't need to worry about no that's every day, every moment that you need to be thinking about those things


Christmas presents a different feeling when you're deployed to Afghanistan. It's really hard to get in the Christmas spirit. Yes, we need more bags. But certain people go out of their way to bring holiday joy to places where it might be hard to find.  And the spirit is contagious. And every single person who walks around the corner looks and has eyes wide agape at the hallway after the decorations go up and it really puts everybody into the Christmas spirit. This initiative wasn't Captain Wreck Camp's idea. That credit goes to a group in McLean'sboro, Illinois. A lot of the families back in the United States got together and they have a group called Stockings for Sailors to send Christmas stockings forward to sailors that are stationed here in Afghanistan. Stockings for Sailors is just one of many organizations keeping deployed troops in their minds and hearts during the holidays. Programs like this are critical just to keep everybody fully aware of how much the United States public and their families support us. It really does a lot to change the routine here to see the indications of that caring spirit coming back from the people who support us back in the United States. Now just as Presidents rest underneath the tree for weeks at home, these gifts will hang on the walls until it's time to open them. We have a lot of stockings put together by this caring group of people. They're going to get snatched up by the Sailors whose names are on them and then a lot extra of stockings that we've labeled for any service member for the rest of the joint force that are here to come and grab a hold of on Christmas morning. And when that time comes, the hope of Stockings for Sailors is to bring the Christmas spirit to those serving away from home. Air Force Staff Sergeant Mike Larman, Kabul, Afghanistan.


My name is Stephanie Mendoza. I've been going by SAM a lot more lately. So it's almost kind of odd to hear my name sometimes, but you guys can feel free to call me whatever. It's more comfortable to you. So when I first got to Portland, I actually... I didn't intend to live here. I was just coming through for some tech classes and I had every intention to return to Texas to finish those off. But after about a month of traveling around the Northwest and not doing what I initially intended to come to Portland to do, I found myself back and literally the next day I noticed that I had to repayment and there was no way out. So I had no real friends in the city and again, was intending to go home within a few days. I found myself living in my car outside of random parks and using public facilities everywhere and fortunately, I had a background in art and technology that I could weasel my way into various hacker spaces and maker spaces, places like Control-H and Make-Think Code, which welcomed me with open arms. And you know, regardless of whether they knew what my living situation was, as a 3D artist, I found myself immediately attracted to VR, but once again having not even enough money to feed myself, I was restricted until I got a scholarship to the Mozilla View Source Conference back in 2015 when they were unveiling A-Frame and I was fortunate enough to find myself in one of Josh Carpenter's talks where he was really excited about showing off this new framework that allowed anyone regardless of your status to have access to VR because of its cross-platform capabilities. So within a year of building myself up on my laptop, living out of my car, living out of hacker spaces, I find myself looking like this. So this is my avatar, at least I've frequently used avatar, so sadly, like GIF is not playing. But I call it Fugaz, it's an alibri he, which is a creature of 1930s fever dream and often a subject of folk art in Mexico.  I almost suffer from, I wouldn't say suffer, but I almost get like these light feelings of body dysmorphia when I come out of social VR where I'm like, where did my claws go? Where's my tail? Why can't I fly anymore? Like, you know, I want to get to the top of that building, so see the parade, but I can't, and my brain doesn't want to make those connections. You know, and it's like, and I also worry about turning around sometimes. I'm like, oh man, am I gonna hit something? We're gonna knock it over. It's like the kind of self-awareness that you wish your golden retriever had. Yeah, and so this, these things affect you as you exit the digital world. So do a lot of your experiences, your personal experiences, and over time you do realize that like you are gaining new levels of awareness and like you're able to train yourself in certain ways that you didn't, initially expect that caught me completely off-guard, like my lack of fear of heights now that I accidentally trained myself out of. I used to be terrified of heights, or even public speaking. When I gave my first talk, my first big talk in front of a couple hundred people, I actually simulated the room in Unity that I was gonna give that lecture in, and then practiced and messed up multiple times in that simulation, and my audience was like zombies and tigers and like men in blue business suits and cops and stuff. Like whatever, whatever I could find free on the asset store to entertain my like, you know, wild little girls with like squirt bottles and stuff, and I'm just like yeah. And it made me like not afraid of that like, you know, out-on-the-savannah feeling, but that directed action learning can be used against us as well for like advertising and marketing and like straight-up brainwashing. So I have this like sort of, I'd managed to condense it down to a small thesis where it's like the digital world and the lessons learned in it, are not confined to a single simulated space, be it your experience in the environment or the experience that you have becoming something completely new in these territories when you choose to, and becoming something that you absolutely choose to be, which is a new paradigm for us, especially now considering like how, you know, trans people are under attack by the administration. Like this is a space where you can go and literally be anyone that you feel, anything that you feel. So part of that awareness has always been, you know, present, not just in virtual spaces, but in art in general, and so like I just kind of wanted to go down why I was able to make that leap from like absolute destitute homelessness, like sleeping in front of rich people's houses on Mount Tabor, because they had really nice views in like clean bathrooms. So number one, your browser is a portal. And as time passes, we will come to this realization more and more that we will literally be stepping through these digital portals, or those digital portals will be exiting into our space through mixed reality. But as soon as you realize that, the visual, like visualizing cyberspace will be much easier. Anything that most of us as technologists already acknowledge this. WebVR is cross-platform, so again, if you don't have a headset at all, then you can use your desktop. You can go to the library if you absolutely must, if you're that driven. It's a free open-source framework, so again, no cost to anybody, very broke and starving artist-friendly. And then you can get free hosting off of any number of platforms. My favorites are those listed above, so like Glitch, Shoutout to Neocities, because this is what I got started on, and it's run by a very close friend of mine, and then Codepin also, which automatically will like update your sketch.  And all three of these websites have that sort of power behind them, a creative power, a creative capabilities. And then finally, this is something that I'm still like getting into, but I see spreading, and I'm very excited about, which is the distributed web, and like VR's, like the excitement about VR in distributed web technologies, it's the idea that HTTPS is broken and that these highly centralized systems, or like the way that the net has centralized itself is counterproductive to the initial philosophy of the web, of being decentralized, of being open to everyone and not owned by these central powers.  It's something that I choose not to think about and choose not to participate in, because these things are available and it takes a weekend to learn. So let's, I don't know how many of y'all are actual programmers, and some of y'all might have seen this before, so it might be redundant, but some of y'all have never seen this at all, so I can give you guys a small taste of what it is to be a web VR developer or artist, however you choose to call yourself, but this is kind of all that it takes. You have your basic HTML page and your header that's initializing everything. A-Frame's actually up to 8.0, so we'll just change that 6 to an 8. But yeah, you have your title, your meta content, and then all you need is that A-Frame script and you just get that on their documentation page, and then you get to the meat of it in your body. All you have to do is open up a scene inside of it. Anyone who's familiar with 3D or Unity is familiar with this concept where you build your world inside of your scene, and then after you've opened up your scene, everything inside of that scene relies on three coordinates, your x, your y, and your z, for your position and your rotation and your scaling as well. So if you notice over there I have it highlighted, the x is red, the y is green, and the z is blue.  But other than that, I mean this is extremely feasible for someone again in a weekend to pick up and then to really lift themselves out of whatever rut they're in if that's the issue or just to have a new hobby or to have a new space to explore because again VR is very exciting, mixed reality is very exciting territory and we need more people, more artists in there who are willing to come at it from less of a capitalist like make money perspective and more of a theoretical like, hey this is what it's doing, the humanity anthropological perspective because there is no media theory in this space or at least there is very little and what does come out as it's experienced. So we're right on the cutting edge of this. This is the other thing that I really love about it is that as someone who is living in their car, I owned very little and so in cyberspace I could have whatever I wanted. I can't watch Ready Player One because it's too close to home. So yeah, some really quick free resources that you can, you know, I'm pretty sure all of y'all are good and have jobs or students and stuff and can have better tools but this is for like anyone who again has very little. Blender free 3D editing software, absolutely amazing. Like I love Blender, like I have accessed all the highest and like 3D modeling software Blender is still like my love. Make Human is a really good editing tool for making like humanoid characters. There's like more than a few of these now but that was one that I became really familiar with and you guys can just all like, you know, I forgot what the other one was called. Like Morph3D, I think it's Morph3D. After that, so you can do a lot of scavenger hunting on Sketchfab and Thingiverse because it's just this massive repository of 3D models like this apple tart, or not apple tart, this fruit tart that is in the background and you know many other wonderful things. And then, you know, it'll spit it out in any number of formats but right now GLTF or that one at the end is coming out as like the .jpeg for 3D models on the web and I love it because it makes my life easy and I don't have to go out and do file conversions or like format conversions which are really really annoying.  And, you know, with all these things you can synthesize them into, this was my first experience I was really into vaporwave when I first got to Portland and there were all these like YouTube vaporwave mixes and there was one that was like this crazy underground Chinese like drag, or lion like palm tree like ocean experience and I was like, I can make that in 3D and then I can go inside of it and so I did and added a couple of things like I really like the connected to America online all the 90s like windows like just toss everywhere, it's like, haha, it's all unraveling or this free store because again, I'm kind of a little bit of an anarchist sometimes and I like everything to be free and I like people to just do whatever they want with whatever they want and this is one really good way to practice that in real time and so, you know, this isn't the only free store again Sketchfab is like by far king of it at the moment because you can jump in there and you can explore like all of those models in VR and they have their own applications for it which are great and they are like totally compatible with the sort of like in... the compositors that exist in like high-end VR headsets that allow you to like flip back and forth between programs so it is kind of like going to a store and shopping which is crazy where that we're at that point but it happened so I guess my last part is like but even though all this is going on, can VR really be free because just because I figured it out because I had that privilege of having like a college degree even though it, you know, did cause all of this to happen I guess that's the point of a college degree maybe just not linearly but you know, not everyone has that not everyone has the aptitude to like want to program to tell themselves that they can do these things even though they're so foreign even though while you step in, they seem familiar it's like that transition hasn't fully happened for like the current generation of developers or of people who are aspiring to be artists and developers in this space so I did have a small project that I made as my own personal solution to this it doesn't, it still exists but the domain name got squatted on me and I didn't catch it on time so I have had to remove that and I will be putting it back up under a new domain name it's just, I'll get to it but this was a map that I made of Portland's VR spaces and there were like about seven or eight of them at the time of last year I think before I was hired to actually build a VR lab so I no longer need to like go and find VR labs so, you know, big reveal I've actually never owned my own headset either I've always just, you know, sought out the technology wherever I could find it because again, I've never had as much as I do now but this is really all it takes is that these spaces do exist and people can be brought to them it can be hostile at first but you just like, you really get your sea legs in this space but yeah, you know, anything like volunteering just knowing how to talk shop and get you in and get anyone else in if you want to lend someone a helping hand you all have the power to do this I find myself doing it for a lot of people too but then I went out and built this in 3D space and like in social VR to show people from all over the world how cool Portland was and then I made a web VR version but again, it's not currently accessible so I will be throwing the new domain name back up whenever that does get whatever I do, acquire a new one and this is my contact info but yeah, thank you all