been working on & off on this & in the interests of "building in public" may start sharing details as I go here, feel free to mute this thread if ur not interested in the boring technical stuff

this project started from a problem i have constantly; finding the best reaction meme
---
RT @pee_zombie
@vgr building a meme (funny picture) cataloging system with hierarchical taxonomy, support for crowdsourced classification, for the purpose …
twitter.com/pee_zombie/status/

ya gotta, you know? how else can u show off how high ur power level is, u terminally-online degen? if u really wanna be a poaster u gotta be quick on the draw

one thing is like another hypocritically? pointing spidey
a humorously inaccurate comparison is being made? is this 🦋 x

i figured my "process" had quite a few inefficiencies, and that i already mentally sort memes into various non-exclusive overlapping categories; i'd also put some thought into how these categories can be abstracted and recombined to model the meme space

---
RT @pee_zombie
@deepfates @vgr tldr by examining the components of many memes we can extract common elements, find useful abstractions around them, fit them into a taxonomic structu…
twitter.com/pee_zombie/status/

(ftr using "meme" here to mean "funny internet picture")

i thought about using existing tools, but frankly nothing i considered met my needs exactly

what are these needs? great question; any project has to start with gathering requirements and brainstorming

once we have basic requirements, we proceed to design a minimally-viable architecture that will allow us to implement the capabilities we want with minimal hassle; in this stage it is critical to fight the urge to over-engineer. i had to roll back several too-ambitious plans here

as no battle plan survives contact with the enemy, i quickly switched back to java instead of scala, minimizing amount of new things i'd have to do at once. part of me always feels lame for not doing something cool & new with each dimension of a project but that way lies insanity

anyway so after a bit of work i have a basic prototype for uploading memes working; i'm able to create, read & delete them thru a RESTful API

contrary to the QT currently working entirely locally, using in-memory DBs for each component, H2 and s3mock

---
RT @pee_zombie
@deepfates tldr I'm using a postgres RDS instance for metadata and S3 for object storage, with a simple java app serving an api for uploading and tagging memes
twitter.com/pee_zombie/status/

have been using this gif as a test, both bc its funny and bc an animated gif is useful for ensuring all my bit-wrangling works fine

i was midly concerned i'd somehow mess it up and it wouldnt animate when i downloaded it back, but happily this was easier than i expected

Follow

anyway so i'm using Postman to test the api (great tool if ur not familiar), here's a small sample workflow of me showing the db is empty, uploading the gif, showing its there (not rendered in postman but we see the bytes), and then deleting it and showing its gone

still got tons more to do b4 this can even be called a prototype; none of the tagging capability is built yet! i'll be updating this thread as I add more stuff, feel free to ask questions if you're so inclined

& if you wanna follow along here's the repo

github.com/pee-zombie/memetiq

fair warning there is exactly 0 documentation; however this is a pretty standard spring boot app so if you've seen one of those you should be able to find ur way around

here's something i did just now, implemented deleting media; small but important

github.com/pee-zombie/memetiq/

in the past i've mostly avoided talking about projects i have in progress out of fear of accidentally satisfying my "i want people to know i did something cool" impulse b4 i've actually done the cool thing

trying to change this after seeing y'all cool people post about projects

quick note on this bit; as i dont want to set up/manage a real postgres db for development, nor do i want to pay AWS for storage just yet, embedded DBs are super handy, and with clever mocking of provider interfaces you can get away w/ swapping things out

---
RT @pee_zombie
anyway so after a bit of work i have a basic prototype for uploading memes working; i'm able to create, read & delete them thru a RESTful API

contrary to the QT cu…
twitter.com/pee_zombie/status/

H2 is a java in-memory RDBMS which runs right in your application
s3mock hosts an s3-compatible object storage server also right in your app

you can see here how i'm swapping out the ObjectStorageProvider implementation depending on the app configuration

github.com/pee-zombie/memetiq/

this allows me to have something that works just like S3 to develop against, and i'll be able to just re-point it at S3 (or another provider, like Wasabi, which i'm using for my masto server incidentally) with basically 0 hassle

Sign in to participate in the conversation
Mastodon

a Schelling point for those who seek one