{"id":1995,"date":"2015-08-01T23:26:07","date_gmt":"2015-08-01T15:26:07","guid":{"rendered":"https:\/\/gergely.imreh.net\/blog\/?p=1995"},"modified":"2015-08-18T22:23:28","modified_gmt":"2015-08-18T14:23:28","slug":"a-window-to-irc-with-edison-and-resin","status":"publish","type":"post","link":"https:\/\/gergely.imreh.net\/blog\/2015\/08\/a-window-to-irc-with-edison-and-resin\/","title":{"rendered":"A window to IRC with Edison and Resin"},"content":{"rendered":"<p>After trying <a href=\"https:\/\/resin.io\">Resin.io<\/a> briefly with <a href=\"https:\/\/gergely.imreh.net\/blog\/2015\/05\/resin_io_somastream\/\">a SomaFM Streaming Application<\/a>, I was eager to experiment more with their cloud deployment platform. Maybe some new hardware, maybe some more complex project&#8230; In the end, it became a little bit of both: here&#8217;s MrEdison, and portable IRC chat display based on Intel Edison.<\/p>\n<figure id=\"attachment_1997\" aria-describedby=\"caption-attachment-1997\" style=\"width: 550px\" class=\"wp-caption aligncenter\"><a href=\"https:\/\/gergely.imreh.net\/blog\/wp-content\/uploads\/2015\/08\/2015-08-01-21.34.28.jpg\"><img loading=\"lazy\" decoding=\"async\" class=\"size-large wp-image-1997\" src=\"https:\/\/gergely.imreh.net\/blog\/wp-content\/uploads\/2015\/08\/2015-08-01-21.34.28-1024x576.jpg\" alt=\"Checking out the chatter on the #ubuntu channel\" width=\"550\" height=\"309\" srcset=\"https:\/\/gergely.imreh.net\/blog\/wp-content\/uploads\/2015\/08\/2015-08-01-21.34.28-1024x576.jpg 1024w, https:\/\/gergely.imreh.net\/blog\/wp-content\/uploads\/2015\/08\/2015-08-01-21.34.28-500x281.jpg 500w, https:\/\/gergely.imreh.net\/blog\/wp-content\/uploads\/2015\/08\/2015-08-01-21.34.28-768x432.jpg 768w\" sizes=\"auto, (max-width: 550px) 100vw, 550px\" \/><\/a><figcaption id=\"caption-attachment-1997\" class=\"wp-caption-text\">Checking out the chatter on the #ubuntu channel<\/figcaption><\/figure>\n<p>The idea came from the fact that we have an IRC channel for the <a href=\"https:\/\/taipeihack.org\">Taipei Hackerspace<\/a>, <a href=\"https:\/\/taipeihack.org\/#irc\">#taipeihack on Freenode<\/a>, just it is not very well (or rather: at all) frequented by people. I wanted to break that channel out of the computer, and put a physical window to it in the &#8216;space, so people can see what&#8217;s going on, and hopefully want to get on too!<\/p>\n<p><!--more--><\/p>\n<p>Here is it in action:<\/p>\n<p><iframe loading=\"lazy\" title=\"MrEdison: IRC channel monitoring demo\" width=\"580\" height=\"326\" src=\"https:\/\/www.youtube.com\/embed\/8BpqkYePXUw?feature=oembed\" frameborder=\"0\" allow=\"accelerometer; autoplay; clipboard-write; encrypted-media; gyroscope; picture-in-picture; web-share\" referrerpolicy=\"strict-origin-when-cross-origin\" allowfullscreen><\/iframe><\/p>\n<h2>Hardware<\/h2>\n<p>For this I&#8217;ve used parts that were pretty much lying around in the Hackerspace:<\/p>\n<ul>\n<li>an <a href=\"https:\/\/www-ssl.intel.com\/content\/www\/us\/en\/do-it-yourself\/edison.html\">Intel Edison<\/a>, then added&#8230;<\/li>\n<li>an Android Breakout Board,<\/li>\n<li>a <a href=\"http:\/\/www.seeedstudio.com\/wiki\/Grove_-_Base_Shield_V1.3\">Grove Base Shield<\/a><\/li>\n<li>a <a href=\"http:\/\/www.seeedstudio.com\/wiki\/Grove_-_LCD_RGB_Backlight\">Grove RGB-LCD<\/a> (that is controlled over the I2C lines)<\/li>\n<li>a <a href=\"http:\/\/www.seeedstudio.com\/wiki\/Grove_-_Red_LED\">Grove LED<\/a> (on one of the digital pins)<\/li>\n<\/ul>\n<figure id=\"attachment_2006\" aria-describedby=\"caption-attachment-2006\" style=\"width: 500px\" class=\"wp-caption aligncenter\"><a href=\"https:\/\/gergely.imreh.net\/blog\/wp-content\/uploads\/2015\/08\/MrEdisonSchematic.png\"><img loading=\"lazy\" decoding=\"async\" class=\"wp-image-2006 size-medium\" src=\"https:\/\/gergely.imreh.net\/blog\/wp-content\/uploads\/2015\/08\/MrEdisonSchematic-500x444.png\" alt=\"MrEdison Schematic\" width=\"500\" height=\"444\" srcset=\"https:\/\/gergely.imreh.net\/blog\/wp-content\/uploads\/2015\/08\/MrEdisonSchematic-500x444.png 500w, https:\/\/gergely.imreh.net\/blog\/wp-content\/uploads\/2015\/08\/MrEdisonSchematic.png 593w\" sizes=\"auto, (max-width: 500px) 100vw, 500px\" \/><\/a><figcaption id=\"caption-attachment-2006\" class=\"wp-caption-text\">MrEdison Schematic<\/figcaption><\/figure>\n<p>I&#8217;ve started a new project in the Resin.io interface based on Edison. Downloaded their image (and <a href=\"http:\/\/docs.resin.io\/#\/pages\/installing\/gettingStarted-Edison.md\">checked out getting started guide<\/a>), flashed it onto the board through the Android breakout board, and it was ready to get some code on (well, kinda).<\/p>\n<h2>Software<\/h2>\n<p>In the docs I&#8217;ve found that there&#8217;s <a href=\"http:\/\/docs.resin.io\/#\/pages\/configuration\/resin-base-images.md#i386-intel-edison\">a specific docker starter container<\/a> made by the Resin team for Python code, and that looked like a good point to start off from.<\/p>\n<p>First I was thinking using the default <a href=\"https:\/\/github.com\/intel-iot-devkit\/mraa\">mraa library<\/a> that Intel provides for the low level I\/O, but fortunately also found <a href=\"https:\/\/github.com\/intel-iot-devkit\/upm\">UPM<\/a>, a higher level library that already supports a lot of sensors and I\/O &#8211; including the RGB-LCD! That saves a lot of time indeed, and has both Python and Node.js API for quicker code (besides the base C++).<\/p>\n<p>Mraa is already installed on the base image, but UPM had to be added manually to the Dockerfile.<\/p>\n<p>The base function of the code is crystallized out as:<\/p>\n<ul>\n<li>connect to a specified IRC server\u00a0and join a specific channel<\/li>\n<li>listen to the messages there<\/li>\n<li>on the LCD display the messages as:\n<ul>\n<li>first line shows the user that posted<\/li>\n<li>second line is the message posted, if longer than the width of the LCD then scroll it<\/li>\n<li>to quickly distinguish between people, assign different colours to the different users<\/li>\n<\/ul>\n<\/li>\n<li>blink the LED on new messages<\/li>\n<li>keep doing this&#8230;<\/li>\n<\/ul>\n<p>Straightforward enough?<\/p>\n<figure id=\"attachment_1996\" aria-describedby=\"caption-attachment-1996\" style=\"width: 360px\" class=\"wp-caption aligncenter\"><a href=\"https:\/\/gergely.imreh.net\/blog\/wp-content\/uploads\/2015\/08\/MrEdisonAnimation.gif\"><img loading=\"lazy\" decoding=\"async\" class=\"size-full wp-image-1996\" src=\"https:\/\/gergely.imreh.net\/blog\/wp-content\/uploads\/2015\/08\/MrEdisonAnimation.gif\" alt=\"MrEdison at work\" width=\"360\" height=\"202\" \/><\/a><figcaption id=\"caption-attachment-1996\" class=\"wp-caption-text\">MrEdison at work<\/figcaption><\/figure>\n<p>I&#8217;ve used the <a href=\"https:\/\/pypi.python.org\/pypi\/irc\">irc<\/a> library in Python to create a simple IRC bot that listens to the channel and does the required I\/O. Needed some code digging (because it&#8217;s not too &#8212; khm &#8212; well documented), for example to enable SSL connection for the bot part of the code (for using <a href=\"https:\/\/freenode.net\/irc_servers.shtml\">port 7070 on Freenode<\/a>). In the end indeed &#8220;use the source, Luke!&#8221;, as they write and it worked out.<\/p>\n<p>The I\/O part needed to be parallelized too, there used some part of the multiprocessing library that I haven&#8217;t used before (<a href=\"https:\/\/docs.python.org\/2\/library\/multiprocessing.html#the-process-class\">Process<\/a>), and some data sharing: the display can run and scroll the text, while the bot can notify the display&#8217;s process when it needs to show something new. Same for notifying the LED, when it needs to blink.<\/p>\n<p>For doing different colours for the different usernames I use hashing: run the username through <a href=\"https:\/\/en.wikipedia.org\/wiki\/SHA-2\">SHA256<\/a>, and use the 1st, 2nd, 3rd bytes of the resulting has as Red\/Green\/Blue for the backlight colour.<\/p>\n<p>Here&#8217;s the code in Python (2.x):<\/p>\n<pre class=\"lang:python decode:true  \">import hashlib\r\nusername = \"MrEdison\"\r\nh = hashlib.sha256()\r\nh.update(username)\r\nColorR = int(h.hexdigest()[0:2], 16)\r\nColorG = int(h.hexdigest()[2:4], 16)\r\nColorB = int(h.hexdigest()[4:6], 16)\r\n# (ColorR, ColorG, ColorB) = (115, 126, 15) or #737EF<\/pre>\n<p>the result:<\/p>\n<figure id=\"attachment_2015\" aria-describedby=\"caption-attachment-2015\" style=\"width: 550px\" class=\"wp-caption aligncenter\"><img loading=\"lazy\" decoding=\"async\" class=\"size-full wp-image-2015\" src=\"https:\/\/gergely.imreh.net\/blog\/wp-content\/uploads\/2015\/08\/colours550.gif\" alt=\"Example colours\" width=\"550\" height=\"400\" \/><figcaption id=\"caption-attachment-2015\" class=\"wp-caption-text\">Example colours<\/figcaption><\/figure>\n<p>Works pretty well!<\/p>\n<p>The bot&#8217;s settings\u00a0(server name, port, channel, nickname) are all set through the Resin.io control panel as environment variables.<\/p>\n<p>Environmental variables used at the moment:<\/p>\n<ul>\n<li>SERVER: the IRC server used, defaults to <strong>irc.freenet.net<\/strong><\/li>\n<li>PORT: port used, has to be SSL-enabled, defaults to <strong>6697<\/strong><\/li>\n<li>CHANNEL: which channel to connect to, together with all the hashes, defaults to <strong>#mredison<\/strong><\/li>\n<li>NICK: nick to choose, no authentication yet, defaults to <strong>mredison<\/strong><\/li>\n<li>TIMEZONE: what timezone to display updates in standard <a href=\"https:\/\/en.wikipedia.org\/wiki\/List_of_tz_database_time_zones\">tz database notation<\/a>, defaults to <strong>UTC<\/strong><\/li>\n<\/ul>\n<figure id=\"attachment_1998\" aria-describedby=\"caption-attachment-1998\" style=\"width: 550px\" class=\"wp-caption aligncenter\"><a href=\"https:\/\/gergely.imreh.net\/blog\/wp-content\/uploads\/2015\/08\/ResinMrEdison.png\"><img loading=\"lazy\" decoding=\"async\" class=\"size-large wp-image-1998\" src=\"https:\/\/gergely.imreh.net\/blog\/wp-content\/uploads\/2015\/08\/ResinMrEdison-1024x640.png\" alt=\"Settings through environment variables in the Resin.io interface\" width=\"550\" height=\"344\" srcset=\"https:\/\/gergely.imreh.net\/blog\/wp-content\/uploads\/2015\/08\/ResinMrEdison-1024x640.png 1024w, https:\/\/gergely.imreh.net\/blog\/wp-content\/uploads\/2015\/08\/ResinMrEdison-500x313.png 500w, https:\/\/gergely.imreh.net\/blog\/wp-content\/uploads\/2015\/08\/ResinMrEdison-768x480.png 768w, https:\/\/gergely.imreh.net\/blog\/wp-content\/uploads\/2015\/08\/ResinMrEdison.png 1280w\" sizes=\"auto, (max-width: 550px) 100vw, 550px\" \/><\/a><figcaption id=\"caption-attachment-1998\" class=\"wp-caption-text\">Settings through environment variables in the Resin.io interface<\/figcaption><\/figure>\n<p>This makes it quite flexible, can let the bot\/setup monitor any channel on any network, though at the moment needs SSL-enabled server, but that&#8217;s easy enough to change if someone wants to run the code and don&#8217;t care about security&#8230; :P<\/p>\n<p>For testing I was using mostly the #ubuntu and ##linux channels, as they seems to be pretty chatty!<\/p>\n<h2>Experience<\/h2>\n<p>It was a bit bumpy process, like most experimental works. First I&#8217;ve run into some <a href=\"http:\/\/talk.resin.io\/t\/i2c-crashes-cant-use-e-g-lcd-rgb\/100\">Edison\/Docker related strangeness<\/a> that messed with the I\/O. Solved by <a href=\"https:\/\/github.com\/shaunmulligan\/\">Shaun<\/a> from Resin, the trick being needing to mount the debugfs before running my code, so the kernel can configure things correctly:<\/p>\n<pre>mount -t debugfs nodev \/sys\/kernel\/debug<\/pre>\n<p><strong>Edit (8\/1):<\/strong> This in the end wasn&#8217;t enough, had to go back to the <a href=\"http:\/\/www.emutexlabs.com\/project\/215-intel-edison-gpio-pin-multiplexing-guide\">Edison GPIO Pin Muxing Guide<\/a>, and turned their <em>Example 4: Configure IO18\/IO19 for I2C connectivity<\/em>\u00a0guide into a pretty hard core, but probably well commented <a href=\"https:\/\/github.com\/taipeihackerspace\/mredison\/blob\/33f6a61e474fae87c7c2770282ecca7d5fe9f0c4\/gpio_setup.sh\">bash script<\/a>\u00a0to set up I2C, which is called on start. Seems to work out!<\/p>\n<p>There was also some issue with the bot timing out in a strange way and losing connection. I was about to rewrite the whole code in Node.js, but tried a quick client test first. Turns out that I was testing on port 6697 (which is I read the default SSL port), and that has some connection issues. After I&#8217;ve switched to 7070, all of that disappeared, and the connection seems pretty solid (no timeout so far).<\/p>\n<p>There are some bugs that remain, though:<\/p>\n<ul>\n<li>Unicode handling is non-existent, so those posts can pretty much mess up the display<\/li>\n<li>There can be race conditions using the display, not the best threading code probably&#8230;<\/li>\n<li>At bootup, the LCD display is borked, but after adjusting the environment variables (without reboot), things sort themselves out! Maybe need to tweak the startup script and add some delay between the steps?<\/li>\n<\/ul>\n<p>Otherwise it&#8217;s working pretty well, the colour changes are fun, the text is readable, so I guess mission is accomplished!<\/p>\n<p>The <a href=\"https:\/\/github.com\/taipeihackerspace\/mredison\">source code is on Github<\/a>, and to set up your own version of this, just create a new Edison project, flash the system, clone the source code and push it to your application, finally define\u00a0the environment variables SERVER, PORT, CHANNEL, NICK as they are suitable for you, and enjoy!<\/p>\n<h2>Future<\/h2>\n<p>It would be probably good to create an enclosure for this setup, to hold the parts together more securely. Then drop it in the Hackerspace and set it up to listen to our IRC channel &#8211; and get chatting.<\/p>\n<p>It&#8217;s probably unlikely that I&#8217;ll change much on it in the future, most I can think of is adding some more bells &amp; whistles (or rather, literally a buzzer:), but that might be too much. The code works well enough, but pull requests are accepted!<\/p>\n<p>I&#8217;m mostly just glad that the idea worked out, and the project is done. Now I can actually move onto another one (there are way too many projects on the waiting list, driving me nuts)&#8230;.<\/p>\n<p>What&#8217;s your take on IRC? Do you use it? Would this project be useful for you somehow?<\/p>\n<p><em>This project is also <a href=\"https:\/\/www.hackster.io\/imrehg\/standalone-irc-channel-monitoring\">written up on hackster.io<\/a>.<\/em><\/p>\n","protected":false},"excerpt":{"rendered":"<p>Displaying the chatter on IRC for those who are not online themselves. A cloud IoT project.<\/p>\n","protected":false},"author":1,"featured_media":0,"comment_status":"open","ping_status":"open","sticky":false,"template":"","format":"standard","meta":{"footnotes":""},"categories":[111,8],"tags":[170,171,164],"class_list":["post-1995","post","type-post","status-publish","format-standard","hentry","category-maker","category-prog","tag-intel-edison","tag-irc","tag-resin-io"],"yoast_head":"<!-- This site is optimized with the Yoast SEO plugin v27.3 - https:\/\/yoast.com\/product\/yoast-seo-wordpress\/ -->\n<title>A window to IRC with Edison and Resin - ClickedyClick<\/title>\n<meta name=\"description\" content=\"Displaying the chatter on IRC for those who are not online themselves. A cloud IoT project.\" \/>\n<meta name=\"robots\" content=\"index, follow, max-snippet:-1, max-image-preview:large, max-video-preview:-1\" \/>\n<link rel=\"canonical\" href=\"https:\/\/gergely.imreh.net\/blog\/2015\/08\/a-window-to-irc-with-edison-and-resin\/\" \/>\n<meta property=\"og:locale\" content=\"en_GB\" \/>\n<meta property=\"og:type\" content=\"article\" \/>\n<meta property=\"og:title\" content=\"A window to IRC with Edison and Resin - ClickedyClick\" \/>\n<meta property=\"og:description\" content=\"Displaying the chatter on IRC for those who are not online themselves. A cloud IoT project.\" \/>\n<meta property=\"og:url\" content=\"https:\/\/gergely.imreh.net\/blog\/2015\/08\/a-window-to-irc-with-edison-and-resin\/\" \/>\n<meta property=\"og:site_name\" content=\"ClickedyClick\" \/>\n<meta property=\"article:publisher\" content=\"https:\/\/www.facebook.com\/gergely.imreh\" \/>\n<meta property=\"article:author\" content=\"https:\/\/www.facebook.com\/gergely.imreh\" \/>\n<meta property=\"article:published_time\" content=\"2015-08-01T15:26:07+00:00\" \/>\n<meta property=\"article:modified_time\" content=\"2015-08-18T14:23:28+00:00\" \/>\n<meta property=\"og:image\" content=\"https:\/\/gergely.imreh.net\/blog\/wp-content\/uploads\/2015\/08\/2015-08-01-21.34.28-1024x576.jpg\" \/>\n<meta name=\"author\" content=\"Gergely Imreh\" \/>\n<meta name=\"twitter:card\" content=\"summary_large_image\" \/>\n<meta name=\"twitter:creator\" content=\"@imrehg\" \/>\n<meta name=\"twitter:site\" content=\"@imrehg\" \/>\n<meta name=\"twitter:label1\" content=\"Written by\" \/>\n\t<meta name=\"twitter:data1\" content=\"Gergely Imreh\" \/>\n\t<meta name=\"twitter:label2\" content=\"Estimated reading time\" \/>\n\t<meta name=\"twitter:data2\" content=\"6 minutes\" \/>\n<script type=\"application\/ld+json\" class=\"yoast-schema-graph\">{\"@context\":\"https:\\\/\\\/schema.org\",\"@graph\":[{\"@type\":\"Article\",\"@id\":\"https:\\\/\\\/gergely.imreh.net\\\/blog\\\/2015\\\/08\\\/a-window-to-irc-with-edison-and-resin\\\/#article\",\"isPartOf\":{\"@id\":\"https:\\\/\\\/gergely.imreh.net\\\/blog\\\/2015\\\/08\\\/a-window-to-irc-with-edison-and-resin\\\/\"},\"author\":{\"name\":\"Gergely Imreh\",\"@id\":\"https:\\\/\\\/gergely.imreh.net\\\/blog\\\/#\\\/schema\\\/person\\\/42391e2ae52c8ed76b37be509a5707b0\"},\"headline\":\"A window to IRC with Edison and Resin\",\"datePublished\":\"2015-08-01T15:26:07+00:00\",\"dateModified\":\"2015-08-18T14:23:28+00:00\",\"mainEntityOfPage\":{\"@id\":\"https:\\\/\\\/gergely.imreh.net\\\/blog\\\/2015\\\/08\\\/a-window-to-irc-with-edison-and-resin\\\/\"},\"wordCount\":1283,\"commentCount\":1,\"publisher\":{\"@id\":\"https:\\\/\\\/gergely.imreh.net\\\/blog\\\/#\\\/schema\\\/person\\\/42391e2ae52c8ed76b37be509a5707b0\"},\"image\":{\"@id\":\"https:\\\/\\\/gergely.imreh.net\\\/blog\\\/2015\\\/08\\\/a-window-to-irc-with-edison-and-resin\\\/#primaryimage\"},\"thumbnailUrl\":\"https:\\\/\\\/gergely.imreh.net\\\/blog\\\/wp-content\\\/uploads\\\/2015\\\/08\\\/2015-08-01-21.34.28-1024x576.jpg\",\"keywords\":[\"Intel Edison\",\"IRC\",\"Resin.io\"],\"articleSection\":[\"Maker\",\"Programming\"],\"inLanguage\":\"en-GB\",\"potentialAction\":[{\"@type\":\"CommentAction\",\"name\":\"Comment\",\"target\":[\"https:\\\/\\\/gergely.imreh.net\\\/blog\\\/2015\\\/08\\\/a-window-to-irc-with-edison-and-resin\\\/#respond\"]}]},{\"@type\":\"WebPage\",\"@id\":\"https:\\\/\\\/gergely.imreh.net\\\/blog\\\/2015\\\/08\\\/a-window-to-irc-with-edison-and-resin\\\/\",\"url\":\"https:\\\/\\\/gergely.imreh.net\\\/blog\\\/2015\\\/08\\\/a-window-to-irc-with-edison-and-resin\\\/\",\"name\":\"A window to IRC with Edison and Resin - ClickedyClick\",\"isPartOf\":{\"@id\":\"https:\\\/\\\/gergely.imreh.net\\\/blog\\\/#website\"},\"primaryImageOfPage\":{\"@id\":\"https:\\\/\\\/gergely.imreh.net\\\/blog\\\/2015\\\/08\\\/a-window-to-irc-with-edison-and-resin\\\/#primaryimage\"},\"image\":{\"@id\":\"https:\\\/\\\/gergely.imreh.net\\\/blog\\\/2015\\\/08\\\/a-window-to-irc-with-edison-and-resin\\\/#primaryimage\"},\"thumbnailUrl\":\"https:\\\/\\\/gergely.imreh.net\\\/blog\\\/wp-content\\\/uploads\\\/2015\\\/08\\\/2015-08-01-21.34.28-1024x576.jpg\",\"datePublished\":\"2015-08-01T15:26:07+00:00\",\"dateModified\":\"2015-08-18T14:23:28+00:00\",\"description\":\"Displaying the chatter on IRC for those who are not online themselves. A cloud IoT project.\",\"breadcrumb\":{\"@id\":\"https:\\\/\\\/gergely.imreh.net\\\/blog\\\/2015\\\/08\\\/a-window-to-irc-with-edison-and-resin\\\/#breadcrumb\"},\"inLanguage\":\"en-GB\",\"potentialAction\":[{\"@type\":\"ReadAction\",\"target\":[\"https:\\\/\\\/gergely.imreh.net\\\/blog\\\/2015\\\/08\\\/a-window-to-irc-with-edison-and-resin\\\/\"]}]},{\"@type\":\"ImageObject\",\"inLanguage\":\"en-GB\",\"@id\":\"https:\\\/\\\/gergely.imreh.net\\\/blog\\\/2015\\\/08\\\/a-window-to-irc-with-edison-and-resin\\\/#primaryimage\",\"url\":\"https:\\\/\\\/gergely.imreh.net\\\/blog\\\/wp-content\\\/uploads\\\/2015\\\/08\\\/2015-08-01-21.34.28.jpg\",\"contentUrl\":\"https:\\\/\\\/gergely.imreh.net\\\/blog\\\/wp-content\\\/uploads\\\/2015\\\/08\\\/2015-08-01-21.34.28.jpg\",\"width\":5376,\"height\":3024,\"caption\":\"Checking out the chatter on the #ubuntu channel\"},{\"@type\":\"BreadcrumbList\",\"@id\":\"https:\\\/\\\/gergely.imreh.net\\\/blog\\\/2015\\\/08\\\/a-window-to-irc-with-edison-and-resin\\\/#breadcrumb\",\"itemListElement\":[{\"@type\":\"ListItem\",\"position\":1,\"name\":\"Home\",\"item\":\"https:\\\/\\\/gergely.imreh.net\\\/blog\\\/\"},{\"@type\":\"ListItem\",\"position\":2,\"name\":\"A window to IRC with Edison and Resin\"}]},{\"@type\":\"WebSite\",\"@id\":\"https:\\\/\\\/gergely.imreh.net\\\/blog\\\/#website\",\"url\":\"https:\\\/\\\/gergely.imreh.net\\\/blog\\\/\",\"name\":\"ClickedyClick\",\"description\":\"Life in real, complex and digital.\",\"publisher\":{\"@id\":\"https:\\\/\\\/gergely.imreh.net\\\/blog\\\/#\\\/schema\\\/person\\\/42391e2ae52c8ed76b37be509a5707b0\"},\"potentialAction\":[{\"@type\":\"SearchAction\",\"target\":{\"@type\":\"EntryPoint\",\"urlTemplate\":\"https:\\\/\\\/gergely.imreh.net\\\/blog\\\/?s={search_term_string}\"},\"query-input\":{\"@type\":\"PropertyValueSpecification\",\"valueRequired\":true,\"valueName\":\"search_term_string\"}}],\"inLanguage\":\"en-GB\"},{\"@type\":[\"Person\",\"Organization\"],\"@id\":\"https:\\\/\\\/gergely.imreh.net\\\/blog\\\/#\\\/schema\\\/person\\\/42391e2ae52c8ed76b37be509a5707b0\",\"name\":\"Gergely Imreh\",\"image\":{\"@type\":\"ImageObject\",\"inLanguage\":\"en-GB\",\"@id\":\"https:\\\/\\\/secure.gravatar.com\\\/avatar\\\/1d5be311c5d616a3f4c7dfbc6b736ec817d2508b8c420ec29edb950d33fb4946?s=96&d=retro&r=g\",\"url\":\"https:\\\/\\\/secure.gravatar.com\\\/avatar\\\/1d5be311c5d616a3f4c7dfbc6b736ec817d2508b8c420ec29edb950d33fb4946?s=96&d=retro&r=g\",\"contentUrl\":\"https:\\\/\\\/secure.gravatar.com\\\/avatar\\\/1d5be311c5d616a3f4c7dfbc6b736ec817d2508b8c420ec29edb950d33fb4946?s=96&d=retro&r=g\",\"caption\":\"Gergely Imreh\"},\"logo\":{\"@id\":\"https:\\\/\\\/secure.gravatar.com\\\/avatar\\\/1d5be311c5d616a3f4c7dfbc6b736ec817d2508b8c420ec29edb950d33fb4946?s=96&d=retro&r=g\"},\"description\":\"Physicist, hacker. Enjoys avant-guarde literature probably a bit too much. Open source advocate and contributor, both for software and hardware. Follow these posts on the Fediverse by @gergely@gergely.imreh.net\",\"sameAs\":[\"https:\\\/\\\/gergely.imreh.net\\\/\",\"https:\\\/\\\/www.facebook.com\\\/gergely.imreh\",\"https:\\\/\\\/www.instagram.com\\\/imrehg\\\/\",\"https:\\\/\\\/www.linkedin.com\\\/in\\\/gergelyimreh\\\/\",\"https:\\\/\\\/www.youtube.com\\\/@GergelyImreh\"],\"url\":\"https:\\\/\\\/gergely.imreh.net\\\/blog\\\/author\\\/gergely\\\/\"}]}<\/script>\n<!-- \/ Yoast SEO plugin. -->","yoast_head_json":{"title":"A window to IRC with Edison and Resin - ClickedyClick","description":"Displaying the chatter on IRC for those who are not online themselves. A cloud IoT project.","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:\/\/gergely.imreh.net\/blog\/2015\/08\/a-window-to-irc-with-edison-and-resin\/","og_locale":"en_GB","og_type":"article","og_title":"A window to IRC with Edison and Resin - ClickedyClick","og_description":"Displaying the chatter on IRC for those who are not online themselves. A cloud IoT project.","og_url":"https:\/\/gergely.imreh.net\/blog\/2015\/08\/a-window-to-irc-with-edison-and-resin\/","og_site_name":"ClickedyClick","article_publisher":"https:\/\/www.facebook.com\/gergely.imreh","article_author":"https:\/\/www.facebook.com\/gergely.imreh","article_published_time":"2015-08-01T15:26:07+00:00","article_modified_time":"2015-08-18T14:23:28+00:00","og_image":[{"url":"https:\/\/gergely.imreh.net\/blog\/wp-content\/uploads\/2015\/08\/2015-08-01-21.34.28-1024x576.jpg","type":"","width":"","height":""}],"author":"Gergely Imreh","twitter_card":"summary_large_image","twitter_creator":"@imrehg","twitter_site":"@imrehg","twitter_misc":{"Written by":"Gergely Imreh","Estimated reading time":"6 minutes"},"schema":{"@context":"https:\/\/schema.org","@graph":[{"@type":"Article","@id":"https:\/\/gergely.imreh.net\/blog\/2015\/08\/a-window-to-irc-with-edison-and-resin\/#article","isPartOf":{"@id":"https:\/\/gergely.imreh.net\/blog\/2015\/08\/a-window-to-irc-with-edison-and-resin\/"},"author":{"name":"Gergely Imreh","@id":"https:\/\/gergely.imreh.net\/blog\/#\/schema\/person\/42391e2ae52c8ed76b37be509a5707b0"},"headline":"A window to IRC with Edison and Resin","datePublished":"2015-08-01T15:26:07+00:00","dateModified":"2015-08-18T14:23:28+00:00","mainEntityOfPage":{"@id":"https:\/\/gergely.imreh.net\/blog\/2015\/08\/a-window-to-irc-with-edison-and-resin\/"},"wordCount":1283,"commentCount":1,"publisher":{"@id":"https:\/\/gergely.imreh.net\/blog\/#\/schema\/person\/42391e2ae52c8ed76b37be509a5707b0"},"image":{"@id":"https:\/\/gergely.imreh.net\/blog\/2015\/08\/a-window-to-irc-with-edison-and-resin\/#primaryimage"},"thumbnailUrl":"https:\/\/gergely.imreh.net\/blog\/wp-content\/uploads\/2015\/08\/2015-08-01-21.34.28-1024x576.jpg","keywords":["Intel Edison","IRC","Resin.io"],"articleSection":["Maker","Programming"],"inLanguage":"en-GB","potentialAction":[{"@type":"CommentAction","name":"Comment","target":["https:\/\/gergely.imreh.net\/blog\/2015\/08\/a-window-to-irc-with-edison-and-resin\/#respond"]}]},{"@type":"WebPage","@id":"https:\/\/gergely.imreh.net\/blog\/2015\/08\/a-window-to-irc-with-edison-and-resin\/","url":"https:\/\/gergely.imreh.net\/blog\/2015\/08\/a-window-to-irc-with-edison-and-resin\/","name":"A window to IRC with Edison and Resin - ClickedyClick","isPartOf":{"@id":"https:\/\/gergely.imreh.net\/blog\/#website"},"primaryImageOfPage":{"@id":"https:\/\/gergely.imreh.net\/blog\/2015\/08\/a-window-to-irc-with-edison-and-resin\/#primaryimage"},"image":{"@id":"https:\/\/gergely.imreh.net\/blog\/2015\/08\/a-window-to-irc-with-edison-and-resin\/#primaryimage"},"thumbnailUrl":"https:\/\/gergely.imreh.net\/blog\/wp-content\/uploads\/2015\/08\/2015-08-01-21.34.28-1024x576.jpg","datePublished":"2015-08-01T15:26:07+00:00","dateModified":"2015-08-18T14:23:28+00:00","description":"Displaying the chatter on IRC for those who are not online themselves. A cloud IoT project.","breadcrumb":{"@id":"https:\/\/gergely.imreh.net\/blog\/2015\/08\/a-window-to-irc-with-edison-and-resin\/#breadcrumb"},"inLanguage":"en-GB","potentialAction":[{"@type":"ReadAction","target":["https:\/\/gergely.imreh.net\/blog\/2015\/08\/a-window-to-irc-with-edison-and-resin\/"]}]},{"@type":"ImageObject","inLanguage":"en-GB","@id":"https:\/\/gergely.imreh.net\/blog\/2015\/08\/a-window-to-irc-with-edison-and-resin\/#primaryimage","url":"https:\/\/gergely.imreh.net\/blog\/wp-content\/uploads\/2015\/08\/2015-08-01-21.34.28.jpg","contentUrl":"https:\/\/gergely.imreh.net\/blog\/wp-content\/uploads\/2015\/08\/2015-08-01-21.34.28.jpg","width":5376,"height":3024,"caption":"Checking out the chatter on the #ubuntu channel"},{"@type":"BreadcrumbList","@id":"https:\/\/gergely.imreh.net\/blog\/2015\/08\/a-window-to-irc-with-edison-and-resin\/#breadcrumb","itemListElement":[{"@type":"ListItem","position":1,"name":"Home","item":"https:\/\/gergely.imreh.net\/blog\/"},{"@type":"ListItem","position":2,"name":"A window to IRC with Edison and Resin"}]},{"@type":"WebSite","@id":"https:\/\/gergely.imreh.net\/blog\/#website","url":"https:\/\/gergely.imreh.net\/blog\/","name":"ClickedyClick","description":"Life in real, complex and digital.","publisher":{"@id":"https:\/\/gergely.imreh.net\/blog\/#\/schema\/person\/42391e2ae52c8ed76b37be509a5707b0"},"potentialAction":[{"@type":"SearchAction","target":{"@type":"EntryPoint","urlTemplate":"https:\/\/gergely.imreh.net\/blog\/?s={search_term_string}"},"query-input":{"@type":"PropertyValueSpecification","valueRequired":true,"valueName":"search_term_string"}}],"inLanguage":"en-GB"},{"@type":["Person","Organization"],"@id":"https:\/\/gergely.imreh.net\/blog\/#\/schema\/person\/42391e2ae52c8ed76b37be509a5707b0","name":"Gergely Imreh","image":{"@type":"ImageObject","inLanguage":"en-GB","@id":"https:\/\/secure.gravatar.com\/avatar\/1d5be311c5d616a3f4c7dfbc6b736ec817d2508b8c420ec29edb950d33fb4946?s=96&d=retro&r=g","url":"https:\/\/secure.gravatar.com\/avatar\/1d5be311c5d616a3f4c7dfbc6b736ec817d2508b8c420ec29edb950d33fb4946?s=96&d=retro&r=g","contentUrl":"https:\/\/secure.gravatar.com\/avatar\/1d5be311c5d616a3f4c7dfbc6b736ec817d2508b8c420ec29edb950d33fb4946?s=96&d=retro&r=g","caption":"Gergely Imreh"},"logo":{"@id":"https:\/\/secure.gravatar.com\/avatar\/1d5be311c5d616a3f4c7dfbc6b736ec817d2508b8c420ec29edb950d33fb4946?s=96&d=retro&r=g"},"description":"Physicist, hacker. Enjoys avant-guarde literature probably a bit too much. Open source advocate and contributor, both for software and hardware. Follow these posts on the Fediverse by @gergely@gergely.imreh.net","sameAs":["https:\/\/gergely.imreh.net\/","https:\/\/www.facebook.com\/gergely.imreh","https:\/\/www.instagram.com\/imrehg\/","https:\/\/www.linkedin.com\/in\/gergelyimreh\/","https:\/\/www.youtube.com\/@GergelyImreh"],"url":"https:\/\/gergely.imreh.net\/blog\/author\/gergely\/"}]}},"_links":{"self":[{"href":"https:\/\/gergely.imreh.net\/blog\/wp-json\/wp\/v2\/posts\/1995","targetHints":{"allow":["GET"]}}],"collection":[{"href":"https:\/\/gergely.imreh.net\/blog\/wp-json\/wp\/v2\/posts"}],"about":[{"href":"https:\/\/gergely.imreh.net\/blog\/wp-json\/wp\/v2\/types\/post"}],"author":[{"embeddable":true,"href":"https:\/\/gergely.imreh.net\/blog\/wp-json\/wp\/v2\/users\/1"}],"replies":[{"embeddable":true,"href":"https:\/\/gergely.imreh.net\/blog\/wp-json\/wp\/v2\/comments?post=1995"}],"version-history":[{"count":14,"href":"https:\/\/gergely.imreh.net\/blog\/wp-json\/wp\/v2\/posts\/1995\/revisions"}],"predecessor-version":[{"id":2038,"href":"https:\/\/gergely.imreh.net\/blog\/wp-json\/wp\/v2\/posts\/1995\/revisions\/2038"}],"wp:attachment":[{"href":"https:\/\/gergely.imreh.net\/blog\/wp-json\/wp\/v2\/media?parent=1995"}],"wp:term":[{"taxonomy":"category","embeddable":true,"href":"https:\/\/gergely.imreh.net\/blog\/wp-json\/wp\/v2\/categories?post=1995"},{"taxonomy":"post_tag","embeddable":true,"href":"https:\/\/gergely.imreh.net\/blog\/wp-json\/wp\/v2\/tags?post=1995"}],"curies":[{"name":"wp","href":"https:\/\/api.w.org\/{rel}","templated":true}]}}