Project Tours: meme-type | a translator for internet speak
Tags: showdev, webdev, angular, aws
Published: 2020-08-17 15:05:20

Do you like to be sarcastic on the internet? Are you tired of having hold or release the shift key with every letter while you're mocking someone? Are you obsessed with making your writing as unintelligible as possible? Well, I've got an app for you!

## Contents
* [Overview](#overview)
* [Notable conversions](#notable-conversions)
    * [Keysmash](#keysmash)
    * [Student athlete mode](#student-athlete-mode)
* [Hosting](#hosting)
* [npm package](#npm-package)
* [Contact](#contact)
* [More](#more)

![meme-type screenshot](https://dev-to-uploads.s3.amazonaws.com/i/9bysi1byqd8qeoeijzus.png)

## Overview

meme-type is an angularjs web app that transforms text into various type of internet speak. The live app is running [here](https://memetype.brewinstallbuzzwords.com). View the project on Github [here](https://github.com/brew-install-buzzwords/meme-type).

I was inspired to make this project while reading [Because Internet](https://gretchenmcculloch.com/book/) by Gretchen McCulloch. In her book, McCulloch breaks down many online linguistic contructs, often taking an almost algorithmic approach. When I read [her detailed analysis of keysmashing](#keysmash) in the first few pages of the book, I knew I had to make this app.

## Notable conversions

### Keysmash

In the aforementioned [Because Internet](https://gretchenmcculloch.com/book/), McCulloch lays out a set of observed patterns of keysmashing. I've listed a few of these patterns below:

> * Almost always begins with "a"
> * Often begins with "asdf"
> * Other common subsequent characters are g, h, j, k, l, and ;, but less often in that order, and often alternating or repeating within this second group
> * Frequently occurring characters are the "home row" of the keys that the fingers are on in rest position, suggesting that key-smashers are also touch typists

My keysmash algorithm is inspired by these patterns, and thus uses to following rules to convert an input string to keysmashing:

* The first four characters have a high probability of being a, s, d, and f, respectively
* Only keys on the home row are used
* The keys alternate between the right and left hand
* Whitespace is preserved

### Student athlete mode

Student athlete mode follows a post style about fitness, grinding, being better than everyone else, and using way too many emojis. See examples of this format on [Know Your Meme](https://knowyourmeme.com/memes/student-athlete-stem-major).

In its current implementation, there are three ways in which an emoji will be added to a string:

1. If the text is an exact match of the name of an emoji, it will include that emoji.
* If the text is an exact match of a keyword of an emoji, then it will randomly select from among the emoji that contain that keyword.
* If the text does not match an emoji, then there is a probabilistic chance of it selecting randomly from a set of emoji that are commonly used in this format. When this occurs, the emoji will have a chance to be repeated up to a total length of three.

## Hosting

meme-type is hosted using a combination of AWS S3, Cloudfront, and and Route53. For more info on how I use AWS to run my websites, see [this post](https://www.brewinstallbuzzwords.com/posts/how-does-this-site-work/) about the technical details of my blog.

## npm package

The logic for meme-type's conversions is stored in an npm package I made called [meme-type-npm](https://www.npmjs.com/package/meme-type-npm). See it on Github [here](https://github.com/brew-install-buzzwords/meme-type-npm).

## Contact

If you have comments or questions, feel free to write them below or reach out to me via one of the channels on [my about page](https://www.brewinstallbuzzwords.com/about/).

## More

If you enjoyed this post or want to find out more about my upcoming projects, consider [subscribing to my newsletter](https://mailchi.mp/89dc077154c7/brewinstallbuzzwords) or [checking out my blog](https://www.brewinstallbuzzwords.com). My email updates are only sent out once a month.