<!DOCTYPE html>
<html>

  <head>
  <meta charset="utf-8">
  <meta http-equiv="X-UA-Compatible" content="IE=edge">
  <meta name="viewport" content="width=device-width, initial-scale=1">

  <title>Denys Zadorozhnyi</title>
  <meta name="description" content="thoughts on software engineering">

  <link rel="stylesheet" href="/css/main.css">
  <link rel="canonical" href="http://blog.zadorozhnyi.com/">
  <link rel="alternate" type="application/rss+xml" title="Denys Zadorozhnyi" href="http://blog.zadorozhnyi.com/feed.xml">
</head>


  <body>

    <header class="site-header">

  <div class="wrapper">

    <a class="site-title" href="/">Denys Zadorozhnyi</a>
    
    <nav class="site-nav">
      <a href="#" class="menu-icon">
        <svg viewBox="0 0 18 15">
          <path fill="#424242" d="M18,1.484c0,0.82-0.665,1.484-1.484,1.484H1.484C0.665,2.969,0,2.304,0,1.484l0,0C0,0.665,0.665,0,1.484,0 h15.031C17.335,0,18,0.665,18,1.484L18,1.484z"/>
          <path fill="#424242" d="M18,7.516C18,8.335,17.335,9,16.516,9H1.484C0.665,9,0,8.335,0,7.516l0,0c0-0.82,0.665-1.484,1.484-1.484 h15.031C17.335,6.031,18,6.696,18,7.516L18,7.516z"/>
          <path fill="#424242" d="M18,13.516C18,14.335,17.335,15,16.516,15H1.484C0.665,15,0,14.335,0,13.516l0,0 c0-0.82,0.665-1.484,1.484-1.484h15.031C17.335,12.031,18,12.696,18,13.516L18,13.516z"/>
        </svg>
      </a>

      <div class="trigger">
        
          
        
          
        
          
        
          
        
          
        
      </div>
    </nav>

  </div>

</header>


    <div class="page-content">
      <div class="wrapper">
        <div class="home">

  <h1 class="page-heading">Posts</h1>

  <ul class="post-list">
  
  <li>
  <span class="post-meta">Feb 25, 2016</span>

  <h2>
  <a class="post-link" href="/data_model/design/2016/02/25/balancing-between-perfect-and-broken.html">Balancing between "perfect" and "broken".</a>
  </h2>
    <div class="content">
      <p>Last week I found very lame and stupid bug in <a href="https://itunes.apple.com/us/app/groceryx-grocery-shopping/id672167136?mt=8">Groceryx</a>. I&#39;ve made a huge mistake when I was designing the data model. When designing UX for app&#39;s first launch I wanted to give users some set of predefined items to show a sample shopping list and to make suggestions when adding a new item to the list. Here is how my simplified data model looks like:</p>

    </div>
    <a class="post-meta" href="/data_model/design/2016/02/25/balancing-between-perfect-and-broken.html">More</a>
  </li>
  
  <li>
  <span class="post-meta">Feb 14, 2016</span>

  <h2>
  <a class="post-link" href="/backend/ansible/automation/2016/02/14/joys-of-automated-app-deployment-copy.html">The joys of automated app deployment for a one-man shop.</a>
  </h2>
    <div class="content">
      <p>Last week I <a href="http://blog.zadorozhnyi.com/backend/ansible/automation/2016/02/07/joys-of-automated-server-provisioning.html">wrote</a> about why I automated server provisioning for <a href="https://itunes.apple.com/us/app/groceryx-grocery-shopping/id672167136?mt=8">Groceryx</a>. Today I want to share with why it is important to have automated deployment process of your app even if you a one-man shop. By the app in this blog post I mean the backend part of your app, one that is deployed on your server. </p>

    </div>
    <a class="post-meta" href="/backend/ansible/automation/2016/02/14/joys-of-automated-app-deployment-copy.html">More</a>
  </li>
  
  <li>
  <span class="post-meta">Feb 7, 2016</span>

  <h2>
  <a class="post-link" href="/backend/ansible/automation/2016/02/07/joys-of-automated-server-provisioning-copy.html">The joys of automated server provisioning for a one-man shop.</a>
  </h2>
    <div class="content">
      <p>When <a href="https://itunes.apple.com/us/app/groceryx-grocery-shopping/id672167136?mt=8">Groceryx</a> was merely an app idea I knew that I am going to need a server backend for it. Although it was a one man project, I&#39;ve decided not to cut corners and invest some time in automating server provisioning and app deployment. Just to understand what are the benefits.<br>
First I needed to choose what tool I&#39;ll use for that. The industry standard Chef and Puppet I found them quite an overkill. Their usual configuration has a dedicated server for just running Chef or Puppet. I wanted something simpler that I could run on my laptop. My primary requirement for this kind of tool was idempotency.</p>

    </div>
    <a class="post-meta" href="/backend/ansible/automation/2016/02/07/joys-of-automated-server-provisioning-copy.html">More</a>
  </li>
  
  </ul>

  <!-- Pagination links -->
  <div class="pagination">
    
    <span class="previous">Previous</span>
    
    <span class="page_number ">Page: 1 of 3</span>
    
    <a href="/page2" class="next">Next</a>
    
  </div>

  <p class="rss-subscribe">subscribe <a href="/feed.xml">via RSS</a></p>

</div>

      </div>
    </div>

    <footer class="site-footer">

  <div class="wrapper">

    <h2 class="footer-heading">Denys Zadorozhnyi</h2>

    <div class="footer-col-wrapper">
      <div class="footer-col footer-col-1">
        <ul class="contact-list">
          <!--<li>Denys Zadorozhnyi</li>-->
          <li><a href="mailto:denys@zadorozhnyi.com">denys@zadorozhnyi.com</a></li>
        </ul>
      </div>

      <div class="footer-col footer-col-2">
        <ul class="social-media-list">
          
          <li>
            <a href="https://github.com/greenhat"><span class="icon icon--github"><svg viewBox="0 0 16 16"><path fill="#828282" d="M7.999,0.431c-4.285,0-7.76,3.474-7.76,7.761 c0,3.428,2.223,6.337,5.307,7.363c0.388,0.071,0.53-0.168,0.53-0.374c0-0.184-0.007-0.672-0.01-1.32 c-2.159,0.469-2.614-1.04-2.614-1.04c-0.353-0.896-0.862-1.135-0.862-1.135c-0.705-0.481,0.053-0.472,0.053-0.472 c0.779,0.055,1.189,0.8,1.189,0.8c0.692,1.186,1.816,0.843,2.258,0.645c0.071-0.502,0.271-0.843,0.493-1.037 C4.86,11.425,3.049,10.76,3.049,7.786c0-0.847,0.302-1.54,0.799-2.082C3.768,5.507,3.501,4.718,3.924,3.65 c0,0,0.652-0.209,2.134,0.796C6.677,4.273,7.34,4.187,8,4.184c0.659,0.003,1.323,0.089,1.943,0.261 c1.482-1.004,2.132-0.796,2.132-0.796c0.423,1.068,0.157,1.857,0.077,2.054c0.497,0.542,0.798,1.235,0.798,2.082 c0,2.981-1.814,3.637-3.543,3.829c0.279,0.24,0.527,0.713,0.527,1.437c0,1.037-0.01,1.874-0.01,2.129 c0,0.208,0.14,0.449,0.534,0.373c3.081-1.028,5.302-3.935,5.302-7.362C15.76,3.906,12.285,0.431,7.999,0.431z"/></svg>
</span><span class="username">greenhat</span></a>

          </li>
          

          
          <li>
            <a href="https://twitter.com/greenden"><span class="icon icon--twitter"><svg viewBox="0 0 16 16"><path fill="#828282" d="M15.969,3.058c-0.586,0.26-1.217,0.436-1.878,0.515c0.675-0.405,1.194-1.045,1.438-1.809c-0.632,0.375-1.332,0.647-2.076,0.793c-0.596-0.636-1.446-1.033-2.387-1.033c-1.806,0-3.27,1.464-3.27,3.27 c0,0.256,0.029,0.506,0.085,0.745C5.163,5.404,2.753,4.102,1.14,2.124C0.859,2.607,0.698,3.168,0.698,3.767 c0,1.134,0.577,2.135,1.455,2.722C1.616,6.472,1.112,6.325,0.671,6.08c0,0.014,0,0.027,0,0.041c0,1.584,1.127,2.906,2.623,3.206 C3.02,9.402,2.731,9.442,2.433,9.442c-0.211,0-0.416-0.021-0.615-0.059c0.416,1.299,1.624,2.245,3.055,2.271 c-1.119,0.877-2.529,1.4-4.061,1.4c-0.264,0-0.524-0.015-0.78-0.046c1.447,0.928,3.166,1.469,5.013,1.469 c6.015,0,9.304-4.983,9.304-9.304c0-0.142-0.003-0.283-0.009-0.423C14.976,4.29,15.531,3.714,15.969,3.058z"/></svg>
</span><span class="username">greenden</span></a>

          </li>
          
        </ul>
      </div>

      <div class="footer-col footer-col-3">
        <p>thoughts on software engineering</p>
      </div>
    </div>

  </div>

</footer>


  </body>

</html>
