{"id":55,"date":"2010-05-31T13:29:00","date_gmt":"2010-05-31T20:29:00","guid":{"rendered":"https:\/\/dylanmc.ca\/\/-\/blog\/2010\/05\/making-harvest-awesome-my-gsoc-2010-project-%e2%80%94-week-1ish\/"},"modified":"2024-08-14T09:20:05","modified_gmt":"2024-08-14T16:20:05","slug":"making-harvest-awesome-my-gsoc-2010-project-week-1ish","status":"publish","type":"post","link":"https:\/\/dylanmc.ca\/\/-\/blog\/2010\/05\/31\/making-harvest-awesome-my-gsoc-2010-project-week-1ish\/","title":{"rendered":"Making Harvest awesome! (My GSoC 2010 project) \u2014 Week 1(ish)"},"content":{"rendered":"\n<p>It is time that I babble about my project for Google Summer of Code 2010!<\/p>\n\n\n\n<p>Over the summer, I will be working on Harvest with Daniel Holbach as my awesome mentor. Harvest is a neat web service, built with Django, that brings together opportunities (things that need doing), from many different places on the web. Those opportunities are all neatly linked to source packages, which are, themselves, nicely described by package sets like ubuntu-desktop, unr, xubuntu and kernel.<\/p>\n\n\n\n<!--more-->\n\n\n\n<p>Suffice it to say, Harvest is a huge database with a lot of intricate detail. It can be really helpful to see all this stuff in one place. My task is to implement views that harness all that data and resist the temptation to throw it all at the user at once. The result should be really helpful, quick and fun to use. (This may be difficult; I can be a very wordy person).<\/p>\n\n\n\n<p>The first stage to achieving that is filters.<\/p>\n\n\n\n<p>I&#8217;m using <a href=\"https:\/\/wiki.ubuntu.com\/Harvest\/NewUI\">an existing wiki page<\/a> as a starting point, which has one very pretty mockup. I created a mockup of my own, full of crazy tangents and marked by the single worst green pencil I have ever used.<\/p>\n\n\n<div data-carousel-extra='{&quot;blog_id&quot;:1,&quot;permalink&quot;:&quot;https:\/\/dylanmc.ca\/\/-\/blog\/2010\/05\/31\/making-harvest-awesome-my-gsoc-2010-project-week-1ish\/&quot;}' id='gallery-1' class='gallery galleryid-55 gallery-columns-2 gallery-size-thumbnail'><figure class='gallery-item'>\n\t\t\t<div class='gallery-icon landscape'>\n\t\t\t\t<a href='https:\/\/dylanmc.ca\/\/-\/blog\/2010\/05\/31\/making-harvest-awesome-my-gsoc-2010-project-week-1ish\/harvest-early-mockup-1\/'><img loading=\"lazy\" decoding=\"async\" width=\"150\" height=\"150\" src=\"https:\/\/i0.wp.com\/dylanmc.ca\/wp-content\/uploads\/harvest-early-mockup-1.jpg?resize=150%2C150&amp;ssl=1\" class=\"attachment-thumbnail size-thumbnail\" alt=\"\" srcset=\"https:\/\/i0.wp.com\/dylanmc.ca\/wp-content\/uploads\/harvest-early-mockup-1.jpg?resize=150%2C150&amp;ssl=1 150w, https:\/\/i0.wp.com\/dylanmc.ca\/wp-content\/uploads\/harvest-early-mockup-1.jpg?zoom=2&amp;resize=150%2C150&amp;ssl=1 300w, https:\/\/i0.wp.com\/dylanmc.ca\/wp-content\/uploads\/harvest-early-mockup-1.jpg?zoom=3&amp;resize=150%2C150&amp;ssl=1 450w\" sizes=\"auto, 100vw\" data-attachment-id=\"500\" data-permalink=\"https:\/\/dylanmc.ca\/\/-\/blog\/2010\/05\/31\/making-harvest-awesome-my-gsoc-2010-project-week-1ish\/harvest-early-mockup-1\/\" data-orig-file=\"https:\/\/i0.wp.com\/dylanmc.ca\/wp-content\/uploads\/harvest-early-mockup-1.jpg?fit=984%2C670&amp;ssl=1\" data-orig-size=\"984,670\" data-comments-opened=\"0\" data-image-meta=\"{&quot;aperture&quot;:&quot;0&quot;,&quot;credit&quot;:&quot;&quot;,&quot;camera&quot;:&quot;&quot;,&quot;caption&quot;:&quot;&quot;,&quot;created_timestamp&quot;:&quot;0&quot;,&quot;copyright&quot;:&quot;&quot;,&quot;focal_length&quot;:&quot;0&quot;,&quot;iso&quot;:&quot;0&quot;,&quot;shutter_speed&quot;:&quot;0&quot;,&quot;title&quot;:&quot;&quot;}\" data-image-title=\"harvest-early-mockup-1\" data-image-description=\"\" data-image-caption=\"\" data-medium-file=\"https:\/\/i0.wp.com\/dylanmc.ca\/wp-content\/uploads\/harvest-early-mockup-1.jpg?fit=300%2C204&amp;ssl=1\" data-large-file=\"https:\/\/i0.wp.com\/dylanmc.ca\/wp-content\/uploads\/harvest-early-mockup-1.jpg?fit=525%2C357&amp;ssl=1\" \/><\/a>\n\t\t\t<\/div><\/figure><figure class='gallery-item'>\n\t\t\t<div class='gallery-icon landscape'>\n\t\t\t\t<a href='https:\/\/dylanmc.ca\/\/-\/blog\/2010\/05\/31\/making-harvest-awesome-my-gsoc-2010-project-week-1ish\/harvest-early-mockup-2\/'><img loading=\"lazy\" decoding=\"async\" width=\"150\" height=\"150\" src=\"https:\/\/i0.wp.com\/dylanmc.ca\/wp-content\/uploads\/harvest-early-mockup-2.jpg?resize=150%2C150&amp;ssl=1\" class=\"attachment-thumbnail size-thumbnail\" alt=\"\" srcset=\"https:\/\/i0.wp.com\/dylanmc.ca\/wp-content\/uploads\/harvest-early-mockup-2.jpg?resize=150%2C150&amp;ssl=1 150w, https:\/\/i0.wp.com\/dylanmc.ca\/wp-content\/uploads\/harvest-early-mockup-2.jpg?zoom=2&amp;resize=150%2C150&amp;ssl=1 300w, https:\/\/i0.wp.com\/dylanmc.ca\/wp-content\/uploads\/harvest-early-mockup-2.jpg?zoom=3&amp;resize=150%2C150&amp;ssl=1 450w\" sizes=\"auto, 100vw\" data-attachment-id=\"501\" data-permalink=\"https:\/\/dylanmc.ca\/\/-\/blog\/2010\/05\/31\/making-harvest-awesome-my-gsoc-2010-project-week-1ish\/harvest-early-mockup-2\/\" data-orig-file=\"https:\/\/i0.wp.com\/dylanmc.ca\/wp-content\/uploads\/harvest-early-mockup-2.jpg?fit=952%2C528&amp;ssl=1\" data-orig-size=\"952,528\" data-comments-opened=\"0\" data-image-meta=\"{&quot;aperture&quot;:&quot;0&quot;,&quot;credit&quot;:&quot;&quot;,&quot;camera&quot;:&quot;&quot;,&quot;caption&quot;:&quot;&quot;,&quot;created_timestamp&quot;:&quot;0&quot;,&quot;copyright&quot;:&quot;&quot;,&quot;focal_length&quot;:&quot;0&quot;,&quot;iso&quot;:&quot;0&quot;,&quot;shutter_speed&quot;:&quot;0&quot;,&quot;title&quot;:&quot;&quot;}\" data-image-title=\"harvest-early-mockup-2\" data-image-description=\"\" data-image-caption=\"\" data-medium-file=\"https:\/\/i0.wp.com\/dylanmc.ca\/wp-content\/uploads\/harvest-early-mockup-2.jpg?fit=300%2C166&amp;ssl=1\" data-large-file=\"https:\/\/i0.wp.com\/dylanmc.ca\/wp-content\/uploads\/harvest-early-mockup-2.jpg?fit=525%2C291&amp;ssl=1\" \/><\/a>\n\t\t\t<\/div><\/figure>\n\t\t<\/div>\n\n\n\n\n<p>There are a few crazy and opinionated things I want to do. First of all, I want to go as far as possible without a numerical paging system. Numerical pages make no sense. The second thing I want to avoid is a detached searching system; I think searching could be integrated pretty smoothly with filtering, so everything on the site works under the same rules. Third, while I want this to work <em>really<\/em> well with Javascript, it has to work&nbsp;<em>well<\/em> without Javascript.<\/p>\n\n\n\n<p>Last week I continued familiarizing myself with Harvest, and I made a start on the back-end for the filtering. I am building a generic structure that describes all the filters and what they do in terms of database queries. This way we can change the mechanics or add new filters quite easily (and have them do all sorts of neat things), and we&#8217;re secure from people executing arbitrary operations on Harvest; only filtering operations that we define can be run.<\/p>\n\n\n\n<p>The actual visual portion of the filtering stuff is entirely detached, and it is non-existent at this point. I expect the rest will be easy to pop together once the back-end is in place.<\/p>\n\n\n\n<div class=\"wp-block-image\"><figure class=\"alignleft\"><a href=\"https:\/\/dylanmc.ca\/\/-\/blog\/2010\/05\/31\/making-harvest-awesome-my-gsoc-2010-project-week-1ish\/harvest-screenshot-31may2010\/\" rel=\"attachment wp-att-502\"><img data-recalc-dims=\"1\" loading=\"lazy\" decoding=\"async\" width=\"300\" height=\"279\" data-attachment-id=\"502\" data-permalink=\"https:\/\/dylanmc.ca\/\/-\/blog\/2010\/05\/31\/making-harvest-awesome-my-gsoc-2010-project-week-1ish\/harvest-screenshot-31may2010\/\" data-orig-file=\"https:\/\/i0.wp.com\/dylanmc.ca\/wp-content\/uploads\/harvest-screenshot-31may2010.jpg?fit=600%2C558&amp;ssl=1\" data-orig-size=\"600,558\" data-comments-opened=\"0\" data-image-meta=\"{&quot;aperture&quot;:&quot;0&quot;,&quot;credit&quot;:&quot;&quot;,&quot;camera&quot;:&quot;&quot;,&quot;caption&quot;:&quot;&quot;,&quot;created_timestamp&quot;:&quot;0&quot;,&quot;copyright&quot;:&quot;&quot;,&quot;focal_length&quot;:&quot;0&quot;,&quot;iso&quot;:&quot;0&quot;,&quot;shutter_speed&quot;:&quot;0&quot;,&quot;title&quot;:&quot;&quot;}\" data-image-title=\"harvest-screenshot-31may2010\" data-image-description=\"\" data-image-caption=\"\" data-medium-file=\"https:\/\/i0.wp.com\/dylanmc.ca\/wp-content\/uploads\/harvest-screenshot-31may2010.jpg?fit=300%2C279&amp;ssl=1\" data-large-file=\"https:\/\/i0.wp.com\/dylanmc.ca\/wp-content\/uploads\/harvest-screenshot-31may2010.jpg?fit=525%2C488&amp;ssl=1\" src=\"https:\/\/i0.wp.com\/dylanmc.ca\/wp-content\/uploads\/harvest-screenshot-31may2010.jpg?resize=300%2C279&#038;ssl=1\" alt=\"\" class=\"wp-image-502\" title=\"harvest-screenshot-31may2010\" srcset=\"https:\/\/i0.wp.com\/dylanmc.ca\/wp-content\/uploads\/harvest-screenshot-31may2010.jpg?resize=300%2C279&amp;ssl=1 300w, https:\/\/i0.wp.com\/dylanmc.ca\/wp-content\/uploads\/harvest-screenshot-31may2010.jpg?w=600&amp;ssl=1 600w\" sizes=\"auto, (max-width: 300px) 100vw, 300px\" \/><\/a><\/figure><\/div>\n\n\n\n<p>So, yeah, not very exciting yet. It&#8217;s Harvest, and the list of packages is filtered. The URL format is, of course, not at all decided but it&#8217;s most likely going to carry parameters with GET. That way people can link straight to Harvest showing a particular query. The one for that screenshot is&nbsp;<span style=\"font-style: italic; word-wrap: break-word;\">\/opportunities\/filter?pkg=name,set&amp;pkg_name=ge&amp;pkg_set=ubuntu-desktop,core<\/span>, which describes a package with a name that starts with \u201cge\u201d and belongs to the \u201cubuntu-desktop\u201d or \u201ccore\u201d package set. I would love to know if that looks sane to anyone but me :)<\/p>\n\n\n\n<p>Exciting, eh?<\/p>\n\n\n\n<p>This week I will be doing a bit more with the invisible half of the filtering system, then I&#8217;ll make a start on the user interface half. Still nothing pretty (yet), unless the urge overpowers me; just drawing the widgets and having them do the right thing when they are clicked. I want to test my approach before it&#8217;s stuck that way.<\/p>\n","protected":false},"excerpt":{"rendered":"<p>It is time that I babble about my project for Google Summer of Code 2010!<\/p>\n<p>Over the summer, I will be working on Harvest with Daniel Holbach as my awesome mentor. Harvest is a neat web service, built with Django, that brings together opportunities (things that need doing), from many different places on the web. Those opportunities are all neatly linked to source packages, which are, themselves, nicely described by package sets like ubuntu-desktop, unr, xubuntu and kernel&hellip;<\/p>\n","protected":false},"author":2,"featured_media":500,"comment_status":"closed","ping_status":"closed","sticky":false,"template":"","format":"standard","meta":{"jetpack_post_was_ever_published":false,"_jetpack_newsletter_access":"","_jetpack_dont_email_post_to_subs":false,"_jetpack_newsletter_tier_id":0,"_jetpack_memberships_contains_paywalled_content":false,"_jetpack_memberships_contains_paid_content":false,"activitypub_content_warning":"","activitypub_content_visibility":"","activitypub_max_image_attachments":3,"activitypub_interaction_policy_quote":"anyone","activitypub_status":"federate","footnotes":"","jetpack_publicize_message":"","jetpack_publicize_feature_enabled":true,"jetpack_social_post_already_shared":false,"jetpack_social_options":{"image_generator_settings":{"template":"highway","default_image_id":0,"font":"","enabled":false},"version":2}},"categories":[35],"tags":[36,20,29],"class_list":["post-55","post","type-post","status-publish","format-standard","has-post-thumbnail","hentry","category-gsoc-2010","tag-django","tag-harvest","tag-web"],"yoast_head":"<!-- This site is optimized with the Yoast SEO plugin v27.1.1 - https:\/\/yoast.com\/product\/yoast-seo-wordpress\/ -->\n<title>Making Harvest awesome! (My GSoC 2010 project) \u2014 Week 1(ish) - Dylan McCall<\/title>\n<meta name=\"robots\" content=\"index, follow, max-snippet:-1, max-image-preview:large, max-video-preview:-1\" \/>\n<link rel=\"canonical\" href=\"https:\/\/dylanmc.ca\/\/-\/blog\/2010\/05\/31\/making-harvest-awesome-my-gsoc-2010-project-week-1ish\/\" \/>\n<meta property=\"og:locale\" content=\"en_US\" \/>\n<meta property=\"og:type\" content=\"article\" \/>\n<meta property=\"og:title\" content=\"Making Harvest awesome! (My GSoC 2010 project) \u2014 Week 1(ish) - Dylan McCall\" \/>\n<meta property=\"og:description\" content=\"It is time that I babble about my project for Google Summer of Code 2010!  Over the summer, I will be working on Harvest with Daniel Holbach as my awesome mentor. Harvest is a neat web service, built with Django, that brings together opportunities (things that need doing), from many different places on the web. Those opportunities are all neatly linked to source packages, which are, themselves, nicely described by package sets like ubuntu-desktop, unr, xubuntu and kernel&hellip;\" \/>\n<meta property=\"og:url\" content=\"https:\/\/dylanmc.ca\/\/-\/blog\/2010\/05\/31\/making-harvest-awesome-my-gsoc-2010-project-week-1ish\/\" \/>\n<meta property=\"og:site_name\" content=\"Dylan McCall\" \/>\n<meta property=\"article:published_time\" content=\"2010-05-31T20:29:00+00:00\" \/>\n<meta property=\"article:modified_time\" content=\"2024-08-14T16:20:05+00:00\" \/>\n<meta property=\"og:image\" content=\"https:\/\/dylanmc.ca\/wp-content\/uploads\/harvest-early-mockup-1.jpg\" \/>\n\t<meta property=\"og:image:width\" content=\"984\" \/>\n\t<meta property=\"og:image:height\" content=\"670\" \/>\n\t<meta property=\"og:image:type\" content=\"image\/jpeg\" \/>\n<meta name=\"author\" content=\"Dylan McCall\" \/>\n<meta name=\"twitter:label1\" content=\"Written by\" \/>\n\t<meta name=\"twitter:data1\" content=\"Dylan McCall\" \/>\n\t<meta name=\"twitter:label2\" content=\"Est. reading time\" \/>\n\t<meta name=\"twitter:data2\" content=\"3 minutes\" \/>\n<script type=\"application\/ld+json\" class=\"yoast-schema-graph\">{\"@context\":\"https:\/\/schema.org\",\"@graph\":[{\"@type\":\"Article\",\"@id\":\"https:\/\/dylanmc.ca\/\/-\/blog\/2010\/05\/31\/making-harvest-awesome-my-gsoc-2010-project-week-1ish\/#article\",\"isPartOf\":{\"@id\":\"https:\/\/dylanmc.ca\/\/-\/blog\/2010\/05\/31\/making-harvest-awesome-my-gsoc-2010-project-week-1ish\/\"},\"author\":{\"name\":\"Dylan McCall\",\"@id\":\"https:\/\/dylanmc.ca\/\/-\/#\/schema\/person\/c244419a779c5414c768bc53ac5fb2d5\"},\"headline\":\"Making Harvest awesome! (My GSoC 2010 project) \u2014 Week 1(ish)\",\"datePublished\":\"2010-05-31T20:29:00+00:00\",\"dateModified\":\"2024-08-14T16:20:05+00:00\",\"mainEntityOfPage\":{\"@id\":\"https:\/\/dylanmc.ca\/\/-\/blog\/2010\/05\/31\/making-harvest-awesome-my-gsoc-2010-project-week-1ish\/\"},\"wordCount\":578,\"image\":{\"@id\":\"https:\/\/dylanmc.ca\/\/-\/blog\/2010\/05\/31\/making-harvest-awesome-my-gsoc-2010-project-week-1ish\/#primaryimage\"},\"thumbnailUrl\":\"https:\/\/i0.wp.com\/dylanmc.ca\/wp-content\/uploads\/harvest-early-mockup-1.jpg?fit=984%2C670&ssl=1\",\"keywords\":[\"django\",\"Harvest\",\"web\"],\"articleSection\":[\"GSoC 2010\"],\"inLanguage\":\"en-US\"},{\"@type\":\"WebPage\",\"@id\":\"https:\/\/dylanmc.ca\/\/-\/blog\/2010\/05\/31\/making-harvest-awesome-my-gsoc-2010-project-week-1ish\/\",\"url\":\"https:\/\/dylanmc.ca\/\/-\/blog\/2010\/05\/31\/making-harvest-awesome-my-gsoc-2010-project-week-1ish\/\",\"name\":\"Making Harvest awesome! (My GSoC 2010 project) \u2014 Week 1(ish) - Dylan McCall\",\"isPartOf\":{\"@id\":\"https:\/\/dylanmc.ca\/\/-\/#website\"},\"primaryImageOfPage\":{\"@id\":\"https:\/\/dylanmc.ca\/\/-\/blog\/2010\/05\/31\/making-harvest-awesome-my-gsoc-2010-project-week-1ish\/#primaryimage\"},\"image\":{\"@id\":\"https:\/\/dylanmc.ca\/\/-\/blog\/2010\/05\/31\/making-harvest-awesome-my-gsoc-2010-project-week-1ish\/#primaryimage\"},\"thumbnailUrl\":\"https:\/\/i0.wp.com\/dylanmc.ca\/wp-content\/uploads\/harvest-early-mockup-1.jpg?fit=984%2C670&ssl=1\",\"datePublished\":\"2010-05-31T20:29:00+00:00\",\"dateModified\":\"2024-08-14T16:20:05+00:00\",\"author\":{\"@id\":\"https:\/\/dylanmc.ca\/\/-\/#\/schema\/person\/c244419a779c5414c768bc53ac5fb2d5\"},\"inLanguage\":\"en-US\",\"potentialAction\":[{\"@type\":\"ReadAction\",\"target\":[\"https:\/\/dylanmc.ca\/\/-\/blog\/2010\/05\/31\/making-harvest-awesome-my-gsoc-2010-project-week-1ish\/\"]}]},{\"@type\":\"ImageObject\",\"inLanguage\":\"en-US\",\"@id\":\"https:\/\/dylanmc.ca\/\/-\/blog\/2010\/05\/31\/making-harvest-awesome-my-gsoc-2010-project-week-1ish\/#primaryimage\",\"url\":\"https:\/\/i0.wp.com\/dylanmc.ca\/wp-content\/uploads\/harvest-early-mockup-1.jpg?fit=984%2C670&ssl=1\",\"contentUrl\":\"https:\/\/i0.wp.com\/dylanmc.ca\/wp-content\/uploads\/harvest-early-mockup-1.jpg?fit=984%2C670&ssl=1\",\"width\":\"984\",\"height\":\"670\"},{\"@type\":\"WebSite\",\"@id\":\"https:\/\/dylanmc.ca\/\/-\/#website\",\"url\":\"https:\/\/dylanmc.ca\/\/-\/\",\"name\":\"Dylan McCall\",\"description\":\"\",\"potentialAction\":[{\"@type\":\"SearchAction\",\"target\":{\"@type\":\"EntryPoint\",\"urlTemplate\":\"https:\/\/dylanmc.ca\/\/-\/?s={search_term_string}\"},\"query-input\":{\"@type\":\"PropertyValueSpecification\",\"valueRequired\":true,\"valueName\":\"search_term_string\"}}],\"inLanguage\":\"en-US\"},{\"@type\":\"Person\",\"@id\":\"https:\/\/dylanmc.ca\/\/-\/#\/schema\/person\/c244419a779c5414c768bc53ac5fb2d5\",\"name\":\"Dylan McCall\",\"image\":{\"@type\":\"ImageObject\",\"inLanguage\":\"en-US\",\"@id\":\"https:\/\/dylanmc.ca\/\/-\/#\/schema\/person\/image\/\",\"url\":\"https:\/\/secure.gravatar.com\/avatar\/c94ab3a7e6a884542205e0408711cd54bb1fd5f4e90e7a5f621a54656a18a037?s=96&d=mm&r=g\",\"contentUrl\":\"https:\/\/secure.gravatar.com\/avatar\/c94ab3a7e6a884542205e0408711cd54bb1fd5f4e90e7a5f621a54656a18a037?s=96&d=mm&r=g\",\"caption\":\"Dylan McCall\"},\"description\":\"Software developer, tea drinker, GNOME contributor. Occasionally a raving fanatic.\",\"sameAs\":[\"https:\/\/dylanmc.ca\/\/-\"],\"url\":\"https:\/\/dylanmc.ca\/\/-\/blog\/author\/dylan\/\"}]}<\/script>\n<!-- \/ Yoast SEO plugin. -->","yoast_head_json":{"title":"Making Harvest awesome! (My GSoC 2010 project) \u2014 Week 1(ish) - Dylan McCall","robots":{"index":"index","follow":"follow","max-snippet":"max-snippet:-1","max-image-preview":"max-image-preview:large","max-video-preview":"max-video-preview:-1"},"canonical":"https:\/\/dylanmc.ca\/\/-\/blog\/2010\/05\/31\/making-harvest-awesome-my-gsoc-2010-project-week-1ish\/","og_locale":"en_US","og_type":"article","og_title":"Making Harvest awesome! (My GSoC 2010 project) \u2014 Week 1(ish) - Dylan McCall","og_description":"It is time that I babble about my project for Google Summer of Code 2010!  Over the summer, I will be working on Harvest with Daniel Holbach as my awesome mentor. Harvest is a neat web service, built with Django, that brings together opportunities (things that need doing), from many different places on the web. Those opportunities are all neatly linked to source packages, which are, themselves, nicely described by package sets like ubuntu-desktop, unr, xubuntu and kernel&hellip;","og_url":"https:\/\/dylanmc.ca\/\/-\/blog\/2010\/05\/31\/making-harvest-awesome-my-gsoc-2010-project-week-1ish\/","og_site_name":"Dylan McCall","article_published_time":"2010-05-31T20:29:00+00:00","article_modified_time":"2024-08-14T16:20:05+00:00","og_image":[{"width":984,"height":670,"url":"https:\/\/dylanmc.ca\/wp-content\/uploads\/harvest-early-mockup-1.jpg","type":"image\/jpeg"}],"author":"Dylan McCall","twitter_misc":{"Written by":"Dylan McCall","Est. reading time":"3 minutes"},"schema":{"@context":"https:\/\/schema.org","@graph":[{"@type":"Article","@id":"https:\/\/dylanmc.ca\/\/-\/blog\/2010\/05\/31\/making-harvest-awesome-my-gsoc-2010-project-week-1ish\/#article","isPartOf":{"@id":"https:\/\/dylanmc.ca\/\/-\/blog\/2010\/05\/31\/making-harvest-awesome-my-gsoc-2010-project-week-1ish\/"},"author":{"name":"Dylan McCall","@id":"https:\/\/dylanmc.ca\/\/-\/#\/schema\/person\/c244419a779c5414c768bc53ac5fb2d5"},"headline":"Making Harvest awesome! (My GSoC 2010 project) \u2014 Week 1(ish)","datePublished":"2010-05-31T20:29:00+00:00","dateModified":"2024-08-14T16:20:05+00:00","mainEntityOfPage":{"@id":"https:\/\/dylanmc.ca\/\/-\/blog\/2010\/05\/31\/making-harvest-awesome-my-gsoc-2010-project-week-1ish\/"},"wordCount":578,"image":{"@id":"https:\/\/dylanmc.ca\/\/-\/blog\/2010\/05\/31\/making-harvest-awesome-my-gsoc-2010-project-week-1ish\/#primaryimage"},"thumbnailUrl":"https:\/\/i0.wp.com\/dylanmc.ca\/wp-content\/uploads\/harvest-early-mockup-1.jpg?fit=984%2C670&ssl=1","keywords":["django","Harvest","web"],"articleSection":["GSoC 2010"],"inLanguage":"en-US"},{"@type":"WebPage","@id":"https:\/\/dylanmc.ca\/\/-\/blog\/2010\/05\/31\/making-harvest-awesome-my-gsoc-2010-project-week-1ish\/","url":"https:\/\/dylanmc.ca\/\/-\/blog\/2010\/05\/31\/making-harvest-awesome-my-gsoc-2010-project-week-1ish\/","name":"Making Harvest awesome! (My GSoC 2010 project) \u2014 Week 1(ish) - Dylan McCall","isPartOf":{"@id":"https:\/\/dylanmc.ca\/\/-\/#website"},"primaryImageOfPage":{"@id":"https:\/\/dylanmc.ca\/\/-\/blog\/2010\/05\/31\/making-harvest-awesome-my-gsoc-2010-project-week-1ish\/#primaryimage"},"image":{"@id":"https:\/\/dylanmc.ca\/\/-\/blog\/2010\/05\/31\/making-harvest-awesome-my-gsoc-2010-project-week-1ish\/#primaryimage"},"thumbnailUrl":"https:\/\/i0.wp.com\/dylanmc.ca\/wp-content\/uploads\/harvest-early-mockup-1.jpg?fit=984%2C670&ssl=1","datePublished":"2010-05-31T20:29:00+00:00","dateModified":"2024-08-14T16:20:05+00:00","author":{"@id":"https:\/\/dylanmc.ca\/\/-\/#\/schema\/person\/c244419a779c5414c768bc53ac5fb2d5"},"inLanguage":"en-US","potentialAction":[{"@type":"ReadAction","target":["https:\/\/dylanmc.ca\/\/-\/blog\/2010\/05\/31\/making-harvest-awesome-my-gsoc-2010-project-week-1ish\/"]}]},{"@type":"ImageObject","inLanguage":"en-US","@id":"https:\/\/dylanmc.ca\/\/-\/blog\/2010\/05\/31\/making-harvest-awesome-my-gsoc-2010-project-week-1ish\/#primaryimage","url":"https:\/\/i0.wp.com\/dylanmc.ca\/wp-content\/uploads\/harvest-early-mockup-1.jpg?fit=984%2C670&ssl=1","contentUrl":"https:\/\/i0.wp.com\/dylanmc.ca\/wp-content\/uploads\/harvest-early-mockup-1.jpg?fit=984%2C670&ssl=1","width":"984","height":"670"},{"@type":"WebSite","@id":"https:\/\/dylanmc.ca\/\/-\/#website","url":"https:\/\/dylanmc.ca\/\/-\/","name":"Dylan McCall","description":"","potentialAction":[{"@type":"SearchAction","target":{"@type":"EntryPoint","urlTemplate":"https:\/\/dylanmc.ca\/\/-\/?s={search_term_string}"},"query-input":{"@type":"PropertyValueSpecification","valueRequired":true,"valueName":"search_term_string"}}],"inLanguage":"en-US"},{"@type":"Person","@id":"https:\/\/dylanmc.ca\/\/-\/#\/schema\/person\/c244419a779c5414c768bc53ac5fb2d5","name":"Dylan McCall","image":{"@type":"ImageObject","inLanguage":"en-US","@id":"https:\/\/dylanmc.ca\/\/-\/#\/schema\/person\/image\/","url":"https:\/\/secure.gravatar.com\/avatar\/c94ab3a7e6a884542205e0408711cd54bb1fd5f4e90e7a5f621a54656a18a037?s=96&d=mm&r=g","contentUrl":"https:\/\/secure.gravatar.com\/avatar\/c94ab3a7e6a884542205e0408711cd54bb1fd5f4e90e7a5f621a54656a18a037?s=96&d=mm&r=g","caption":"Dylan McCall"},"description":"Software developer, tea drinker, GNOME contributor. Occasionally a raving fanatic.","sameAs":["https:\/\/dylanmc.ca\/\/-"],"url":"https:\/\/dylanmc.ca\/\/-\/blog\/author\/dylan\/"}]}},"jetpack_publicize_connections":[],"jetpack_featured_media_url":"https:\/\/i0.wp.com\/dylanmc.ca\/wp-content\/uploads\/harvest-early-mockup-1.jpg?fit=984%2C670&ssl=1","jetpack_shortlink":"https:\/\/wp.me\/pcXOQX-T","jetpack_sharing_enabled":true,"_links":{"self":[{"href":"https:\/\/dylanmc.ca\/\/-\/wp-json\/wp\/v2\/posts\/55","targetHints":{"allow":["GET"]}}],"collection":[{"href":"https:\/\/dylanmc.ca\/\/-\/wp-json\/wp\/v2\/posts"}],"about":[{"href":"https:\/\/dylanmc.ca\/\/-\/wp-json\/wp\/v2\/types\/post"}],"author":[{"embeddable":true,"href":"https:\/\/dylanmc.ca\/\/-\/wp-json\/wp\/v2\/users\/2"}],"replies":[{"embeddable":true,"href":"https:\/\/dylanmc.ca\/\/-\/wp-json\/wp\/v2\/comments?post=55"}],"version-history":[{"count":12,"href":"https:\/\/dylanmc.ca\/\/-\/wp-json\/wp\/v2\/posts\/55\/revisions"}],"predecessor-version":[{"id":11030,"href":"https:\/\/dylanmc.ca\/\/-\/wp-json\/wp\/v2\/posts\/55\/revisions\/11030"}],"wp:featuredmedia":[{"embeddable":true,"href":"https:\/\/dylanmc.ca\/\/-\/wp-json\/wp\/v2\/media\/500"}],"wp:attachment":[{"href":"https:\/\/dylanmc.ca\/\/-\/wp-json\/wp\/v2\/media?parent=55"}],"wp:term":[{"taxonomy":"category","embeddable":true,"href":"https:\/\/dylanmc.ca\/\/-\/wp-json\/wp\/v2\/categories?post=55"},{"taxonomy":"post_tag","embeddable":true,"href":"https:\/\/dylanmc.ca\/\/-\/wp-json\/wp\/v2\/tags?post=55"}],"curies":[{"name":"wp","href":"https:\/\/api.w.org\/{rel}","templated":true}]}}