We have Oasis Zahid. He's software development manager at Autodesk here. And he has 12 years of software development experience in web mobile development, server-side programming, like Gilesgram, and project management, and has degrees in computer science, and project management. So he'll be talking about how to create awesome polyglot applications using Graal VM. Very good. So let's welcome Oasis. OK. Hello. Yeah. OK. Hello, everyone. Thank you for joining this session. I really admire your resolve, like coming in a freezing room to listening to this talk. Yeah. Singaporeans have a very low tolerance of cold anyways. So just bear with me. All right. So today, we will talk about how to create polyglot applications using Graal VM. Quick introduction before we go further. My name is Oasis Zahid. I have over 14 years of experience working around the globe. My main focus area is on cloud platforms, creating cloud products and services with an emphasis on resiliency and scalability. JavaScript is my main forte. I love football and follow A.S. Roma. They are not doing really good this season again, but I still love them. So you can follow me on Twitter and LinkedIn as well. The handles are a bit sort of chopped, but you can ask me later. So interoperability. When we talk about polyglot applications or language interoperability in general, there are a lot of frameworks out there that can do that. So I started looking at Graal VM a few months ago when I was trying to evaluate a messaging SDK written by another team in Autodesk in Java. And my team works in Ruby. So this is not a very unique scenario that people will say, oh, geez, what are the odds? In fact, in the enterprise setting, the development work is done by various teams or agile teams. And more often than not, they choose different tools and technologies for their respective work. Sometimes based on their preference or sometimes based on the problem they are trying to solve. For example, people usually go for Python when they are working on machine learning solutions or go for R for data science. So it is common to come across scenarios like this, where you want to use something and that particular piece of code is not written in your language. So I started evaluating the options. So there are a lot of things out there for interoperability. Some of them are using a language neutral mechanism or interfaces to allow interaction like Thrift, Swig. I can throw protocol buffer into it as well, but it has a different use case. Then you have some libraries which are specific to either a platform or a language, or they focus mainly on bridging the native to manage code basis, like JNI, JNA. And if you look at cloud platforms, they are also trying a few things. Recently, AWS, they introduced layers with AWS Lambda so that you can create a common code base for use across multiple cloud functions. So you can always use their custom runtime API to create a layer in a different language. And then I came across Graal. So Graal has a very kind of a unique way of solving this problem. No interface files that support for languages, they have a good set of languages to support, and then it is not specific to any platform. So today's focus is on Graal VM. So let's look at what Graal VM is. So Graal VM is a polyglot multilingual virtual machine. It creates a common stack for applications running in Java, JavaScript, Python, R, C++, and many more. And this common stack actually allows interoperability in a shared runtime. So just to look at the holistic view of Graal VM, this is a holistic view of Graal VM. There are different layers of Graal VM. It starts with Java VM, then there is a compiler, Graal compiler, and then a Truffle framework on top of it. So there's a lot going on here. So let's take a stab at it one component at a time. OK, so Graal compiler. Graal compiler is the most important aspect of the Graal VM. The only difference between the VM, which is the hotspot and the Graal VM is the fact that Graal VM uses Graal compiler as a C2 compilation mode. So as you know that in JVM, we have two JIT compilers other than Java C, C1 and C2. So these two compilers have different techniques for JIT compilation and can generate a different machine code for the same Java method. So usually Java applications make use of both of them, and which is called tiered compilation, which is a default since Java 8. So in the tiered compilation, in the tiered compilation is start by using C1 at the start of the application for a better startup performance. And then once the application is properly warmed up, then C2 compiler kicks in for more aggressive optimization and better performance. So having like a new compiler that can take, OK, by the way, C1 C2 is also called client compiler and server compiler as well. So both are fine. So replacing a C2 compiler or server compiler with Graal compiler is not something unique. If you have seen different SDKs, like Adobe SDK or Azul SDK, they have their own customized compilers in the JVM. So what Graal is sort of giving us, what C1 and C2 are not giving us. So to start with, a Graal compiler is written from scratch in Java. Unlike C1 and C2 compilers, which are written in CC++, I know you guys will be asking, how can this be a good thing? But it is known that the C1 C2 compilers had known issues. And optimization in the context of strongly-typed managed languages can be done better. So it makes sense to have a compiler written in Java or some high-level language. There is a good link that I will share later. It was supposed to be there at the bottom right corner. It's kind of chopped in, which is actually talking about this topic specifically, like why it makes sense to have a compiler written in Java in the VM ecosystem. But I will share the references at the end as well. So I will not go into the detail of it, because that will sort of become a totally different topic. All right, so yeah, I need to catch up where I was. Yeah, so it's written in Java. And the reason it is possible for the Graal VM to be integrated in the JVM world is based on the thing called JVM CI, Java Virtual Machine Compiler Interface, which was added in JDK9 and since then backported to Java 8 as well. So that allows any compiler to be sort of act as C2 compiler and interface and then sort of get all the events and then process and give it back. So the benefits that we will get with Graal, there are three main benefits. First, it is more maintainable as compared to C1 C2 compilers. It is open source, available, good community around it. It is not tightly coupled with JVM. So you can use Graal compiler in different contexts as well. And the third thing, it has a good support for truffle-based languages. Talking about truffle, that's the second thing. So truffle is a language implementation framework that runs on top of Graal, as you can see it here. So the runtimes created by this truffle framework interprets languages as abstract syntax tree. And it currently supports our Python Ruby. And it has a good documentation for provisioning of new programming languages as well. So if you are developing your language using this framework, then the JVM will look at your programming language implementation as any other Java program. So the advantage of having a common framework to create different languages actually helps you in the interoperability between them. And you can have language agnostic instrumentation around it as well. Because if all of them are running on JVM, so you can use profilers, samplers, tracers, all the things that we do for any other Java program running in JVM. So Sulong is one of the implementations of truffle. It is a LLVM interpreter, low-level virtual machine. It supports C++, Fortron, and all the languages that can be translated into LLVM bitcode using any frontends like Clang or Mac Ruby. So if any one of you are interested in looking at how to bridge the gap between native and managed code and you want to try GraalVM, so this is the place you should be looking at. All right, ahead-of-time compilation. Ahead-of-time compilation, Graal also supports ahead-of-time compilation. It comes with a tool called native image that actually compile your code into native executable. So the native executable will not run on JVM or GraalVM. It runs on a different virtual machine, which is called SubstrateVM. So when the native image tool is used, it actually sort of bakes in that SubstrateVM into your executable as well, so that you can have all the memory management, thread management at that level as well. So here, I sort of one thing to know about Graal. That Graal has two execution modes. One is JVM, and the other one is native. If you run, if you execute your application in JVM mode, then your program will run on JVM. And if you choose the native mode, then it will run on the native images which are created. So usually, native, ahead-of-time compiled applications, they have a better startup time and lower memory footprint. But the applications running on JVM, they have a better peak performance and usually recommended for long-running processes. So this support was also added in JDK9 in GP295. So now it's available. So OK, so far, we have sort of looked at all the major components of Graal. What are the components? And what are the languages it support? And how it is actually set up? But the question is, should you be using Graal? What are the benefits you will get moving into a Graal camp? Because if you have any application running on JVM, you want to move it to Graal VM. Of course, this would be the first question you will ask yourself. And second is, should I be using truffle-based implementations of the same languages that I'm already using, like Ruby's and Node.js and the Pythons and R's? So to find this answer, I ran some benchmarks, both which are sort of stated in the Graal website and others. Based on my experience, I don't trust the benchmarks usually sort of showcase on the site of a particular framework. So I did some digging as well. So I found some interesting results that I will share with you. So the first benchmark that I ran is the embedded templating in Ruby. So the blue bar is JRuby, and the yellow bar is truffle-Ruby. The truffle implementation of Ruby, they call it truffle-Ruby. And the truffle implementation of R, they call it fastR. So you can see that truffle-Ruby is like beating JRuby hands down, like boom, which is really good. And this is the benchmark defined in the Graal VM site. So it better perform well. So the metric is IPS instructions per second. But even if you do just a time-based thing, you can see the difference. So I ran another benchmark, which is base64. I took like a ginormous string and then just do the encode and decode of it. And then I found that JRuby was actually really good. And truffle-Ruby didn't work, was not even near. So truffle was like not trading well with JRuby in this benchmark. So yeah, I will share some details later. So I have created an issue, and we are following up on the truffle-Ruby GitHub repo. There are some things that they need to implement. It's a work in progress to bump up those numbers. And then I ran another benchmark, which is take a huge file and just do a JS1 parsing of it, and then just aggregate the numbers. I will show the code later on. So Ruby was really, really fast. And the matrix I'm using is just plain execution time. It completed the whole thing in half a second. On the other hand, truffle took a lot of time, seven seconds, which is a lot. So I took a step further and just sort of try to see that if can I make this thing a polyglot? Can I, instead of using a parse functionality that truffle or JRuby is providing, can I use Node.js parse function and see how it works? So when I did that, the result I get is four seconds, which is better than seven, but nowhere near the actual JRuby implementation. So this one, the last, the gray bar that you see, the truffle node polyglot, I was running in JVM. So applications running on JVM is sort of start slow. So I want to check what would be the result if I run the same thing in native mode. So I ran the same thing in native mode, and this is the result I got. Drum rolls, boom. So it is sort of half of what the JRuby is doing. So this is, again, I was just playing around, looking at the profiling and looking at all the memory tracing. Yes, yes, yes. So the benchmarks, either the benchmark gem that you use in Ruby or the gem IPS benchmark, which is based on the benchmark gem, they actually do some warm-ups as well. So you can define some cycles of warm-ups and the iterations. So it gives you kind of a closer picture. Yes, yes. So I mean, this was encouraging. And I will show this code later on. And all of this code, all of the benchmarks that I've seen so far, it's available on GitHub. And I have created a container based on the Gral image. So all you need to do is to just clone it and then run it. So you don't need to set up Gral VM. OK, so let's look at this thing in a bit more detail. And that is my first demo for today. The interoperability between Ruby and Node.js. All right. So I need to see how I can have this thing here. OK, bear with me. Sorry. I need to probably end my, OK. How can I show this thing there? Really? Damn, OK. OK, let me see if I can do that. OK, OK. It's OK. This will make things a bit tricky for me. It's not working. All right, so let's look at this one. So this is before the polyglot code. I used the benchmark. Required.js1, a very simple. I'm reading a really large file and then just doing a parsing and then doing an aggregation of all the coordinates. A very simple benchmark. Now I want to show you guys, all right. So this one is the polyglot version of the same thing. So the first thing that you notice is this weird object called polyglot. So this polyglot is actually the interop framework that the truffle use. And all the languages, they implement this polyglot. So polyglot eval, what it is doing right now, it is taking the first parameter, which is the language. And the other one is what you want to do in that language, that foreign language. I mean, you can write a long code in it as well. But right now, all I want is just the JavaScript parser. That's all. So I'm just feeding that parser the JS1. I'm reading from the file. And then the result I'm getting is the J object, which is a foreign object in Ruby space. So to make it enumerable, I'm using as enumerable so that I can sort of loop through it. So this is the only two lines I change. And then I just ran the same thing. And the results you have seen. I think let's execute this thing. I hope I can show you guys. It's hard to sort of do something here just looking at there. Anyways, OK, not working. Sorry, guys. OK, I can just mirror. I think that will help. Cool, OK. Sorry about that. OK, close. Where are you? OK, so I'm in my truffle code base. So if I want to run this thing, let's run this thing in the JVM world first. I'll say JVM. And I will say it's a polyclot just to tell the runtime that I am intending to use foreign languages in my Ruby code. And I also need to tell the compiler that, hey, so this is important, which is only needed for Node.js if you're using Node.js as a foreign language because Node.js or JavaScript is based on single-threaded model. So you need to tell the runtime that, hey, the foreign language is single-threaded. So that it can raise and error if you are trying to access those foreign language objects in a concurrent manner. So this is kind of a safety net that Gral created around it. So right now I'm running it in JVM. Let's see the results. All right, so pretty much the same 6.5 seconds as shown in the benchmark. And so let's try the same thing with native. So the only difference between these two executions is the fact that the second one is actually running the native image of Ruby runtime. In the first one, what actually the VM do is when you say Ruby VM, then it actually sort of load the Ruby runtime in JVM as well. So that slows things down a bit. So if you are sort of fighting for the benchmark, so that you can sort of have bragging rights, so do use native for it. All right, so I have another example for you guys. This one is much more not from the space of benchmark, but more kind of mimicking the real-world use cases. So it's more about the interop between Node.js and Java. So I have created a very simplified notification server in which the notification service. And then in the notification service, I have the notification server written in Java, which is not doing a very kind of a super awesome thing. It's just sort of just putting random numbers in a queue. I mean, you can replace this thing with actual notifications or anything, whatever the use case is. So this is the Java code. It starts and do some computations, and then just put something in the queue. And on the other hand, I have a receiver, which is a Node.js receiver. It is using the worker threads. And so the idea what I'm trying to do is to create a solution in which you have a notification server putting something in the queue, and then you have n number of worker threads sort of pulling the data from the same queue. So for that, the first thing that I'm doing after defining the worker thread is using the link block queue because I want to make sure that the access to the queue is concurrent. So I'm just using the Java queues, one of the from the collection. You can use any of the queues you want. And then defining the threads. And then I am actually initializing and calling a method of a Java function. So this is new. You haven't seen this thing happening in Node.js world before, right? Trust me. So the reason you can do this thing is because both of these code is actually running in the same runtime. And so if you want to talk from one truffle implementation to another, you will use the polyglot framework. But if the truffle languages want to talk to any JVM-based languages like Scala or Java, they will use the Java type. So I will get that notification server, and I will just call the start method by giving it a queue that I created at the top. So let's see how it works. Let me check. Yeah, that's the same one. So what I will do is I will compile my Java class first. And then I will run Node. Yeah, since I am using a worker thread, I need to check that notification, receiver.js. I don't know whether it works or not. Oh, yeah, it works. So yeah, it's just sort of console out. So it is showing that the items Java server is pushing into the queue at a regular period of time. All my workers is picking it up. So another thing is, all right. So these are the two main demos I have for you guys today. But remember, at the start, when I mentioned that I started this crawl journey, I'm not an expert in crawl, by the way, and not like Oracle is not paying me to do this talk. So the whole reason I started looking into crawl is because I wanted to use the Java SDK in my Ruby code. So let me just show you the code because I cannot execute that code here because it uses all the servers in Autodesk. But I can just show you the code. So it is SDK based on Kinesis. So I just took the SDK by just running the Maven and then just create a SDK with all the dependencies. And then just, OK, let me just make it more smaller. So and this is the Ruby code that actually uses the whole SDK, and it works. And I can do the same thing with Node.js because people will argue like the people who have already worked with JRuby, like, hey, you can already talk to Java. I mean, that's not a new thing. You can have like javax.script or you have bean frameworks that can allow your JRuby code to talk to Java. But just think about the situation where you have to use more than one language. Maybe you are coding in, you are creating an Express Node.js server. And then you need to use R or Python or maybe some of the Ruby and other stuff in it. So then having a consistent framework around it makes it very simple. So is there any time check? How much time I have? OK, let's go back to our slides. So based on my journey in the last two months or so, there are some lessons learned based on my sort of adventures with Krall VM. First is this kind of solution, like a VM-based solution, is better suited for a situation where you want to use some library or some SDK written in some other language.  This should not be taken as one solution that can fix all of your interoperability problems. Maybe if you are designing your overall solution more in the microservices-based architecture, then the advantages of doing something like this will be very, very minimal. So you can choose when to use it and when not to use it. It helps if you have like working in a big organization where sometimes it happens that you create something and then you create variations of it. So these type of activities will help you create a single source of truth so that everyone is actually sort of improving it and then you are not creating like a Java SDK and then Ruby SDK and then C++ SDK and all that. So this is an advantage. So you can choose when to use Krall VM and when not to use Krall VM. The second thing is there are still some performance gaps in Truffle implementations. But it's an active community. I can see a lot of improvements happening. But the problem with the Truffle implementation will always be that it will always play kind of a second fiddle to all the advancements happening on the respective languages. So let's say if Node.js come up with a new thing, they need to sort of come up and then do the implementation again. If Java come up with Java 12 or 13 with some totally different thing, they need to come back and do something about it. So this is something that we need to sort of take into consideration while working. Maybe run some benchmarks, do some profiling, do some comparisons, rigorously test it before sort of deciding what to do. The third thing which is not related to Krall at all but is like just my pain of like using JTK in Docker container doesn't fit well. It's not kind of a hidden fact anymore. So Java 8, if you're running and then so it doesn't follow the memory and the CPU restrictions that you put on your Docker container. So sometimes you say, OK, killed. It will just say it's killed. So it will not say heap out of memory. So if you are experimenting and if you can, better to use JDK 10 plus, it has a better support for Docker containers. The last thing is that Krall is not widely used in production environment as of now. So far, I know from all the material and all that that Twitter is using it. But I haven't seen any other kind of a success story coming out of it saying that, OK, they are using Krall and it's like making a difference. All right, so these are all the references that I mainly use. This is the GitHub repo of mine, the Krall benchmarks that will contain all the code and all the containerized code so you can just run it. I mean, you can run it right now and show me what are the numbers. Krall VM GitHub, they have very good documentation. If you want to know about in the JDK world what are the changes they did that actually enable a solution like Krall VM to come is you can look at these 243, which actually implemented the JVMCI. And then there are some research papers on Truffle Ruby and overall on LLVM based languages. All right, that's all I have. So if anyone has any questions, feel free. So let me ask you guys a question. I mean, what do you think about Krall VM? Because I am not an expert in it as well. But I'm sort of just trying it out. I'm finding it cool right now. But I mean, what do you guys think on all the things I've shown here so far? Is this something that you think like, it's interesting? Or you say, no, I'm good with whatever I'm doing. OK, just raise your hands. How many of you think, OK, this is interesting, OK? That's not bad. But how many of you think, OK, this is, ah, no, I'm good. Because I want to learn from you guys. Let's have this two-way communication. So what do you think? What is your reservation? Or why you think like, I mean, it's JVM. It goes wrong all the time. Even the hotspot JVMs do that, right? So but it is a JVM. I mean, you can just take that Krall VM and you can use your any JVM that you have, like maybe based on Java 10 or 11, maybe Azul or Adobe anything. And you can just sort of configure your JVM to just use it. I can comment on that. So Twitter is using Brawl because they're a scholar shop. They are using Scala very heavily. And they benefit a lot from using Brawl. I have things like 20% to 30% speed improvements in my head. But they have a dedicated team that is actually moving into the OpenJDK development.  And they have some guys doing VM stuff. And they have their own internal OpenJDK, no JDK version, which diverts from the OpenJDK. So they're in another position than just like a normal. There's nothing like normal, but just an outsider just want to use Java or Ruby or whatever. Just want to run their programs. So whenever something goes wrong, you are pretty much on your own. Or you need to know who is actually the developer in charge and how to address the developer. And that's the basic thing about any work with open source software. Either you need to get engaged within the community and know how to address the people, work with mailing lists, whatever. And file back reports or don't and buy some commercial support. But there is no commercial support for Gral at the moment. I forgot to tell you that. So Gral VM, they have an enterprise edition as well that they say that they will support. I just use community version. But one thing that I can recommend everyone, even let's say if you are not a very technical compiler savvy techie, if you just want to see the compiler impact, especially on the GC, on the garbage collection. So since Java, since JDK 10, they introduce the option where you can run your JVM by disabling the garbage collection or just not doing it at all. So the easiest way, if I want to do it with a limited knowledge, what I will do is I will just give it a very high memory and then just run it without the garbage collector and see how it works and then use it with one compiler and then use it with another compiler. So you can at least get some rough estimate at ballpark like how things are sort of working. But again, having a dedicated team, I agree with you, Twitter, they have people dedicated working on optimizing all their JVM-based compilers and making it sort of make sure that remain there. I mean, for experimenting it, that is OK. If your plan to go in production within a year and you have a little bit of time to get in contact with the people, then it's fine. If you want to run something in production today, it's still a bit of a bleeding edge. I agree, because I haven't seen any other kind of a big success story coming out of Grawl other than Twitter. But let's see in the future. Yeah, any other questions? I'm just making questions right now. Anyone who only has experiences, positive or negative, with the JVM stack that they might be interested in sharing? We have five minutes left. Yeah. Or I mean, you can ask me, I'll be here today, tomorrow. Just another comment on the, which is another topic actually about the cloud thing, you said. There are a lot of improvements in 10 and 11, which makes it better suited for Docker containers. They switch to the new garbage collector. The G1 garbage collector is one example, which gives back more aggressively the memory back to the operating system. The problem is at the moment that Java 11 is actually the long-term service release. But it still has some serious bugs, and there is some security updates, maintenance release in the works. So people are hesitating now to actually switch to 11. So at the moment, if you have critical production workloads, you should stay with 8, wait for the next maintenance release of 11. So at the moment, there is a lot of flow in these all OpenJDK development. There is a switch that actually Oracle steps down with their leadership in the OpenJDK development. And Red Hat does the maintenance releases. So this is all stuff that is in the flow at the moment. I totally agree with you. This is the case because most of the applications which is based on Java right now, they are mainly running on Java 8. I haven't seen any production Java applications on any financial institute or anywhere running on Java 10 or 11. But I think probably sooner or later, people will make the move because recently Oracle changed their arrangement with how they will do the back porting. And you need to sort of engage with them in the licensing form. So either you go to some other, if you want the back port, let's say if they added a new feature in Java 11 and you want it in Java 8. Because usually right now it happens if you use it. There's some stuff going on there. So all of this is that good site. Yeah, so that's an interesting topic. We can discuss about it. And so are we going to any other questions? Let's thank a race. Thank you so much. Thank you. Thank you. Thank you.


introduce our final keynote speaker for the day, Dr. James Hughes. Dr. Hughes is the founder of the Institute for Ethics and Emerging Technologies, and is also a bioethicist and a sociologist at Trinity College in Hartford, Connecticut, where he teaches health policy and serves as interim director of institutional research and planning. Dr. Hughes holds a doctorate in sociology from the University of Chicago, where he is at the McLean Center for Clinical Medical Ethics. He's the author of Citizen Cyborg, Why Democratic Societies Must Respond to the Redesigned Human of the Future, and is working on a second book tentatively titled, Cyborg Buddha, which I'm very interested to read. Since 1999, he's produced a syndicated weekly radio program, Change Surfer Radio. And we're very happy to have him with us. Thank you, Dr. Hughes. Might have to open up the porch. I'm not getting a signal. Yeah, they did an auto-detect. Well, first I want to give you my spiritual bonus five days. There it goes. I was raised a Unitarian and became a Buddhist when I was about 16, joined a group of Tibetan Buddhists in my hometown of Columbus, Ohio. And when I got to college, I started a meditation group. I wrote my bachelor's thesis on Pentecostalism, spent four months in Pentecostal churches, speaking in tongues, or attempting to speak in tongues. I then went to Sri Lanka and ordained as a monk here for a while, working with a Buddhist development organization in Sri Lanka. And then moved to Japan where I studied Zen and eventually realized that I didn't have any talent for Sanskrit, or Chinese, or Japanese, or any of the languages I would have had to master to become a Buddhist scholar. But my family and I continued to participate with the Insight Meditation Society in Barry, Massachusetts, which is a Theravadan Vipassana center. And I have returned to the faithfulness of my parents and also involved with Unitarians. And I sing in the Unitarian choir, and I teach Unitarian Sunday school and do a variety of other kinds of things. So I have a spiritual trajectory of my own. And when I was making the transition from being Unitarian to becoming a Tibetan Buddhist, one of the things that stuck in my craw may be familiar to some in this audience, which is that there's a tradition in Tibetan Buddhism called the Turton tradition, which is that a lot of the teachings of Tibetan Buddhism were basically invented about 1,000 years after the Buddha. And one of the ways that the Turton teachers would validate their tradition is by saying, I've had a vision from the Buddha. There were certain teachings that he couldn't give at the time, 2,500 BC. So he flew up to Tibet and he landed and he planted some teachings in this mountain or that hillock or someplace. And they're hidden there. They've been hidden there for 1,000 years, 2,000 years, but I have had a vision from the Buddha exactly where they are. I'm gonna go find them, resurrect them, and these will be the new dispensational teachings. So the Turton tradition is one of the many things in Tibetan Buddhism that are difficult for a secular Unitarian to kind of swallow. And eventually I realized there were some Tibetan Buddhists who saw things like that as quaint ideas that they were irrelevant to the tradition itself, that the value that you got out of it was praxis and it didn't make any difference what kinds of supernatural ideas were being proposed, even reincarnation. And there were others who really took that stuff seriously and thought it was central to everything. Eventually that was one of the reasons why I left Tibetan Buddhism is because there were far too many who took all that kind of stuff seriously and far too few who were able to put it aside and adopt an empirical scientific rational approach to religion. And it's one of the reasons why I gravitated towards Zen and Vipassana and back to Unitarianism. Now as I've begun to dig into our historical tradition and understand where these ideas, these Unitarian and other kinds of ideas that I grew up with came from, I've begun to understand that this is a long 400, 500 year dialogue within the Enlightenment philosophical tradition and it has pre-enlightenment roots of course as well. But then within the Enlightenment there were some who were atheist, some who were secular but there were also people who were trying to ground religious faith in science, rationality, empiricism. They were trying to make a scientific, empirical argument for Christ or God or something, some aspect of religion that they thought was valuable. And it has that dialogue, that 400 year dialogue has resulted in a number of different kinds of accommodations around the world. There are some who have said, la la la la, stick my head in the sand, you know the world was created 6,000 years ago and there are others who have said, okay, we'll do it, we'll throw out everything that's not compatible with science and religion. And there's everything in between, people who say we'll throw out 75% and keep this peace and so on. For me what was compatible was traditions like rationalist, Buddhism, like Unitarianism. But there are also certainly, I recognize, traditions like liberal Christianity and Judaism where many people are focused on praxis as was pointed out and the supernatural aspects of the religion are irrelevant to them, they don't believe in them, they're not really important. So from this point of view, I think that it is possible, as has been suggested by several speakers, to have a spirituality without supernaturalism and this is an important recognition that we could have an appreciation of the mytho, what I call the mythopoetics of a religious tradition. I consider myself a Buddhist because I like to think in Buddhist terms about things. I like Buddhist metaphysics, I like the Buddhist tradition, I like Buddhist languages, I consider all of those things the mythopoetics of my spirituality. I don't have to believe in reincarnation to appreciate those things. The effort to live a meaningful and ethical life, not required that you be religious, not required that you be spiritual, but this is in a constituent element of spiritualities. An openness to altered states of consciousness, to the possibility of peak experiences, as you pointed out, and an openness to the possibility of a radically transformed human condition, the notion that we as a humanity could have a radically transformed future. I think all of these elements can be incorporated into a sufficiently post-enlightenment, clarified spirituality of many different sorts so that we can have a rational transcendence, a rational approach to transcendence. And I think many advocates of spirituality from the Enlightenment were looking for that, some kind of rational transcendence, and I think that the transhumanism is one strand of that claim to a rational transcendence. You see, for instance, here, Condor says from his final essay, he says, "'Nature has set no term to the perfection "'of human faculties, the perfectability of man "'is truly indefinite, and the progress "'of this perfectability, from now onwards "'independent of any power that might wish to halt it, "'has no other limit than the duration of the glow "'on which nature has cast us,'' and of course, if he understood about cosmology, he might have not even said that. Now, I'm a sociologist, so I've done a lot of survey work on the beliefs of transhumanists, the beliefs of people who call themselves transhumanists today, and with the tip of the hat to Max's very important distinctions between transhumanism and transhumanism, I wanna pursue that distinction a little bit. There are a core set of ideas and memes that go together to define what people, most people around the world who call themselves transhumanists believe. So they're an enthusiasm for enhancement technologies. Humanism and secularism is one of those aspects. Scientific and technological optimism in general, the focus on personhood as opposed to humanness as being the basis of value, and a strong assertion of individual rights, reproductive rights, cognitive liberty, and body autonomy, most transhumanists share those. So that's a very coherent and very specific enlightenment set of values that came out of a very specific historical circumstance. But as Max pointed out, simply advocating for one or another or a bundle of enhancement technologies to wanting to become transhuman, believing in the possibility of a post-human apotheosis of some kind, that doesn't necessarily come with any of that enlightenment baggage. So transhumanism can be distinguished as a much, much thinner ideological commitment than transhumanism, and so I'm gonna pursue that in this talk. Now, another aspect of our enlightenment heritage that we're still struggling with is that the enlightenment focused on reason as its prime value. And reason, I think many enlightenment philosophers from the beginning have discovered, is a pretty thin rule on which to base one's life. When you use reason to dig down in your life, why do I do the things that I do? Why is something good or bad? Why is something beautiful? There's a lot of questions that reason doesn't get you very far with. And so reason, for me, is like this house. It's a beautiful house. It's a well-constructed house, but it's floating up there, you know?  So my thesis will be that transhumanism is probably compatible with a lot of world faiths. It doesn't necessarily, it may in fact be the fulfillment for many people of their faiths. But transhumanism is a much more specific enlightenment set of ideas, which is only compatible with specific kinds of spiritual traditions that are open to jettisoning and setting aside some literalist beliefs that they've inherited. Now we're not a, the transhumanist movement is not a church with anybody who defines it. It's a conversation. It's an acephalus movement. That is, it doesn't have a head. And as a consequence, there are lots of transhumanists around the world who define themselves in all different kinds of ways. And don't really care what the transhumanist declaration said or what the transhumanists frequently asked questions say. They pull out one piece or another. So when I surveyed transhumanists over the last decade about their religious beliefs, and the most recent one was the 2007 survey of the World Transhumanist Association membership. As in previous surveys, about two thirds of them said that they were secular, atheist, humanist, or agnostic. And these are people from 100 different countries around the world. About 40% from the United States, about 25% from Europe, and everybody else from everywhere else. But almost a third said that they were spiritual or religious of some kind. So you had 5% spiritual, 4% Protestant, 4% Catholic, 4% Buddhist, religious humanist, pagans, unitary and universalist Mormons, Hindus. Lincoln's sure that there'll be more Mormon transhumanists now if we were to do that survey. And I hope to do it again. We'll see. But obviously there are people who say, I don't care what you say, I'm a Muslim and I'm a transhumanist. So go figure it out. And we have been trying to encourage that dialogue over the years. This is not the first religion in transhumanism meeting. We held one in 2004 at the University of Toronto in conjunction with the Transvision Conference. There was a seminar that the Templeton folks held in UK about transhumanism and religion. We've published journal articles about it. And there is, as has been mentioned, the MTA, which we was until recently an affiliate of the World Transhumanist Association and then the IET Cyborg Buddha Project as examples. So I'm gonna briefly go through a couple elements of religion and talk about how they, those elements within those aspects, some metaphysics and soteriology and so forth. There is no necessary contradiction between at least this thinnest interpretation of transhumanism and argue that eventually we will see the syncretism of transhumanist ideas and technologies and aspirations into religious views in what I call transpiritualities. So again, the areas I wanna briefly examine with you are metaphysics, theodicy, soteriology and eschatology and I threw in, as you were talking, I should be addressing praxis as well. But I don't think there's very many examples where transhumanism is gonna be incompatible with praxis. I mean, if you can think of one, let me know. But I think my argument would apply to praxis as well. So let's start with metaphysics. Transhumanism as an enlightenment philosophy makes a strong claim that there isn't a soul, that what's important is a pattern of information that creates our personality of intelligence, that this kind of pattern can be recreated in other substrates, as Julia was saying. And as a consequence that the value that we ascribe to persons should not be distinguished by human versus non-human because that's an irrelevant distinction, an irrelevant category. It should be whether they have that pattern of self-awareness that we consider to be valuable. Now there are theologians who've looked into this question about whether this makes transhumanism incompatible with religion. For instance, Ted Peters has written a great piece about this, about ideas of the soul and Christianity, and he argues strongly, and I don't know why this isn't more widely known, but he argues strongly that in fact, the idea of the soul and Christianity is not one of an immaterial substance that it is in fact a relationship between the human and the divine and that you have to be a conscious being or to have that relationship and that therefore the traditional Christian understanding of the soul is pretty damn close to the transhumanist understanding of what's important in a human being. So whether you believe in an immaterial substance of the soul or not, at least some versions of the soul could be compatible. Now I also have this question, in the traditions that believe in creatures such as angels, they can't then be strictly speaking, human racists, what I call human racists, believing that only humans could have value because don't angels have value? Can't you get in trouble if you whack an angel? You know, wouldn't that be a sin? And therefore, and since angels aren't human, then it's possible to be something other than human and have value and have a personality. So I don't know, that's a theological question for those of you who want to address it. Now there's the question of hubris and the question of hubris has come up several times today. Now, Ted has pointed out, Ted Peters has pointed out that hubris can't, in this book Playing God that you reference, that hubris can't be a problem for Christians with transhumanism, traditional Protestant and Catholic Christians at any rate because traditional Protestant and Catholic Christians argue that God is omniscient, omnipotent, and beloved, and we'll leave that aside, but at least omniscient and omnipotent. So how could possibly a man take on the power sufficient to challenge the creator and one of the universe, right? You can't do it, you have to have an Olympian, a Greco-Roman understanding, a Manachian understanding of religion in order for hubris to make any sense at all as an idea because I'm suddenly gonna take on the powers of God and challenge God.  So hubris can't possibly be a problem. Now, maybe it's a problem for Mormons, so I'm still waiting for the church to find out about you guys. And it's not a problem, the metaphysics of Hinduism and Buddhism are at a problem for transhumanism because Hinduism and Buddhism are very open to the notion of an evolutionary interpretation of human trajectory that we will exist over many aeons and that we will eventually evolve to different kinds of states of being and that those states of being could be various kinds of heavenly realms. And so, like with Mormonism, the notion of eternal progress in Mormonism, there's a strong compatibility theoretically, at least, between that kind of evolutionism. Now, you got really exercised about the notion of human animal hybrids and I just wanna point out that I think that the reason that human animal hybrids are stick in the craw, so to speak, of the Abramic tradition is because of this notion that God created humans and then God created animals and the humans were in charge of the animals.  Well, the anxiety about race mixing is an ancient one. We understand where it comes from, it's where the Levitican laws come from. There's certain things that swim in the sea, certain things that eat, cud, and the two things shall not mix and if you find an animal that swims in the sea and eats cud, then it is impure and it is no cusher. So those kinds of Levitical thinking about things, we understand why we get our ideas of purity and impurity from that, but it's not rational, right? It's not rational to say that just because we violated species boundaries, we've somehow done something impure, immoral against God's will, it's about how we treat them. That's where your point was absolutely correct. If we do this simply to create a race of slaves, as some have proposed, that would be horrible thing to do and the same might apply to robots and we'll have to really grapple with that question. Just point out again, in the Hindu-Buddhist tradition, it's the idea of human animal hybrids, again, pretty central, you've got here Ganesha as a human animal hybrid, horrible story how it became one, but his dad basically whacked him and then had to put him back together again, but we've got lots of human animal hybrids in the Buddhist Hindu tradition so they should be particularly open to that. Now, the metaphysics of birth and death has often been a problem. So certain ideas of insolment, when does the soul come into the body? Certain ideas of when the soul leaves the body and are the things that you're gonna do to muck around with birth and the things that you're gonna do to muck around with death gonna somehow interfere with God's plan for how you enter and leave your body. Well, if we can interfere with God's plan in any way, setting that aside, there are some pretty culturally specific ideas. So, for instance, Tibetan Buddhists believe you shouldn't muck around with the body for about a week so that the soul could completely detach from the body and make its reincarnative transition. And Jews have a similar kind of idea, although I don't know where the soul goes after that, but in any way, they leave the body there for a while. So there's a certain anxiety and certain religious traditions about doing things like organ transplantation and so forth, about doing things like cloning, about whether you might be screwing around somehow with the insolment of a being. Could you end up with something that didn't have a soul if you made a clone? Others, like Rabbi Brady, he says, nah, cloning is a mitzvah. Cloning is a good in itself. Anything that helps people have babies, it must be good, right? So I think that's a pretty irrational approach myself. And he says the same thing about death as well. Anything that keeps people alive, that's pretty good too. Now, we also tend to be pretty open, at least the liberal-minded enlightenment transhumanism tends to be pretty open-minded about things like alternative family structures. Maybe we could have replaced parenting with just a race of robots or something. And so we don't have to take care of this melee urchins anymore. We're open to all those kinds of possibilities and traditional Christian and other faiths have pretty narrow ideas about what kind of families you're supposed to have. There are some places there where we conflict. But in the most strict sense, the notion of just the use of technologies, orthodox Jews, orthodox Amish might be able to use IVF, I don't know if they use IVF or not, but I don't see necessarily contradictions between those kinds of worldviews. So again, would brain scanning or cryonics, so say you believe that after a person dies, their soul goes to heaven or waits for God or whatever? And you freeze their body. How does that necessarily interfere with God's plan, right? So if you're trying to stay alive until the end of time, say you believe that all the souls are gonna be resurrected and they're gonna meet the Judgment Day, wouldn't that happen if you were frozen just the same? If you weren't frozen, might that just not interfere with things at all? Being cremated apparently doesn't interfere with it, at least we don't believe it does anymore. People used to and that's why there used to be opposition to cremation. But now that most Christians are okay with cremation and they should probably be okay with freezing as well. So as I said, I'm pretty down with the idea that life is a blessing, life is a mitzvah, so anything that keeps people alive is probably a religious, at least a religious good if not an obligation. And you see some pretty interesting dancing actually. If you read people like Brent Waters, Christian bioethicists who are trying to argue against transhumanism, they have to do some pretty fast dancing to say, well we're for everything that stops sickness and illness and death except when you get over here. When you get over here and you start talking about immortality, okay, well I can take that off the table. Let's take immortality right off the table and we'll just say let's keep everybody alive for another day until they don't want to anymore and then they can stop. And if we can agree on that, then we're fine. Body loathing and body worship, we get accused of both. How is both possible, right? We either loathe our bodies or we love our bodies. Now I confess there are transhumanists who love their bodies and there are transhumanists who loathe their bodies. But transhumanism as a philosophy is not guilty necessarily of either sin. So, and I would point out that there are spiritualities that focus on the body. There are spiritualities like Taoist yoga and magic that was all about trying to achieve physical immortality through magical rituals and pills and exercises and so forth. So, there are spiritualities like neonosticism where they did loathe the bodies. There are spiritualities where they worshipped the bodies. So you could have body loathing, transhumanism consistent with one and body worshipping transhumanism consistent with the other and everybody else consistent with something else. Now I wanna pause briefly and just say about my Buddhism. People often ask, Buddhists are supposed to be accepting sickness, aging, and death. So what's your problem? Why aren't you out there accepting it? Well, accepting sickness, aging, and death, adopting the Buddhist middle way does not necessarily mean that if you're standing in the street and you see a bus coming at you, you say, oh, I'm accepting of sickness, aging, and death. I'm not gonna walk out of the way of this bus. You have the capacity to avoid sickness, aging, and death in your life and the Buddha thought it was a good idea to do so. Monks were prescribed to carry around the medicines of the time. They were not supposed to just meditate there on their sore tooth. If they could take an analgesic, they were allowed to do so. The point is, there are certain things which you can't escape. The things that you can't escape are the things that you accept. It's like Neber's Serenity Prayer. It says, give me the power to accept the things I can't accept. The power to, or what is it? The strength to accept the things I can't accept or strength to change the things I can. Something like that. I'm not an alcoholic, so. The strength to change the things I can't accept and the wisdom to know the difference, right? That's the problem. A lot of bioconservative Christians and others are arguing you should accept everything because trying to get rid of any of these sickness, aging, and death things, that's a bad idea. Well, that's not a good spiritual approach. Now, quickly, theodicy. Why is there evil and suffering in the world? If God's an all-knowing, all-powerful person, that's a classic question. Why is there evil and suffering? Well, Buddhist Hindu answer, it's karmic rewards and punishments. Okay, so say we invent some technology that allows me to live for 200 years. Does that violate the law of karma? No, if you really believe that, if you really believe in karmic rewards and punishments, it means I did something really great in my last life. We all did, because we all got to live 200 years. So good on us, right? We did something great. If we get whacked, that's bad too. But so karmic rewards and punishments doesn't tell you anything about whether you should be adopting transhumanist aspirations. Learning through suffering, there will always be suffering. This is the point. Say we get rid of cancer. You think there still won't be suffering? Say we get rid of depression. There won't be suffering? There will still be suffering, especially in the existential sense. The Buddhist sense of suffering is dukkha. It's the unease of existence. It's not something that you get rid of because you can have powerful analgesics to keep you from feeling your sore tooth, right? That's not the suffering we're talking about. It's a different kind of suffering. And you don't get rid of it just by having a better lifestyle. Seeing the world is perfect. Now this might be incompatible as a spiritual worldview with transhumanism. If you think the world is absolutely perfect as it is, but I don't know very many spiritualities that actually argue for that. Even when Buddhism argues for that, it says, well, it's perfect, but at the same time, you have to help everybody who's suffering. So get used to the contradiction. Very few spiritualities say you shouldn't change yourself. You shouldn't change anything about anybody else. You shouldn't help anybody. Everything's perfect the way it is. Manichaeanism. This is, I think, fascinating. Tom Horne is a Christian whack job. Read his blog. You'll understand. He thinks that we transhumanists are creating angel human hybrids to serve Satan in the end times, and we're trying to open a dimensional gate to the Sathuloid universes so that the demons can come through. And somehow he's still certain that the book of revelations is correct and Christ is gonna come down and whack all the bad guys. So why does he care in the first place? But at any rate, it's a Manichaean worldview. There's a titanic battle between good and evil going on. It's not really a Christian worldview, people have pointed out, because if you're really a Christian, Satan is under God, not an equal to God. But anyway, if you're a real Manichaean like that, wouldn't you wanna have the same weapons, right? Wouldn't you wanna have the super intelligence? Wouldn't you wanna have Max Morris Physique, right? So you want that stuff. It's good. Now I would point you to Mark Walker. He's one of the leading theologians of transhumanism. He did his PhD about eight years ago on this. And he makes a strong argument that there's a tradition, I can't pronounce it, but it sounds like Arianism. It's not Arianism, but something like Arianism or something like that. There's a tradition within Christian theology that argues that the reason that they're suffering in the world is because it's a part of our learning process to become like gods. It's a theocystic faith, or a theocystic interpretation of theodicy. It says the explanation for suffering is that you have to figure out why you're here, become like gods and fix everything, and be a co-healer of the world with God, exactly what you were saying. So I urge you to take a look at Mark Walker's argument for that. And only when we become like God could we have a mature commitment to God's plan. So if you say, oh, I understand God's plan and I'm committed to it, you don't know what you're talking about. How could you possibly understand God's plan? What arrogance to say you understand God's plan and you're committed to it? You can't possibly understand it yet. You want to become like God first in order to say you understand God's plan and commit to it. Finally, satireology. Satireology is the aspect of religion of what we're supposed to become, how we're supposed to develop as people, the moral perfection, the transcendence in this life, the afterlife, and so on. Now I have argued and the goal of the the Cyborg Buddha project is to try to figure out how advancing neurotechnologies allow us to improve virtue in our lives. And again, Mark has written good stuff on this. So we are understanding the neurophysiological basis of compassion, we're understanding altruism, we're understanding aspects of sociability and we're understanding addictions and how we become fearful and courageous and all the different kinds of virtues that we might want to maximize. And my goal, my hope is that we will develop ways and integrated with our spiritual realities of using these different kinds of technologies to become the kind of people we want to be, that we've always wanted to be and have not had the strength simply through the crude meditative and self-discipline and wearing the hair shirts and the whips and all of that. Those kinds of technologies were crude. We will have better technologies to improve our personalities. Now the dark side I do want to mention. Al Moller is the chancellor or something of the Southern Baptist Seminary down there in Texas. And when he heard that there was growing scientific evidence that there's a genetic basis for homosexuality, he said, well, if there is, then we're just gonna have to use that technology and fix those homosexuals with that technology because that would be a good argument for genetically engineering kids. I was against it till now. But once you figured out that it was the homosexual thing, then I'm for it. Well, that's not such a great thing, right? We don't want to create a world in which all of our moral attributes are necessarily engineered from the beginning. That would be a kind of technological engineering solution that we don't want to have. So those are the things that we're dealing with with the cyborg Buddha process and theosis. I added this slide after Daryl's talk this morning because I had not been using that term, but theosis, wonderful idea. Eschatology, my last idea here. I think this is what originally probably attracted the Mormons to transhumanism. The notion that transhumanist ideas, the singularity, these kinds of aspects of transhumanism could be a fulfillment of historical prophecy, of expectations about what the coming world might be. Now there's a long historical tradition of millennialism and our contemporary techno millennialism, I think, has all of the strengths and weaknesses of that. I kind of, for some, for those who are more depressive and a complete certainty that there are apocalyptic things coming down the pike and there's nothing we can do about it. And for others, a complete certainty that there's utopian future right around the corner and that all we have to do is just, we can lay down our tools in the fields and manna will fall from the heaven. And you see this when you especially look at those who expect this AI singularity, that an artificial intelligence is gonna pop out of a box somewhere and create an absolutely wonderful utopian world, whoops, messianic world and solve all of our problems. Now I think that there are more humanistic versions of this. There's the global brain interpretation. We mentioned, oh, I just zapped my slides here. There's the global brain interpretation. I'll finish without slides. The Taylor-Deshardan interpretation of this. But the interpretation that I think that the Singularity Institute, people like that use is a particularly unfortunate one because it really breeds a certain degree of reservation about human agency in the world because if we're just waiting for the future AIs to do all this work for us. So my summary is that we're not incompatible. Transhumanism is not incompatible with the eschatologies, the satiriologies, the philosophies of various worlds, religions, especially at the narrow level of technology. The technologies themselves can be incorporated into all these phase. We heard about the simulation hypothesis. So the notion that there could be these post-human gods as you have argued in your work, taking the simulation hypothesis a couple steps further and trying to work out what some of the other implications might be. I'm not so convinced that benevolence itself is that being able to survive as a species means that you're gonna be benevolent towards everybody else and create other universes. But at any rate, the simulation hypothesis is an example. If you take one particular technological aspiration or expectation and follow it out, you can come up with a scenario that's compatible with specific religious traditions. I think it's a more difficult challenge to try to figure out the compatibility between the transhumanist tradition in its full current ideological complexity and other religious traditions. But I think that's happening as well, Buddhism, liberal Christianity, and so on. So I think that the future is gonna be very interesting. I think we're gonna see a wide variety of accommodations and corporations of transhumanism with religious ideas, and I'm looking forward to it. Thanks.


Hey everybody, this is Nathan Zowder from Drake in Ontario and you are watching Trucker Josh Vlogs on the internet. Good morning diesel from Old Blow. Good morning Minnesota. Good morning sunshine. It's hot. Got some bugs on her already, but that's okay. We got ourselves a load to deliver. And we have a preloaded trailer waiting for us in the Rosemont, Minnesota.   We might even get home today yet. Tell you what, I didn't do like a proper maiden voyage video yesterday because yesterday was just crazy. We went into the doctors or the clinic in the morning and it turned out we didn't. It wasn't what we thought it was. The big appointment is actually next Tuesday. So I went back to work. We're down here in Minnesota now. We brought a load of lumber from Canora down here in Brainerd, Minnesota.  And it's the first trip in Old Blue. Like I was saying in yesterday's video, I was really hoping to make the first trip in Old Blue a very special video, a maiden voyage video. So I didn't quite get that yesterday because it was a rush, rush, rush, rush. And today isn't too different, but it's a little bit more slower pace. Today will be the official maiden voyage video. It's the first full day in Old Blue. How you doing, Weasel? You ready, Weasel? This show on the road just to make sure they're still working.  How about that? They'll be expecting us there, so... I should be able to get unloaded as soon as we get there. As soon as I get the tarps off, anyway. Got in town pretty late yesterday. I'd like to reset my schedule today, but I might also make it home late today. I'm used to the sound of those air intakes right there. When the truck is really pulling, you can hear it. Sucking the soul out of you almost.  I hope it leaves some oxygen for me. You guys have got to hear these air intakes a little better though. It's intense.  I was talking to my buddy Moses who drives a W9 as well. I said, this is normal. He's like, oh yeah. That's just the sound of horsepower, baby. I'm not used to that. Listen to this. You can hear it sucking in the air vents here when I take off. When it's really pulling hard. I did drive a W9 in the past. I guess I just, it's been so long since I've been in a real truck. Diesel, what do you think of it? What do you think of it, man? It's very noisy. I like it. Very nice, noisy. It's a nice noise. Nice, noisy, noisy, nice. Great input, Diesel. Great input. I'm speechless. It's odd, yes. Me too. I love this truck a lot. Definitely a good buy. And a lot of you are asking if this high stick shift is annoying, having it way up here. No, I actually like it better. It's actually more comfortable than when it's down here. I feel almost like it's more natural. Maybe not in the forward position here, but when it's back here when you're on the highway, it's at the perfect height. Okay, green light. Come on. I want to show them this. Listen to this thing right here. Okay, once we get going. Like, that hard there. I was just sort of feathering the pedal. I'm giving her a little bit and I'm leaning into it a little bit, but it had more. Very impressed. To me, what trucking is. Trucking is supposed to be fun. You're supposed to enjoy what you're doing, enjoy your truck. I've wanted to be in a W900 like this for a very, very long time. And to be in it now is sort of surreal. Especially such a nice one. And I'm not just saying that because it's my truck. The driver before me made it into such a nice truck. And now it's my job to maintain it and make it better than I found it, which was already amazing. So I got to make it like double amazing. Yeah. I got your wood, eh? Your Canadian wood. Got it right here for you. Got it under the Terps there. I had to take the Terps right off, eh? Five miles per hour. Oh, I could do that for you. All I ask is that you take this weight off me. It's weighing me down. I don't know why I sound like a Minnesotan. I'm trying to sound like a Canadian. A lot of people would argue that Minnesotans are Canadians. We're all the same people. There's just an imaginary line drawn between us. We had a fight once back in the day. We've never really solved it. We just said, okay, that side's yours. This side's ours. Works best that way. Where am I supposed to go? You don't want me on the... Where's the shipping and receiving door? Loading dock? Outbound shipments? Oh, is it inside? No, that's outbound shipments. Inbound. I am inbound. Josh, get it together. Hello? I want to give you some stuff. I brought it all the way here just for you. Where do I go? I'll figure it out. I'll figure it out. I'll talk to you guys in a bit here. There's a guy walking over there. I'm going to go talk to him. I think I went too far. I think it's on the other side of the building. I was a pretty quick unload. Quickly ripped off the Terps. Went inside the building there. There's only eight lifts of 21-foot lumber. You knocked those off and boom, I was out of there. So here I am. I'm just taking out some of my garbage to keep my truck clean. I'm going to go into the truck stop here. We're just down the road in Pillager. Pillager, Minnesota. Gonna quickly run in there, grab a coffee for the road. We're going to head on down to Rosemont. Running a little bit later than I wanted to, but the load's waiting there for us. So we'll go hook up, get as far as we can tonight, and then tomorrow we'll be home. And I'll be home for the weekend. What town is this? I think that's the interstate right there. No, wait, no, that's Minnesota 23. So hard to tell what town you're in because in the U.S. there's so many towns. Just town after town after town after town after town. And they also blend in. We're very close to Minneapolis. I think this might be St. Cloud. I don't know. I don't know. I'm just trucking. I don't really care where I am. I know I'm in Minnesota. I can see on the GPS there approximately where I am. Minnesota is that way. I'm in Minnesota, part of Minneapolis, St. Paul, which is in Minnesota. I'm hoping we get to hit the freeway soon. It looks like I'll be running parallel to the freeway for some reason. Rosemont is on the southwest corner of Minneapolis, St. Paul. I think St. Paul's on the east side, right? So it's like south of St. Paul. My turn. My turn. Come on. Come on. I'm slowly getting better at shifting this truck. The throttle on this engine and on this truck is very touchy. Very touchy.  Minnesota is such a beautiful state. It's just like Manitoba. They have a lot of lakes. A lot of cottage properties and stuff. But here, there's just so many more people that make more use of their lakes in Manitoba. Most of our lakes are completely isolated. There's no people living anywhere around that you got to fly in. That's why flying and fishing is so popular up there, right? Americans from here who love to fish drive up to Southern Manitoba or Ontario next door, and they'll take a float plane up to the northern lakes. That's the only way you can get up there. That is pristine, pristine fishing. That's where the good stuff is. But it's nice down here because, you know, every lake sort of has its own community of cottages around it. I guess that's sort of the Minnesotan thing to do. You go to the cottage on the weekends. Or maybe you live there year-round.  I don't know. That'd be awesome just living on a lake.  I do a lot of fishing. I wish I did, but I don't have a boat and I don't have time. I could rent a boat. That'd be no problem. But I don't have a lot of time. I have a truck though. Can't have everything. I'm getting better with my shifting. I still need to practice a bit. This truck is much different than that Peterbilt. This is an 18-speed manual. Obviously, you can see me shifting. It's manual. It's an 18-speed, which means you can split the lower gears and the higher gears. I don't use them all, but they're there if I need them when I'm pulling a heavy load up the hills. And like I was saying earlier, it's kind of comfortable. The height of this shifter, it's just perfect. I don't know why I like it. It's a nice place. Nice placement. Not too high. You don't want it like up here. The driver before me had very similar tastes. Or maybe I guess I got similar taste to him because he made this truck what it is. And I really like it the way he made it up. I just want to add a few things to make it my own yet. Like I'd like to change the steering wheel, but for now this steering wheel is actually pretty good. I like it. It's a little bit worn because it's a little bit old. Just like the truck, but this piece up here on the shifter needs to be replaced. But I like what he did with it. I don't want to change that. I just want to add a few things to it. Very smooth. Very smooth ride. Just glides. I really like it. The suspension on this truck is well thought out. I just one day I want to put an air ride front suspension on this. Just so that the only reason is that when I park it I can lower the bumper right down to the ground. That's the only reason. It also offers a smoother ride yet. But I mean this is pretty smooth already. We'll see. I'm waiting for this truck to bring in money first. And you also got to remember that we're starting a family soon. That's going to take a lot of money. So that comes first obviously. But I do make a little bit of money off these YouTube videos. And I'll probably allocate some of that towards building up this truck into a show truck. So really if you want to help me build my truck for free you can just watch my videos. And I appreciate your patience with the ads that show up. I really do. That is what has gotten us through our IVF. That helped us pay for our IVF. So I do appreciate your patience with those. And in the future some of that will probably go to get this truck show ready. I feel like 65 is way too fast for here but that's the speed limit. I'm going to slow it down a little bit to 60. This corner is pretty tight for a 65 mile an hour speed limit. I just saw the sign. It is 65 and my GPS tells me it's 65. I'm going to take her a little easy on old blue. I don't need to hammer down around the corners like that. Saved my steer tires. Mistakes were made. Surprise Karen is not laughing at me. Well she is the one that guided me downtown St. Paul. But I saw that we were going through and it's a freeway. I'm like it'll be quick. It's a freeway. We'll just buzz right through. I forgot it was rush hour. So here we are living the dream at W9 downtown St. Paul, Minnesota. In construction season. I'm going to take 52 south here. It's not that bad. It's just a lot more people than I wanted to deal with right now. St. Paul, Minneapolis. You guys got a lot of people. It's got a lot of people. It's a problem. Spread out. What? No, I'm not going to take that exit over there. I'm over here. You told me to be in this lane. No, I'm going this way. I do want to go in the 52 though. Why is the 52 exit over there? It's also over here, right? It's there or here. Better be. Karen, you don't even know what lane I'm in. What kind of navigator are you? It's hard to tell me where to go when you don't even know what lane I'm in. Lead me into a pickle. Oh this big thing. There we go. So we did end up on the 52. See? 52 south. I've been here many times before. I just, I always try to avoid downtown during rush hour. Except for today. Didn't think. Exactly rush hour and here we go. Floating through downtown. Not always the brightest guy, but I did get through there. I didn't hit anything. Sounds good. It's always good. I think we're on the other side now because traffic is actually moving. Traffic on the other side of downtown was, oh, I forgot how good we had it in Winnipeg. Hey. It's me again. Future Josh. This trip was chaotic to say the least. And that was my footage from the day. I'm going to give you a little bit of footage after this. From yesterday. A little sneak peek of yesterday.  It took me a while. I had to chain it down. It took seven chains.  And it was an oversized load. So I had to wait for my permits to make sure that I was able to start rolling down the road with it legally. Everything went well. Other than that, by the time I got there, it had started to get dark already. So I waited until the next day to film the load. Not much use filming when you can't see anything. Right? But thanks for watching today anyways. I've been having fun. The truck has been running marvelously. Incredible.  And some of you were asking what that little yellow light is in my tachometer. I was only going in the RPM gate, whatever. The little red yellow light there. My trailer ABS light. There's nothing wrong with the trailer ABS light. There must have been a loose connection in my cord coming from my truck. I kept fixing it. I'd go out there, I'd fix it. It would turn off. And then I'd take another corner a little bit down the road. It would pop back on again. I'd have to pull over at the first safe spot. And then you'd fix it again. But eventually, down the road, I think in this next clip, at the end of the day, I finally figured out what was going on and got that issue solved. It wasn't that there was a problem or anything. It was just a connection. A connection issue in the wires. And it was annoying me too.  Not ignoring the issue. Just ignoring the light because I knew there wasn't an issue. It was all good. So no need to worry about that. I've had a few questions about that already. I know my first trip. It wasn't an engine light though. Okay. So yeah. I was nothing to worry about and you shouldn't see that. Sometimes that happens. There's that cord. It's like a green cord that connects the lights and everything to the trailer. Sometimes if there's a loose connection in there and it's just not connecting right, it'll pop the ABS light on when you take a corner and also it'll disappear. It'll pop back on. It's very annoying sometimes. Sometimes it's the trailer and then it's very annoying because you can't figure out where it is and you've got to report it to the shop and they've got to figure out where it is. But in this case, I found the issue and got it solved there. So now there's like a little 30 seconds sneak peek of tomorrow's video where you get to see the load that I loaded up there in Minneapolis, Minnesota. We're going to pull that back home here to get to where I am right now, editing this video in my messy office. Really need to clean this place up. That's one of my projects for today. Today has to get done. It's not that bad. It's not that bad, is it? It's pretty bad. All of this stuff is being moved to the shop eventually anyway, right? Cheers. No more coffee left in there. That's disappointing. Oh, coffee grinds are in there though. Coffee grounds, grinds, grounds, grinded grounds. Okay, I'm wired. I need to get back to editing. So thanks for watching. I'll show you a clip of tomorrow a little bit there. Don't forget to subscribe. My computer's very excited. That means he wants you to subscribe. Hit the like button if you did like the video and I will see you in my next video. There should be, I said video there twice. That's okay. You guys will forgive me. There should be a couple of videos coming out today. I'm really trying to catch up.  Load of concrete today. Bringing us back up to Manitoba. I picked it up in Minnesota here. Yesterday was a crazy day again. I think it's pretty good looking load. I had to move the fifth wheel back just a little bit. Go, go, go, go is the name of the game. So it's nine foot four wide. We've got our permits with us, of course. But we're ready to get truckin'. Let's go.


Yeah. So if you're using Mac OS and you use messages, which many of us do, which is great because man, you can type out a long message fast in that, right? Right.  But because there are some funny things there that happen in auto correct. But if you notice you've typed a message and you want to edit it in Mac OS, sometimes you just tap on that last message with two fingers on your trackpad or right click on your mouse and you get a little menu that comes up that says reply or edit or undo or undo send or something like that. Sure. But you know what? For me, that works about 30% of the time, 70% of the time I am in a total frustration. I just want to edit that word before it's seen. And I, the other day, I could not get it to edit. I'm like, all right, I'm going to, I'm going to take the mouse. I'm going to go up to the edit menu in messages and see and lo and behold, there is the ability to click on edit last message or you could go commandy and it will automatically take you to edit last message. Now that does time out. After you, after you've sent the message, I think more than 10 minutes ago, as I'm looking in that menu though, I see that yeah, we have command R to reply. That's the fastest reply. If you're on the keyboard already, just command R and boom, it'll reply. It'll start a reply thread to the last message and then command T to invoke the little tap back thing for the last message. Right. And here's the cool thing. So you want to reply to two or three messages ago, just go up and select that and then hit command R and it will reply to two or three, not just the last message. Yeah, yeah, yeah.