 How many of you are beginners? Here, this talk is for you, OK? And the rest of you can be kindly amused. So the word firewall and breach are marketing terms just to get you to attend. It's not that complicated. Here's what we're going to talk about. We have a Rails server, and the Rails server is talking to PayPal. And what I want to focus here right now is this is a common third-party problem for those of you maintaining websites. In production, the production server is accessible from PayPal, because both are in the internet. But if I want to work on this as a developer, I'm going to run into this problem. I want to actually run the test server on my laptop, and I want to communicate with the PayPal sandbox. So if I just fire up the app on my laptop and I fire up the PayPal sandbox and I try to use it, I run into this. I call it the developer's lament. And the problem is, is the request never makes it from the outside world of the internet to my server? Why? Because the PayPal sandbox is on the server, I'm sorry, on the internet. And my laptop is separated from it by being on the local area network, OK? So it doesn't work. What we'd like for it to do is just work. So this talk is briefly some suggestions on how to do this. Everybody with me? OK, so the way you get around this, one technique that doesn't require Elixir, as a matter of fact, I actually did this with another technology, is to set up a server that's in the internet space. It has a public IP. And then you tell the PayPal sandbox instead of sending a message to this nonexistent URL from my laptop, send it to the server. On my local area network, I put a router. And it's just another server. And I just give it the name router. And so here's the way it works. The PayPal sandbox sends the same request, but it doesn't go to the laptop. Instead, it goes to the server. And the server just holds on to it. The router pulls the server. And eventually, it pulls and the server has a transmission from the sandbox. And so it retrieves the sandbox information and it forwards it to the laptop. OK, simple solution to the problem. Anybody ever set up a reverse proxy this way? Allows you to actually run your laptop with your third party devices while inside your local network. So I used Ruby Sinatra for both the router and the server. And the trouble is the polling is rather suboptimal because now the response time of your laptop to the sandbox outside is going to be dependent on your polling interval. But the development environment is not that too big a deal and you can make that work. So Lord Vader has his opinion on this. When I saw Elixir, I'm going, oh, this has got to just be so much better. So let's see how we could do this with Elixir. As a matter of fact, let's go all the way up to Phoenix Chat and we'll talk about the differences between doing this in Elixir and Phoenix Chat. OK, so we're going to do the same thing. First of all, though, the router is going to go to the server and register. Among other things, what that's going to do is it's going to open and hold a connection. And those of you who are anywhere experienced with Elixir know exactly why. So the PayPal sandbox sends the request and now the server sends the request information via chat why? Couldn't do it before. Why? Because it can. OK, so no delays. And of course, the router then forwards it on to the laptop. So far so good? Now, if you want to dig into the bowels of Elixir a little bit more, you can also do this with gen servers. Just put a gen server on the local area network side and you can put a gen server on the internet side and you can set up the registration and now you're passing messages instead of a channel communication. OK, so the wins on this are we have no polling. It's certainly easier to test. It gives you more options regarding responding the sandbox because you don't have a varying polling interval. So overall, the code's no more complicated. As a matter of fact, it's probably simpler. And it's an overall win. So Lord Vader says, good, several ties with the past go forward. So that's my main talk. But it's come to my recent attention that there's another activity that's very, very important for me to discuss. And this is not on the docket, so I'm going to bring it up. So here it is. And the question is, we are starting to integrate with a bunch of different systems. And we need a tech stack name. OK, how many here are using EmberJS? Oh, that's surprising. That's wonderful stuff. There's some people who have actually started a tech stack and they named it. And so it's got Phoenix in it. It's got EmberJS, of course, in it. Got Elixir in it. And Postgres. Peep, this is taken. I actually found this. And I went, oh, you can do so much better than that. You also have Airlang and you have Ecto. So I leave you with that. Thank you very much.