Featured Post

Exploring the world on-the-go using Google Cloud Vision and Twilio

Getting a computer to see and understand stuff is hard. Way hard. Like, hard for a long time. For a bit of context, slide 15 seems to be the definitive abbreviated history, dating all the way back to 1966. If you want to dig into the details, there's a free Udacity course on computer vision offered by Georgia Tech.However, you can add computer vision and intelligence capabilities to your applications without the deep understanding of machine learning by using Google Cloud Vision. The Vision API lets you send across an image, along with instructions of what you're looking to find, and will return what it "sees" in your image. You can look for labels, logos, landmarks, along with other things that don't start with the letter "l". If you're processing images that include people, you can look for faces or detect sentiment.My first project with the Vision API is quite simple: let people text an image, and receive a reply with up to three things that the …

One Piece of Advice

A couple of weeks ago, Jessica Rose posed this question to the tech crowd:What piece of advice do you wish you had been given when you entered the industry?— Jessica Rose (@jesslynnrose) August 7, 2017It's a great question. Previously, I had different answers depending what age range I was addressing -- one for middle school students, and another one entirely for college students. While the answers I've given have changed throughout my career, I think I can consolidate all the different versions into this one:Your interests outside of tech are valuable and make you a better engineer; don't give them up.— Julia Ferraioli (@juliaferraioli) August 7, 2017But why? Why is this the one thing I want to impart upon folks just coming into tech?Don't resent your workI see this a lot with interns or new graduates. They're so excited to get their first position that they throw everything into it. Many of us have heard tale of the genius whose code has stayed unchanged for as l…

The Last Seven Months

Around Thanksgiving last year (2016), I started battling some new medical problems that meant taking leave from work. I'll write about that experience at some point, I imagine, because I have some thoughts about it. However, I wanted to break my writing hiatus by chronicling some of what I've done in the intervening time. I had to get creative to keep the boredom at bay.BooksThe library's digital collection has been invaluable, especially when I couldn't get out of bed. These are some of the books that I read -- most in the last five weeks:FictionI had a reading list a mile long prior to leave, but I misplaced it. So thanks to a lot of recommendations from a wide variety of folks, I had a good selection of books to choose from. It's interesting to me how my tastes have changed over the last decade, but I enjoyed each of these for different reasons.
The Handmaid's Tale, Margaret AtwoodThe Heart Goes Last, Margaret AtwoodGathering Blue (audiobook), Lois LowryThe M…

Containers & Compute Engine: creating Minecraft Roulette with Kubernetes

In the last few entries on creating a containerized Minecraft server, we created the container, launched the server, moved data to a volume, created regular backups of our world, took a look at customizing the server's properties, and updated changes to the container. Right now, our setup is pretty solid! So, let's get to that fun and impractical thing I mentioned that we'd be doing with Kubernetes.What we want to buildThis has been something that I've wanted to build for a while now, especially as I've become bored with my existing world(s). I thought that it would be awesome to create a way to join a random Minecraft world, with different players and different seeds. For obvious reasons, I've nicknamed this concept Minecraft Roulette.So, what does this entail?From the user's side of things, they should simply access their server the same way as always: through their client. However, with Minecraft Roulette, this will instead drop the user into a random wo…

Minecraft, Docker, Compute Engine: an interlude

Last time, I said that in the next entry in this series I would do something fun (and likely impractical) with kubernetes. I lied; sorry. Since then, I received several great questions that I didn't manage to cover, so I thought that I'd address a couple of them now. This entry will be rather piecemeal, but hopefully much shorter than the prior ones!Customizing the fileMinecraft uses a simple configuration file to store many of its default settings. This is called the file. Let's take a look at the one running in our Docker container:ftb-server $ sudo docker exec -ti <container name> /bin/bash root@baea2dfbd18f:/opt/ftb# more #Minecraft server properties < snip! > server-port=25565 level-type=DEFAULT enable-rcon=false level-seed= force-gamemode=false server-ip= max-build-height=256 spawn-npcs=true white-list=false spawn-animals=true hardcore=false snooper-enabled=true online-mode=true resource-pack= pvp=true…

Saving the world: using persistent storage with a containerized Minecraft server

This is Part II in a series on running a Minecraft server in a container on Google Cloud Platform. If you missed Part I, make sure to glance over it for context.Last timeLast time, you took an existing application (a modded Minecraft server) and containerized it, using the Debian base image. You used a Google Cloud Platform container-optimized image to build our image and run the resulting container on Google Compute Engine (GCE). Along the way, you learned how to use docker run, you got familiar with the functionality and syntax of the Dockerfile, and learned how to pass and use environment variables with Docker containers.Persistent storageHowever, a major drawback of our setup was the lack of persistence: if the container went away, so would all of our progress in our Minecraft world. As serious Minecrafters know, the loss of even a few hours can set you back days. Containers are generally thought of and treated as ephemeral -- that is, containers based off of the same image can be…

Running a Minecraft server on Google Compute Engine with Docker

I only started playing Minecraft a couple of years ago, and rage quit after I set my house on fire due to a misunderstanding of lava dynamics. It reentered my life when I saw an article on qCraft, a mod that incorporates elements of quantum physics into gameplay. From there, I discovered the amazing world of Minecraft mods, accompanied by YouTube videos and collections on imgur showing off creations.However, once you dig into some of the more extensive modpacks, you run into the unfortunate problem of setting your actual house on fire, sparked by your overheating laptop. So, my partner-in-Minecraft and I stopped hosting the world off of our laptops and moved it onto Google Compute Engine (GCE). We weren't running a complicated server, and our setup was even less complicated than the vanilla whitepaper detailed.As happens to many Minecraft players, the modpack we were using was deprecated, and we were faced with once again rolling out another server. We created yet another special …