{"id":24280977,"url":"https://github.com/jesse-c/rom-to-the-com","last_synced_at":"2025-07-07T08:13:13.459Z","repository":{"id":269885302,"uuid":"837386936","full_name":"jesse-c/rom-to-the-com","owner":"jesse-c","description":null,"archived":false,"fork":false,"pushed_at":"2025-02-24T05:19:05.000Z","size":17571,"stargazers_count":0,"open_issues_count":2,"forks_count":0,"subscribers_count":1,"default_branch":"main","last_synced_at":"2025-02-25T09:49:54.370Z","etag":null,"topics":["elixir","large-language-models","photomator-pro","rom-com","side-project"],"latest_commit_sha":null,"homepage":"https://www.rom-to-the-com.com","language":"Elixir","has_issues":true,"has_wiki":null,"has_pages":null,"mirror_url":null,"source_name":null,"license":null,"status":null,"scm":"git","pull_requests_enabled":true,"icon_url":"https://github.com/jesse-c.png","metadata":{"files":{"readme":"README.md","changelog":null,"contributing":null,"funding":null,"license":null,"code_of_conduct":null,"threat_model":null,"audit":null,"citation":null,"codeowners":null,"security":null,"support":null,"governance":null,"roadmap":null,"authors":null,"dei":null,"publiccode":null,"codemeta":null}},"created_at":"2024-08-02T21:16:44.000Z","updated_at":"2024-12-27T21:20:48.000Z","dependencies_parsed_at":"2024-12-26T23:17:37.696Z","dependency_job_id":"2371c30a-ce36-46b3-9322-7df9f5dfb4ff","html_url":"https://github.com/jesse-c/rom-to-the-com","commit_stats":null,"previous_names":["jesse-c/rom-to-the-com"],"tags_count":0,"template":false,"template_full_name":null,"repository_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/jesse-c%2From-to-the-com","tags_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/jesse-c%2From-to-the-com/tags","releases_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/jesse-c%2From-to-the-com/releases","manifests_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/jesse-c%2From-to-the-com/manifests","owner_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners/jesse-c","download_url":"https://codeload.github.com/jesse-c/rom-to-the-com/tar.gz/refs/heads/main","host":{"name":"GitHub","url":"https://github.com","kind":"github","repositories_count":242040125,"owners_count":20061984,"icon_url":"https://github.com/github.png","version":null,"created_at":"2022-05-30T11:31:42.601Z","updated_at":"2022-07-04T15:15:14.044Z","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":["elixir","large-language-models","photomator-pro","rom-com","side-project"],"created_at":"2025-01-16T02:51:18.226Z","updated_at":"2025-03-05T14:21:35.072Z","avatar_url":"https://github.com/jesse-c.png","language":"Elixir","funding_links":[],"categories":[],"sub_categories":[],"readme":"# Rom-to-the-Com\n\nEver unsure about how much romance or comedy you'd like in your rom-com? Worry no more!\n\nRead the motivation on my blog: [v1 release of Rom-to-the-Com](https://j-e-s-s-e.com/blog/v1-release-of-rom-to-the-com).\n\n---\n\n\u003e [!IMPORTANT]\n\u003e These are some miscellaneous notes I wrote about what I was considering for pre-v1. I've kept them here as a simple illustrative example of that point-in-time thinking for a side-project.\n\n# Plan\n\nWhat percentage of rom-to-the-com do you want? 99% Rom, 1% Com to 1% Rom, 99% Com.\n\nChoose on the slider, and get a recommendation.\n\nMobile-first\n\nData: List of movies for each combination: 99x2=198. rom,com: \"1,99\", \"2,98\", .., \"98,2\", \"99,1\"\n\nI'll need to find n movies but find m, of 198. Keep going until they're all found. What if there aren't 198? Sort them and shift values slightly. E.g. if there's 2 40,60s, one becomes a neighbouring missing value, within a max possible delta.\n\nI could go by larger increments, like 3%, instead of 1%. We'd want more than 1 per increment too?\n\nMax amount?\n\n# Domains\n\nromtothecom.com\nromtothe.com\n\n# Loader\n\nVersion 3 of 3\n\n```html\n\u003c!DOCTYPE html\u003e\n\u003chtml lang=\"en\"\u003e\n\u003chead\u003e\n    \u003cmeta charset=\"UTF-8\"\u003e\n    \u003cmeta name=\"viewport\" content=\"width=device-width, initial-scale=1.0\"\u003e\n    \u003ctitle\u003eHeart to Laughing Face Loader\u003c/title\u003e\n    \u003cstyle\u003e\n        body {\n            display: flex;\n            justify-content: center;\n            align-items: center;\n            height: 100vh;\n            margin: 0;\n            background-color: #f0f0f0;\n        }\n        .loader {\n            font-size: 50px;\n            position: relative;\n            width: 50px;\n            height: 50px;\n        }\n        .loader span {\n            position: absolute;\n            top: 0;\n            left: 0;\n            opacity: 0;\n            animation: fadeInOut 2s ease-in-out infinite;\n        }\n        .loader .heart { animation-delay: 0s; }\n        .loader .laugh { animation-delay: -1s; }\n        @keyframes fadeInOut {\n            0%, 100% { opacity: 0; }\n            50% { opacity: 1; }\n        }\n    \u003c/style\u003e\n\u003c/head\u003e\n\u003cbody\u003e\n    \u003cdiv class=\"loader\"\u003e\n        \u003cspan class=\"heart\"\u003e❤️\u003c/span\u003e\n        \u003cspan class=\"laugh\"\u003e😂\u003c/span\u003e\n    \u003c/div\u003e\n\u003c/body\u003e\n\u003c/html\u003e\n```\n\nVersion 4 of 4\n\n```\n\u003c!DOCTYPE html\u003e\n\u003chtml lang=\"en\"\u003e\n\u003chead\u003e\n    \u003cmeta charset=\"UTF-8\"\u003e\n    \u003cmeta name=\"viewport\" content=\"width=device-width, initial-scale=1.0\"\u003e\n    \u003ctitle\u003eBlack and White Heart to Laughing Face Loader\u003c/title\u003e\n    \u003cstyle\u003e\n        body {\n            display: flex;\n            justify-content: center;\n            align-items: center;\n            height: 100vh;\n            margin: 0;\n            background-color: #f0f0f0;\n        }\n        .loader {\n            position: relative;\n            width: 50px;\n            height: 50px;\n        }\n        .loader svg {\n            position: absolute;\n            top: 0;\n            left: 0;\n            width: 100%;\n            height: 100%;\n            opacity: 0;\n            animation: fadeInOut 2s ease-in-out infinite;\n        }\n        .loader .heart { animation-delay: 0s; }\n        .loader .laugh { animation-delay: -1s; }\n        @keyframes fadeInOut {\n            0%, 100% { opacity: 0; }\n            50% { opacity: 1; }\n        }\n    \u003c/style\u003e\n\u003c/head\u003e\n\u003cbody\u003e\n    \u003cdiv class=\"loader\"\u003e\n        \u003csvg class=\"heart\" viewBox=\"0 0 24 24\" xmlns=\"http://www.w3.org/2000/svg\"\u003e\n            \u003cpath d=\"M12 21.35l-1.45-1.32C5.4 15.36 2 12.28 2 8.5 2 5.42 4.42 3 7.5 3c1.74 0 3.41.81 4.5 2.09C13.09 3.81 14.76 3 16.5 3 19.58 3 22 5.42 22 8.5c0 3.78-3.4 6.86-8.55 11.54L12 21.35z\" fill=\"black\"/\u003e\n        \u003c/svg\u003e\n        \u003csvg class=\"laugh\" viewBox=\"0 0 24 24\" xmlns=\"http://www.w3.org/2000/svg\"\u003e\n            \u003ccircle cx=\"12\" cy=\"12\" r=\"10\" stroke=\"black\" stroke-width=\"2\" fill=\"none\"/\u003e\n            \u003cpath d=\"M7 14s1.5 2 5 2 5-2 5-2\" stroke=\"black\" stroke-width=\"2\" fill=\"none\"/\u003e\n            \u003ccircle cx=\"9\" cy=\"9\" r=\"1.5\" fill=\"black\"/\u003e\n            \u003ccircle cx=\"15\" cy=\"9\" r=\"1.5\" fill=\"black\"/\u003e\n        \u003c/svg\u003e\n    \u003c/div\u003e\n\u003c/body\u003e\n\u003c/html\u003e\n```\n\nVersion 7 of 7\n\n```\u003c!DOCTYPE html\u003e\n\u003chtml lang=\"en\"\u003e\n\u003chead\u003e\n    \u003cmeta charset=\"UTF-8\"\u003e\n    \u003cmeta name=\"viewport\" content=\"width=device-width, initial-scale=1.0\"\u003e\n    \u003ctitle\u003eUnicode Symbol Heart to Laughing Face Loader\u003c/title\u003e\n    \u003cstyle\u003e\n        body {\n            display: flex;\n            justify-content: center;\n            align-items: center;\n            height: 100vh;\n            margin: 0;\n            background-color: #f0f0f0;\n            font-family: Arial, sans-serif;\n        }\n        .loader {\n            position: relative;\n            width: 50px;\n            height: 50px;\n            font-size: 40px;\n            line-height: 50px;\n            text-align: center;\n        }\n        .loader span {\n            position: absolute;\n            top: 0;\n            left: 0;\n            width: 100%;\n            height: 100%;\n            opacity: 0;\n            animation: fadeInOut 2s ease-in-out infinite;\n        }\n        .loader .heart { animation-delay: 0s; }\n        .loader .laugh { animation-delay: -1s; }\n        @keyframes fadeInOut {\n            0%, 100% { opacity: 0; }\n            50% { opacity: 1; }\n        }\n    \u003c/style\u003e\n\u003c/head\u003e\n\u003cbody\u003e\n    \u003cdiv class=\"loader\"\u003e\n        \u003cspan class=\"heart\"\u003e♥\u003c/span\u003e\n        \u003cspan class=\"laugh\"\u003e☺\u003c/span\u003e\n    \u003c/div\u003e\n\u003c/body\u003e\n\u003c/html\u003e\n```\n\n# Data\n\nhttps://docs.google.com/spreadsheets/d/1woPv_NN1RBHkeqfXkuGSDrcM6usMy7B5tq3A4I9rV-I/edit?gid=0#gid=0\nhttps://www.imdb.com/list/ls058479560/?ref_=exp_t_2\nhttps://www.imdb.com/list/ls000043052/\nhttps://www.imdb.com/list/ls059288416/?ref_=exp_t_1\nhttps://www.imdb.com/list/ls053605210/\nhttps://www.imdb.com/list/ls068778178/?ref_=exp_t_1\nhttps://www.imdb.com/list/ls095161133/\n\n\nxsv for data extraction from CSVs\n\nDe-dupe\nxsv frequency -s Title films.csv\n\nAdd years\n\n# Ranking\n\nPrompt\n\nFor each of these romantic comedy films, determine, out of 100%, how much of them are romance and how much are comedy. For example, a film may be 60% romance and 40% comedy.\n\nReturn your determined value as a third column in the CSV text. A value should be in the format of \"60,40\", for the 2 percentages. Make sure they're surrounded by quotes, so it's a valid CSV file. Try and spread out your assessments so that there's a wide variation.\n\nValidated CSV\n\n\"To All the Boys I've Loved Before,2018\",\"80,20\"\n\"To All the Boys I've Loved Before\",2018,\"80,20\"\n\n```\nThe Bachelor                                    1999  70,30\nCocktail                                        1988  40,60\nSecret Admirer                                  1985  65,35\nOur Family Wedding                              2010  50,50\nSex and the City 2                              2010  60,40\nForgetting Sarah Marshall                       2008  35,65\nLicense to Wed                                  2007  30,70\nBlind Date                                      1987  45,55\n40 Days and 40 Nights                           2002  55,45\nThe Back-up Plan                                2010  60,40\nThe Heartbreak Kid                              2007  40,60\nPicture Perfect                                 1997  65,35\nDid You Hear About the Morgans?                 2009  35,65\nThe Prince and Me                               2004  75,25\nTwo Can Play That Game                          2001  50,50\nLove Don't Cost a Thing                         2003  70,30\nA Lot Like Love                                 2005  65,35\nBoys and Girls                                  2000  55,45\nJust Wright                                     2010  75,25\nMy Best Friend's Girl                           2008  40,60\nWaitress                                        2007  60,40\nLaws of Attraction                              2004  50,50\nDrive Me Crazy                                  1999  45,55\nWin a Date with Tad Hamilton!                   2004  60,40\nServing Sara                                    2002  35,65\nThat Old Feeling                                1997  55,45\nThe Perfect Man                                 2005  70,30\nA Guy Thing                                     2003  30,70\nLife or Something Like It                       2002  40,60\nThe Pick-up Artist                              1987  45,55\nChasing Liberty                                 2004  65,35\nThe Last Kiss                                   2006  80,20\nGet Over It                                     2001  50,50\nSomething New                                   2006  75,25\nFirst Daughter                                  2004  60,40\nNever Again                                     2001  70,30\nThe Romantics                                   2010  85,15\nWhat Women Want                                 2011  55,45\nAll Over the Guy                                2001  45,55\nCrush                                           2001  65,35\nHead Over Heels                                 2001  55,45\nWhatever It Takes                               2000  40,60\nMy Life in Ruins                                2009  70,30\nBoat Trip                                       2002  30,70\nOn the Line                                     2001  65,35\n```\n\nValidate ranks sum to 100%\n\n# Website\n\n## Features\n\nApp feedback:\n- Good/Bad\n- More rom\n- More com\n- Less rom\n- Less com\n- Suggest rom,com for a movie, e.g. \"this should be 80,20\"\n- Add a new film, with ranking\n- Suggest removal, for not being a romcom\n\nAnalytics:\n- Track changes\n- Automate re-ranking\n\n## Approach\n\n- Static:\n  - Fast\n  - Simple\n\n- Dynamic:\n  - Storage?\n  - Still can be fast\n    - Easier/quicker for features\n  - Auth? Spam, abuse, ...\n    - Unless people create an account with a verified email, there's no choice?\n    - Protection:\n      - Rate limiting\n      - Captcha\n      - Max actions:\n        - On 1 film\n        - On more/less rom/com\n        - On new film\n        - .. On any individual action (event)\n      - ...\n\n- How would a feature work in dynamic?\n  - Button for \"More rom\", which does something in the backend\n    - Needs to give feedback in the UI that the action completed. Async?\n    - Need to explain that it's batched. At first only? Or just have it live since the data is so small? But with the risk, I want to moderate each action. I can just collect the events then, run locally, and update the latest.\n\nData domain:\n\n- Title,Year,Rank\n- Unique ID: For app component. Consistent per film\n  - Generate once\n\nEvent (action) sourcing?\n\nv1 → v2?\n\nPosters on hover?\n","project_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fjesse-c%2From-to-the-com","html_url":"https://awesome.ecosyste.ms/projects/github.com%2Fjesse-c%2From-to-the-com","lists_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fjesse-c%2From-to-the-com/lists"}