{"id":2632,"date":"2016-07-04T08:00:32","date_gmt":"2016-07-04T07:00:32","guid":{"rendered":"http:\/\/www.diogonunes.com\/blog\/?p=2632"},"modified":"2020-05-15T14:23:23","modified_gmt":"2020-05-15T13:23:23","slug":"birthday-bot-for-slack","status":"publish","type":"post","link":"https:\/\/www.diogonunes.com\/blog\/birthday-bot-for-slack\/","title":{"rendered":"Birthday bot for Slack"},"content":{"rendered":"<p><img data-recalc-dims=\"1\" loading=\"lazy\" decoding=\"async\" src=\"https:\/\/i0.wp.com\/www.diogonunes.com\/blog\/wp-content\/uploads\/2016\/06\/work-birthday-slack-bot.png?resize=580%2C419\" alt=\"work-birthday-slack-bot\" width=\"580\" height=\"419\" class=\"aligncenter size-full wp-image-2634\" srcset=\"https:\/\/i0.wp.com\/www.diogonunes.com\/blog\/wp-content\/uploads\/2016\/06\/work-birthday-slack-bot.png?w=900&amp;ssl=1 900w, https:\/\/i0.wp.com\/www.diogonunes.com\/blog\/wp-content\/uploads\/2016\/06\/work-birthday-slack-bot.png?resize=400%2C289&amp;ssl=1 400w, https:\/\/i0.wp.com\/www.diogonunes.com\/blog\/wp-content\/uploads\/2016\/06\/work-birthday-slack-bot.png?resize=768%2C555&amp;ssl=1 768w\" sizes=\"auto, (max-width: 580px) 100vw, 580px\" \/><\/p>\n<h2>Never forget a birthday, right from your Slack channel.<\/h2>\n<p><!--more--><\/p>\n<p>The purpose of this bot is to post a greeting message on your team&#8217;s Slack channel on a colleague&#8217;s birthday.<\/p>\n<p>Every time the bot runs it will read some configuration files, check who was born at that date, and send a push notification to a Slack channel.<\/p>\n<p>You just need to create those configuration files, deploy this code to a server (e.g. Heroku), and run that command based on a daily schedule (e.g. Heroku Scheduler).<\/p>\n<p>The steps are pretty straightforward and just six! There&#8217;s a <strong><a href=\"https:\/\/github.com\/dialex\/BirthdaySlackBot\/blob\/master\/README.md\">detailed tutorial<\/a><\/strong> at the official <a href=\"https:\/\/github.com\/dialex\/BirthdaySlackBot\/\">GitHub<\/a> that walks you through the process.<\/p>\n<p><img data-recalc-dims=\"1\" loading=\"lazy\" decoding=\"async\" src=\"https:\/\/i0.wp.com\/www.diogonunes.com\/blog\/wp-content\/uploads\/2016\/07\/Screen-Shot-2016-06-26-at-10.13.22.png?resize=479%2C59\" alt=\"demo screenshot\" width=\"479\" height=\"59\" class=\"aligncenter size-full wp-image-2643\" srcset=\"https:\/\/i0.wp.com\/www.diogonunes.com\/blog\/wp-content\/uploads\/2016\/07\/Screen-Shot-2016-06-26-at-10.13.22.png?w=479&amp;ssl=1 479w, https:\/\/i0.wp.com\/www.diogonunes.com\/blog\/wp-content\/uploads\/2016\/07\/Screen-Shot-2016-06-26-at-10.13.22.png?resize=400%2C49&amp;ssl=1 400w\" sizes=\"auto, (max-width: 479px) 100vw, 479px\" \/><\/p>\n<p>I created this bot a side project while I was working at <a href=\"https:\/\/www.equalexperts.com\">Equal Experts<\/a>. I googled and there was already <a href=\"https:\/\/github.com\/jeKnowledge\/slack-birthday-bot\">one<\/a> created by <a href=\"https:\/\/github.com\/tiagonbotelho\">Tiago Botelho<\/a> while he was also an intern (at <a href=\"http:\/\/jeknowledge.pt\/\">jeKnowledge<\/a>).<\/p>\n<p>It is now released under the <strong>MIT license<\/strong>, so feel free to improve it.<\/p>\n","protected":false},"excerpt":{"rendered":"<p>Never forget a birthday, right from your Slack channel.<\/p>\n","protected":false},"author":1,"featured_media":2634,"comment_status":"closed","ping_status":"closed","sticky":false,"template":"","format":"standard","meta":{"_jetpack_memberships_contains_paid_content":false,"footnotes":""},"categories":[2],"tags":[20,60,61,33],"class_list":["post-2632","post","type-post","status-publish","format-standard","has-post-thumbnail","hentry","category-tech","tag-free-and-open","tag-ruby","tag-slack","tag-utilities"],"yoast_head":"<!-- This site is optimized with the Yoast SEO plugin v26.6 - https:\/\/yoast.com\/wordpress\/plugins\/seo\/ -->\n<title>Birthday bot for Slack - The Geeky Gecko<\/title>\n<meta name=\"description\" content=\"Automatically post a &quot;happy birthday&quot; message on your Slack channel on every colleague&#039;s birthday. Easy to configure. Deploy to Heroku for free. MIT License\" \/>\n<meta name=\"robots\" content=\"index, follow, max-snippet:-1, max-image-preview:large, max-video-preview:-1\" \/>\n<link rel=\"canonical\" href=\"https:\/\/www.diogonunes.com\/blog\/birthday-bot-for-slack\/\" \/>\n<meta property=\"og:locale\" content=\"en_US\" \/>\n<meta property=\"og:type\" content=\"article\" \/>\n<meta property=\"og:title\" content=\"Birthday bot for Slack - The Geeky Gecko\" \/>\n<meta property=\"og:description\" content=\"Automatically post a &quot;happy birthday&quot; message on your Slack channel on every colleague&#039;s birthday. Easy to configure. Deploy to Heroku for free. MIT License\" \/>\n<meta property=\"og:url\" content=\"https:\/\/www.diogonunes.com\/blog\/birthday-bot-for-slack\/\" \/>\n<meta property=\"og:site_name\" content=\"The Geeky Gecko\" \/>\n<meta property=\"article:published_time\" content=\"2016-07-04T07:00:32+00:00\" \/>\n<meta property=\"article:modified_time\" content=\"2020-05-15T13:23:23+00:00\" \/>\n<meta property=\"og:image\" content=\"https:\/\/i0.wp.com\/www.diogonunes.com\/blog\/wp-content\/uploads\/2016\/06\/work-birthday-slack-bot.png?fit=900%2C650&ssl=1\" \/>\n\t<meta property=\"og:image:width\" content=\"900\" \/>\n\t<meta property=\"og:image:height\" content=\"650\" \/>\n\t<meta property=\"og:image:type\" content=\"image\/png\" \/>\n<meta name=\"author\" content=\"Diogo Nunes\" \/>\n<meta name=\"twitter:card\" content=\"summary_large_image\" \/>\n<meta name=\"twitter:creator\" content=\"@dialexnunes\" \/>\n<meta name=\"twitter:site\" content=\"@dialexnunes\" \/>\n<meta name=\"twitter:label1\" content=\"Written by\" \/>\n\t<meta name=\"twitter:data1\" content=\"Diogo Nunes\" \/>\n\t<meta name=\"twitter:label2\" content=\"Est. reading time\" \/>\n\t<meta name=\"twitter:data2\" content=\"1 minute\" \/>\n<script type=\"application\/ld+json\" class=\"yoast-schema-graph\">{\"@context\":\"https:\/\/schema.org\",\"@graph\":[{\"@type\":\"Article\",\"@id\":\"https:\/\/www.diogonunes.com\/blog\/birthday-bot-for-slack\/#article\",\"isPartOf\":{\"@id\":\"https:\/\/www.diogonunes.com\/blog\/birthday-bot-for-slack\/\"},\"author\":{\"name\":\"Diogo Nunes\",\"@id\":\"https:\/\/www.diogonunes.com\/blog\/#\/schema\/person\/a6fa79b293f22912664654fcfbd2da0c\"},\"headline\":\"Birthday bot for Slack\",\"datePublished\":\"2016-07-04T07:00:32+00:00\",\"dateModified\":\"2020-05-15T13:23:23+00:00\",\"mainEntityOfPage\":{\"@id\":\"https:\/\/www.diogonunes.com\/blog\/birthday-bot-for-slack\/\"},\"wordCount\":162,\"publisher\":{\"@id\":\"https:\/\/www.diogonunes.com\/blog\/#\/schema\/person\/a6fa79b293f22912664654fcfbd2da0c\"},\"image\":{\"@id\":\"https:\/\/www.diogonunes.com\/blog\/birthday-bot-for-slack\/#primaryimage\"},\"thumbnailUrl\":\"https:\/\/i0.wp.com\/www.diogonunes.com\/blog\/wp-content\/uploads\/2016\/06\/work-birthday-slack-bot.png?fit=900%2C650&ssl=1\",\"keywords\":[\"free and open\",\"ruby\",\"slack\",\"utilities\"],\"articleSection\":[\"Technology\"],\"inLanguage\":\"en-US\"},{\"@type\":\"WebPage\",\"@id\":\"https:\/\/www.diogonunes.com\/blog\/birthday-bot-for-slack\/\",\"url\":\"https:\/\/www.diogonunes.com\/blog\/birthday-bot-for-slack\/\",\"name\":\"Birthday bot for Slack - The Geeky Gecko\",\"isPartOf\":{\"@id\":\"https:\/\/www.diogonunes.com\/blog\/#website\"},\"primaryImageOfPage\":{\"@id\":\"https:\/\/www.diogonunes.com\/blog\/birthday-bot-for-slack\/#primaryimage\"},\"image\":{\"@id\":\"https:\/\/www.diogonunes.com\/blog\/birthday-bot-for-slack\/#primaryimage\"},\"thumbnailUrl\":\"https:\/\/i0.wp.com\/www.diogonunes.com\/blog\/wp-content\/uploads\/2016\/06\/work-birthday-slack-bot.png?fit=900%2C650&ssl=1\",\"datePublished\":\"2016-07-04T07:00:32+00:00\",\"dateModified\":\"2020-05-15T13:23:23+00:00\",\"description\":\"Automatically post a \\\"happy birthday\\\" message on your Slack channel on every colleague's birthday. Easy to configure. Deploy to Heroku for free. MIT License\",\"breadcrumb\":{\"@id\":\"https:\/\/www.diogonunes.com\/blog\/birthday-bot-for-slack\/#breadcrumb\"},\"inLanguage\":\"en-US\",\"potentialAction\":[{\"@type\":\"ReadAction\",\"target\":[\"https:\/\/www.diogonunes.com\/blog\/birthday-bot-for-slack\/\"]}]},{\"@type\":\"ImageObject\",\"inLanguage\":\"en-US\",\"@id\":\"https:\/\/www.diogonunes.com\/blog\/birthday-bot-for-slack\/#primaryimage\",\"url\":\"https:\/\/i0.wp.com\/www.diogonunes.com\/blog\/wp-content\/uploads\/2016\/06\/work-birthday-slack-bot.png?fit=900%2C650&ssl=1\",\"contentUrl\":\"https:\/\/i0.wp.com\/www.diogonunes.com\/blog\/wp-content\/uploads\/2016\/06\/work-birthday-slack-bot.png?fit=900%2C650&ssl=1\",\"width\":900,\"height\":650},{\"@type\":\"BreadcrumbList\",\"@id\":\"https:\/\/www.diogonunes.com\/blog\/birthday-bot-for-slack\/#breadcrumb\",\"itemListElement\":[{\"@type\":\"ListItem\",\"position\":1,\"name\":\"Home\",\"item\":\"https:\/\/www.diogonunes.com\/blog\/\"},{\"@type\":\"ListItem\",\"position\":2,\"name\":\"Birthday bot for Slack\"}]},{\"@type\":\"WebSite\",\"@id\":\"https:\/\/www.diogonunes.com\/blog\/#website\",\"url\":\"https:\/\/www.diogonunes.com\/blog\/\",\"name\":\"The Geeky Gecko\",\"description\":\"The Geeky Gecko\",\"publisher\":{\"@id\":\"https:\/\/www.diogonunes.com\/blog\/#\/schema\/person\/a6fa79b293f22912664654fcfbd2da0c\"},\"potentialAction\":[{\"@type\":\"SearchAction\",\"target\":{\"@type\":\"EntryPoint\",\"urlTemplate\":\"https:\/\/www.diogonunes.com\/blog\/?s={search_term_string}\"},\"query-input\":{\"@type\":\"PropertyValueSpecification\",\"valueRequired\":true,\"valueName\":\"search_term_string\"}}],\"inLanguage\":\"en-US\"},{\"@type\":[\"Person\",\"Organization\"],\"@id\":\"https:\/\/www.diogonunes.com\/blog\/#\/schema\/person\/a6fa79b293f22912664654fcfbd2da0c\",\"name\":\"Diogo Nunes\",\"image\":{\"@type\":\"ImageObject\",\"inLanguage\":\"en-US\",\"@id\":\"https:\/\/www.diogonunes.com\/blog\/#\/schema\/person\/image\/\",\"url\":\"https:\/\/i0.wp.com\/www.diogonunes.com\/blog\/wp-content\/uploads\/2026\/04\/Geeky-Gecko-2026-v2.png?fit=799%2C799&ssl=1\",\"contentUrl\":\"https:\/\/i0.wp.com\/www.diogonunes.com\/blog\/wp-content\/uploads\/2026\/04\/Geeky-Gecko-2026-v2.png?fit=799%2C799&ssl=1\",\"width\":799,\"height\":799,\"caption\":\"Diogo Nunes\"},\"logo\":{\"@id\":\"https:\/\/www.diogonunes.com\/blog\/#\/schema\/person\/image\/\"},\"sameAs\":[\"http:\/\/www.diogonunes.com\",\"https:\/\/x.com\/dialexnunes\"],\"url\":\"https:\/\/www.diogonunes.com\/blog\/author\/diogo-nunes\/\"}]}<\/script>\n<!-- \/ Yoast SEO plugin. -->","yoast_head_json":{"title":"Birthday bot for Slack - The Geeky Gecko","description":"Automatically post a \"happy birthday\" message on your Slack channel on every colleague's birthday. Easy to configure. Deploy to Heroku for free. MIT License","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:\/\/www.diogonunes.com\/blog\/birthday-bot-for-slack\/","og_locale":"en_US","og_type":"article","og_title":"Birthday bot for Slack - The Geeky Gecko","og_description":"Automatically post a \"happy birthday\" message on your Slack channel on every colleague's birthday. Easy to configure. Deploy to Heroku for free. MIT License","og_url":"https:\/\/www.diogonunes.com\/blog\/birthday-bot-for-slack\/","og_site_name":"The Geeky Gecko","article_published_time":"2016-07-04T07:00:32+00:00","article_modified_time":"2020-05-15T13:23:23+00:00","og_image":[{"width":900,"height":650,"url":"https:\/\/i0.wp.com\/www.diogonunes.com\/blog\/wp-content\/uploads\/2016\/06\/work-birthday-slack-bot.png?fit=900%2C650&ssl=1","type":"image\/png"}],"author":"Diogo Nunes","twitter_card":"summary_large_image","twitter_creator":"@dialexnunes","twitter_site":"@dialexnunes","twitter_misc":{"Written by":"Diogo Nunes","Est. reading time":"1 minute"},"schema":{"@context":"https:\/\/schema.org","@graph":[{"@type":"Article","@id":"https:\/\/www.diogonunes.com\/blog\/birthday-bot-for-slack\/#article","isPartOf":{"@id":"https:\/\/www.diogonunes.com\/blog\/birthday-bot-for-slack\/"},"author":{"name":"Diogo Nunes","@id":"https:\/\/www.diogonunes.com\/blog\/#\/schema\/person\/a6fa79b293f22912664654fcfbd2da0c"},"headline":"Birthday bot for Slack","datePublished":"2016-07-04T07:00:32+00:00","dateModified":"2020-05-15T13:23:23+00:00","mainEntityOfPage":{"@id":"https:\/\/www.diogonunes.com\/blog\/birthday-bot-for-slack\/"},"wordCount":162,"publisher":{"@id":"https:\/\/www.diogonunes.com\/blog\/#\/schema\/person\/a6fa79b293f22912664654fcfbd2da0c"},"image":{"@id":"https:\/\/www.diogonunes.com\/blog\/birthday-bot-for-slack\/#primaryimage"},"thumbnailUrl":"https:\/\/i0.wp.com\/www.diogonunes.com\/blog\/wp-content\/uploads\/2016\/06\/work-birthday-slack-bot.png?fit=900%2C650&ssl=1","keywords":["free and open","ruby","slack","utilities"],"articleSection":["Technology"],"inLanguage":"en-US"},{"@type":"WebPage","@id":"https:\/\/www.diogonunes.com\/blog\/birthday-bot-for-slack\/","url":"https:\/\/www.diogonunes.com\/blog\/birthday-bot-for-slack\/","name":"Birthday bot for Slack - The Geeky Gecko","isPartOf":{"@id":"https:\/\/www.diogonunes.com\/blog\/#website"},"primaryImageOfPage":{"@id":"https:\/\/www.diogonunes.com\/blog\/birthday-bot-for-slack\/#primaryimage"},"image":{"@id":"https:\/\/www.diogonunes.com\/blog\/birthday-bot-for-slack\/#primaryimage"},"thumbnailUrl":"https:\/\/i0.wp.com\/www.diogonunes.com\/blog\/wp-content\/uploads\/2016\/06\/work-birthday-slack-bot.png?fit=900%2C650&ssl=1","datePublished":"2016-07-04T07:00:32+00:00","dateModified":"2020-05-15T13:23:23+00:00","description":"Automatically post a \"happy birthday\" message on your Slack channel on every colleague's birthday. Easy to configure. Deploy to Heroku for free. MIT License","breadcrumb":{"@id":"https:\/\/www.diogonunes.com\/blog\/birthday-bot-for-slack\/#breadcrumb"},"inLanguage":"en-US","potentialAction":[{"@type":"ReadAction","target":["https:\/\/www.diogonunes.com\/blog\/birthday-bot-for-slack\/"]}]},{"@type":"ImageObject","inLanguage":"en-US","@id":"https:\/\/www.diogonunes.com\/blog\/birthday-bot-for-slack\/#primaryimage","url":"https:\/\/i0.wp.com\/www.diogonunes.com\/blog\/wp-content\/uploads\/2016\/06\/work-birthday-slack-bot.png?fit=900%2C650&ssl=1","contentUrl":"https:\/\/i0.wp.com\/www.diogonunes.com\/blog\/wp-content\/uploads\/2016\/06\/work-birthday-slack-bot.png?fit=900%2C650&ssl=1","width":900,"height":650},{"@type":"BreadcrumbList","@id":"https:\/\/www.diogonunes.com\/blog\/birthday-bot-for-slack\/#breadcrumb","itemListElement":[{"@type":"ListItem","position":1,"name":"Home","item":"https:\/\/www.diogonunes.com\/blog\/"},{"@type":"ListItem","position":2,"name":"Birthday bot for Slack"}]},{"@type":"WebSite","@id":"https:\/\/www.diogonunes.com\/blog\/#website","url":"https:\/\/www.diogonunes.com\/blog\/","name":"The Geeky Gecko","description":"The Geeky Gecko","publisher":{"@id":"https:\/\/www.diogonunes.com\/blog\/#\/schema\/person\/a6fa79b293f22912664654fcfbd2da0c"},"potentialAction":[{"@type":"SearchAction","target":{"@type":"EntryPoint","urlTemplate":"https:\/\/www.diogonunes.com\/blog\/?s={search_term_string}"},"query-input":{"@type":"PropertyValueSpecification","valueRequired":true,"valueName":"search_term_string"}}],"inLanguage":"en-US"},{"@type":["Person","Organization"],"@id":"https:\/\/www.diogonunes.com\/blog\/#\/schema\/person\/a6fa79b293f22912664654fcfbd2da0c","name":"Diogo Nunes","image":{"@type":"ImageObject","inLanguage":"en-US","@id":"https:\/\/www.diogonunes.com\/blog\/#\/schema\/person\/image\/","url":"https:\/\/i0.wp.com\/www.diogonunes.com\/blog\/wp-content\/uploads\/2026\/04\/Geeky-Gecko-2026-v2.png?fit=799%2C799&ssl=1","contentUrl":"https:\/\/i0.wp.com\/www.diogonunes.com\/blog\/wp-content\/uploads\/2026\/04\/Geeky-Gecko-2026-v2.png?fit=799%2C799&ssl=1","width":799,"height":799,"caption":"Diogo Nunes"},"logo":{"@id":"https:\/\/www.diogonunes.com\/blog\/#\/schema\/person\/image\/"},"sameAs":["http:\/\/www.diogonunes.com","https:\/\/x.com\/dialexnunes"],"url":"https:\/\/www.diogonunes.com\/blog\/author\/diogo-nunes\/"}]}},"jetpack_featured_media_url":"https:\/\/i0.wp.com\/www.diogonunes.com\/blog\/wp-content\/uploads\/2016\/06\/work-birthday-slack-bot.png?fit=900%2C650&ssl=1","jetpack-related-posts":[{"id":2722,"url":"https:\/\/www.diogonunes.com\/blog\/internet-button-tutorial-post-slack\/","url_meta":{"origin":2632,"position":0},"title":"Internet Button: post to a Slack channel (tutorial #5)","author":"Diogo Nunes","date":"24 April, 2017","format":false,"excerpt":"We're going fullstack: Button > Led > Wifi > Slack Particle released a C++ library that handles much of the interaction with the Internet Button hardware components. That lib is publicly available on GitHub and includes a bunch of useful examples. First you need to include that library: Go to\u2026","rel":"","context":"In &quot;Technology&quot;","block_context":{"text":"Technology","link":"https:\/\/www.diogonunes.com\/blog\/category\/tech\/"},"img":{"alt_text":"","src":"https:\/\/i0.wp.com\/www.diogonunes.com\/blog\/wp-content\/uploads\/2016\/08\/Internet-Button-Tutorial5.jpg?fit=984%2C656&ssl=1&resize=350%2C200","width":350,"height":200,"srcset":"https:\/\/i0.wp.com\/www.diogonunes.com\/blog\/wp-content\/uploads\/2016\/08\/Internet-Button-Tutorial5.jpg?fit=984%2C656&ssl=1&resize=350%2C200 1x, https:\/\/i0.wp.com\/www.diogonunes.com\/blog\/wp-content\/uploads\/2016\/08\/Internet-Button-Tutorial5.jpg?fit=984%2C656&ssl=1&resize=525%2C300 1.5x, https:\/\/i0.wp.com\/www.diogonunes.com\/blog\/wp-content\/uploads\/2016\/08\/Internet-Button-Tutorial5.jpg?fit=984%2C656&ssl=1&resize=700%2C400 2x"},"classes":[]},{"id":1481,"url":"https:\/\/www.diogonunes.com\/blog\/custom-domain-for-rails-application-at-heroku\/","url_meta":{"origin":2632,"position":1},"title":"Using a custom domain for your (Rails) application at Heroku","author":"Diogo Nunes","date":"3 November, 2014","format":false,"excerpt":"Because no one will remember gentle-tundra-5348.herokuapp.com If you deployed your Rails application to heroku for free, you probably ended up with an URL like http:\/\/weird-name-1234.herokuapp.com\/. You can rename that URL to something more familiar, but it will always be of the form *.heroku.com. That's fine when your just testing or\u2026","rel":"","context":"In &quot;Technology&quot;","block_context":{"text":"Technology","link":"https:\/\/www.diogonunes.com\/blog\/category\/tech\/"},"img":{"alt_text":"original photo: http:\/\/goo.gl\/dxaV95","src":"https:\/\/i0.wp.com\/www.diogonunes.com\/blog\/wp-content\/uploads\/2014\/11\/Heroku-Rails-Station.jpg?fit=600%2C400&ssl=1&resize=350%2C200","width":350,"height":200,"srcset":"https:\/\/i0.wp.com\/www.diogonunes.com\/blog\/wp-content\/uploads\/2014\/11\/Heroku-Rails-Station.jpg?fit=600%2C400&ssl=1&resize=350%2C200 1x, https:\/\/i0.wp.com\/www.diogonunes.com\/blog\/wp-content\/uploads\/2014\/11\/Heroku-Rails-Station.jpg?fit=600%2C400&ssl=1&resize=525%2C300 1.5x"},"classes":[]},{"id":2786,"url":"https:\/\/www.diogonunes.com\/blog\/hungry-for-innovation-cake-button\/","url_meta":{"origin":2632,"position":2},"title":"Hungry for innovation: the cake button","author":"Diogo Nunes","date":"29 August, 2016","format":false,"excerpt":"(This is a repost, originally from my company's blog) Here at Equal Experts we like to have pet projects and help the community. And of course, we are also geeks at heart. So when we at EE Portugal came across the problem I\u2019m about to explain, we had to solve\u2026","rel":"","context":"In &quot;Technology&quot;","block_context":{"text":"Technology","link":"https:\/\/www.diogonunes.com\/blog\/category\/tech\/"},"img":{"alt_text":"cakes batch","src":"https:\/\/i0.wp.com\/www.diogonunes.com\/blog\/wp-content\/uploads\/2016\/08\/cakes-batch.jpg?fit=1067%2C600&ssl=1&resize=350%2C200","width":350,"height":200,"srcset":"https:\/\/i0.wp.com\/www.diogonunes.com\/blog\/wp-content\/uploads\/2016\/08\/cakes-batch.jpg?fit=1067%2C600&ssl=1&resize=350%2C200 1x, https:\/\/i0.wp.com\/www.diogonunes.com\/blog\/wp-content\/uploads\/2016\/08\/cakes-batch.jpg?fit=1067%2C600&ssl=1&resize=525%2C300 1.5x, https:\/\/i0.wp.com\/www.diogonunes.com\/blog\/wp-content\/uploads\/2016\/08\/cakes-batch.jpg?fit=1067%2C600&ssl=1&resize=700%2C400 2x, https:\/\/i0.wp.com\/www.diogonunes.com\/blog\/wp-content\/uploads\/2016\/08\/cakes-batch.jpg?fit=1067%2C600&ssl=1&resize=1050%2C600 3x"},"classes":[]},{"id":379,"url":"https:\/\/www.diogonunes.com\/blog\/set-up-your-rails-env\/","url_meta":{"origin":2632,"position":3},"title":"Setting up your Rails environment from scratch","author":"Diogo Nunes","date":"12 May, 2014","format":false,"excerpt":"This is a complete yet summarized guide to set up a Ruby on Rails development environment on Linux. Installing and configuring Sublime Text, Github, and Heroku are optional but we're included for the sake of completeness. Since these are the de facto tools for editing source code, managing code repositories\u2026","rel":"","context":"In &quot;Technology&quot;","block_context":{"text":"Technology","link":"https:\/\/www.diogonunes.com\/blog\/category\/tech\/"},"img":{"alt_text":"original photo: goo.gl\/QE43FV","src":"https:\/\/i0.wp.com\/www.diogonunes.com\/blog\/wp-content\/uploads\/2014\/05\/rails-worker-assembly-construction.jpg?fit=620%2C230&ssl=1&resize=350%2C200","width":350,"height":200,"srcset":"https:\/\/i0.wp.com\/www.diogonunes.com\/blog\/wp-content\/uploads\/2014\/05\/rails-worker-assembly-construction.jpg?fit=620%2C230&ssl=1&resize=350%2C200 1x, https:\/\/i0.wp.com\/www.diogonunes.com\/blog\/wp-content\/uploads\/2014\/05\/rails-worker-assembly-construction.jpg?fit=620%2C230&ssl=1&resize=525%2C300 1.5x"},"classes":[]},{"id":4397,"url":"https:\/\/www.diogonunes.com\/blog\/testers-toolbox-1-note-taking\/","url_meta":{"origin":2632,"position":4},"title":"Note-taking (Toolbox #1)","author":"Diogo Nunes","date":"22 November, 2021","format":false,"excerpt":"tl;dr Your notes structure your thinking, expand your memory and share information across the team. Theory We testers discover, gather and share information. Keeping that information only inside your head is both ephemeral and ineffective. What you discover is of little use if you cannot communicate that information to the\u2026","rel":"","context":"In &quot;Work&quot;","block_context":{"text":"Work","link":"https:\/\/www.diogonunes.com\/blog\/category\/work\/"},"img":{"alt_text":"","src":"https:\/\/i0.wp.com\/www.diogonunes.com\/blog\/wp-content\/uploads\/2021\/10\/david-travis-5bYxXawHOQg-unsplash.jpg?fit=1200%2C800&ssl=1&resize=350%2C200","width":350,"height":200,"srcset":"https:\/\/i0.wp.com\/www.diogonunes.com\/blog\/wp-content\/uploads\/2021\/10\/david-travis-5bYxXawHOQg-unsplash.jpg?fit=1200%2C800&ssl=1&resize=350%2C200 1x, https:\/\/i0.wp.com\/www.diogonunes.com\/blog\/wp-content\/uploads\/2021\/10\/david-travis-5bYxXawHOQg-unsplash.jpg?fit=1200%2C800&ssl=1&resize=525%2C300 1.5x, https:\/\/i0.wp.com\/www.diogonunes.com\/blog\/wp-content\/uploads\/2021\/10\/david-travis-5bYxXawHOQg-unsplash.jpg?fit=1200%2C800&ssl=1&resize=700%2C400 2x, https:\/\/i0.wp.com\/www.diogonunes.com\/blog\/wp-content\/uploads\/2021\/10\/david-travis-5bYxXawHOQg-unsplash.jpg?fit=1200%2C800&ssl=1&resize=1050%2C600 3x"},"classes":[]},{"id":671,"url":"https:\/\/www.diogonunes.com\/blog\/rails-vs-django-vs-play-frameworks\/","url_meta":{"origin":2632,"position":5},"title":"Rails vs Django vs Play: Battle of frameworks","author":"Diogo Nunes","date":"26 May, 2014","format":false,"excerpt":"This post is a review of those three frameworks considering four criteria: Ease of learning, Speed of development, Tools\/Plugins, and Community. Right from the start I banished PHP from my possible choices. I know that \"sufficiently talented coders can write great applications in terrible languages\" (Jeff Atwood), but I just\u2026","rel":"","context":"In &quot;Technology&quot;","block_context":{"text":"Technology","link":"https:\/\/www.diogonunes.com\/blog\/category\/tech\/"},"img":{"alt_text":"","src":"https:\/\/i0.wp.com\/www.diogonunes.com\/blog\/wp-content\/uploads\/2014\/09\/rails-vs-django-vs-play.jpg?fit=946%2C550&ssl=1&resize=350%2C200","width":350,"height":200,"srcset":"https:\/\/i0.wp.com\/www.diogonunes.com\/blog\/wp-content\/uploads\/2014\/09\/rails-vs-django-vs-play.jpg?fit=946%2C550&ssl=1&resize=350%2C200 1x, https:\/\/i0.wp.com\/www.diogonunes.com\/blog\/wp-content\/uploads\/2014\/09\/rails-vs-django-vs-play.jpg?fit=946%2C550&ssl=1&resize=525%2C300 1.5x, https:\/\/i0.wp.com\/www.diogonunes.com\/blog\/wp-content\/uploads\/2014\/09\/rails-vs-django-vs-play.jpg?fit=946%2C550&ssl=1&resize=700%2C400 2x"},"classes":[]}],"jetpack_sharing_enabled":true,"_links":{"self":[{"href":"https:\/\/www.diogonunes.com\/blog\/wp-json\/wp\/v2\/posts\/2632","targetHints":{"allow":["GET"]}}],"collection":[{"href":"https:\/\/www.diogonunes.com\/blog\/wp-json\/wp\/v2\/posts"}],"about":[{"href":"https:\/\/www.diogonunes.com\/blog\/wp-json\/wp\/v2\/types\/post"}],"author":[{"embeddable":true,"href":"https:\/\/www.diogonunes.com\/blog\/wp-json\/wp\/v2\/users\/1"}],"replies":[{"embeddable":true,"href":"https:\/\/www.diogonunes.com\/blog\/wp-json\/wp\/v2\/comments?post=2632"}],"version-history":[{"count":1,"href":"https:\/\/www.diogonunes.com\/blog\/wp-json\/wp\/v2\/posts\/2632\/revisions"}],"predecessor-version":[{"id":3798,"href":"https:\/\/www.diogonunes.com\/blog\/wp-json\/wp\/v2\/posts\/2632\/revisions\/3798"}],"wp:featuredmedia":[{"embeddable":true,"href":"https:\/\/www.diogonunes.com\/blog\/wp-json\/wp\/v2\/media\/2634"}],"wp:attachment":[{"href":"https:\/\/www.diogonunes.com\/blog\/wp-json\/wp\/v2\/media?parent=2632"}],"wp:term":[{"taxonomy":"category","embeddable":true,"href":"https:\/\/www.diogonunes.com\/blog\/wp-json\/wp\/v2\/categories?post=2632"},{"taxonomy":"post_tag","embeddable":true,"href":"https:\/\/www.diogonunes.com\/blog\/wp-json\/wp\/v2\/tags?post=2632"}],"curies":[{"name":"wp","href":"https:\/\/api.w.org\/{rel}","templated":true}]}}