{"action":"created","comment":{"url":"https://api.github.com/repos/hmc-cs111-fall2016/project-ideas/pulls/comments/80352881","id":80352881,"diff_hunk":"@@ -11,41 +11,118 @@ _What need is met by your idea? Who are you helping? What is that person's\n experience like now? What would their experience be like if you could help \n them?_\n \n+Mudders get a lot of email. \n+Many people subscribe to dorm chats and occasionally receive\n+email with interesting content but a lot of times they get useless\n+emails (these range from counting threads, to emails asking for rides from\n+airports, and to ASHMC senate summary emails).\n+\n+As an example, these are a series of emails sent to a certain dorm's chat\n+list\n+\n+![EDC emails](/images/emails.png)\n+\n+people would want emails at the top of the list and the bottom of the list.\n+However, all of the emails in between sent over a few hours, would be \n+undesirable.\n+\n+A language for filtering emails with enough flexibility in configuration could\n+cut down on these unwanted emails reaching their inboxes. The emails could\n+instead be redirected towards a folder for them to check occasionally.\n \n ### Why a language?\n _Why is a DSL appropriate for your user(s)? How does it address the need?_\n \n+A DSL would allow for more customization in order to effectively\n+filter out emails. \n+This customization is key since different users would want to receive and \n+filter out different types of emails.\n+The customization could also be used to specifically target types of emails.\n+For example, a user could specify that they do not want emails that only contain\n+numbers and a sign-off. \n+This would then filter out counting threads.\n \n ### Why you?\n _What excites you about this idea? How did you come up with it?_\n \n+I don't mind nonsensical emails from dorm chats but a lot of people do.\n+I would be happy to help people eliminate annoyances in their lives.\n+\n+I came up with the idea when someone mentioned that another person has a really\n+complex email filtration system.\n \n ### Domain\n _Describe the project's domain in five words._\n \n+Filter out unwanted email types.\n \n ### Interface (syntax)\n _How might the user interact with the language? What does programming look \n like? Why is this the right way to interact with the problem domain?_ \n \n+The user would write a configuration file. This file would contain something\n+like\n+\n+```\n+name: \"ISO war\"\n+keywords: [\"ISO\"]\n+start-frequency: 60\n+start-count: 3\n+step-frequency: 3600\n+to: \"ISO\"\n+```\n+\n+This means, filter out emails that are considered to be \"ISO war\" emails. These\n+emails contain the word \"ISO\". \n+Filter them out if more than 3 such emails are \n+sent over the course of 60 seconds and continue filtering them out until the \n+frequency drops below 1 email per 3600 seconds. \n+These filtered emails should go to a folder labeled \"ISO\".\n+\n+A configuration file using JSON or XML-like syntax would give the system a good\n+level of customization, provided that the language has enough keys.\n \n ### Operation (semantics)\n _What might happen when a program runs? How does a program interact with the\n user? What kinds of errors might occur, and how might they be communicated to\n the user?_\n \n+The user would run a command, maybe in the command line, to start the program.\n+The program reads the configuration file and continuously reads incoming emails.\n+It would filter emails that should be filtered at all times and it would\n+filter emails once certain criteria (such as emails per second) are \n+triggered.\n+\n+Syntax errors could occur if users try to use a key that the program does not\n+recognize. This error should be displayed after the user enters the command. \n+\n+There could be a lot of silent errors where the program misinterprets the user's\n+input and simply fails to filter out the specified emails or filters out emails\n+the user wants to receive. It would be on the user to identify these errors.\n \n ### Expressiveness\n _What should be easy to do in this language? What should be possible, but\n difficult? What should be impossible or very difficult?_\n \n+It should be easy to identify types of emails based on keywords and regular\n+expressions.\n+\n+It should be possible to identify emails that require a frequency threshold.\n+\n+It should be impossible to do anything outside of filtering out emails,\n+such as using loops.\n \n ### Related work\n _Are there any other DSLs in this domain? If not, describe how you know there\n aren't and conjecture why not. If so, describe them and provide links. How well \n do they address the need? Are there any particularly admirable qualities of the\n language? Are there parts of the language you think could be improved?_\n \n+The [Gmail API](https://developers.google.com/gmail/api/guides/filter_settings)\n+has XML files that do a similar thing. \n+The API has good fluency and descriptive variable names.\n+But since the syntax is based on Gmail's search syntax, it cannot take into \n+account factors such as email frequency.","path":"free-2.md","position":115,"original_position":115,"commit_id":"64bd0e17296d6f419876155560567662318fdbf2","original_commit_id":"64bd0e17296d6f419876155560567662318fdbf2","user":{"login":"aromm","id":19671873,"avatar_url":"https://avatars.githubusercontent.com/u/19671873?v=3","gravatar_id":"","url":"https://api.github.com/users/aromm","html_url":"https://github.com/aromm","followers_url":"https://api.github.com/users/aromm/followers","following_url":"https://api.github.com/users/aromm/following{/other_user}","gists_url":"https://api.github.com/users/aromm/gists{/gist_id}","starred_url":"https://api.github.com/users/aromm/starred{/owner}{/repo}","subscriptions_url":"https://api.github.com/users/aromm/subscriptions","organizations_url":"https://api.github.com/users/aromm/orgs","repos_url":"https://api.github.com/users/aromm/repos","events_url":"https://api.github.com/users/aromm/events{/privacy}","received_events_url":"https://api.github.com/users/aromm/received_events","type":"User","site_admin":false},"body":"Also I assume the GMAIL API only applies to gmail accounts whereas your DSL could theoretically apply to many. ","created_at":"2016-09-24T04:38:45Z","updated_at":"2016-09-24T04:38:45Z","html_url":"https://github.com/hmc-cs111-fall2016/project-ideas/pull/11#discussion_r80352881","pull_request_url":"https://api.github.com/repos/hmc-cs111-fall2016/project-ideas/pulls/11","_links":{"self":{"href":"https://api.github.com/repos/hmc-cs111-fall2016/project-ideas/pulls/comments/80352881"},"html":{"href":"https://github.com/hmc-cs111-fall2016/project-ideas/pull/11#discussion_r80352881"},"pull_request":{"href":"https://api.github.com/repos/hmc-cs111-fall2016/project-ideas/pulls/11"}}},"pull_request":{"url":"https://api.github.com/repos/hmc-cs111-fall2016/project-ideas/pulls/11","id":86286016,"html_url":"https://github.com/hmc-cs111-fall2016/project-ideas/pull/11","diff_url":"https://github.com/hmc-cs111-fall2016/project-ideas/pull/11.diff","patch_url":"https://github.com/hmc-cs111-fall2016/project-ideas/pull/11.patch","issue_url":"https://api.github.com/repos/hmc-cs111-fall2016/project-ideas/issues/11","number":11,"state":"open","locked":false,"title":"Renata P","user":{"login":"hmc-cs-rparamastri","id":16809083,"avatar_url":"https://avatars.githubusercontent.com/u/16809083?v=3","gravatar_id":"","url":"https://api.github.com/users/hmc-cs-rparamastri","html_url":"https://github.com/hmc-cs-rparamastri","followers_url":"https://api.github.com/users/hmc-cs-rparamastri/followers","following_url":"https://api.github.com/users/hmc-cs-rparamastri/following{/other_user}","gists_url":"https://api.github.com/users/hmc-cs-rparamastri/gists{/gist_id}","starred_url":"https://api.github.com/users/hmc-cs-rparamastri/starred{/owner}{/repo}","subscriptions_url":"https://api.github.com/users/hmc-cs-rparamastri/subscriptions","organizations_url":"https://api.github.com/users/hmc-cs-rparamastri/orgs","repos_url":"https://api.github.com/users/hmc-cs-rparamastri/repos","events_url":"https://api.github.com/users/hmc-cs-rparamastri/events{/privacy}","received_events_url":"https://api.github.com/users/hmc-cs-rparamastri/received_events","type":"User","site_admin":false},"body":"","created_at":"2016-09-22T06:44:02Z","updated_at":"2016-09-24T04:38:45Z","closed_at":null,"merged_at":null,"merge_commit_sha":"dc9c2888f911d0fec358e1fdd9e3d791719f2698","assignee":null,"assignees":[],"milestone":null,"commits_url":"https://api.github.com/repos/hmc-cs111-fall2016/project-ideas/pulls/11/commits","review_comments_url":"https://api.github.com/repos/hmc-cs111-fall2016/project-ideas/pulls/11/comments","review_comment_url":"https://api.github.com/repos/hmc-cs111-fall2016/project-ideas/pulls/comments{/number}","comments_url":"https://api.github.com/repos/hmc-cs111-fall2016/project-ideas/issues/11/comments","statuses_url":"https://api.github.com/repos/hmc-cs111-fall2016/project-ideas/statuses/64bd0e17296d6f419876155560567662318fdbf2","head":{"label":"hmc-cs-rparamastri:master","ref":"master","sha":"64bd0e17296d6f419876155560567662318fdbf2","user":{"login":"hmc-cs-rparamastri","id":16809083,"avatar_url":"https://avatars.githubusercontent.com/u/16809083?v=3","gravatar_id":"","url":"https://api.github.com/users/hmc-cs-rparamastri","html_url":"https://github.com/hmc-cs-rparamastri","followers_url":"https://api.github.com/users/hmc-cs-rparamastri/followers","following_url":"https://api.github.com/users/hmc-cs-rparamastri/following{/other_user}","gists_url":"https://api.github.com/users/hmc-cs-rparamastri/gists{/gist_id}","starred_url":"https://api.github.com/users/hmc-cs-rparamastri/starred{/owner}{/repo}","subscriptions_url":"https://api.github.com/users/hmc-cs-rparamastri/subscriptions","organizations_url":"https://api.github.com/users/hmc-cs-rparamastri/orgs","repos_url":"https://api.github.com/users/hmc-cs-rparamastri/repos","events_url":"https://api.github.com/users/hmc-cs-rparamastri/events{/privacy}","received_events_url":"https://api.github.com/users/hmc-cs-rparamastri/received_events","type":"User","site_admin":false},"repo":{"id":68852684,"name":"project-ideas","full_name":"hmc-cs-rparamastri/project-ideas","owner":{"login":"hmc-cs-rparamastri","id":16809083,"avatar_url":"https://avatars.githubusercontent.com/u/16809083?v=3","gravatar_id":"","url":"https://api.github.com/users/hmc-cs-rparamastri","html_url":"https://github.com/hmc-cs-rparamastri","followers_url":"https://api.github.com/users/hmc-cs-rparamastri/followers","following_url":"https://api.github.com/users/hmc-cs-rparamastri/following{/other_user}","gists_url":"https://api.github.com/users/hmc-cs-rparamastri/gists{/gist_id}","starred_url":"https://api.github.com/users/hmc-cs-rparamastri/starred{/owner}{/repo}","subscriptions_url":"https://api.github.com/users/hmc-cs-rparamastri/subscriptions","organizations_url":"https://api.github.com/users/hmc-cs-rparamastri/orgs","repos_url":"https://api.github.com/users/hmc-cs-rparamastri/repos","events_url":"https://api.github.com/users/hmc-cs-rparamastri/events{/privacy}","received_events_url":"https://api.github.com/users/hmc-cs-rparamastri/received_events","type":"User","site_admin":false},"private":false,"html_url":"https://github.com/hmc-cs-rparamastri/project-ideas","description":"Assignment 3: generate ideas for the project","fork":true,"url":"https://api.github.com/repos/hmc-cs-rparamastri/project-ideas","forks_url":"https://api.github.com/repos/hmc-cs-rparamastri/project-ideas/forks","keys_url":"https://api.github.com/repos/hmc-cs-rparamastri/project-ideas/keys{/key_id}","collaborators_url":"https://api.github.com/repos/hmc-cs-rparamastri/project-ideas/collaborators{/collaborator}","teams_url":"https://api.github.com/repos/hmc-cs-rparamastri/project-ideas/teams","hooks_url":"https://api.github.com/repos/hmc-cs-rparamastri/project-ideas/hooks","issue_events_url":"https://api.github.com/repos/hmc-cs-rparamastri/project-ideas/issues/events{/number}","events_url":"https://api.github.com/repos/hmc-cs-rparamastri/project-ideas/events","assignees_url":"https://api.github.com/repos/hmc-cs-rparamastri/project-ideas/assignees{/user}","branches_url":"https://api.github.com/repos/hmc-cs-rparamastri/project-ideas/branches{/branch}","tags_url":"https://api.github.com/repos/hmc-cs-rparamastri/project-ideas/tags","blobs_url":"https://api.github.com/repos/hmc-cs-rparamastri/project-ideas/git/blobs{/sha}","git_tags_url":"https://api.github.com/repos/hmc-cs-rparamastri/project-ideas/git/tags{/sha}","git_refs_url":"https://api.github.com/repos/hmc-cs-rparamastri/project-ideas/git/refs{/sha}","trees_url":"https://api.github.com/repos/hmc-cs-rparamastri/project-ideas/git/trees{/sha}","statuses_url":"https://api.github.com/repos/hmc-cs-rparamastri/project-ideas/statuses/{sha}","languages_url":"https://api.github.com/repos/hmc-cs-rparamastri/project-ideas/languages","stargazers_url":"https://api.github.com/repos/hmc-cs-rparamastri/project-ideas/stargazers","contributors_url":"https://api.github.com/repos/hmc-cs-rparamastri/project-ideas/contributors","subscribers_url":"https://api.github.com/repos/hmc-cs-rparamastri/project-ideas/subscribers","subscription_url":"https://api.github.com/repos/hmc-cs-rparamastri/project-ideas/subscription","commits_url":"https://api.github.com/repos/hmc-cs-rparamastri/project-ideas/commits{/sha}","git_commits_url":"https://api.github.com/repos/hmc-cs-rparamastri/project-ideas/git/commits{/sha}","comments_url":"https://api.github.com/repos/hmc-cs-rparamastri/project-ideas/comments{/number}","issue_comment_url":"https://api.github.com/repos/hmc-cs-rparamastri/project-ideas/issues/comments{/number}","contents_url":"https://api.github.com/repos/hmc-cs-rparamastri/project-ideas/contents/{+path}","compare_url":"https://api.github.com/repos/hmc-cs-rparamastri/project-ideas/compare/{base}...{head}","merges_url":"https://api.github.com/repos/hmc-cs-rparamastri/project-ideas/merges","archive_url":"https://api.github.com/repos/hmc-cs-rparamastri/project-ideas/{archive_format}{/ref}","downloads_url":"https://api.github.com/repos/hmc-cs-rparamastri/project-ideas/downloads","issues_url":"https://api.github.com/repos/hmc-cs-rparamastri/project-ideas/issues{/number}","pulls_url":"https://api.github.com/repos/hmc-cs-rparamastri/project-ideas/pulls{/number}","milestones_url":"https://api.github.com/repos/hmc-cs-rparamastri/project-ideas/milestones{/number}","notifications_url":"https://api.github.com/repos/hmc-cs-rparamastri/project-ideas/notifications{?since,all,participating}","labels_url":"https://api.github.com/repos/hmc-cs-rparamastri/project-ideas/labels{/name}","releases_url":"https://api.github.com/repos/hmc-cs-rparamastri/project-ideas/releases{/id}","deployments_url":"https://api.github.com/repos/hmc-cs-rparamastri/project-ideas/deployments","created_at":"2016-09-21T19:56:02Z","updated_at":"2016-09-15T03:31:16Z","pushed_at":"2016-09-22T06:43:15Z","git_url":"git://github.com/hmc-cs-rparamastri/project-ideas.git","ssh_url":"git@github.com:hmc-cs-rparamastri/project-ideas.git","clone_url":"https://github.com/hmc-cs-rparamastri/project-ideas.git","svn_url":"https://github.com/hmc-cs-rparamastri/project-ideas","homepage":null,"size":250,"stargazers_count":0,"watchers_count":0,"language":null,"has_issues":false,"has_downloads":true,"has_wiki":true,"has_pages":false,"forks_count":0,"mirror_url":null,"open_issues_count":0,"forks":0,"open_issues":0,"watchers":0,"default_branch":"master"}},"base":{"label":"hmc-cs111-fall2016:master","ref":"master","sha":"147982623a695ad7dc0113f37a8fe2977926d337","user":{"login":"hmc-cs111-fall2016","id":20343278,"avatar_url":"https://avatars.githubusercontent.com/u/20343278?v=3","gravatar_id":"","url":"https://api.github.com/users/hmc-cs111-fall2016","html_url":"https://github.com/hmc-cs111-fall2016","followers_url":"https://api.github.com/users/hmc-cs111-fall2016/followers","following_url":"https://api.github.com/users/hmc-cs111-fall2016/following{/other_user}","gists_url":"https://api.github.com/users/hmc-cs111-fall2016/gists{/gist_id}","starred_url":"https://api.github.com/users/hmc-cs111-fall2016/starred{/owner}{/repo}","subscriptions_url":"https://api.github.com/users/hmc-cs111-fall2016/subscriptions","organizations_url":"https://api.github.com/users/hmc-cs111-fall2016/orgs","repos_url":"https://api.github.com/users/hmc-cs111-fall2016/repos","events_url":"https://api.github.com/users/hmc-cs111-fall2016/events{/privacy}","received_events_url":"https://api.github.com/users/hmc-cs111-fall2016/received_events","type":"Organization","site_admin":false},"repo":{"id":68263098,"name":"project-ideas","full_name":"hmc-cs111-fall2016/project-ideas","owner":{"login":"hmc-cs111-fall2016","id":20343278,"avatar_url":"https://avatars.githubusercontent.com/u/20343278?v=3","gravatar_id":"","url":"https://api.github.com/users/hmc-cs111-fall2016","html_url":"https://github.com/hmc-cs111-fall2016","followers_url":"https://api.github.com/users/hmc-cs111-fall2016/followers","following_url":"https://api.github.com/users/hmc-cs111-fall2016/following{/other_user}","gists_url":"https://api.github.com/users/hmc-cs111-fall2016/gists{/gist_id}","starred_url":"https://api.github.com/users/hmc-cs111-fall2016/starred{/owner}{/repo}","subscriptions_url":"https://api.github.com/users/hmc-cs111-fall2016/subscriptions","organizations_url":"https://api.github.com/users/hmc-cs111-fall2016/orgs","repos_url":"https://api.github.com/users/hmc-cs111-fall2016/repos","events_url":"https://api.github.com/users/hmc-cs111-fall2016/events{/privacy}","received_events_url":"https://api.github.com/users/hmc-cs111-fall2016/received_events","type":"Organization","site_admin":false},"private":false,"html_url":"https://github.com/hmc-cs111-fall2016/project-ideas","description":"Assignment 3: generate ideas for the project","fork":false,"url":"https://api.github.com/repos/hmc-cs111-fall2016/project-ideas","forks_url":"https://api.github.com/repos/hmc-cs111-fall2016/project-ideas/forks","keys_url":"https://api.github.com/repos/hmc-cs111-fall2016/project-ideas/keys{/key_id}","collaborators_url":"https://api.github.com/repos/hmc-cs111-fall2016/project-ideas/collaborators{/collaborator}","teams_url":"https://api.github.com/repos/hmc-cs111-fall2016/project-ideas/teams","hooks_url":"https://api.github.com/repos/hmc-cs111-fall2016/project-ideas/hooks","issue_events_url":"https://api.github.com/repos/hmc-cs111-fall2016/project-ideas/issues/events{/number}","events_url":"https://api.github.com/repos/hmc-cs111-fall2016/project-ideas/events","assignees_url":"https://api.github.com/repos/hmc-cs111-fall2016/project-ideas/assignees{/user}","branches_url":"https://api.github.com/repos/hmc-cs111-fall2016/project-ideas/branches{/branch}","tags_url":"https://api.github.com/repos/hmc-cs111-fall2016/project-ideas/tags","blobs_url":"https://api.github.com/repos/hmc-cs111-fall2016/project-ideas/git/blobs{/sha}","git_tags_url":"https://api.github.com/repos/hmc-cs111-fall2016/project-ideas/git/tags{/sha}","git_refs_url":"https://api.github.com/repos/hmc-cs111-fall2016/project-ideas/git/refs{/sha}","trees_url":"https://api.github.com/repos/hmc-cs111-fall2016/project-ideas/git/trees{/sha}","statuses_url":"https://api.github.com/repos/hmc-cs111-fall2016/project-ideas/statuses/{sha}","languages_url":"https://api.github.com/repos/hmc-cs111-fall2016/project-ideas/languages","stargazers_url":"https://api.github.com/repos/hmc-cs111-fall2016/project-ideas/stargazers","contributors_url":"https://api.github.com/repos/hmc-cs111-fall2016/project-ideas/contributors","subscribers_url":"https://api.github.com/repos/hmc-cs111-fall2016/project-ideas/subscribers","subscription_url":"https://api.github.com/repos/hmc-cs111-fall2016/project-ideas/subscription","commits_url":"https://api.github.com/repos/hmc-cs111-fall2016/project-ideas/commits{/sha}","git_commits_url":"https://api.github.com/repos/hmc-cs111-fall2016/project-ideas/git/commits{/sha}","comments_url":"https://api.github.com/repos/hmc-cs111-fall2016/project-ideas/comments{/number}","issue_comment_url":"https://api.github.com/repos/hmc-cs111-fall2016/project-ideas/issues/comments{/number}","contents_url":"https://api.github.com/repos/hmc-cs111-fall2016/project-ideas/contents/{+path}","compare_url":"https://api.github.com/repos/hmc-cs111-fall2016/project-ideas/compare/{base}...{head}","merges_url":"https://api.github.com/repos/hmc-cs111-fall2016/project-ideas/merges","archive_url":"https://api.github.com/repos/hmc-cs111-fall2016/project-ideas/{archive_format}{/ref}","downloads_url":"https://api.github.com/repos/hmc-cs111-fall2016/project-ideas/downloads","issues_url":"https://api.github.com/repos/hmc-cs111-fall2016/project-ideas/issues{/number}","pulls_url":"https://api.github.com/repos/hmc-cs111-fall2016/project-ideas/pulls{/number}","milestones_url":"https://api.github.com/repos/hmc-cs111-fall2016/project-ideas/milestones{/number}","notifications_url":"https://api.github.com/repos/hmc-cs111-fall2016/project-ideas/notifications{?since,all,participating}","labels_url":"https://api.github.com/repos/hmc-cs111-fall2016/project-ideas/labels{/name}","releases_url":"https://api.github.com/repos/hmc-cs111-fall2016/project-ideas/releases{/id}","deployments_url":"https://api.github.com/repos/hmc-cs111-fall2016/project-ideas/deployments","created_at":"2016-09-15T03:19:06Z","updated_at":"2016-09-15T03:31:16Z","pushed_at":"2016-09-22T10:48:03Z","git_url":"git://github.com/hmc-cs111-fall2016/project-ideas.git","ssh_url":"git@github.com:hmc-cs111-fall2016/project-ideas.git","clone_url":"https://github.com/hmc-cs111-fall2016/project-ideas.git","svn_url":"https://github.com/hmc-cs111-fall2016/project-ideas","homepage":null,"size":1160,"stargazers_count":0,"watchers_count":0,"language":null,"has_issues":true,"has_downloads":true,"has_wiki":true,"has_pages":false,"forks_count":17,"mirror_url":null,"open_issues_count":17,"forks":17,"open_issues":17,"watchers":0,"default_branch":"master"}},"_links":{"self":{"href":"https://api.github.com/repos/hmc-cs111-fall2016/project-ideas/pulls/11"},"html":{"href":"https://github.com/hmc-cs111-fall2016/project-ideas/pull/11"},"issue":{"href":"https://api.github.com/repos/hmc-cs111-fall2016/project-ideas/issues/11"},"comments":{"href":"https://api.github.com/repos/hmc-cs111-fall2016/project-ideas/issues/11/comments"},"review_comments":{"href":"https://api.github.com/repos/hmc-cs111-fall2016/project-ideas/pulls/11/comments"},"review_comment":{"href":"https://api.github.com/repos/hmc-cs111-fall2016/project-ideas/pulls/comments{/number}"},"commits":{"href":"https://api.github.com/repos/hmc-cs111-fall2016/project-ideas/pulls/11/commits"},"statuses":{"href":"https://api.github.com/repos/hmc-cs111-fall2016/project-ideas/statuses/64bd0e17296d6f419876155560567662318fdbf2"}}}}
{"actor":{"display_login":"aromm"}}