Our latest wild ale, West Coast Blonde is brewed with Belgian and Munich malts, Nugget, Cluster, and Goldings hops. This unfiltered wheat beer is made with real grapefruit juice, allowing the hops to continue to shine in the sunlight..
Continuing to play around with machine learning via RunwayML, I decided to try experimenting with some of the text generation. As with any sort of machine learning project, you first need a dataset to work with. In my case, I wanted to do something with craft beer, so I decided it would be interesting to see if I could generate fake craft beer descriptions.
This information isn’t necessarily available in bulk, so I took to the next best thing: scraping it from the web. It was also a perfect opportunity to finally learn some python (I know, I know.)
What better way to leverage the power of machine learning then drawing butts?
I love to draw butts. I just can’t help it. It may seem juvenile, but it always brings a smile to my face in an almost therapeutic way. (And it all started years ago.) So what better way to harness the unparalleled power of machine learning than to force an artificial intelligence to also draw pictures of butts.
To generate the images, I first needed to create some training material. I set up a grid and drew 440 butts in a grid format over 22 pages. I scanned each page, loaded them as a stack into Photoshop, and then sliced up the image based on the original grid. It was then easy to export each individual drawing as a square image that could be used to train the model.
I started to play around with RunwayML recently, and one of the most compelling features is the ability to train your own models. You essentially start with a pre-trained styleGAN model and then upload your own dataset and then set the number of steps the algorithm will take to train your model.
So earlier this year I started to play around with a site/service called Night Cafe Studio, which is essentially a super easy to use web GUI for style transfer. It allows you to upload a source image and one or more target images to transfer the style from. The intended use and best results come from using photos of objects and landscapes and running them against some sort of painting, drawing, or other artwork. However, other mediums such as smoke, raw beef, pie, and classified documents work quite well and produce interesting results too.
Amazon has (somewhat) recently added some new services under the Artificial Intelligence offerings, one of them being a Machine Learning service. I wanted to play around with their predictive analysis service so I decided to make a really simple proof of concept.
Predictive analysis, in a nutshell, is basically looking through a large dataset of various input values that each contain an outcome. That outcome may be a true or false conditional (Binary Classification), a numerical value (Regression), or identifying a label (Multiclass Classification). This data is used to generate a model that makes a correlation between the input variables and the outcome, which can then be fed new input values to predict what the outcome will be. The catch, of course, is that you need to have this large set of training data to work with.
Since I didn’t have any data available, I wanted to see what I could possibly generate on my own. I decided on trying to make a model that could guess the name of a color based on the input value. The end result would look something like the following (once integrated into slack):
I use Google Spreadsheets pretty often at work, but for more mundane typical scenarios such as budgets, time and scope estimates, and so on. However, as I played with formulas and some of the built-in features, I was curious to what other non-productive things I could create. This lead me to a project I recently completed that uses the spreadsheet grid to recreate images. This was recently featured in the 2nd annual Firstborn Art Show (All These Things 2016) under the title Pixcell Images.
You can check out the entry here: Pixcell Images by Eric Decker. There are about 20 images that rotate every 15 seconds.
There’s also a version that accepts and shows user-submitted images via MMS, which you can text to at 585-672-6394 (try it out while it’s still active!)
The concept is pretty simple — I display small images (up to 32 x 32) in a spreadsheet by coloring three cells for each pixel’s red, green, and blue value. Basically, more or less how a typical monitor or screen works. A separate external script processes the images and sends the data to the Google Spreadsheet, but the spreadsheet processes and displays the “image” all on it’s own without any additional scripting.
It was a fun process, so here are some of the interesting steps it took to achieve the final results.
Dug up a project I had been working on a while ago that I want to revisit – a game prototype called Gravity Wells. The idea of the game is that’s it’s a somewhat typical 2.5D space shooter, except that objects you encounter have weight that deforms the 2D plane that the ship and obstacles sit on. The gravity wells that objects – enemy ships, asteroids, space debris, etc – create affect other objects and even the projectiles that the ship shoots. I had another thought that maybe the ship doesn’t even shoot, but instead has some sort of gravity manipulation device that requires you to fling objects into each other. Extremely heavy objects, a la black holes, could present some interesting options as well. This started as a quick Flash prototype for proof of concept but would be executed with webGL.
We recently launched a new site at Firstborn (which we can’t publicly share yet) but wanted to share a resource I created to aid in testing. A part of the site pulls in twitter content via the API (nothing new there) and in order to test what that content could be we used an account that is a collection of, let’s say, inconvenient tweets. Basically, posts that contain emojis (💩), html markup, and lots of new lines. You can use the account – and suggest your own – by following @developerjerk.
Over the last few weeks I’ve been working to move by blog over from DreamHost to DigitalOcean. First off, I’ve been using Dreamhost for nearly 10 years now, and for the price and what you get I’m still super happy with it. However, performance has been a bit slow, and I wanted the opportunity to really mess around with my own server.
With DigitalOcean, I have my own SSD Cloud Server to play around with and completely screw up. Since I’ve been doing more server provisioning, tweaking, and architecting at work I wanted to have a personal server I could muck with as I pleased.
Ludum Dare is a quarterly rapid game development competition/event. You essentially have 48 to 36 hours to make a game from scratch based on a theme announced at the start, which is usually 9:00 PM on Friday. If you participate in the compo, you have just the 2 days to create everything yourself – code, design, audio, etc. The more relaxed jam gives you 36 hours, lets you work in a team, and is more lenient on the usage of open source libraries, etc. After submission the community plays and votes for their favorites in multiple categories such as graphics, mood, humor, etc.
For my first jam, I worked with my fiancée to create a short game. I naturally did the game development in AS3, and Erin hand-made all the graphics as actual cross-stitch, even down to the font. This round’s theme was Evolution, and there were 1406 entries, 400 of them in the Jam. I will admit, however, the concept based on the theme is a bit of a stretch.
You can check out our entry here and read the post-mortem here. It was a lot of fun and we even managed to tie for 10th place for Graphics!