{"action":"created","comment":{"url":"https://api.github.com/repos/dawiddominiak/blog-articles/pulls/comments/178300111","pull_request_review_id":108343505,"id":178300111,"diff_hunk":"@@ -1,62 +1,63 @@\n # What’s up in Vietnam\r\n ## Introduction\r\n-Is there a more sophisticated parallel to a part of computer science than a situation in Vietnam? The first brave soul was Ted Neward with his article “The Vietnam of Computer Science” comparing the Object Relational Mapping to one of the most disgraceful conflicts in the U.S. history. It was written in 2006. 12 years have passed, and many have changed in an approach to ORM.\r\n+Is there a more sophisticated parallel to a part of computer science than a situation in Vietnam? The first brave soul was Ted Neward with his article “The Vietnam of Computer Science” comparing the Object Relational Mapping to one of the most disgraceful conflicts in the history of United States. It was written in 2006. 12 years have passed, and a lot has changed in the approach to ORM.\r\n \r\n ## What the Object Relational Mapping stands for?\r\n-Follow the definition on Wikipedia _it’s a technique for converting data between incompatible type systems using object-oriented programming languages._ To be stricter it’s converting relational data to the object-oriented domain model (OODM) and OODM to relational data. Conversions like that could be done in several ways, but the most common is a usage of a tool called ORM library or ORM framework.\r\n+Follow the definition on Wikipedia _it’s a technique for converting data between incompatible type systems using object-oriented programming languages._ To be more precise it’s converting relational data to the object-oriented domain model (OODM) and OODM to relational data. Conversions like that can be done in a several ways, but the most common approach is to use a tool called ORM library or ORM framework.\r\n \r\n-## Why is it problematic.\r\n-There are words such as „incompatible type systems” even in the definition, and all incompatibilities are a potential problem. My first question which appeared after getting into the subject was „Why the hell we are using incompatible systems? Why is it the first (and often the only one known) solution to solve the problem with persisting data?”\r\n+## Why is it problematic?\r\n+ „Incompatible type systems” are mentioned already in the definition, and all incompatibilities are potential problems. My first question that popped into my head after getting into the subject was: „Why the hell we are using incompatible systems? Why is it the first (and often the only one known) solution to solve the problem with persisting data?”\r\n \r\n-> If your project really does not need any relational data features, then ORM will work perfectly for you, but then you have a different problem: you're using the wrong data store. […] On the other hand, if your data is relational, then your object mapping will eventually break down.  \r\n+> If your project really does not need any relational data features, then ORM will work perfectly for you, but then you have a different problem: you're using the wrong data store. […] On the other hand, if your data is relational, then your object mapping will eventually break down.\r\n _Laurie Voss_\r\n \r\n ### Let’s characterize these two worlds\r\n \r\n-> Object systems are typically characterized by four basic components: identity, state, behavior and encapsulation.  \r\n+> Object systems are typically characterized by four basic components: identity, state, behavior and encapsulation.\r\n _Ted Neward_\r\n \r\n-Summing up the above thought, we can say that every object is described by its identity independently of its state. Every object has a collection of operations that can be invoked to manipulate the state of itself or connected objects, and (most importantly) has encapsulated access to itself and effectively, the ability to inheritance and polymorphism.\r\n+Elaborating on the above though we can say that every object is described by its identity independently of its state. Every object has a collection of operations that can be invoked to manipulate the state of itself or connected objects, and (most importantly) has encapsulated access to itself and effectively, possibility of inheritance and polymorphism.\r\n \r\n-> The representation of your object in memory depends what you intend to do with it, and context-sensitive representation is not a feature of OO design.  \r\n+> The representation of your object in memory depends  on what you intend to do with it, and context-sensitive representation is not a feature of OO design.\r","path":"What’s up in Vietnam.md","position":29,"original_position":29,"commit_id":"4b45d327211859e7ef4ea9083061d8877e7b4fde","original_commit_id":"4b45d327211859e7ef4ea9083061d8877e7b4fde","user":{"login":"ymirpl","id":10813,"avatar_url":"https://avatars3.githubusercontent.com/u/10813?v=4","gravatar_id":"","url":"https://api.github.com/users/ymirpl","html_url":"https://github.com/ymirpl","followers_url":"https://api.github.com/users/ymirpl/followers","following_url":"https://api.github.com/users/ymirpl/following{/other_user}","gists_url":"https://api.github.com/users/ymirpl/gists{/gist_id}","starred_url":"https://api.github.com/users/ymirpl/starred{/owner}{/repo}","subscriptions_url":"https://api.github.com/users/ymirpl/subscriptions","organizations_url":"https://api.github.com/users/ymirpl/orgs","repos_url":"https://api.github.com/users/ymirpl/repos","events_url":"https://api.github.com/users/ymirpl/events{/privacy}","received_events_url":"https://api.github.com/users/ymirpl/received_events","type":"User","site_admin":false},"body":"Then the quote had a mistake or was in different context","created_at":"2018-03-30T14:25:26Z","updated_at":"2018-03-30T14:25:26Z","html_url":"https://github.com/dawiddominiak/blog-articles/pull/2#discussion_r178300111","pull_request_url":"https://api.github.com/repos/dawiddominiak/blog-articles/pulls/2","author_association":"NONE","_links":{"self":{"href":"https://api.github.com/repos/dawiddominiak/blog-articles/pulls/comments/178300111"},"html":{"href":"https://github.com/dawiddominiak/blog-articles/pull/2#discussion_r178300111"},"pull_request":{"href":"https://api.github.com/repos/dawiddominiak/blog-articles/pulls/2"}},"in_reply_to_id":178295824},"pull_request":{"url":"https://api.github.com/repos/dawiddominiak/blog-articles/pulls/2","id":178565188,"html_url":"https://github.com/dawiddominiak/blog-articles/pull/2","diff_url":"https://github.com/dawiddominiak/blog-articles/pull/2.diff","patch_url":"https://github.com/dawiddominiak/blog-articles/pull/2.patch","issue_url":"https://api.github.com/repos/dawiddominiak/blog-articles/issues/2","number":2,"state":"open","locked":false,"title":"Marcin review","user":{"login":"dawiddominiak","id":7491504,"avatar_url":"https://avatars0.githubusercontent.com/u/7491504?v=4","gravatar_id":"","url":"https://api.github.com/users/dawiddominiak","html_url":"https://github.com/dawiddominiak","followers_url":"https://api.github.com/users/dawiddominiak/followers","following_url":"https://api.github.com/users/dawiddominiak/following{/other_user}","gists_url":"https://api.github.com/users/dawiddominiak/gists{/gist_id}","starred_url":"https://api.github.com/users/dawiddominiak/starred{/owner}{/repo}","subscriptions_url":"https://api.github.com/users/dawiddominiak/subscriptions","organizations_url":"https://api.github.com/users/dawiddominiak/orgs","repos_url":"https://api.github.com/users/dawiddominiak/repos","events_url":"https://api.github.com/users/dawiddominiak/events{/privacy}","received_events_url":"https://api.github.com/users/dawiddominiak/received_events","type":"User","site_admin":false},"body":"","created_at":"2018-03-30T13:58:20Z","updated_at":"2018-03-30T14:25:26Z","closed_at":null,"merged_at":null,"merge_commit_sha":"d168421b52e047ebf9a29d843a54461034a78211","assignee":null,"assignees":[],"requested_reviewers":[],"requested_teams":[],"labels":[],"milestone":null,"commits_url":"https://api.github.com/repos/dawiddominiak/blog-articles/pulls/2/commits","review_comments_url":"https://api.github.com/repos/dawiddominiak/blog-articles/pulls/2/comments","review_comment_url":"https://api.github.com/repos/dawiddominiak/blog-articles/pulls/comments{/number}","comments_url":"https://api.github.com/repos/dawiddominiak/blog-articles/issues/2/comments","statuses_url":"https://api.github.com/repos/dawiddominiak/blog-articles/statuses/4b45d327211859e7ef4ea9083061d8877e7b4fde","head":{"label":"dawiddominiak:1/marcin-review","ref":"1/marcin-review","sha":"4b45d327211859e7ef4ea9083061d8877e7b4fde","user":{"login":"dawiddominiak","id":7491504,"avatar_url":"https://avatars0.githubusercontent.com/u/7491504?v=4","gravatar_id":"","url":"https://api.github.com/users/dawiddominiak","html_url":"https://github.com/dawiddominiak","followers_url":"https://api.github.com/users/dawiddominiak/followers","following_url":"https://api.github.com/users/dawiddominiak/following{/other_user}","gists_url":"https://api.github.com/users/dawiddominiak/gists{/gist_id}","starred_url":"https://api.github.com/users/dawiddominiak/starred{/owner}{/repo}","subscriptions_url":"https://api.github.com/users/dawiddominiak/subscriptions","organizations_url":"https://api.github.com/users/dawiddominiak/orgs","repos_url":"https://api.github.com/users/dawiddominiak/repos","events_url":"https://api.github.com/users/dawiddominiak/events{/privacy}","received_events_url":"https://api.github.com/users/dawiddominiak/received_events","type":"User","site_admin":false},"repo":{"id":127188475,"name":"blog-articles","full_name":"dawiddominiak/blog-articles","owner":{"login":"dawiddominiak","id":7491504,"avatar_url":"https://avatars0.githubusercontent.com/u/7491504?v=4","gravatar_id":"","url":"https://api.github.com/users/dawiddominiak","html_url":"https://github.com/dawiddominiak","followers_url":"https://api.github.com/users/dawiddominiak/followers","following_url":"https://api.github.com/users/dawiddominiak/following{/other_user}","gists_url":"https://api.github.com/users/dawiddominiak/gists{/gist_id}","starred_url":"https://api.github.com/users/dawiddominiak/starred{/owner}{/repo}","subscriptions_url":"https://api.github.com/users/dawiddominiak/subscriptions","organizations_url":"https://api.github.com/users/dawiddominiak/orgs","repos_url":"https://api.github.com/users/dawiddominiak/repos","events_url":"https://api.github.com/users/dawiddominiak/events{/privacy}","received_events_url":"https://api.github.com/users/dawiddominiak/received_events","type":"User","site_admin":false},"private":false,"html_url":"https://github.com/dawiddominiak/blog-articles","description":null,"fork":false,"url":"https://api.github.com/repos/dawiddominiak/blog-articles","forks_url":"https://api.github.com/repos/dawiddominiak/blog-articles/forks","keys_url":"https://api.github.com/repos/dawiddominiak/blog-articles/keys{/key_id}","collaborators_url":"https://api.github.com/repos/dawiddominiak/blog-articles/collaborators{/collaborator}","teams_url":"https://api.github.com/repos/dawiddominiak/blog-articles/teams","hooks_url":"https://api.github.com/repos/dawiddominiak/blog-articles/hooks","issue_events_url":"https://api.github.com/repos/dawiddominiak/blog-articles/issues/events{/number}","events_url":"https://api.github.com/repos/dawiddominiak/blog-articles/events","assignees_url":"https://api.github.com/repos/dawiddominiak/blog-articles/assignees{/user}","branches_url":"https://api.github.com/repos/dawiddominiak/blog-articles/branches{/branch}","tags_url":"https://api.github.com/repos/dawiddominiak/blog-articles/tags","blobs_url":"https://api.github.com/repos/dawiddominiak/blog-articles/git/blobs{/sha}","git_tags_url":"https://api.github.com/repos/dawiddominiak/blog-articles/git/tags{/sha}","git_refs_url":"https://api.github.com/repos/dawiddominiak/blog-articles/git/refs{/sha}","trees_url":"https://api.github.com/repos/dawiddominiak/blog-articles/git/trees{/sha}","statuses_url":"https://api.github.com/repos/dawiddominiak/blog-articles/statuses/{sha}","languages_url":"https://api.github.com/repos/dawiddominiak/blog-articles/languages","stargazers_url":"https://api.github.com/repos/dawiddominiak/blog-articles/stargazers","contributors_url":"https://api.github.com/repos/dawiddominiak/blog-articles/contributors","subscribers_url":"https://api.github.com/repos/dawiddominiak/blog-articles/subscribers","subscription_url":"https://api.github.com/repos/dawiddominiak/blog-articles/subscription","commits_url":"https://api.github.com/repos/dawiddominiak/blog-articles/commits{/sha}","git_commits_url":"https://api.github.com/repos/dawiddominiak/blog-articles/git/commits{/sha}","comments_url":"https://api.github.com/repos/dawiddominiak/blog-articles/comments{/number}","issue_comment_url":"https://api.github.com/repos/dawiddominiak/blog-articles/issues/comments{/number}","contents_url":"https://api.github.com/repos/dawiddominiak/blog-articles/contents/{+path}","compare_url":"https://api.github.com/repos/dawiddominiak/blog-articles/compare/{base}...{head}","merges_url":"https://api.github.com/repos/dawiddominiak/blog-articles/merges","archive_url":"https://api.github.com/repos/dawiddominiak/blog-articles/{archive_format}{/ref}","downloads_url":"https://api.github.com/repos/dawiddominiak/blog-articles/downloads","issues_url":"https://api.github.com/repos/dawiddominiak/blog-articles/issues{/number}","pulls_url":"https://api.github.com/repos/dawiddominiak/blog-articles/pulls{/number}","milestones_url":"https://api.github.com/repos/dawiddominiak/blog-articles/milestones{/number}","notifications_url":"https://api.github.com/repos/dawiddominiak/blog-articles/notifications{?since,all,participating}","labels_url":"https://api.github.com/repos/dawiddominiak/blog-articles/labels{/name}","releases_url":"https://api.github.com/repos/dawiddominiak/blog-articles/releases{/id}","deployments_url":"https://api.github.com/repos/dawiddominiak/blog-articles/deployments","created_at":"2018-03-28T19:30:22Z","updated_at":"2018-03-29T11:10:58Z","pushed_at":"2018-03-30T13:58:20Z","git_url":"git://github.com/dawiddominiak/blog-articles.git","ssh_url":"git@github.com:dawiddominiak/blog-articles.git","clone_url":"https://github.com/dawiddominiak/blog-articles.git","svn_url":"https://github.com/dawiddominiak/blog-articles","homepage":null,"size":77,"stargazers_count":0,"watchers_count":0,"language":null,"has_issues":true,"has_projects":true,"has_downloads":true,"has_wiki":true,"has_pages":false,"forks_count":2,"mirror_url":null,"archived":false,"open_issues_count":1,"license":null,"forks":2,"open_issues":1,"watchers":0,"default_branch":"master"}},"base":{"label":"dawiddominiak:master","ref":"master","sha":"362ea3c0605277abca06488402dc91a04fe01c2d","user":{"login":"dawiddominiak","id":7491504,"avatar_url":"https://avatars0.githubusercontent.com/u/7491504?v=4","gravatar_id":"","url":"https://api.github.com/users/dawiddominiak","html_url":"https://github.com/dawiddominiak","followers_url":"https://api.github.com/users/dawiddominiak/followers","following_url":"https://api.github.com/users/dawiddominiak/following{/other_user}","gists_url":"https://api.github.com/users/dawiddominiak/gists{/gist_id}","starred_url":"https://api.github.com/users/dawiddominiak/starred{/owner}{/repo}","subscriptions_url":"https://api.github.com/users/dawiddominiak/subscriptions","organizations_url":"https://api.github.com/users/dawiddominiak/orgs","repos_url":"https://api.github.com/users/dawiddominiak/repos","events_url":"https://api.github.com/users/dawiddominiak/events{/privacy}","received_events_url":"https://api.github.com/users/dawiddominiak/received_events","type":"User","site_admin":false},"repo":{"id":127188475,"name":"blog-articles","full_name":"dawiddominiak/blog-articles","owner":{"login":"dawiddominiak","id":7491504,"avatar_url":"https://avatars0.githubusercontent.com/u/7491504?v=4","gravatar_id":"","url":"https://api.github.com/users/dawiddominiak","html_url":"https://github.com/dawiddominiak","followers_url":"https://api.github.com/users/dawiddominiak/followers","following_url":"https://api.github.com/users/dawiddominiak/following{/other_user}","gists_url":"https://api.github.com/users/dawiddominiak/gists{/gist_id}","starred_url":"https://api.github.com/users/dawiddominiak/starred{/owner}{/repo}","subscriptions_url":"https://api.github.com/users/dawiddominiak/subscriptions","organizations_url":"https://api.github.com/users/dawiddominiak/orgs","repos_url":"https://api.github.com/users/dawiddominiak/repos","events_url":"https://api.github.com/users/dawiddominiak/events{/privacy}","received_events_url":"https://api.github.com/users/dawiddominiak/received_events","type":"User","site_admin":false},"private":false,"html_url":"https://github.com/dawiddominiak/blog-articles","description":null,"fork":false,"url":"https://api.github.com/repos/dawiddominiak/blog-articles","forks_url":"https://api.github.com/repos/dawiddominiak/blog-articles/forks","keys_url":"https://api.github.com/repos/dawiddominiak/blog-articles/keys{/key_id}","collaborators_url":"https://api.github.com/repos/dawiddominiak/blog-articles/collaborators{/collaborator}","teams_url":"https://api.github.com/repos/dawiddominiak/blog-articles/teams","hooks_url":"https://api.github.com/repos/dawiddominiak/blog-articles/hooks","issue_events_url":"https://api.github.com/repos/dawiddominiak/blog-articles/issues/events{/number}","events_url":"https://api.github.com/repos/dawiddominiak/blog-articles/events","assignees_url":"https://api.github.com/repos/dawiddominiak/blog-articles/assignees{/user}","branches_url":"https://api.github.com/repos/dawiddominiak/blog-articles/branches{/branch}","tags_url":"https://api.github.com/repos/dawiddominiak/blog-articles/tags","blobs_url":"https://api.github.com/repos/dawiddominiak/blog-articles/git/blobs{/sha}","git_tags_url":"https://api.github.com/repos/dawiddominiak/blog-articles/git/tags{/sha}","git_refs_url":"https://api.github.com/repos/dawiddominiak/blog-articles/git/refs{/sha}","trees_url":"https://api.github.com/repos/dawiddominiak/blog-articles/git/trees{/sha}","statuses_url":"https://api.github.com/repos/dawiddominiak/blog-articles/statuses/{sha}","languages_url":"https://api.github.com/repos/dawiddominiak/blog-articles/languages","stargazers_url":"https://api.github.com/repos/dawiddominiak/blog-articles/stargazers","contributors_url":"https://api.github.com/repos/dawiddominiak/blog-articles/contributors","subscribers_url":"https://api.github.com/repos/dawiddominiak/blog-articles/subscribers","subscription_url":"https://api.github.com/repos/dawiddominiak/blog-articles/subscription","commits_url":"https://api.github.com/repos/dawiddominiak/blog-articles/commits{/sha}","git_commits_url":"https://api.github.com/repos/dawiddominiak/blog-articles/git/commits{/sha}","comments_url":"https://api.github.com/repos/dawiddominiak/blog-articles/comments{/number}","issue_comment_url":"https://api.github.com/repos/dawiddominiak/blog-articles/issues/comments{/number}","contents_url":"https://api.github.com/repos/dawiddominiak/blog-articles/contents/{+path}","compare_url":"https://api.github.com/repos/dawiddominiak/blog-articles/compare/{base}...{head}","merges_url":"https://api.github.com/repos/dawiddominiak/blog-articles/merges","archive_url":"https://api.github.com/repos/dawiddominiak/blog-articles/{archive_format}{/ref}","downloads_url":"https://api.github.com/repos/dawiddominiak/blog-articles/downloads","issues_url":"https://api.github.com/repos/dawiddominiak/blog-articles/issues{/number}","pulls_url":"https://api.github.com/repos/dawiddominiak/blog-articles/pulls{/number}","milestones_url":"https://api.github.com/repos/dawiddominiak/blog-articles/milestones{/number}","notifications_url":"https://api.github.com/repos/dawiddominiak/blog-articles/notifications{?since,all,participating}","labels_url":"https://api.github.com/repos/dawiddominiak/blog-articles/labels{/name}","releases_url":"https://api.github.com/repos/dawiddominiak/blog-articles/releases{/id}","deployments_url":"https://api.github.com/repos/dawiddominiak/blog-articles/deployments","created_at":"2018-03-28T19:30:22Z","updated_at":"2018-03-29T11:10:58Z","pushed_at":"2018-03-30T13:58:20Z","git_url":"git://github.com/dawiddominiak/blog-articles.git","ssh_url":"git@github.com:dawiddominiak/blog-articles.git","clone_url":"https://github.com/dawiddominiak/blog-articles.git","svn_url":"https://github.com/dawiddominiak/blog-articles","homepage":null,"size":77,"stargazers_count":0,"watchers_count":0,"language":null,"has_issues":true,"has_projects":true,"has_downloads":true,"has_wiki":true,"has_pages":false,"forks_count":2,"mirror_url":null,"archived":false,"open_issues_count":1,"license":null,"forks":2,"open_issues":1,"watchers":0,"default_branch":"master"}},"_links":{"self":{"href":"https://api.github.com/repos/dawiddominiak/blog-articles/pulls/2"},"html":{"href":"https://github.com/dawiddominiak/blog-articles/pull/2"},"issue":{"href":"https://api.github.com/repos/dawiddominiak/blog-articles/issues/2"},"comments":{"href":"https://api.github.com/repos/dawiddominiak/blog-articles/issues/2/comments"},"review_comments":{"href":"https://api.github.com/repos/dawiddominiak/blog-articles/pulls/2/comments"},"review_comment":{"href":"https://api.github.com/repos/dawiddominiak/blog-articles/pulls/comments{/number}"},"commits":{"href":"https://api.github.com/repos/dawiddominiak/blog-articles/pulls/2/commits"},"statuses":{"href":"https://api.github.com/repos/dawiddominiak/blog-articles/statuses/4b45d327211859e7ef4ea9083061d8877e7b4fde"}},"author_association":"OWNER"}}
{"actor":{"display_login":"ymirpl"}}