{"id":13657452,"url":"https://github.com/rogerallen/tweegeemee","last_synced_at":"2026-03-05T09:32:19.290Z","repository":{"id":33035604,"uuid":"36671325","full_name":"rogerallen/tweegeemee","owner":"rogerallen","description":"Twitter Genetic Algorithm Imagery","archived":false,"fork":false,"pushed_at":"2023-08-09T05:33:12.000Z","size":6365,"stargazers_count":95,"open_issues_count":1,"forks_count":14,"subscribers_count":6,"default_branch":"master","last_synced_at":"2025-04-02T04:23:57.656Z","etag":null,"topics":["clojure","generative-art","genetic-algorithms","heroku","imagery","twitter"],"latest_commit_sha":null,"homepage":null,"language":"Clojure","has_issues":true,"has_wiki":null,"has_pages":null,"mirror_url":null,"source_name":null,"license":"epl-1.0","status":null,"scm":"git","pull_requests_enabled":true,"icon_url":"https://github.com/rogerallen.png","metadata":{"files":{"readme":"README.md","changelog":null,"contributing":null,"funding":null,"license":"LICENSE","code_of_conduct":null,"threat_model":null,"audit":null,"citation":null,"codeowners":null,"security":null,"support":null,"governance":null,"roadmap":null,"authors":null}},"created_at":"2015-06-01T15:50:56.000Z","updated_at":"2024-09-16T15:50:52.000Z","dependencies_parsed_at":"2024-01-14T16:12:32.785Z","dependency_job_id":"2847c03c-fcfa-42d0-aebd-c9f79130d99d","html_url":"https://github.com/rogerallen/tweegeemee","commit_stats":null,"previous_names":[],"tags_count":0,"template":false,"template_full_name":null,"purl":"pkg:github/rogerallen/tweegeemee","repository_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/rogerallen%2Ftweegeemee","tags_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/rogerallen%2Ftweegeemee/tags","releases_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/rogerallen%2Ftweegeemee/releases","manifests_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/rogerallen%2Ftweegeemee/manifests","owner_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners/rogerallen","download_url":"https://codeload.github.com/rogerallen/tweegeemee/tar.gz/refs/heads/master","sbom_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/rogerallen%2Ftweegeemee/sbom","scorecard":null,"host":{"name":"GitHub","url":"https://github.com","kind":"github","repositories_count":286080680,"owners_count":30117692,"icon_url":"https://github.com/github.png","version":null,"created_at":"2022-05-30T11:31:42.601Z","updated_at":"2026-03-05T08:19:04.902Z","status":"ssl_error","status_checked_at":"2026-03-05T08:17:37.148Z","response_time":93,"last_error":"SSL_connect returned=1 errno=0 peeraddr=140.82.121.5:443 state=error: unexpected eof while reading","robots_txt_status":"success","robots_txt_updated_at":"2025-07-24T06:49:26.215Z","robots_txt_url":"https://github.com/robots.txt","online":false,"can_crawl_api":true,"host_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub","repositories_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories","repository_names_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repository_names","owners_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners"}},"keywords":["clojure","generative-art","genetic-algorithms","heroku","imagery","twitter"],"created_at":"2024-08-02T05:00:43.102Z","updated_at":"2026-03-05T09:32:19.269Z","avatar_url":"https://github.com/rogerallen.png","language":"Clojure","funding_links":[],"categories":["Clojure"],"sub_categories":[],"readme":"# tweegeemee (트의기미)\n\nA Clojure library designed to breed images via twitter and other social media.  \n\nSince it was written in 2015, this library has grown and matured into a larger system of parts.  There is now a website http://tweegeemee.com, an underlying database and as of December, 2022 posting to Mastodon has begun.  While those other pieces are not open source, this code will remain open source.\n\nAdding Mastodon support is forcing me to rearchitect a few things to use a real database instead of the current gist-based \"database\" that I have historically used.  I'm calling this \"Version 2.0\" and we wil be deprecating the gist file use going forward.  Docs probably won't be updated to keep up with these changes...unless I get requests from interested developers.\n\nUPDATE: as of Version 2.3.0 I no longer include the code to post to Twitter and I no longer read data from gists either.  I'm using a real DB for the gist function and just put images into the images directory.  Look back in the git revision history to before V2.0 if you want to see that code.\n\n## Background\n\nEach tweet has a name based on the timestamp of creation with a suffix\nat the end, a link to a github gist and a hashtag (currently #ProceduralArt).\n\nThe link to a github gist highlights the code used to create the image.\n\nFollow, Favorite and Retweet [tweegeemee](https://twitter.com/tweegeemee)\nimages to select them for future generations.\n\nCurrently posting a set of two new images every hour. The suffix at\nthe end of the image name tells you generation-type: a,b are random;\nC,D are sexually reproduced and M,N are mutants with only one parent.\n\nFor reproduction, the last 200 tweets are considered. The top 5 are\nallowed to produce offspring.\n\nOh, what is \"트의기미\"?  That is the Korean (Hangul) characters for\ntwee (트의) gee (기) mee (미).  I believe it is just a nonsense word\nand liked the look of it.\n\nLet's see where this goes...\n\n## Background\n\nA while back, I saw [Carin Meier's](https://github.com/gigasquid)\n[\"How I Start\" post](https://howistart.org/posts/clojure/1) about\nrunning a Clojure-based twitter bot on Heroku. She showed how easy it\nwas to get this working, I was intrigued and decided I'd like to give\nit a try--but with my own twist.\n\nIn the back of my mind, something I've always wanted to do was\nexperiment with image generation via lisp s-expressions as [Karl\nSims](http://www.karlsims.com) did in his ['91 Siggraph\npaper](http://www.karlsims.com/papers/siggraph91.html).  But, how to\ndecide what constitutes a \"good\" image to breed?  Well, how about\nusing Twitter retweets and favorites for scoring?\n\nI found the [Clisk clojure image\nlibrary](https://github.com/mikera/clisk) was perfect for recreating\nSims' imagery.  I also took some inspriration from\nhttps://github.com/nodename/clevolution,\nhttp://www.thattommyhall.com/2013/08/23/genetic-programming-in-clojure-with-zippers/\nand http://blog.raynes.me/blog/2011/12/02/waving-our-tentacles/.\n\nSo far, this has been quite fun to work on.\n\n## Usage\n\nYou should be able to clone/fork this library, follow the \"How I\nStart\" post and get this running on Heroku.  Note that as of version\n1.3, due to Heroku free dynos now requiring 6 hours of sleep in a 24\nhour period, I switched to using the Scheduler add-on.  See [Issue\n11](https://github.com/rogerallen/tweegeemee/issues/11) for more\ninformation.\n\nIf you just want to create \u0026 breed your own imagery, see the bottom of\ncore.clj for snippets to generate \u0026 show a random image, breed images\nby hand and mutate images.\n\n### Making your own images\n\nPerhaps you'd like to reproduce one of the images posted?  Maybe, you\nwant a desktop background or something like that?\n\nFirst, click that tweet's link to go to the github gist data structure.  For example,\n\n```clj\n { :name \"150613_061332_D.clj\" :hash -504503564 :image-hash -1696445894\n   :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))))\n }\n```\n\nSecond, copy the info after the :code keyword to the end of the line.  e.g. `(clisk.live/vdivide ... )`\n\nNext, load up a repl and paste the clipboard contents in to define a variable `code` after a (important!) single quote like so:\n\n```clj\n=\u003e (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))))\n   )\n=\u003e (show (eval code) :width 720 :height 720)\n```\n\nTo save an image, do\n\n```clj\n(write-png \"nice_one.png\" (image (eval code) :width 720 :height 720))\n```\n\n## License\n\nCopyright © 2015-2022 Roger Allen\n\nDistributed under the Eclipse Public License either version 1.0 or (at\nyour option) any later version.\n","project_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Frogerallen%2Ftweegeemee","html_url":"https://awesome.ecosyste.ms/projects/github.com%2Frogerallen%2Ftweegeemee","lists_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Frogerallen%2Ftweegeemee/lists"}