Skip to content
Permalink
Browse files

Blog edits thanks to Nico

  • Loading branch information...
Skraelingjar committed Apr 6, 2019
1 parent b4b72e3 commit 40a1ed5291861b7ac4ad5f58756bde48ac749f2c
@@ -19,7 +19,7 @@ categories: [
series: ["pakpak"]
---

When the time came to begin the software development cycle for pakpak I was faced with a a lot of choices.
When the time came to begin the software development cycle for pakpak I was faced with a lot of choices.
What do I use to bring our idea to life? These early decisions could shape the future of our product and
needed to be made carefully. After some research and a lot of thinking, I came up with three requirements,
our stack must:
@@ -40,15 +40,16 @@ I would enjoy working with on a daily basis. Given my requirements above, I was
- Ruby on Rails
- Django
- Express.js
- Laravel

The last times I worked with PHP and Node were full of struggle and irritation that eliminated Laravel and Express. Having
the most experience with Python and because of the growth of the Python community, I decided to go with Django.
I eliminated Express.js first because I have the least experience with Node.js and writing server-side JavaScript. Having
the most experience with Python and because of the growth of the Python community, I decided to go with Django after seeing
the growth of the community because there are a lot of packages I can use and in the future, it would be easy to set up
a REST API on the side.

Wanting to not reinvent any wheels (ha), I decided to use a database already integrated with Django. The choices are slim,
MySQL, Postgres and SQLite. I chose Postgres since it has a great community and there are lots of managed services to use.

Without getting to much into the production setup, in order to serve the app I decided to use Nginx for it's speed and ease
Without getting too much into the production setup, in order to serve the app I decided to use Nginx for it's speed and ease
of setup in Docker. It runs in it's own container, connected to the app container, which is running Gunicorn.

## Client Side
@@ -86,7 +87,7 @@ While my choices & requirements were arbitrary and the result of the dubious nat
version of our app. I was able to work quickly and (sort of) efficiently. I am able to quickly make changes and redeploy with some sort
of ease.

We're using Sentry to track and notify me of errors. This is absolutely necessary but not a total solution. When a problem happened I
We're using Sentry to track and notify the team of errors. This is absolutely necessary but not a total solution. When a problem happened I
have to connect to the app server and review the logs to see what was going on. The whole time, I knew that I should be collecting and
indexing my logs. Not just application logs but also docker, server, and access logs. This is one of the first things that will be changed.

@@ -7,7 +7,7 @@
<meta name="author"
content="map[name:Josh Bowen]">
<meta name="description"
content="When the time came to begin the software development cycle for pakpak I was faced with a a lot of choices. What do I use to bring our idea to life? These early decisions could shape the future of our product and needed to be made carefully. After some research and a lot of thinking, I came up with three requirements, our stack must:
content="When the time came to begin the software development cycle for pakpak I was faced with a lot of choices. What do I use to bring our idea to life? These early decisions could shape the future of our product and needed to be made carefully. After some research and a lot of thinking, I came up with three requirements, our stack must:
Allow for rapid iteration Be easy to deploy Load quickly I spent a lot of time researching, browsing StackShare, and asking what others were using." />
<meta name="keywords" content="homepage, blog, software, portfolio, development, programming" />
<meta name="robots" content="noodp" />
@@ -38,13 +38,13 @@
<link rel="shortcut icon" href="/favicon.ico">
<meta name="theme-color" content="#252627">
<meta itemprop="name" content="Choosing a tech stack is hard">
<meta itemprop="description" content="When the time came to begin the software development cycle for pakpak I was faced with a a lot of choices. What do I use to bring our idea to life? These early decisions could shape the future of our product and needed to be made carefully. After some research and a lot of thinking, I came up with three requirements, our stack must:
<meta itemprop="description" content="When the time came to begin the software development cycle for pakpak I was faced with a lot of choices. What do I use to bring our idea to life? These early decisions could shape the future of our product and needed to be made carefully. After some research and a lot of thinking, I came up with three requirements, our stack must:
Allow for rapid iteration Be easy to deploy Load quickly I spent a lot of time researching, browsing StackShare, and asking what others were using.">


<meta itemprop="datePublished" content="2019-04-03T20:55:00-07:00" />
<meta itemprop="dateModified" content="2019-04-04T11:33:06-07:00" />
<meta itemprop="wordCount" content="1025">
<meta itemprop="wordCount" content="1054">



@@ -53,7 +53,7 @@
<meta name="twitter:image" content="https://joshb.dev/"/>

<meta name="twitter:title" content="Choosing a tech stack is hard"/>
<meta name="twitter:description" content="When the time came to begin the software development cycle for pakpak I was faced with a a lot of choices. What do I use to bring our idea to life? These early decisions could shape the future of our product and needed to be made carefully. After some research and a lot of thinking, I came up with three requirements, our stack must:
<meta name="twitter:description" content="When the time came to begin the software development cycle for pakpak I was faced with a lot of choices. What do I use to bring our idea to life? These early decisions could shape the future of our product and needed to be made carefully. After some research and a lot of thinking, I came up with three requirements, our stack must:
Allow for rapid iteration Be easy to deploy Load quickly I spent a lot of time researching, browsing StackShare, and asking what others were using."/>


@@ -135,7 +135,7 @@ <h1 class="post-title"><a href="https://joshb.dev/blog/choosing-a-tech-stack-is-
<div class="post-content">


<p>When the time came to begin the software development cycle for pakpak I was faced with a a lot of choices.
<p>When the time came to begin the software development cycle for pakpak I was faced with a lot of choices.
What do I use to bring our idea to life? These early decisions could shape the future of our product and
needed to be made carefully. After some research and a lot of thinking, I came up with three requirements,
our stack must:</p>
@@ -159,16 +159,17 @@ <h2 id="server-side">Server Side</h2>
<li>Ruby on Rails</li>
<li>Django</li>
<li>Express.js</li>
<li>Laravel</li>
</ul>

<p>The last times I worked with PHP and Node were full of struggle and irritation that eliminated Laravel and Express. Having
the most experience with Python and because of the growth of the Python community, I decided to go with Django.</p>
<p>I eliminated Express.js first because I have the least experience with Node.js and writing server-side JavaScript. Having
the most experience with Python and because of the growth of the Python community, I decided to go with Django after seeing
the growth of the community because there are a lot of packages I can use and in the future, it would be easy to set up
a REST API on the side.</p>

<p>Wanting to not reinvent any wheels (ha), I decided to use a database already integrated with Django. The choices are slim,
MySQL, Postgres and SQLite. I chose Postgres since it has a great community and there are lots of managed services to use.</p>

<p>Without getting to much into the production setup, in order to serve the app I decided to use Nginx for it&rsquo;s speed and ease
<p>Without getting too much into the production setup, in order to serve the app I decided to use Nginx for it&rsquo;s speed and ease
of setup in Docker. It runs in it&rsquo;s own container, connected to the app container, which is running Gunicorn.</p>

<h2 id="client-side">Client Side</h2>
@@ -206,7 +207,7 @@ <h2 id="lessons-learned">Lessons Learned</h2>
version of our app. I was able to work quickly and (sort of) efficiently. I am able to quickly make changes and redeploy with some sort
of ease.</p>

<p>We&rsquo;re using Sentry to track and notify me of errors. This is absolutely necessary but not a total solution. When a problem happened I
<p>We&rsquo;re using Sentry to track and notify the team of errors. This is absolutely necessary but not a total solution. When a problem happened I
have to connect to the app server and review the logs to see what was going on. The whole time, I knew that I should be collecting and
indexing my logs. Not just application logs but also docker, server, and access logs. This is one of the first things that will be changed.</p>

@@ -242,7 +243,7 @@ <h4 id="joshua-bowen">Joshua Bowen</h4>
<svg xmlns="http://www.w3.org/2000/svg" width="24" height="24" viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="2" stroke-linecap="round" stroke-linejoin="round" class="feather feather-tag meta-icon"><path d="M20.59 13.41l-7.17 7.17a2 2 0 0 1-2.83 0L2 12V2h10l8.59 8.59a2 2 0 0 1 0 2.82z"></path><line x1="7" y1="7" x2="7" y2="7"></line></svg><span class="tag"><a href="https://joshb.dev/tags/software">software</a></span><span class="tag"><a href="https://joshb.dev/tags/frameworks">frameworks</a></span><span class="tag"><a href="https://joshb.dev/tags/stack">stack</a></span><span class="tag"><a href="https://joshb.dev/tags/django">django</a></span><span class="tag"><a href="https://joshb.dev/tags/docker">docker</a></span>
</p>

<p><svg xmlns="http://www.w3.org/2000/svg" width="24" height="24" viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="2" stroke-linecap="round" stroke-linejoin="round" class="feather feather-file-text"><path d="M14 2H6a2 2 0 0 0-2 2v16a2 2 0 0 0 2 2h12a2 2 0 0 0 2-2V8z"></path><polyline points="14 2 14 8 20 8"></polyline><line x1="16" y1="13" x2="8" y2="13"></line><line x1="16" y1="17" x2="8" y2="17"></line><polyline points="10 9 9 9 8 9"></polyline></svg>1025 Words</p>
<p><svg xmlns="http://www.w3.org/2000/svg" width="24" height="24" viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="2" stroke-linecap="round" stroke-linejoin="round" class="feather feather-file-text"><path d="M14 2H6a2 2 0 0 0-2 2v16a2 2 0 0 0 2 2h12a2 2 0 0 0 2-2V8z"></path><polyline points="14 2 14 8 20 8"></polyline><line x1="16" y1="13" x2="8" y2="13"></line><line x1="16" y1="17" x2="8" y2="17"></line><polyline points="10 9 9 9 8 9"></polyline></svg>1054 Words</p>


<p><svg xmlns="http://www.w3.org/2000/svg" width="24" height="24" viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="2" stroke-linecap="round" stroke-linejoin="round" class="feather feather-git-commit"><circle cx="12" cy="12" r="4"></circle><line x1="1.05" y1="12" x2="7" y2="12"></line><line x1="17.01" y1="12" x2="22.96" y2="12"></line></svg><a href="https://github.com/Skraelingjar/web/commit/98926e9cec2b5d34e83e7eb6fe2dfce2ca14ef88" target="_blank" rel="noopener">98926e9</a> @ 2019-04-04</p>
@@ -17,7 +17,7 @@
<pubDate>Wed, 03 Apr 2019 20:55:00 -0700</pubDate>

<guid>https://joshb.dev/blog/choosing-a-tech-stack-is-hard/</guid>
<description>When the time came to begin the software development cycle for pakpak I was faced with a a lot of choices. What do I use to bring our idea to life? These early decisions could shape the future of our product and needed to be made carefully. After some research and a lot of thinking, I came up with three requirements, our stack must:
<description>When the time came to begin the software development cycle for pakpak I was faced with a lot of choices. What do I use to bring our idea to life? These early decisions could shape the future of our product and needed to be made carefully. After some research and a lot of thinking, I came up with three requirements, our stack must:
Allow for rapid iteration Be easy to deploy Load quickly I spent a lot of time researching, browsing StackShare, and asking what others were using.</description>
</item>

@@ -17,7 +17,7 @@
<pubDate>Wed, 03 Apr 2019 20:55:00 -0700</pubDate>

<guid>https://joshb.dev/blog/choosing-a-tech-stack-is-hard/</guid>
<description>When the time came to begin the software development cycle for pakpak I was faced with a a lot of choices. What do I use to bring our idea to life? These early decisions could shape the future of our product and needed to be made carefully. After some research and a lot of thinking, I came up with three requirements, our stack must:
<description>When the time came to begin the software development cycle for pakpak I was faced with a lot of choices. What do I use to bring our idea to life? These early decisions could shape the future of our product and needed to be made carefully. After some research and a lot of thinking, I came up with three requirements, our stack must:
Allow for rapid iteration Be easy to deploy Load quickly I spent a lot of time researching, browsing StackShare, and asking what others were using.</description>
</item>

@@ -17,7 +17,7 @@
<pubDate>Wed, 03 Apr 2019 20:55:00 -0700</pubDate>

<guid>https://joshb.dev/blog/choosing-a-tech-stack-is-hard/</guid>
<description>When the time came to begin the software development cycle for pakpak I was faced with a a lot of choices. What do I use to bring our idea to life? These early decisions could shape the future of our product and needed to be made carefully. After some research and a lot of thinking, I came up with three requirements, our stack must:
<description>When the time came to begin the software development cycle for pakpak I was faced with a lot of choices. What do I use to bring our idea to life? These early decisions could shape the future of our product and needed to be made carefully. After some research and a lot of thinking, I came up with three requirements, our stack must:
Allow for rapid iteration Be easy to deploy Load quickly I spent a lot of time researching, browsing StackShare, and asking what others were using.</description>
</item>

@@ -17,7 +17,7 @@
<pubDate>Wed, 03 Apr 2019 20:55:00 -0700</pubDate>

<guid>https://joshb.dev/blog/choosing-a-tech-stack-is-hard/</guid>
<description>When the time came to begin the software development cycle for pakpak I was faced with a a lot of choices. What do I use to bring our idea to life? These early decisions could shape the future of our product and needed to be made carefully. After some research and a lot of thinking, I came up with three requirements, our stack must:
<description>When the time came to begin the software development cycle for pakpak I was faced with a lot of choices. What do I use to bring our idea to life? These early decisions could shape the future of our product and needed to be made carefully. After some research and a lot of thinking, I came up with three requirements, our stack must:
Allow for rapid iteration Be easy to deploy Load quickly I spent a lot of time researching, browsing StackShare, and asking what others were using.</description>
</item>

@@ -17,7 +17,7 @@
<pubDate>Wed, 03 Apr 2019 20:55:00 -0700</pubDate>

<guid>https://joshb.dev/blog/choosing-a-tech-stack-is-hard/</guid>
<description>When the time came to begin the software development cycle for pakpak I was faced with a a lot of choices. What do I use to bring our idea to life? These early decisions could shape the future of our product and needed to be made carefully. After some research and a lot of thinking, I came up with three requirements, our stack must:
<description>When the time came to begin the software development cycle for pakpak I was faced with a lot of choices. What do I use to bring our idea to life? These early decisions could shape the future of our product and needed to be made carefully. After some research and a lot of thinking, I came up with three requirements, our stack must:
Allow for rapid iteration Be easy to deploy Load quickly I spent a lot of time researching, browsing StackShare, and asking what others were using.</description>
</item>

@@ -61,13 +61,13 @@
</url>

<url>
<loc>https://joshb.dev/tags/development/</loc>
<loc>https://joshb.dev/categories/development/</loc>
<lastmod>2019-03-20T14:57:19-07:00</lastmod>
<priority>0</priority>
</url>

<url>
<loc>https://joshb.dev/categories/development/</loc>
<loc>https://joshb.dev/tags/development/</loc>
<lastmod>2019-03-20T14:57:19-07:00</lastmod>
<priority>0</priority>
</url>
@@ -157,13 +157,13 @@
</url>

<url>
<loc>https://joshb.dev/tags/research/</loc>
<loc>https://joshb.dev/categories/research/</loc>
<lastmod>2019-03-20T14:57:19-07:00</lastmod>
<priority>0</priority>
</url>

<url>
<loc>https://joshb.dev/categories/research/</loc>
<loc>https://joshb.dev/tags/research/</loc>
<lastmod>2019-03-20T14:57:19-07:00</lastmod>
<priority>0</priority>
</url>
@@ -181,13 +181,13 @@
</url>

<url>
<loc>https://joshb.dev/tags/software/</loc>
<loc>https://joshb.dev/categories/software/</loc>
<lastmod>2019-04-04T11:33:06-07:00</lastmod>
<priority>0</priority>
</url>

<url>
<loc>https://joshb.dev/categories/software/</loc>
<loc>https://joshb.dev/tags/software/</loc>
<lastmod>2019-04-04T11:33:06-07:00</lastmod>
<priority>0</priority>
</url>
@@ -17,7 +17,7 @@
<pubDate>Wed, 03 Apr 2019 20:55:00 -0700</pubDate>

<guid>https://joshb.dev/blog/choosing-a-tech-stack-is-hard/</guid>
<description>When the time came to begin the software development cycle for pakpak I was faced with a a lot of choices. What do I use to bring our idea to life? These early decisions could shape the future of our product and needed to be made carefully. After some research and a lot of thinking, I came up with three requirements, our stack must:
<description>When the time came to begin the software development cycle for pakpak I was faced with a lot of choices. What do I use to bring our idea to life? These early decisions could shape the future of our product and needed to be made carefully. After some research and a lot of thinking, I came up with three requirements, our stack must:
Allow for rapid iteration Be easy to deploy Load quickly I spent a lot of time researching, browsing StackShare, and asking what others were using.</description>
</item>

@@ -17,7 +17,7 @@
<pubDate>Wed, 03 Apr 2019 20:55:00 -0700</pubDate>

<guid>https://joshb.dev/blog/choosing-a-tech-stack-is-hard/</guid>
<description>When the time came to begin the software development cycle for pakpak I was faced with a a lot of choices. What do I use to bring our idea to life? These early decisions could shape the future of our product and needed to be made carefully. After some research and a lot of thinking, I came up with three requirements, our stack must:
<description>When the time came to begin the software development cycle for pakpak I was faced with a lot of choices. What do I use to bring our idea to life? These early decisions could shape the future of our product and needed to be made carefully. After some research and a lot of thinking, I came up with three requirements, our stack must:
Allow for rapid iteration Be easy to deploy Load quickly I spent a lot of time researching, browsing StackShare, and asking what others were using.</description>
</item>

Oops, something went wrong.

0 comments on commit 40a1ed5

Please sign in to comment.
You can’t perform that action at this time.