Toptal – Scale your team and hire from the top 3% of developers and designers with Toptal. Email adam@changelog.com for a personal introduction.

Ultimate Go – Ardan Labs offers some of the best training classes for Go, Web and Data Science. They offer two and three full day intensive courses that literally takes any developer, even at different experience levels, to a whole new level. Get in touch and tell them you heard about their classes on Go Time!

And our special guest today is actually Luna Duclos. I don’t wanna spoil a little too much about what we’re gonna talk about, so I’ll let you give a little introduction about yourself and what you’re working on.

Alright, hi everyone! I’m Luna Duclos, and I am one of the few game developers that works full-time with Go. Today we’ll be talking a little bit more about that - what I do day-to-day, how the development stack at my current job works, and probably a bit about my previous job as well, and some of the open source stuff I do, and some of the community involvement stuff I participate in.

The game development is one of the really exciting areas; you’re one of the few people that I’ve heard do game development. Is this like backend server technology for MMOs, or is this actual frontend, OpenGL, DirectX stuff? Where is that line drawn with Go, versus other languages you might use?

In my case I don’t touch the client computers at all. There won’t be a single line of my code running on anyone’s computer, except for our own servers. What I mostly work on is the web stack, as well as the game servers themselves.

In my case, I work on a game called the Hunter Classic. It is an online single and multiplayer game with regular competitions, leaderboards between hunters. A large website, regular competitions and that kind of stuff.

No, it is a lobby based game. If you’ve played Diablo, it’s a perfect example. Diablo has a lobby; you can create a game, you can join other people’s games… In the Hunter’s case, the actual multiplayer is peer-to-peer, so there is no involvement from the server for the actual multiplayer play in the game that uses [unintelligible 00:03:12.23]

What the servers do is they handle all the competitions, the whole scoring system, as well as regular rotations, an in-game store, inventory management, that kind of stuff.

Like most other companies, we use C++ to write game clients. Avalanche Studios, which is my employer, has their own engine which they use to build all their games, so that’s what’s also being used for The Hunter Classic.

There were multiple reasons. The main reason is that the existing servers before I started were not written in C++ to start with. They are written in PHP and Python, running on AppEngine. It works; the old servers are still powering the game and doing their thing, but Python being a weakly typed language means it’s really fast to develop in, however it’s really easy to break things in such a large codebase as the Hunter has, which is why there’s now a process ongoing to start moving development of new features to Go.

We have several Go servers running on Kubernetes, and all new features are going to those servers, rather than the old Python app engine ones. We’re also slowly migrating over all features to the new servers, as time allows. The main reason is mostly that Go is much faster, which means cheaper servers, and it’s also much harder to break things with Go, compared to Python.

Okay, so this is kind of like a microservice based architecture, and inventory management is handled by one service; rather than kind of continuing to maintain that particular service that may be running in PHP or Python, you’re slowly rebuilding these things in Go.

There’s two performance gains we’ve seen. One, we’re moving from Python to Go - that’s the obvious one, Go is much faster, consumes much less CPU. But there’s a second gain as well, and that’s moving from App Engine to actual VMs. App Engine servers are quite small, and constrained on CPU despite that fairly high price, so we’ve seen there’s much gain from switching from Python to Go, as from switching from App Engine to actual virtual machines.

Yeah, the whole new Go cluster is running in Kubernetes. It’s running in Google Cloud on a GKE cluster, which is Google’s managed Kubernetes offering. So we don’t have to manage the cluster ourselves, Google does it for us.

Yeah, it was actually from my previous job, though. As some people might know, I used to be self-employed and had my own business called Palm Stone Games. I was also running Kubernetes clusters at Palm Stone games, and as part of that we were using LetsEncrypt as our SSL provider.

We did not want to request certs manually every month - that’s just asking for things to expire - and neither did we want to use Kubernetes Ingress objects, which was the only way to get LetsEncrypt to work automatically at the time.

So I ended up deciding to fork Kelsey Hightower’s Kube-Cert-Manager project. I took all the documentation, as well as the basic approach of how things work, and I decided to rewrite the whole codebase to use Xenolf/Lego instead of a self-rolled Lego library, which meant that Kube-Cert-Manager, my fork, magically had support for over 20 DNS providers, while there was only one in Kelsey’s version.

[00:08:11.11] That was the main motivation for everything. There were already documentations in place, there was already a designing place for how things work, it just needed to be fleshed out to work with more DNS providers and be easier to deploy and set up. So that’s what I did with the rewrite of it.

And for anybody who might not be aware of what we’re talking about, as you throw up individual services that may be publically exposed in Kubernetes, this is basically something that you can run inside your Kubernetes cluster to basically issue SSL certificates on the fly using LetsEncrypt for the things that you deploy, which is just awesome.

All of us remember struggling through – you have to go to your SSL provider and you have to get all the certs and then upload them to all the servers… All of that is gone. I hate getting the e-mails… I actually spaced out my SSL cert renewals so that I wouldn’t have to do a bunch at one time. [laughter]

Now I get e-mails from LetsEncrypt that says my certificates are expiring and it’s yet another reminder of failed projects… You know, this thing that I started up a couple months ago, isn’t in use anymore, your certificate is expiring… “Oh yeah, I remember when I did that.” [laughter] It’s just like the domain’s expiring. “Oh, I remember registering that domain. Oops…”

So actually, here’s proof… Brian had owned GopherAcademy.com for some reason long before we had ever considered a conference or anything like that, and it was like “Well, we kind of need an entity to run the conference… Hey, don’t you still own GopherAcademy?”

I recently released a project called Instrumented SQL. With the Go 1.8 release we had this nice context that we could pass to the database SQL package, but no one seemed to have started working on instrumentation using that concept, so I ended up needing instrumentation at work, and after checking with the big boss, I was allowed to open source that instrumentation, which is how Instrumented SQL was born.

[00:11:54.17] It’s a wrapping driver, basically. It will grab another SQL driver, it will wrap it with instrumentation and logging, and you can then call the wrapping driver using just a regular database SQL package, and everything will automatically be traced and logged for you based on the tracer and logger object in the contexts that are passed along.

There is one caveat, and that’s it grabs tracers and loggers from the context - that means you cannot use the non-context functions, because those cannot be traced, because it doesn’t know what request they belong to.

The instrumented SQL function can trace calls, so it can use Open Tracing or Google tracing to build up traces from every call, and it can also log every SQL call, so it spits out the SQL along with all the arguments that were passed to a logger that you can pass in. That’s it. It’s really simple, but it’s been quite useful.

Not currently, no. Currently, you can either log everything, log nothing, trace everything or trace nothing, and that’s it. There’s currently no middle ground. But one of the things planned is to add more generic hooks, so you can add some logic to decide whether you wanna trace things or not.

With Go, honestly, not really… Most of the server stuff I do isn’t game-specific per se. There’s some specific things, like handling achievements, handling user accounts, handling leaderboards and scores, but there’s not really any libraries for any of that. So I haven’t really been touching any of the Go game-specific libraries. They’re all mostly aimed at making game clients, rather than making game servers.

[00:15:54.13] Yeah, in the game world, most people use some sort of engine which provides all the physics and all the graphic support, and then there’s usually scripting languages and things like that built into it too for a lot of the frontend work. A few places work on their own, but a lot of people just lease, or - is there a right term for that? But yeah, they basically pay for the rights to use an engine. But you’re right, a lot of work goes on the back side now. Very few games are client-only anymore.

Yeah… There’s a couple that get away with just peer-to-peer multiplayer, but I think that’s the lowest you can get away with these days. But yeah, a lot of games end up using at least a little bit of server work.

Well, almost everybody has achievements, leaderboards or things like that… There’s all kinds of things that need to happen there. And in the console world, you’re starting to notice that even when they’re single player games, content is being loaded in that may have been created through somebody else’s game now, too.

That’s true. On PC (at least) there’s also a scheme that magically handles a lot of things for game devs… Like, Steam handles cloud saves, Steam handles achievements, Steam handles patching and all the hard infrastructure bits for a lot of game developers.

The ones written in Go, no. I haven’t had a look at them, except for a quick glance. The main reason for that is that they can’t really compete with a fully-funded UE4, or a fully-funded Unity with a whole development team dedicated behind them.

I wanna talk about something that’s near and dear to my heart, probably my favorite thing in the entire world, and that’s frontend web development… [laughter] Luna, I know you’ve had a lot of activity in the GopherJS world, and way back when I was trying to figure out whether I could actually do GopherJS, you had written the Polymer bindings for GopherJS. Do you still spend a lot of time in GopherJS?

[00:20:15.25] I actually don’t at all anymore… I haven’t touched GopherJS since I changed jobs in December, unfortunately. Polymer is still a really interesting technology I’d like to spend more time on, as well. Unfortunately, currently I don’t have enough time in a day to do so.

Well, don’t get me wrong, I still do quite a bit of frontend myself. The web stuff most always ends up on the lap of the backend people, so I’m still doing web development with Javascript as well, just not with GopherJS anymore, unfortunately.

Yeah, my biggest problem with GopherJS is that although it’s so much easier to write frontend code in GopherJS, I still have the lack of knowledge of frontend technologies, events, DOM, that sort of stuff… So now I’ve added another layer of translation that I have to make in order to use that, and it makes it harder for me, not easier.

Yeah. And there’s also the fact that you’re gonna have a hard time hiring someone that knows GopherJS already. You’re almost always gonna have to teach them from scratch… At least if you hire a frontend dedicated developer. It’s been one of the big show-stoppers for me for GopherJS, actually. It’s not big enough yet to have a hiring pool.

[00:23:43.02] That’s not true. My struggles are because when I have to do frontend, it’s a freakin’ disaster. Has anybody actually looked at the Javascript ecosystem recently? The problem I had - it was maybe two nights ago - was I was writing a TypeScript application for Angular 2, and then I had to bring in another library that wasn’t TypeScript and it wasn’t using the same module packaging format… Because I had to go down that rabbit hole, now I understand that there’s AMD module packaging and UMD, and SystemJS and all of these different module packages… That’s why I think the whole thing should just burn in a trash fire. [laughter] It’s so complicated trying to make stuff work. It’s frustrating.

I will not disagree with you. I’ve had my share of frustrations because of the same reason, and also because – it was my experience; this is not a diss to all the frontend developers out there, but a lot of frontend developers don’t seem to know what they’re doing. It’s just lots of copy/paste embeds from various places, made to work forcefully in the current context without actually making sense entirely. A lot of the code I’ve looked at is that way.

Yeah, I think there’s a couple of issues though, too… A lot of times you end up with frontend developers who are really designers and that’s really where their interest is, and they’re kind of forced to learn programming. Or you have backend programmers who are just trying to rush to get the frontend stuff done because that’s not really what they wanna use…

It seems like there’s a lot of fragmentation in that area, to Brian’s point… There’s so many different ways of doing those things, and I think it’s one of the things I love about Go so much - enforcing these patterns. Mostly people do things the same way. There’s not like “Well, how are you managing these things? How are you doing dependency management and asset pipelines and things like that?”

Somebody on Twitter – when I made my snarky tweet about all of the different package management systems and dependency management in Javascript, somebody said “Well, we’ve got 28 versions of vendoring tools in Go”, and that’s true… But we have one vendor standard.

It’s not that I hate it. I mean… I actually crossed a point recently where I feel like I can understand TypeScript, because it’s got classes, it’s got types, it’s much more strongly typed than regular Javascript… I kind of get behind that; it’s not bad. And Angular is pretty easy to do for me; it’s easier than most of the others. So if it’s just TypeScript and Angular, it’s cool. It’s when I have to add in all the other stuff. It’s that whole web pipeline and Sass compiling…

Once you get into having to mix Gulp and Bauer and Webpack… Just shoot me in the head, right now.

Yeah, I got the biggest kick out of that. The rabbit hole that I went down… The people were talking about – maybe it was on the SystemJS side, I don’t remember, but one of the things was bundling to make a single file, but we don’t do that anymore, because HTTP/2 means that you can send lots of multiple requests, so you need to decide whether your consumers are going to be HTTP/2 or not, because that affects completely how you bundle your whole app and what your pipeline is, and it’s just yet another decision I don’t want to make.

I guess it would depend on the way you’ve had things set up, too. I don’t know with a lot of the asset pipeline stuff whether people are still doing this, but one of the tricks that has been around for years is to just have multiple asset domains, because really the browser’s limitation is one connection per host; so if you had multiple hosts that your assets were on, it could fetch from each host.

Yeah. In fact, some CDNs actually do that for you automatically. They’ll distribute your content across several domains, and you’ll see C1.whateverCDN.com, C2.whateverCDN.com and so on. It’s been quite interesting seeing how some apps are starting to integrate with their CDNs more.

I remember that was one of the first Rails plugins that I wrote – I don’t even know what you would call that… A host multiplier that basically treated every server as if it were 20 servers, so you had 20 different asset servers instead of one; that was way back in the day. Asset hosts… Yeah, Steve St. Martin in the channel mentioned that. Before that existed, I wrote one of those… Back in ’Nam. [laughter]

There’s a lot of interesting stuff that came out this week. Probably the most exciting one - or at least the most interesting one is the Goggles application. Did anybody see that? From Kyle Banks. GitHub.com/kylebanks/goggles, it’s an application that lets you search your GOPATH for code, and it shows you the GoDoc… It’s almost like a little admin interface for your GOPATH - it will show you all of the code, all of the GoDoc… It’s very pretty and well-written, and it’s got a cute little pop-up gopher that comes up when you’re searching… A nicely done app.

I can tell you, the reason for all of that is because it uses Gallium, which is the wrapper for the Chrome web app thing that makes it a native app, and I would bet you a dollar that Kyle does not have an Apple developer account, so he can’t sign those web apps or sign those Gallium apps, which means that he can’t distribute applications in the new MacOS, because they’re not signed, so you have to build them yourself. This all boils down to developer signatures.

Well, it seems like most of it is written in Go and frontend stuff, so the Gallium part I think is just what wraps it into a native application. So in theory, there’s no reason this couldn’t be served up over HTTP and you could hit a local port or something, too.

If you dig through the source code, the whole system source file under package.sys is all Mac-specific, so it definitely will need at least Linux and Windows versions of that file before it’s gonna fly.

Every time I turn anywhere, I’ve seen this app on Twitter, on Reddit… It’s gotten a lot of attention recently. I think it was even on the Go newsletter today, so it should be getting more attention soon.

I noticed that the GoKit team released their 0.4.0 release, and that moved to the inbuilt context library in Go 1.8, so no longer using the Xnet contact package anymore in GoKit, so that’s a big release for them.

Yeah, Intel Edison… You name it. It runs on everything. I have a project called Cupid, which is a barbecue controlling application that runs on a Raspberry Pi, and it controls my barbecue. That all runs on Gobot.

Hardware is interesting, because I don’t think many of us think much about it, aside from using embedded devices. But actually developing against it is really cool, because we all love programming and we love seeing the things that come to life… But being able to see it interact with physical objects is just ridiculously cool, like the smoker controlling the temperature… Like, there’s Go code controlling that, and Brian wrote it!

[00:36:08.27] It’s really cool. I also have used Gobot to control AR Drone drones at my kids’ school. We do a thing every year called The Great American Teach-In where parents come in and talk about what they do. I couldn’t explain to the students that my work is actually that boring, so I did Gobot with drones, and the kids who were eight years old programmed the drone to fly around the room, and they did a little fly-by of a teacher, and it was really cool. And all that is Go powered.

I wonder if there’s a list somewhere of all the projects that are currently using it… They have interfaces with all kinds of cool little toys. Have you seen the Sphero? It’s like a little ball that rolls around, and you can jump it, and you can play with it with your mobile phone… But they have an interface for that for Gobot. A ton of cool stuff. How about you, Carlisia? Did you see any cool projects or anything that you’re excited about?

[laughs] No… Yes, I wanted to mentioned that the Women Who Go – well, Sarah Adams, the founder of Women Who Go launched an initiative to send women Go developers to GopherCon. There are a lot of us who would not be able to afford and who don’t have their company sponsor, so there’s a crowdfunding effort for that. If people wanna contribute $10, $1,000… Anything is welcome, of course.

A million dollars… [laughter] And it’s tax-deductible, because women who Go now is part of Bridge Foundry, same as GoBridge. I don’t know how the tax-deductible part of this works for the Women Who Go for this initiative, but I think it is tax-deductible.

And we should soon too be… So in addition to trying to help with that, we also will be doing a diversity and economic hardship type scholarship initiative too, once we finish getting some more planning in place for some of the other GopherCon stuff. But there will be ways for people to apply for assistance to come to GopherCon too, who may not necessarily be women.

We’ve also been saying that about regionals, too… I think it comes down to time, because right now Brian and I have day job stuff that pays the bills, and it’s already kind of demanding enough on our nights and weeks and stuff to do the one event. So that’s why we keep talking about, “Well, how crazy do we have to be to do more than one?” [laughter]

But we keep talking about it, and if we can find ways to make that work schedule-wise, where we can have the time to work on more than one, yeah, we definitely keep talking about doing another one and where we might do it.

One more thing I wanted to mention - there is now an official Go contribution guide. Steve Francia put it together recently (maybe last week). It gives you all the steps that you need to do to contribute to Go.

At least we’re honest about it. You know, there was one more package that I wanted to talk about… CockroachDB actually had a blog post about it too, The Arbitrary Precision Decimal Package, so that they could manage data types at arbitrary precision with a little bit more speed than Go allows. So at GitHub.com/CockroachDB/apd there’s a nice arbitrary precision decimal package. I don’t have a link to the blog post, but maybe we can dig that up somewhere, too. I’m pretty sure there was a blog post that went with it.

Yeah, we’ll find it and we’ll drop it in the show notes before this episode is released. So I think now is a perfect time for our second sponsor break. Our second sponsor for today is The Ultimate Go Training Series.

Alright, we are back, talking to Luna Duclos. Before this break we were just talking about interesting projects and news and stuff, but let’s get a little personal here… If you were not developing backend systems for games, what would you be doing? I think this would be a fun thing to start asking people…

[00:43:54.23] Speaking at them and attending, and maybe organize some smaller ones. I’ve been organizing FOSDAM when I can, because the Go team hasn’t been able to do it, so I took that over. Stuff like that, and meetups that aren’t too huge to organize. I wouldn’t be able to organize something like GopherCon like you guys are… That’s just crazy.

It’s grown to a scale far beyond our ability, so over the years we’ve hired people to help with different parts and logistics and things like that. It’s interesting though… I love the involvement with the community and doing things for the community, especially the day of the event, seeing how excited everybody is… It’s infectious.

We need to make one of those GopherCon excitement curve graphics where you show the day of the conference - excitement level 11, and then four months before the conference - excitement level -50. [laughter] It’s almost like the adoption curve, maturity model… During the conference it couldn’t be any better, it’s the best event that’s ever happened and it’s so awesome getting the community together, but when you’re at that point where the conference is two or three months away and all you’re doing is making website changes and booking things for speakers, and fighting vendors, and contract changes… All of that stuff, it’s like “I wish this conference just be over with, please!”

“I’m never doing this again! I’m done!” Like, “I’m so ready for this baby…” and then later they see another cute baby, they’re like “Oh, I want another one…” [laughter] It’s the same thing for us. We go through our period where we’re like “I don’t know whether I wanna do this again” and then we’re like “Oh my god, we need to do 20 conferences!” [laughter]

There’s no money in that… It’s interesting, most of my older family members are in the restaurant business, and the restaurant industry has almost a Maslow’s hierarchy of types of food, and barbecue is the lowest demand food when there is a recession in place. People eat barbecue last when there’s a recession, so it’s not a recession-proof restaurant… So I would just never open a barbecue restaurant.

Besides, I think you’d lose a lot of the fun if you were cooking for a paycheck instead of just cooking for the whole neighborhood, like I do.

What’s really interesting about that though is it’s the reverse of what you would expect. Barbecue actually started out in very poor areas, because you’ve got things like, the front quarter of a cow was almost waste for a long time, and they would just chop it up and grind it up and make sausage out of it, they’d slow cook it in the butcher shops and stuff like that to preserve it, and then they’d sell it with like chopped beef sandwiches and things like that. People would slow cook the toughest parts of the cow that nobody wanted until it was tender, and then eat it.

[00:48:06.07] Then it was somewhere along the line people started traveling to areas and tasting barbecue and being like “Oh my god, I love this!” and brisket went from 70 cents/pound to – I don’t even know what is it, like $700/pound now… It’s ridiculous.

[laughs] The banter gave me time to think… I would be a professional investor, looking for opportunities to invest in things that would be not only profitable, but good to a certain standard - I’m not gonna get into it; I don’t even know what that means. But whatever I think would generate good will in the world. And of course, a lot of it would be tech, because it’s what I know and it’s so crucial for the world.

I don’t know, it’s really hard though… The investment thing would be fun; I love doing community and conference related stuff… Maybe something in information security probably. The hard part is know people in the field and I know the different roles and some of the stuff that you wouldn’t wanna do… But if I could have the ultimate – like, I’d just get grants to sit around and hack technologies that they say are unhackable, I think that’s be a lot of fun. Or inventing stuff.

Alright, I’m gonna go with that inventing stuff. Just sitting around with gadgets and electronics and coding, and just trying to solve problems.

Are you ready? So my #FreeSoftwareFriday shoutout is to - drum roll, please - Webpack! And the reason it’s to Webpack is because the documentation on their website is some of the absolute best documentation I’ve ever seen. I was whining about Webpack on Twitter, and three people came up and said “Did you even RTFM, dude?” And I went to the documentation and I was like, “Holy cow… I should have, because I would probably solve all of my problems if I read this wonderful documentation. So huge shout out to the Webpack team.

It looks like the docs are community-sourced, so everybody in the Webpack community, thank you for all those fantastic documents. Nice!

I think owe tremendous gratitude to anybody who works on documentation, because we all need it, and rarely do any of us want to actually contribute to the documentation. I think we have to show love to anybody who invests time in giving us great documentation. How about you, Carlisia?

[00:51:51.12] And Luna… I’m pretty sure you’ve kind of gathered the gist of this… Every week we give a shoutout to a project or a maintainer (or plurals of those) just to show our love and appreciation.

Yeah, my shoutout goes, without the shadow of a doubt, to Goa. Goa is a code generation framework that lets you declare a REST API, and will then generate all the validations, all the routes, all the security wrappers, all the middleware for you, without you having to do a thing.

It has saved me so much time, and it’s taught me a lot by making designing the API an actual, explicit step of my development process, which is lacking in a lot of places where they just slap APIs together and see if it works afterwards, and to hell if it doesn’t make sense.

Nothing, I still love Goa. I’ve been following the Goa 2.0 roadmap, and Goa 2.0 is gonna be amazing. They’ve moved everything into kind of a separation of concerns where your API is separate in the design from the delivery of your API, so you can have a beautiful REST API generated, as well as a nice gRPC API generated from the same design. It’s gonna be really good.

The Goa 2.0? It’s not done… I was just reading the docs last night; it’s not ready yet, but it’s getting close. Knowing how fast Raphael codes, it’s probably just a couple hours away, but I guess it’s really just maybe two or three weeks based on the way it looked in my code review last night.

Yeah, I need a better schedule, but I feel like the time there… So my #FreeSoftwareFriday for today is Helm, which was worked on by the Deis group. I think it might be the first project that got graduated from beta directly into Kubernetes proper. So Helm is a cool tool – they have these things called “Chart”, which are basically pre-packaged applications for running, say, MySQL or Postgres on Kubernetes.

I did know that, yes. And now they have nice YAML verification built into the latest kubectl, so it’s not as bad as it used to be. But when I was a kid, back before Kubernetes was 1.0… Yeah, it was eating my lunch all day long.

I’ve never had a runtime issue in production. If this was on video, my nose just grew, you know, like a mile long… [laughter] I love that about Go; you gain a lot of that stuff from dynamic languages, the way we write software and think about writing software, but that compile time safety is so nice.

I tell you what, though… I was working on like a live admin app for Buffalo this weekend with Ashley McNamara, we were pairing on it on Saturday, trying to figure out a way to make it really nice, like Django admin or Rails Active Admin, but for Buffalo, and I actually hit a point where I wished that Go had generics… It’s the first time in seven(ish) year that I was like “Damn, generics would be really useful here.” That’s the first time it’s happened to me. I almost stopped in my tracks and wrote it down.

I guess it depends on the type of stuff you work on. There are some fields and problem spaces where I could see generics needing to be used regularly, but for most of us, we’re like “Oh, that sucks… I wish I had generics”, and we’re like “Yeah, but there’s another way, and I only have to do this once.”

So the back-story here is that there’s a seven-foot gator in the pond behind our house - right behind my house, and I’ve got a BB gun and every time he comes near my shore, I shoot him in the butt because he needs to stay away from my family. This has been going on for about a week now. And you know, we’re talking a small BB gun and a big gator; there’s no chance I could hurt him, but I would like to provide some negative reinforcement for my neighborhood, so every time he comes nearby I shoot him in the butt with a BB gun, and he goes away.

I’m hoping that at some point shortly he’s going to learn, “Hey, the South shore of this lake is a really painful place to be”, and he just won’t come back. Because he’s getting too big. Seven feet is big enough to eat my dog.

Here what happens is they will leave the gator completely alone until someone complains about it. And at the point that they complain about it, they send in a trapper, and the trapper will kill it and render it for meat, and sell it. So there is no gator relocation program… If you make a phone call and say “This gator is too big”, they’re gonna come and kill it, and I certainly don’t want any animals to die unnecessarily, especially ones that I can’t eat… So I don’t see any point in calling and having the gator removed, because it’s just gonna die.

I would like him to harvest his little party somewhere else, not on my little shore. So I’m just using some negative reinforcement therapy.

Most of the time it’s not a problem as long as people aren’t feeding them, and things like that. It’s usually when they keep coming up on people’s properties and people are dumb enough to feed them, and then they start coming to looking for dogs, and things like that.

They used to be an endangered species back in the late ’60s, early ‘70s, and now they are so many of them that they’re opening more hunting seasons… It’s ridiculous. They’re overpopulated now. So our conservation efforts did a great job of keeping the gator alive, and now we have a BB gun problem.

And now each citizen of the state of Florida is issued an alligator when they move here. [laughter] So with that, we should probably close out this show, and do a lot of this rambling in our after show… I don’t know how many Go programmers are concerned about the gator population in Florida.

Alright… So with that, thank you everybody for being on the show today. Huge thank you to our listeners, both live and everybody who will be listening to this when this episode is released; a giant thank you to our sponsors for today’s episode - Toptal and the Ultimate Go Training Series.

Definitely share this show with fellow Go programmers, friends, family, co-workers… You can subscribe by going to GoTime.fm. We are on Twitter, and if you wanna be on the show, have suggestions for guests or topics, ping us.

And we have two Slack channels - there’s a Changelog Slack, which we are #GoTime in, and if you’re on GopherSlack, it’s GoTimeFM. The messages actually cross back and forth, so it doesn’t really matter which one you’re in. It’s kind of a shared channel. With that, we’ll see you guys next week. Bye, everybody!