<?xml version="1.0" encoding="UTF-8"?>
<rss version="2.0" xmlns:atom="http://www.w3.org/2005/Atom" xmlns:dc="http://purl.org/dc/elements/1.1/">
  <channel>
    <title>DEV Community: Hugo Nogueira</title>
    <description>The latest articles on DEV Community by Hugo Nogueira (@hugomn).</description>
    <link>https://dev.to/hugomn</link>
    <image>
      <url>https://media2.dev.to/dynamic/image/width=90,height=90,fit=cover,gravity=auto,format=auto/https:%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Fuser%2Fprofile_image%2F255736%2Fb45c27a8-5609-44a8-8dba-39ba752cd99b.jpg</url>
      <title>DEV Community: Hugo Nogueira</title>
      <link>https://dev.to/hugomn</link>
    </image>
    <atom:link rel="self" type="application/rss+xml" href="https://dev.to/feed/hugomn"/>
    <language>en</language>
    <item>
      <title>A brief look at hey.com stack</title>
      <dc:creator>Hugo Nogueira</dc:creator>
      <pubDate>Thu, 02 Jul 2020 06:33:53 +0000</pubDate>
      <link>https://dev.to/hugomn/a-brief-look-at-hey-com-stack-oc0</link>
      <guid>https://dev.to/hugomn/a-brief-look-at-hey-com-stack-oc0</guid>
      <description>&lt;p&gt;Two weeks ago, Basecamp launched its own e-mail service that aims to challenge the main online e-mail platforms, called Hey (and which resides in the attractive e-mail &lt;a href="//hey.com"&gt;hey.com&lt;/a&gt;). The launch was announced on June 15, in a tweet by the company's CEO and co-founder, Jason Fried:&lt;/p&gt;


&lt;blockquote class="ltag__twitter-tweet"&gt;

  &lt;div class="ltag__twitter-tweet__main"&gt;
    &lt;div class="ltag__twitter-tweet__header"&gt;
      &lt;img class="ltag__twitter-tweet__profile-image" src="https://res.cloudinary.com/practicaldev/image/fetch/s--EaUOuut---/c_limit%2Cf_auto%2Cfl_progressive%2Cq_auto%2Cw_880/https://pbs.twimg.com/profile_images/3413742921/0e9ef95e76c4a965b9b177fa2267d6c1_normal.png" alt="Jason Fried profile image"&gt;
      &lt;div class="ltag__twitter-tweet__full-name"&gt;
        Jason Fried
      &lt;/div&gt;
      &lt;div class="ltag__twitter-tweet__username"&gt;
        @jasonfried
      &lt;/div&gt;
      &lt;div class="ltag__twitter-tweet__twitter-logo"&gt;
        &lt;img src="https://res.cloudinary.com/practicaldev/image/fetch/s--P4t6ys1m--/c_limit%2Cf_auto%2Cfl_progressive%2Cq_auto%2Cw_880/https://practicaldev-herokuapp-com.freetls.fastly.net/assets/twitter-f95605061196010f91e64806688390eb1a4dbc9e913682e043eb8b1e06ca484f.svg" alt="twitter logo"&gt;
      &lt;/div&gt;
    &lt;/div&gt;
    &lt;div class="ltag__twitter-tweet__body"&gt;
      Two years of work comes alive today. Couldn’t be more proud of our team. It wasn’t easy, but it was incredibly fun. And today we get to show the world what we’ve been working on. Email’s new heyday is here. HEY: &lt;a href="https://t.co/Qyp1WsIIly"&gt;hey.com&lt;/a&gt;
    &lt;/div&gt;
    &lt;div class="ltag__twitter-tweet__date"&gt;
      14:15 PM - 15 Jun 2020
    &lt;/div&gt;


    &lt;div class="ltag__twitter-tweet__actions"&gt;
      &lt;a href="https://twitter.com/intent/tweet?in_reply_to=1272533092939505664" class="ltag__twitter-tweet__actions__button"&gt;
        &lt;img src="/assets/twitter-reply-action.svg" alt="Twitter reply action"&gt;
      &lt;/a&gt;
      &lt;a href="https://twitter.com/intent/retweet?tweet_id=1272533092939505664" class="ltag__twitter-tweet__actions__button"&gt;
        &lt;img src="/assets/twitter-retweet-action.svg" alt="Twitter retweet action"&gt;
      &lt;/a&gt;
      323
      &lt;a href="https://twitter.com/intent/like?tweet_id=1272533092939505664" class="ltag__twitter-tweet__actions__button"&gt;
        &lt;img src="/assets/twitter-like-action.svg" alt="Twitter like action"&gt;
      &lt;/a&gt;
      2777
    &lt;/div&gt;
  &lt;/div&gt;
&lt;/blockquote&gt;


&lt;p&gt;The platform, which was initially made available through invitations, generated excitement in technology enthusiasts, for bringing a different approach to the so common e-mail service: right after logging in, we came across the "Imbox" (with M, of IMportant ), an inbox that only shows pre-authorized e-mails, a separate place for newsletters and even a "paper-trail" where receipts and order confirmations will be stored.&lt;/p&gt;

&lt;p&gt;An interesting point to be noted by technologists: &lt;a href="http://hey.com"&gt;hey.com&lt;/a&gt; is far from being an MVP as we have seen in other startups. The tool was developed for two years until its launch, and its initial version already offers advanced tools such as the ability to merge email threads, notifications for specific contacts, etc. In addition, the service is not free: it offers a 14-day trial version, after which an yearly fee of \$99 is charged.&lt;/p&gt;

&lt;p&gt;However, the point that intrigued me most during the week was trying to understand the stack and infrastructure behind hey.com. Because it was launched by Basecamp, known for its software quality and agile development practices, there was certainly something interesting there.&lt;/p&gt;

&lt;p&gt;In a response inside Jason Fried's thread, CTO David Hainemeier made a joke about hype technologies, making it obvious that &lt;a href="http://hey.com"&gt;hey.com&lt;/a&gt; uses a simple stack, and obviously with Ruby on Rails (which was created by David in 2004):&lt;/p&gt;


&lt;blockquote class="ltag__twitter-tweet"&gt;

  &lt;div class="ltag__twitter-tweet__main"&gt;
    &lt;div class="ltag__twitter-tweet__header"&gt;
      &lt;img class="ltag__twitter-tweet__profile-image" src="https://res.cloudinary.com/practicaldev/image/fetch/s--v6DxttUX--/c_limit%2Cf_auto%2Cfl_progressive%2Cq_auto%2Cw_880/https://pbs.twimg.com/profile_images/975876868455809024/eK7mDppU_normal.jpg" alt="DHH profile image"&gt;
      &lt;div class="ltag__twitter-tweet__full-name"&gt;
        DHH
      &lt;/div&gt;
      &lt;div class="ltag__twitter-tweet__username"&gt;
        @dhh
      &lt;/div&gt;
      &lt;div class="ltag__twitter-tweet__twitter-logo"&gt;
        &lt;img src="https://res.cloudinary.com/practicaldev/image/fetch/s--P4t6ys1m--/c_limit%2Cf_auto%2Cfl_progressive%2Cq_auto%2Cw_880/https://practicaldev-herokuapp-com.freetls.fastly.net/assets/twitter-f95605061196010f91e64806688390eb1a4dbc9e913682e043eb8b1e06ca484f.svg" alt="twitter logo"&gt;
      &lt;/div&gt;
    &lt;/div&gt;
    &lt;div class="ltag__twitter-tweet__body"&gt;
      &lt;a href="https://twitter.com/Leefrog2"&gt;@Leefrog2&lt;/a&gt; &lt;a href="https://twitter.com/jasonfried"&gt;@jasonfried&lt;/a&gt; Went with a serverless, microservices architecture on the backend based on Go, Rust, and Flubber, paired with a nanoservices frontend, mixing react, redux, vuejs, and actually angular together for a best in breed combination ✌️
    &lt;/div&gt;
    &lt;div class="ltag__twitter-tweet__date"&gt;
      19:47 PM - 06 Feb 2020
    &lt;/div&gt;


    &lt;div class="ltag__twitter-tweet__actions"&gt;
      &lt;a href="https://twitter.com/intent/tweet?in_reply_to=1225506212265037827" class="ltag__twitter-tweet__actions__button"&gt;
        &lt;img src="/assets/twitter-reply-action.svg" alt="Twitter reply action"&gt;
      &lt;/a&gt;
      &lt;a href="https://twitter.com/intent/retweet?tweet_id=1225506212265037827" class="ltag__twitter-tweet__actions__button"&gt;
        &lt;img src="/assets/twitter-retweet-action.svg" alt="Twitter retweet action"&gt;
      &lt;/a&gt;
      91
      &lt;a href="https://twitter.com/intent/like?tweet_id=1225506212265037827" class="ltag__twitter-tweet__actions__button"&gt;
        &lt;img src="/assets/twitter-like-action.svg" alt="Twitter like action"&gt;
      &lt;/a&gt;
      1162
    &lt;/div&gt;
  &lt;/div&gt;
&lt;/blockquote&gt;


&lt;p&gt;Unfortunately, &lt;a href="http://hey.com"&gt;hey.com&lt;/a&gt; is not open source, so I had to do a little research to get a better idea of the technologies used.&lt;/p&gt;

&lt;blockquote&gt;
&lt;p&gt;Important disclosure: as the &lt;a href="http://hey.com"&gt;hey.com&lt;/a&gt; code is not open source, and no official announcements have been made, the statements I make here are all based on information from social networks and superficial analysis I made looking at the platform's html.&lt;/p&gt;
&lt;/blockquote&gt;

&lt;h2&gt;
  
  
  Web application
&lt;/h2&gt;

&lt;p&gt;As we could imagine, &lt;a href="http://hey.com"&gt;hey.com&lt;/a&gt; is a Ruby on Rails web application rendered on the server, without using any front-end frameworks on the client side (like React, Vue). When inspecting the code, we can easily note the use of &lt;a href="https://github.com/turbolinks/turbolinks"&gt;turbolinks&lt;/a&gt;, a library for displaying page blocks without the need to reload all the HTML, and which provides a very quick and smooth navigation:&lt;/p&gt;

&lt;p&gt;&lt;a href="https://res.cloudinary.com/practicaldev/image/fetch/s--drgohh6s--/c_limit%2Cf_auto%2Cfl_progressive%2Cq_auto%2Cw_880/https://dev-to-uploads.s3.amazonaws.com/i/0ig9x7079rrzbp2lpg10.png" class="article-body-image-wrapper"&gt;&lt;img src="https://res.cloudinary.com/practicaldev/image/fetch/s--drgohh6s--/c_limit%2Cf_auto%2Cfl_progressive%2Cq_auto%2Cw_880/https://dev-to-uploads.s3.amazonaws.com/i/0ig9x7079rrzbp2lpg10.png" alt="Turbolinks in hey.com code"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;I'm not going to dive into the &lt;a href="http://hey.com"&gt;hey.com&lt;/a&gt; Ruby on Rails application here very much, but if you're interested, Matouš Borák wrote a very in-depth article &lt;a href="https://dev.to/borama/a-few-sneak-peeks-into-hey-com-technology-i-intro-4bjg"&gt;here&lt;/a&gt;.&lt;/p&gt;

&lt;h2&gt;
  
  
  Infrastructure
&lt;/h2&gt;

&lt;p&gt;Regarding the application's infrastructure, David Hainemeier explained that they chose Kubernetes to orchestrate the application's containers. Asked about the real need for the tool, DHH argued that for tools like Hey, where it is not known whether 10 or 1 million users will register on the platform, an orchestrator like Kubernetes is extremely necessary:&lt;/p&gt;


&lt;blockquote class="ltag__twitter-tweet"&gt;

  &lt;div class="ltag__twitter-tweet__main"&gt;
    &lt;div class="ltag__twitter-tweet__header"&gt;
      &lt;img class="ltag__twitter-tweet__profile-image" src="https://res.cloudinary.com/practicaldev/image/fetch/s--v6DxttUX--/c_limit%2Cf_auto%2Cfl_progressive%2Cq_auto%2Cw_880/https://pbs.twimg.com/profile_images/975876868455809024/eK7mDppU_normal.jpg" alt="DHH profile image"&gt;
      &lt;div class="ltag__twitter-tweet__full-name"&gt;
        DHH
      &lt;/div&gt;
      &lt;div class="ltag__twitter-tweet__username"&gt;
        @dhh
      &lt;/div&gt;
      &lt;div class="ltag__twitter-tweet__twitter-logo"&gt;
        &lt;img src="https://res.cloudinary.com/practicaldev/image/fetch/s--P4t6ys1m--/c_limit%2Cf_auto%2Cfl_progressive%2Cq_auto%2Cw_880/https://practicaldev-herokuapp-com.freetls.fastly.net/assets/twitter-f95605061196010f91e64806688390eb1a4dbc9e913682e043eb8b1e06ca484f.svg" alt="twitter logo"&gt;
      &lt;/div&gt;
    &lt;/div&gt;
    &lt;div class="ltag__twitter-tweet__body"&gt;
      &lt;a href="https://twitter.com/wycats"&gt;@wycats&lt;/a&gt; &lt;a href="https://twitter.com/joshpuetz"&gt;@joshpuetz&lt;/a&gt; &lt;a href="https://twitter.com/Leefrog2"&gt;@Leefrog2&lt;/a&gt; &lt;a href="https://twitter.com/jasonfried"&gt;@jasonfried&lt;/a&gt; Because the cloud is actually a great place to run a product where you have no idea whether 10 people and a dustbowl shows up or if half a million people suddenly wants in. Uncertain scale = great fit. (And K8S is a great way to run cloud).
    &lt;/div&gt;
    &lt;div class="ltag__twitter-tweet__date"&gt;
      21:12 PM - 08 Feb 2020
    &lt;/div&gt;


    &lt;div class="ltag__twitter-tweet__actions"&gt;
      &lt;a href="https://twitter.com/intent/tweet?in_reply_to=1226252386252947456" class="ltag__twitter-tweet__actions__button"&gt;
        &lt;img src="/assets/twitter-reply-action.svg" alt="Twitter reply action"&gt;
      &lt;/a&gt;
      &lt;a href="https://twitter.com/intent/retweet?tweet_id=1226252386252947456" class="ltag__twitter-tweet__actions__button"&gt;
        &lt;img src="/assets/twitter-retweet-action.svg" alt="Twitter retweet action"&gt;
      &lt;/a&gt;
      1
      &lt;a href="https://twitter.com/intent/like?tweet_id=1226252386252947456" class="ltag__twitter-tweet__actions__button"&gt;
        &lt;img src="/assets/twitter-like-action.svg" alt="Twitter like action"&gt;
      &lt;/a&gt;
      40
    &lt;/div&gt;
  &lt;/div&gt;
&lt;/blockquote&gt;


&lt;p&gt;Still on infrastructure, Blake Stoddard, Senior System Administrator at Basecamp, wrote &lt;a href="https://m.signalvnoise.com/seamless-branch-deploys-with-kubernetes/"&gt;in this article&lt;/a&gt; of April 20, 2020, that to manage its clusters, the team uses Amazon EKS to automate Kubernetes execution.&lt;/p&gt;

&lt;h2&gt;
  
  
  Development workflow
&lt;/h2&gt;

&lt;p&gt;Inspired by GitHub's &lt;a href="https://github.blog/2015-06-02-deploying-branches-to-github-com/"&gt;branch-lab system&lt;/a&gt;, the &lt;a href="http://hey.com"&gt;hey.com&lt;/a&gt; development team uses a system that immediately deploys any branch at a specific endpoint for that branch and that will be immediately available to test the changes made.&lt;/p&gt;

&lt;p&gt;As soon as new branches as new features are created, continuous integration through the &lt;a href="https://buildkite.com/"&gt;BuildKite&lt;/a&gt; tool is started and a new environment is provisioned in a few seconds.&lt;/p&gt;

&lt;p&gt;Full details of the &lt;a href="http://hey.com"&gt;hey.com&lt;/a&gt; team's development flow can be found &lt;a href="https://m.signalvnoise.com/seamless-branch-deploys-with-kubernetes/"&gt;in this Blake Stoddard article&lt;/a&gt;, Senior System Administrator at Basecamp.&lt;/p&gt;

&lt;h2&gt;
  
  
  Bonus insight: the hey.com domain
&lt;/h2&gt;

&lt;p&gt;&lt;a href="https://m.signalvnoise.com/how-we-acquired-hey-com/"&gt;In this article&lt;/a&gt;, CEO Jason Fried explains how he managed to buy the hey.com domain. Despite not exposing the final offer, it shows how, after 18 months and more than 60 emails exchanged, the negotiation took place. Also, how difficult it is to get a good domain today.&lt;/p&gt;

&lt;p&gt;Would you risk making a guess about the final offer?&lt;/p&gt;

&lt;p&gt;I hope this article has given you some inspiration on how to create a modern and scalable product like hey.com!&lt;/p&gt;

</description>
    </item>
  </channel>
</rss>
