{"id":9670,"date":"2023-10-27T11:23:19","date_gmt":"2023-10-27T18:23:19","guid":{"rendered":"https:\/\/mattfife.com\/?p=9670"},"modified":"2023-10-13T11:41:29","modified_gmt":"2023-10-13T18:41:29","slug":"building-your-own-calendar-display","status":"publish","type":"post","link":"https:\/\/mattfife.com\/?p=9670","title":{"rendered":"Building your own calendar display"},"content":{"rendered":"\n<p><a href=\"https:\/\/www.stavros.io\/posts\/making-the-timeframe\/\" data-type=\"link\" data-id=\"https:\/\/www.stavros.io\/posts\/making-the-timeframe\/\">Stavros decided to make a little e-ink display device that showed his outlook calendar<\/a> and could sit next to his main monitor. He seemed to have a decent, basic understanding of programming, but had some clever ways of getting around things he didn&#8217;t know &#8211; namely &#8211; using CoPilot and sample code to hack together what he needed. I think it&#8217;s a great read to show how you can work through problems in a very pragmatic way &#8211; without re-inventing the wheel.<\/p>\n\n\n\n<figure class=\"wp-block-image size-large\"><img data-recalc-dims=\"1\" loading=\"lazy\" decoding=\"async\" width=\"640\" height=\"853\" data-attachment-id=\"9671\" data-permalink=\"https:\/\/mattfife.com\/?attachment_id=9671\" data-orig-file=\"https:\/\/i0.wp.com\/mattfife.com\/wp-content\/themes\/mattTheme\/headerimgs\/2023\/10\/3.jpg?fit=900%2C1200&amp;ssl=1\" data-orig-size=\"900,1200\" data-comments-opened=\"1\" data-image-meta=\"{&quot;aperture&quot;:&quot;4&quot;,&quot;credit&quot;:&quot;Stavros Korokithakis&quot;,&quot;camera&quot;:&quot;Canon EOS 5D Mark III&quot;,&quot;caption&quot;:&quot;&quot;,&quot;created_timestamp&quot;:&quot;1677984453&quot;,&quot;copyright&quot;:&quot;Stavros Korokithakis&quot;,&quot;focal_length&quot;:&quot;88&quot;,&quot;iso&quot;:&quot;400&quot;,&quot;shutter_speed&quot;:&quot;0.008&quot;,&quot;title&quot;:&quot;&quot;,&quot;orientation&quot;:&quot;1&quot;}\" data-image-title=\"3\" data-image-description=\"\" data-image-caption=\"\" data-large-file=\"https:\/\/i0.wp.com\/mattfife.com\/wp-content\/themes\/mattTheme\/headerimgs\/2023\/10\/3.jpg?fit=640%2C853&amp;ssl=1\" src=\"https:\/\/i0.wp.com\/mattfife.com\/wp-content\/themes\/mattTheme\/headerimgs\/2023\/10\/3.jpg?resize=640%2C853&#038;ssl=1\" alt=\"\" class=\"wp-image-9671\" srcset=\"https:\/\/i0.wp.com\/mattfife.com\/wp-content\/themes\/mattTheme\/headerimgs\/2023\/10\/3.jpg?resize=768%2C1024&amp;ssl=1 768w, https:\/\/i0.wp.com\/mattfife.com\/wp-content\/themes\/mattTheme\/headerimgs\/2023\/10\/3.jpg?resize=225%2C300&amp;ssl=1 225w, https:\/\/i0.wp.com\/mattfife.com\/wp-content\/themes\/mattTheme\/headerimgs\/2023\/10\/3.jpg?resize=203%2C270&amp;ssl=1 203w, https:\/\/i0.wp.com\/mattfife.com\/wp-content\/themes\/mattTheme\/headerimgs\/2023\/10\/3.jpg?w=900&amp;ssl=1 900w\" sizes=\"auto, (max-width: 640px) 100vw, 640px\" \/><\/figure>\n\n\n\n<p>In the end, he struggled through finding a good quality e-ink display, an SDK that let him display on it consistently (running into many bad SDK&#8217;s and ones that left lots of artifacts), getting calandar graphics on the device, and 3d printing the case it was mounted in.<\/p>\n\n\n\n<p>Most interesting to me was that instead of trying to interface with his calendar app and go through the difficult work of re-creating a properly formatted\/sized and good looking calendar graphics &#8211; he came up with a much more simple and easy method. He admits he wasn&#8217;t very good at C++ programming and had some false starts trying to find a software package that let him render consistently to the display. There were many that didn&#8217;t work right, left lots of lines on the screen, etc. <\/p>\n\n\n\n<p>He then took his C++ compiler and a block of framebuffer rendering sample code. Then, with the help of CoPilot, he stumbled through a method that simply displaying the calendar in a web browser, copy the screen, download the image file over HTTP, and copy the bytes directly onto the framebuffer.<\/p>\n\n\n\n<p>He set up a sever-side script to generate the image along with a hash of the image so the device knew when an actual update happened to the image since he didn&#8217;t want the e-ink display constantly flashing if it didn&#8217;t have a real update for the display.<\/p>\n\n\n\n<p>A clever bit of hackery &#8211; and demonstrates how simply things can be made if you are creative.<\/p>\n\n\n\n<p>Article:<\/p>\n\n\n\n<ul class=\"wp-block-list\">\n<li><a href=\"https:\/\/www.stavros.io\/posts\/making-the-timeframe\/\">https:\/\/www.stavros.io\/posts\/making-the-timeframe\/<\/a><\/li>\n<\/ul>\n","protected":false},"excerpt":{"rendered":"<p>Stavros decided to make a little e-ink display device that showed his outlook calendar and could sit next to his main monitor. He seemed to have a decent, basic understanding of programming, but had some clever ways of getting around things he didn&#8217;t know &#8211; namely &#8211; using CoPilot and sample code to hack together what he needed. I think it&#8217;s a great read to show how you can work through problems in a very pragmatic way &#8211; without re-inventing&#8230;<\/p>\n<p class=\"read-more\"><a class=\"btn btn-default\" href=\"https:\/\/mattfife.com\/?p=9670\"> Read More<span class=\"screen-reader-text\">  Read More<\/span><\/a><\/p>\n","protected":false},"author":2,"featured_media":0,"comment_status":"open","ping_status":"open","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,"footnotes":"","jetpack_publicize_message":"","jetpack_publicize_feature_enabled":true,"jetpack_social_post_already_shared":true,"jetpack_social_options":{"image_generator_settings":{"template":"highway","default_image_id":0,"font":"","enabled":false},"version":2}},"categories":[9,5],"tags":[],"class_list":["post-9670","post","type-post","status-publish","format-standard","hentry","category-cool","category-technical"],"jetpack_publicize_connections":[],"jetpack_featured_media_url":"","jetpack_sharing_enabled":true,"jetpack_shortlink":"https:\/\/wp.me\/p4WECr-2vY","jetpack-related-posts":[],"_links":{"self":[{"href":"https:\/\/mattfife.com\/index.php?rest_route=\/wp\/v2\/posts\/9670","targetHints":{"allow":["GET"]}}],"collection":[{"href":"https:\/\/mattfife.com\/index.php?rest_route=\/wp\/v2\/posts"}],"about":[{"href":"https:\/\/mattfife.com\/index.php?rest_route=\/wp\/v2\/types\/post"}],"author":[{"embeddable":true,"href":"https:\/\/mattfife.com\/index.php?rest_route=\/wp\/v2\/users\/2"}],"replies":[{"embeddable":true,"href":"https:\/\/mattfife.com\/index.php?rest_route=%2Fwp%2Fv2%2Fcomments&post=9670"}],"version-history":[{"count":1,"href":"https:\/\/mattfife.com\/index.php?rest_route=\/wp\/v2\/posts\/9670\/revisions"}],"predecessor-version":[{"id":9672,"href":"https:\/\/mattfife.com\/index.php?rest_route=\/wp\/v2\/posts\/9670\/revisions\/9672"}],"wp:attachment":[{"href":"https:\/\/mattfife.com\/index.php?rest_route=%2Fwp%2Fv2%2Fmedia&parent=9670"}],"wp:term":[{"taxonomy":"category","embeddable":true,"href":"https:\/\/mattfife.com\/index.php?rest_route=%2Fwp%2Fv2%2Fcategories&post=9670"},{"taxonomy":"post_tag","embeddable":true,"href":"https:\/\/mattfife.com\/index.php?rest_route=%2Fwp%2Fv2%2Ftags&post=9670"}],"curies":[{"name":"wp","href":"https:\/\/api.w.org\/{rel}","templated":true}]}}