All Projects → rogerallen → tweegeemee

rogerallen / tweegeemee

Licence: EPL-1.0 License
Twitter Genetic Algorithm Imagery

Programming Languages

clojure
4091 projects
Procfile
174 projects

Projects that are alternatives of or similar to tweegeemee

imagery
Slack app to upload shared images to Imgur to save space and share easily
Stars: ✭ 29 (-65.06%)
Mutual labels:  heroku, imagery
oriented-imagery
Find developer resources for Oriented Imagery, including a Web AppBuilder widget and oriented imagery catalog (OIC) schema.
Stars: ✭ 21 (-74.7%)
Mutual labels:  imagery
IPL-ML-2018
Predicting IPL match results. https://kuharan.github.io/IPL-ML-2018/
Stars: ✭ 14 (-83.13%)
Mutual labels:  heroku
heroku-buildpack-activestorage-preview
Official Heroku Rails 5.2 Active Storage Previews Buildpack
Stars: ✭ 21 (-74.7%)
Mutual labels:  heroku
libDrive
libDrive is a Google Drive media library manager and indexer, similar to Plex, that organizes Google Drive media to offer an intuitive and user-friendly experience.
Stars: ✭ 14 (-83.13%)
Mutual labels:  heroku
tweetsmapper
Twitter geo intelligence tool. Generates a Leaflet map for a given user or from an existing collection of tweets.
Stars: ✭ 23 (-72.29%)
Mutual labels:  twitter
kodepos
📮 Indonesian postal code search API by place name, village or city.
Stars: ✭ 32 (-61.45%)
Mutual labels:  heroku
gobo
💭 Gobo: Your social media. Your rules.
Stars: ✭ 87 (+4.82%)
Mutual labels:  twitter
node-htmlmetaparser
A `htmlparser2` handler for parsing rich metadata from HTML. Includes HTML metadata, JSON-LD, RDFa, microdata, OEmbed, Twitter cards and AppLinks.
Stars: ✭ 44 (-46.99%)
Mutual labels:  twitter
detweet
delete tweets en masse
Stars: ✭ 14 (-83.13%)
Mutual labels:  twitter
vpype-pixelart
Pixel art plotting in vpype
Stars: ✭ 40 (-51.81%)
Mutual labels:  generative-art
GitHub-Education-Portfolio
A portfolio made using React and tools from GitHub Student Developer Pack
Stars: ✭ 50 (-39.76%)
Mutual labels:  heroku
winbot-twitter-bot
Twitter contest bot trained to win giveaways.
Stars: ✭ 22 (-73.49%)
Mutual labels:  twitter
cookiecutter-django-herokuapp
A cookiecutter template for creating Django 1.7+ / Python 3 projects quickly, thought optimized for Heroku in the meantime.
Stars: ✭ 20 (-75.9%)
Mutual labels:  heroku
politic-bots
Tools and algorithms to analyze Paraguayan Tweets in times of elections
Stars: ✭ 26 (-68.67%)
Mutual labels:  twitter
Awesome Underwater Datasets
Pointers to large-scale underwater datasets and relevant resources.
Stars: ✭ 233 (+180.72%)
Mutual labels:  imagery
haikunatorgo
Generate Heroku-like random names to use in your go applications.
Stars: ✭ 50 (-39.76%)
Mutual labels:  heroku
detectable text field
TextField and Text widget with detection features. You can detect hashtags, at sign, or anything you want.
Stars: ✭ 29 (-65.06%)
Mutual labels:  twitter
wallpaper-api
An api which can use different sites to scrape images and serve them through API
Stars: ✭ 18 (-78.31%)
Mutual labels:  heroku
TwitterMediaDownloader
downloads photos and videos from twitter
Stars: ✭ 15 (-81.93%)
Mutual labels:  twitter

tweegeemee (트의기미)

A Clojure library designed to breed images via twitter. Now running on Heroku.

See https://twitter.com/tweegeemee/media for the latest images.

Each tweet has a name based on the timestamp of creation with a suffix at the end, a link to a github gist and a hashtag (currently #ProceduralArt).

The link to a github gist highlights the code used to create the image.

Follow, Favorite and Retweet tweegeemee images to select them for future generations.

Currently posting a set of two new images every hour. The suffix at the end of the image name tells you generation-type: a,b are random; C,D are sexually reproduced and M,N are mutants with only one parent.

For reproduction, the last 200 tweets are considered. The top 5 are allowed to produce offspring.

Oh, what is "트의기미"? That is the Korean (Hangul) characters for twee (트의) gee (기) mee (미). I believe it is just a nonsense word and liked the look of it.

Let's see where this goes...

Background

A while back, I saw Carin Meier's "How I Start" post about running a Clojure-based twitter bot on Heroku. She showed how easy it was to get this working, I was intrigued and decided I'd like to give it a try--but with my own twist.

In the back of my mind, something I've always wanted to do was experiment with image generation via lisp s-expressions as Karl Sims did in his '91 Siggraph paper. But, how to decide what constitutes a "good" image to breed? Well, how about using Twitter retweets and favorites for scoring?

I found the Clisk clojure image library was perfect for recreating Sims' imagery. I also took some inspriration from https://github.com/nodename/clevolution, http://www.thattommyhall.com/2013/08/23/genetic-programming-in-clojure-with-zippers/ and http://blog.raynes.me/blog/2011/12/02/waving-our-tentacles/.

So far, this has been quite fun to work on.

Usage

You should be able to clone/fork this library, follow the "How I Start" post and get this running on Heroku. Note that as of version 1.3, due to Heroku free dynos now requiring 6 hours of sleep in a 24 hour period, I switched to using the Scheduler add-on. See Issue 11 for more information.

If you just want to create & breed your own imagery, see the bottom of core.clj for snippets to generate & show a random image, breed images by hand and mutate images.

Making your own images

Perhaps you'd like to reproduce one of the images posted? Maybe, you want a desktop background or something like that?

First, click that tweet's link to go to the github gist data structure. For example,

 { :name "150613_061332_D.clj" :hash -504503564 :image-hash -1696445894
   :code (clisk.live/vdivide (clisk.live/vfrac (clisk.live/vmin (clisk.live/v+ (clisk.live/alpha clisk.live/grain) [-0.9438 0.4027 2.3753 1.7962]) (clisk.live/sigmoid (clisk.live/vfloor [0.4416 -2.6627 -1.6566])))) (clisk.live/gradient (clisk.live/square (clisk.live/v- [-0.2226 -2.2105 -2.7124 -1.7799] clisk.live/vsnoise))))
 }

Second, copy the info after the :code keyword to the end of the line. e.g. (clisk.live/vdivide ... )

Next, load up a repl and paste the clipboard contents in to define a variable code after a (important!) single quote like so:

=> (def code '(clisk.live/vdivide (clisk.live/vfrac (clisk.live/vmin (clisk.live/v+ (clisk.live/alpha clisk.live/grain) [-0.9438 0.4027 2.3753 1.7962]) (clisk.live/sigmoid (clisk.live/vfloor [0.4416 -2.6627 -1.6566])))) (clisk.live/gradient (clisk.live/square (clisk.live/v- [-0.2226 -2.2105 -2.7124 -1.7799] clisk.live/vsnoise))))
   )
=> (show (eval code) :width 720 :height 720)

To save an image, do

(write-png "nice_one.png" (image (eval code) :width 720 :height 720))

License

Copyright © 2015-2020 Roger Allen

Distributed under the Eclipse Public License either version 1.0 or (at your option) any later version.

Note that the project description data, including the texts, logos, images, and/or trademarks, for each open source project belongs to its rightful owner. If you wish to add or remove any projects, please contact us at [email protected].