<?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>Forem: Goon Nguyen</title>
    <description>The latest articles on Forem by Goon Nguyen (@mrgoonie).</description>
    <link>https://forem.com/mrgoonie</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%2F314536%2F85a6950d-4771-46c7-a6c7-e31eaefb09ac.jpg</url>
      <title>Forem: Goon Nguyen</title>
      <link>https://forem.com/mrgoonie</link>
    </image>
    <atom:link rel="self" type="application/rss+xml" href="https://forem.com/feed/mrgoonie"/>
    <language>en</language>
    <item>
      <title>Introducing DigiCord: The Ultimate All-in-One AI Discord Bot</title>
      <dc:creator>Goon Nguyen</dc:creator>
      <pubDate>Sun, 28 Apr 2024 10:11:19 +0000</pubDate>
      <link>https://forem.com/mrgoonie/introducing-digicord-the-ultimate-all-in-one-ai-discord-bot-12l</link>
      <guid>https://forem.com/mrgoonie/introducing-digicord-the-ultimate-all-in-one-ai-discord-bot-12l</guid>
      <description>&lt;p&gt;Are you tired of juggling multiple AI tools and subscriptions? Do you want to experience the power of AI in a single, convenient platform? Look no further than DigiCord, the revolutionary AI Discord bot that's changing the game.&lt;/p&gt;

&lt;h3&gt;
  
  
  What is DigiCord?
&lt;/h3&gt;

&lt;p&gt;DigiCord is an all-in-one AI Discord bot that integrates over 40 Large Language Models (LLMs), including GPT-3.5, GPT-4, Claude, Gemini Pro 1.5, Meta Llama 3, Mistral, MythoMax, DataBrick, and many more. This means you can access a wide range of AI capabilities in a single bot, without the need for multiple subscriptions or platforms.&lt;/p&gt;

&lt;p&gt;&lt;a href="https://media.dev.to/cdn-cgi/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2Fruzf85usir52d56c0i5b.jpeg" class="article-body-image-wrapper"&gt;&lt;img src="https://media.dev.to/cdn-cgi/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2Fruzf85usir52d56c0i5b.jpeg" alt="DigiCord - Up to 50 different Large Language Models (LLM) from close to open source" width="800" height="600"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;h3&gt;
  
  
  How to Use DigiCord
&lt;/h3&gt;

&lt;p&gt;Using DigiCord is easy and intuitive. Simply tag the bot's name @JojoAI to start chatting. You can also use the following commands to customize your experience:&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;
&lt;code&gt;/ask&lt;/code&gt; to select a specific LLM or assign a custom role&lt;/li&gt;
&lt;li&gt;
&lt;code&gt;/prompt&lt;/code&gt; to input a long, complex prompt and customize further&lt;/li&gt;
&lt;li&gt;
&lt;code&gt;/vision&lt;/code&gt; to analyze images and generate code for UI designs&lt;/li&gt;
&lt;li&gt;
&lt;code&gt;/draw&lt;/code&gt; to create stunning art using Leonardo.AI&lt;/li&gt;
&lt;li&gt;
&lt;code&gt;/summarize&lt;/code&gt; to summarize content, web pages, or YouTube videos&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;And many more helpful commands.&lt;/p&gt;

&lt;p&gt;&lt;a href="https://media.dev.to/cdn-cgi/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2Fk53jxyuh211yup6wt2ws.jpeg" class="article-body-image-wrapper"&gt;&lt;img src="https://media.dev.to/cdn-cgi/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2Fk53jxyuh211yup6wt2ws.jpeg" alt="DigiCord - A bunch of helpful commands for your daily workflow" width="800" height="600"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;h3&gt;
  
  
  Why I Built DigiCord
&lt;/h3&gt;

&lt;p&gt;I built DigiCord to address the limitations and costs of existing AI tools. As an individual, I found the basic package of ChatGPT to be expensive, with limitations on requests and difficulty in coordinating with team members. With new AI models emerging all the time, it's not feasible to subscribe to each one individually. That's why I created DigiCord - to bring all these capabilities together in one convenient platform.&lt;/p&gt;

&lt;p&gt;&lt;a href="https://media.dev.to/cdn-cgi/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2F1vvi7cnz4fxl62giz3hx.jpeg" class="article-body-image-wrapper"&gt;&lt;img src="https://media.dev.to/cdn-cgi/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2F1vvi7cnz4fxl62giz3hx.jpeg" alt="DigiCord - The next level of teamwork collaboration" width="800" height="600"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;h3&gt;
  
  
  Benefits of DigiCord
&lt;/h3&gt;

&lt;p&gt;By using DigiCord, you can:&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;Save costs: Our company of 40 people reduced their costs to $20-$30 per month (instead of $200 for 10 ChatGPT accounts as before), and individual users can only spend around $5-10 USD/month.&lt;/li&gt;
&lt;li&gt;Improve collaboration: DigiCord integrates with other useful tools, making it easier to work with your team.&lt;/li&gt;
&lt;li&gt;Access a wide range of AI capabilities: With over 40 LLMs integrated, you can experiment with different models and use cases.&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;&lt;a href="https://media.dev.to/cdn-cgi/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2F4exxtyd3w4ny61yml0cz.jpeg" class="article-body-image-wrapper"&gt;&lt;img src="https://media.dev.to/cdn-cgi/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2F4exxtyd3w4ny61yml0cz.jpeg" alt="DigiCord - Only pay for what you actually used" width="800" height="600"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;h3&gt;
  
  
  Get Started with DigiCord
&lt;/h3&gt;

&lt;p&gt;Ready to try DigiCord? Follow these steps:&lt;/p&gt;

&lt;ol&gt;
&lt;li&gt;DM the bot: &lt;a href="https://zii.vn/3UXZU703"&gt;https://zii.vn/3UXZU703&lt;/a&gt;
&lt;/li&gt;
&lt;li&gt;Invite to your server: &lt;a href="https://zii.vn/HVGw3GqO"&gt;https://zii.vn/HVGw3GqO&lt;/a&gt;
&lt;/li&gt;
&lt;li&gt;Join our community server: &lt;a href="https://zii.vn/digicordserver"&gt;https://zii.vn/digicordserver&lt;/a&gt;
&lt;/li&gt;
&lt;/ol&gt;

&lt;p&gt;✨As a special offer, use the code &lt;strong&gt;"DIGICORDSOFTLAUNCH"&lt;/strong&gt; at LemonSqueezy checkout to receive 10% off your subscription.&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;We also offer "Free Trial" option so you can give it a try!&lt;/strong&gt;&lt;/p&gt;

&lt;p&gt;New users will receive &lt;strong&gt;$1 credits&lt;/strong&gt; (around 500 AI requests) for &lt;strong&gt;FREE TRIAL&lt;/strong&gt;. Don't miss out on this opportunity to experience the power of DigiCord for yourself.&lt;/p&gt;

&lt;p&gt;👉 Check out my website as well: &lt;a href="https://DigiCord.Site/?ref=devto"&gt;https://DigiCord.Site/?ref=devto&lt;/a&gt;&lt;/p&gt;

</description>
      <category>ai</category>
      <category>discord</category>
      <category>llm</category>
      <category>chatbot</category>
    </item>
    <item>
      <title>UX is becoming less important in the age of AI?</title>
      <dc:creator>Goon Nguyen</dc:creator>
      <pubDate>Wed, 24 Jan 2024 04:52:27 +0000</pubDate>
      <link>https://forem.com/mrgoonie/ux-is-becoming-less-important-in-the-age-of-ai-41n</link>
      <guid>https://forem.com/mrgoonie/ux-is-becoming-less-important-in-the-age-of-ai-41n</guid>
      <description>&lt;p&gt;&lt;strong&gt;The greatest invention of Sam Altman or OpenAI is not AI itself, but the natural conversational experience they created.&lt;/strong&gt;&lt;/p&gt;

&lt;p&gt;AI has been around for decades, and perhaps those who have been involved in the industry from the early days, when they first met ChatGPT, may have thought, “This is normal, I can do it too.” That’s right, what they couldn’t do was the idea of humans being able to talk to machines, just like the way humans talk to each other on the internet.&lt;/p&gt;

&lt;p&gt;Humans are social creatures, and language and communication are the keys that make us superior to all other species on Earth.&lt;/p&gt;

&lt;p&gt;To say this, you have to click your tongue, a simple-looking idea that is actually so amazing!&lt;/p&gt;

&lt;h2&gt;
  
  
  Will UX disappear?
&lt;/h2&gt;

&lt;p&gt;&lt;strong&gt;In the software industry, UI &amp;amp; UX are of paramount importance.&lt;/strong&gt;&lt;/p&gt;

&lt;p&gt;Humans love beauty, and a software with a beautiful UI (user interface) will easily win the favor of users. UI is in the “look” part, not the “communication” part, so UI will still be there.&lt;/p&gt;

&lt;p&gt;But UX is quite different. The role of UX emerges when users notice the difference between two apps that are equally beautiful, but one side is easy to use, and the other side is “some-kind-of-stupid”. UX shows the importance of communication between humans and software/computers. And it also makes some software developers stand out from the rest.&lt;/p&gt;

&lt;p&gt;&lt;a href="https://media.dev.to/cdn-cgi/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2F6vef1qkfwk30gwhqkhif.jpeg" class="article-body-image-wrapper"&gt;&lt;img src="https://media.dev.to/cdn-cgi/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2F6vef1qkfwk30gwhqkhif.jpeg" alt="AI impact UX design" width="720" height="420"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;But with the advent of AI, the way humans interact with computers will change a lot.&lt;/p&gt;

&lt;p&gt;Let’s try to answer this question: &lt;em&gt;&lt;strong&gt;“Why are CMS, CRM, CDP software, project management tools (todo, kanban, …) very useful but very difficult to introduce into businesses? Kind of like everyone sees it as important, the company that applies it successfully will see clear results, but to put it into the process requires a lot of effort from the leadership and cooperation from the departments.”&lt;/strong&gt;&lt;/em&gt;&lt;/p&gt;

&lt;h3&gt;
  
  
  Because they look complicated, right?
&lt;/h3&gt;

&lt;p&gt;For an accountant, a manager who often goes to the field (works outside the computer more than on the computer), or a business leader, opening an application with a row of columns, buttons above and below, pages this page that, groping, … wow, this is clearly a very hard job!&lt;br&gt;
Instead of doing those things themselves, they choose to ask someone more knowledgeable to query or perform the tasks they want.&lt;/p&gt;

&lt;p&gt;Now, try replacing the phrase &lt;strong&gt;“more knowledgeable person”&lt;/strong&gt; above with &lt;strong&gt;“AI”&lt;/strong&gt;.&lt;/p&gt;

&lt;h2&gt;
  
  
  Voilà!
&lt;/h2&gt;

&lt;ul&gt;
&lt;li&gt;“How many customers have birthdays this month? Send them a birthday promotion.”&lt;/li&gt;
&lt;li&gt;“What was the revenue for this month of last year?”
-“How are the business results of the new product line? Propose optimization?”&lt;/li&gt;
&lt;li&gt;“Remind customers to use vouchers that are about to expire!”&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;Even if automation is applied, AI can also proactively notify and propose to the relevant people.&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;All are wrapped in “conversational snippets” — query and command — much simpler! (and does not encounter the barriers of “emotion” and “transparency” compared to doing it with humans)&lt;/strong&gt;&lt;/p&gt;

&lt;h2&gt;
  
  
  In conclusion
&lt;/h2&gt;

&lt;p&gt;UI &amp;amp; UX are still there and play an important role in product design, AI can’t replace UX either, because UX is a job that requires human-centric empathy, humans don’t even understand humans, let alone machines, AI is still a long way from reaching the level of “empathy”. But “optimizing UX” will no longer be the top priority, and will be forced to give way to the new king named AI.&lt;/p&gt;

</description>
      <category>ai</category>
      <category>ui</category>
      <category>ux</category>
      <category>design</category>
    </item>
    <item>
      <title>Looking for useful AI products?</title>
      <dc:creator>Goon Nguyen</dc:creator>
      <pubDate>Tue, 10 Oct 2023 16:57:44 +0000</pubDate>
      <link>https://forem.com/mrgoonie/looking-for-useful-ai-products-4nap</link>
      <guid>https://forem.com/mrgoonie/looking-for-useful-ai-products-4nap</guid>
      <description>&lt;p&gt;We're living in the era of AI, hundreds of AI-powered products released every day, so I create a place to share and upvote for the most useful AI products, we don't have to dive into the AI sea anymore.&lt;/p&gt;

&lt;p&gt;&lt;a href="https://topranking.ai/?ref=devto"&gt;https://topranking.ai&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;&lt;a href="https://res.cloudinary.com/practicaldev/image/fetch/s--VmD_mA28--/c_limit%2Cf_auto%2Cfl_progressive%2Cq_auto%2Cw_800/https://dev-to-uploads.s3.amazonaws.com/uploads/articles/0zmgqy63tswr5lq8htw8.png" class="article-body-image-wrapper"&gt;&lt;img src="https://res.cloudinary.com/practicaldev/image/fetch/s--VmD_mA28--/c_limit%2Cf_auto%2Cfl_progressive%2Cq_auto%2Cw_800/https://dev-to-uploads.s3.amazonaws.com/uploads/articles/0zmgqy63tswr5lq8htw8.png" alt="topranking.ai" width="800" height="420"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;h3&gt;
  
  
  Let build this place together! Because, life is all about sharing, my friends.
&lt;/h3&gt;

&lt;p&gt;P/S: what do you think should be improved? 🤔&lt;/p&gt;

</description>
      <category>aiproduct</category>
      <category>toprankingai</category>
    </item>
    <item>
      <title>Speed test building Next.js T3 App with Github Actions, Circle CI, Vercel &amp; Diginext</title>
      <dc:creator>Goon Nguyen</dc:creator>
      <pubDate>Mon, 03 Jul 2023 06:14:20 +0000</pubDate>
      <link>https://forem.com/mrgoonie/speed-test-building-nextjs-t3-app-with-github-actions-circle-ci-vercel-diginext-473i</link>
      <guid>https://forem.com/mrgoonie/speed-test-building-nextjs-t3-app-with-github-actions-circle-ci-vercel-diginext-473i</guid>
      <description>&lt;p&gt;Since when I &lt;a href="https://dev.to/mrgoonie/i-turn-my-companys-pc-into-my-own-vercel-like-platform-351o"&gt;started building&lt;/a&gt; my own open-source cloud resouce platform - &lt;a href="https://github.com/digitopvn/diginext/"&gt;Diginext&lt;/a&gt;, although I had never done a benchmark, I kept thinking that I had built it for personal purposes only, to serve my teams and enhance their daily workflow. However, I must admit that I was not confident until today, the tests were supprising myself.&lt;/p&gt;

&lt;p&gt;&lt;a href="https://res.cloudinary.com/practicaldev/image/fetch/s--Vl8lKYYG--/c_limit%2Cf_auto%2Cfl_progressive%2Cq_auto%2Cw_800/https://dev-to-uploads.s3.amazonaws.com/uploads/articles/0smmbshizeqyoxnb5527.png" class="article-body-image-wrapper"&gt;&lt;img src="https://res.cloudinary.com/practicaldev/image/fetch/s--Vl8lKYYG--/c_limit%2Cf_auto%2Cfl_progressive%2Cq_auto%2Cw_800/https://dev-to-uploads.s3.amazonaws.com/uploads/articles/0smmbshizeqyoxnb5527.png" alt="whatever it takes" width="498" height="280"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;&lt;em&gt;(&lt;/em&gt;) If you wanna check if I made incorrect configurations, here is the source code: &lt;a href="https://github.com/digitopvn/t3-app-starter*"&gt;https://github.com/digitopvn/t3-app-starter*&lt;/a&gt;&lt;/p&gt;

&lt;h3&gt;
  
  
  &lt;strong&gt;Now, let’s get the party started!&lt;/strong&gt;
&lt;/h3&gt;

&lt;h2&gt;
  
  
  First time, with no cache:
&lt;/h2&gt;

&lt;h3&gt;
  
  
  1. Docker Engine on my Macbook M1 Pro
&lt;/h3&gt;

&lt;p&gt;Took &lt;strong&gt;4 mins and 33 secs&lt;/strong&gt; (~273 seconds)&lt;/p&gt;

&lt;p&gt;&lt;a href="https://res.cloudinary.com/practicaldev/image/fetch/s--3GNA6d_C--/c_limit%2Cf_auto%2Cfl_progressive%2Cq_auto%2Cw_800/https://dev-to-uploads.s3.amazonaws.com/uploads/articles/6lthkxbuhqia0y1yedhf.png" class="article-body-image-wrapper"&gt;&lt;img src="https://res.cloudinary.com/practicaldev/image/fetch/s--3GNA6d_C--/c_limit%2Cf_auto%2Cfl_progressive%2Cq_auto%2Cw_800/https://dev-to-uploads.s3.amazonaws.com/uploads/articles/6lthkxbuhqia0y1yedhf.png" alt="docker build speed" width="800" height="261"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;(with &lt;code&gt;docker system prune&lt;/code&gt; and &lt;code&gt;docker volume prune&lt;/code&gt; excecuted before running &lt;code&gt;docker buildx&lt;/code&gt;)&lt;/p&gt;

&lt;h3&gt;
  
  
  2. Github Actions
&lt;/h3&gt;

&lt;p&gt;Finished in &lt;strong&gt;3m 56s&lt;/strong&gt;&lt;/p&gt;

&lt;p&gt;&lt;a href="https://res.cloudinary.com/practicaldev/image/fetch/s--1qygXpif--/c_limit%2Cf_auto%2Cfl_progressive%2Cq_auto%2Cw_800/https://dev-to-uploads.s3.amazonaws.com/uploads/articles/07ju14tmp2x3sl6daegu.png" class="article-body-image-wrapper"&gt;&lt;img src="https://res.cloudinary.com/practicaldev/image/fetch/s--1qygXpif--/c_limit%2Cf_auto%2Cfl_progressive%2Cq_auto%2Cw_800/https://dev-to-uploads.s3.amazonaws.com/uploads/articles/07ju14tmp2x3sl6daegu.png" alt="Github Actions docker build" width="800" height="255"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;h3&gt;
  
  
  3. Circle CI
&lt;/h3&gt;

&lt;p&gt;They said they are nearly &lt;a href="https://circleci.com/circleci-versus-github-actions/"&gt;2x faster than Github Actions&lt;/a&gt;, let’s see…&lt;/p&gt;

&lt;p&gt;Huh?… &lt;strong&gt;5m 48s&lt;/strong&gt;&lt;/p&gt;

&lt;p&gt;&lt;a href="https://res.cloudinary.com/practicaldev/image/fetch/s--t_pkI26o--/c_limit%2Cf_auto%2Cfl_progressive%2Cq_auto%2Cw_800/https://dev-to-uploads.s3.amazonaws.com/uploads/articles/y9tum152v4h5lb25hbh9.png" class="article-body-image-wrapper"&gt;&lt;img src="https://res.cloudinary.com/practicaldev/image/fetch/s--t_pkI26o--/c_limit%2Cf_auto%2Cfl_progressive%2Cq_auto%2Cw_800/https://dev-to-uploads.s3.amazonaws.com/uploads/articles/y9tum152v4h5lb25hbh9.png" alt="CircleCI Docker Build Speed" width="800" height="341"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;…not like the advertisement.&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;
&lt;p&gt;&lt;a href="https://github.com/digitopvn/t3-app-starter/blob/circleci-project-setup/.circleci/config.yml"&gt;This&lt;/a&gt; is the &lt;code&gt;.circleci/config.yml&lt;/code&gt;&lt;br&gt;
&lt;/p&gt;
&lt;pre class="highlight yaml"&gt;&lt;code&gt;&lt;span class="na"&gt;version&lt;/span&gt;&lt;span class="pi"&gt;:&lt;/span&gt; &lt;span class="m"&gt;2.1&lt;/span&gt;

&lt;span class="na"&gt;jobs&lt;/span&gt;&lt;span class="pi"&gt;:&lt;/span&gt;
  &lt;span class="na"&gt;build-and-push&lt;/span&gt;&lt;span class="pi"&gt;:&lt;/span&gt;
    &lt;span class="na"&gt;docker&lt;/span&gt;&lt;span class="pi"&gt;:&lt;/span&gt;
      &lt;span class="pi"&gt;-&lt;/span&gt; &lt;span class="na"&gt;image&lt;/span&gt;&lt;span class="pi"&gt;:&lt;/span&gt; &lt;span class="s"&gt;cimg/base:stable&lt;/span&gt;
    &lt;span class="na"&gt;steps&lt;/span&gt;&lt;span class="pi"&gt;:&lt;/span&gt;
      &lt;span class="pi"&gt;-&lt;/span&gt; &lt;span class="na"&gt;setup_remote_docker&lt;/span&gt;&lt;span class="pi"&gt;:&lt;/span&gt;
          &lt;span class="na"&gt;version&lt;/span&gt;&lt;span class="pi"&gt;:&lt;/span&gt; &lt;span class="s"&gt;20.10.11&lt;/span&gt;
          &lt;span class="na"&gt;docker_layer_caching&lt;/span&gt;&lt;span class="pi"&gt;:&lt;/span&gt; &lt;span class="no"&gt;true&lt;/span&gt;
      &lt;span class="pi"&gt;-&lt;/span&gt; &lt;span class="s"&gt;checkout&lt;/span&gt;
      &lt;span class="pi"&gt;-&lt;/span&gt; &lt;span class="na"&gt;run&lt;/span&gt;&lt;span class="pi"&gt;:&lt;/span&gt; &lt;span class="s"&gt;docker login -u "$DOCKER_USERNAME" -p "$DOCKER_PASSWORD"&lt;/span&gt;
      &lt;span class="pi"&gt;-&lt;/span&gt; &lt;span class="na"&gt;run&lt;/span&gt;&lt;span class="pi"&gt;:&lt;/span&gt; &lt;span class="s"&gt;docker buildx build --push -t digitop/t3-app-starter:circleci-v1 .&lt;/span&gt;

&lt;span class="na"&gt;workflows&lt;/span&gt;&lt;span class="pi"&gt;:&lt;/span&gt;
  &lt;span class="na"&gt;version&lt;/span&gt;&lt;span class="pi"&gt;:&lt;/span&gt; &lt;span class="m"&gt;2&lt;/span&gt;
  &lt;span class="na"&gt;docker-build-push&lt;/span&gt;&lt;span class="pi"&gt;:&lt;/span&gt;
    &lt;span class="na"&gt;jobs&lt;/span&gt;&lt;span class="pi"&gt;:&lt;/span&gt;
      &lt;span class="pi"&gt;-&lt;/span&gt; &lt;span class="s"&gt;build-and-push&lt;/span&gt;
&lt;/code&gt;&lt;/pre&gt;

&lt;/li&gt;
&lt;/ul&gt;

&lt;h3&gt;
  
  
  4. Diginext
&lt;/h3&gt;

&lt;p&gt;Not so bad… &lt;strong&gt;3m 11s&lt;/strong&gt;! (even faster than my macbook)&lt;/p&gt;

&lt;p&gt;&lt;a href="https://res.cloudinary.com/practicaldev/image/fetch/s--eUdApo3g--/c_limit%2Cf_auto%2Cfl_progressive%2Cq_auto%2Cw_800/https://dev-to-uploads.s3.amazonaws.com/uploads/articles/d554c5vw52i6ooe279ep.png" class="article-body-image-wrapper"&gt;&lt;img src="https://res.cloudinary.com/practicaldev/image/fetch/s--eUdApo3g--/c_limit%2Cf_auto%2Cfl_progressive%2Cq_auto%2Cw_800/https://dev-to-uploads.s3.amazonaws.com/uploads/articles/d554c5vw52i6ooe279ep.png" alt="Diginext app build speed" width="800" height="120"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;Triggered by &lt;code&gt;dx build&lt;/code&gt; command.&lt;/p&gt;

&lt;h3&gt;
  
  
  5. Vercel
&lt;/h3&gt;

&lt;p&gt;Is the winner with… &lt;strong&gt;1m 3s&lt;/strong&gt; (incredible!)&lt;/p&gt;

&lt;p&gt;&lt;a href="https://res.cloudinary.com/practicaldev/image/fetch/s--jtS6-XG5--/c_limit%2Cf_auto%2Cfl_progressive%2Cq_auto%2Cw_800/https://dev-to-uploads.s3.amazonaws.com/uploads/articles/3x4h9kbqu7r6maelwbcg.png" class="article-body-image-wrapper"&gt;&lt;img src="https://res.cloudinary.com/practicaldev/image/fetch/s--jtS6-XG5--/c_limit%2Cf_auto%2Cfl_progressive%2Cq_auto%2Cw_800/https://dev-to-uploads.s3.amazonaws.com/uploads/articles/3x4h9kbqu7r6maelwbcg.png" alt="Vercel app build speed" width="800" height="475"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;I guess because &lt;strong&gt;Vercel&lt;/strong&gt; platform doesn’t have to spin up a Docker container, they just built the Next.js app natively, that’s why it didn’t take a lot of time for Docker cold start.&lt;/p&gt;

&lt;h4&gt;
  
  
  &lt;strong&gt;Alright, let’s do another round!&lt;/strong&gt;
&lt;/h4&gt;

&lt;h2&gt;
  
  
  Second build, cached!
&lt;/h2&gt;

&lt;p&gt;Notes that I changed nothing, just built them again.&lt;/p&gt;

&lt;h3&gt;
  
  
  1. My macbook M1 Pro
&lt;/h3&gt;

&lt;p&gt;Great! when the cache hit, it only took &lt;strong&gt;39 seconds&lt;/strong&gt;&lt;/p&gt;

&lt;p&gt;&lt;a href="https://res.cloudinary.com/practicaldev/image/fetch/s--g1-zwy0u--/c_limit%2Cf_auto%2Cfl_progressive%2Cq_auto%2Cw_800/https://dev-to-uploads.s3.amazonaws.com/uploads/articles/qd9e8a7ch45w84xfaf5f.png" class="article-body-image-wrapper"&gt;&lt;img src="https://res.cloudinary.com/practicaldev/image/fetch/s--g1-zwy0u--/c_limit%2Cf_auto%2Cfl_progressive%2Cq_auto%2Cw_800/https://dev-to-uploads.s3.amazonaws.com/uploads/articles/qd9e8a7ch45w84xfaf5f.png" alt="Docker build speed with cache" width="800" height="404"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;h3&gt;
  
  
  2. Github Actions
&lt;/h3&gt;

&lt;p&gt;Wait… &lt;strong&gt;4m 10s&lt;/strong&gt; ?&lt;/p&gt;

&lt;p&gt;&lt;em&gt;(WTF? it’s even slower than the first run?)&lt;/em&gt;&lt;/p&gt;

&lt;p&gt;&lt;a href="https://res.cloudinary.com/practicaldev/image/fetch/s--sG5ciFJr--/c_limit%2Cf_auto%2Cfl_progressive%2Cq_auto%2Cw_800/https://dev-to-uploads.s3.amazonaws.com/uploads/articles/46tqkpv55fv628vb1msk.png" class="article-body-image-wrapper"&gt;&lt;img src="https://res.cloudinary.com/practicaldev/image/fetch/s--sG5ciFJr--/c_limit%2Cf_auto%2Cfl_progressive%2Cq_auto%2Cw_800/https://dev-to-uploads.s3.amazonaws.com/uploads/articles/46tqkpv55fv628vb1msk.png" alt="Github Actions Docker build speed with cache" width="800" height="279"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;I followed this guide: &lt;a href="https://docs.docker.com/build/ci/github-actions/cache/"&gt;https://docs.docker.com/build/ci/github-actions/cache/&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;I tried again a few time but sometime it was fast (~1min), sometime it was not (&amp;gt;3mins). It seems like the cache didn’t work or the workflows are just not stable. Not sure why.&lt;/p&gt;

&lt;p&gt;&lt;a href="https://res.cloudinary.com/practicaldev/image/fetch/s--QZ_jpDNZ--/c_limit%2Cf_auto%2Cfl_progressive%2Cq_auto%2Cw_800/https://dev-to-uploads.s3.amazonaws.com/uploads/articles/ceidjih87lmcfu1k1p1h.png" class="article-body-image-wrapper"&gt;&lt;img src="https://res.cloudinary.com/practicaldev/image/fetch/s--QZ_jpDNZ--/c_limit%2Cf_auto%2Cfl_progressive%2Cq_auto%2Cw_800/https://dev-to-uploads.s3.amazonaws.com/uploads/articles/ceidjih87lmcfu1k1p1h.png" alt="Github Actions Docker build speed with cache multiple tries" width="800" height="457"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;h3&gt;
  
  
  3. Circle CI
&lt;/h3&gt;

&lt;p&gt;Well, about &lt;strong&gt;2x faster&lt;/strong&gt; than the first run, completed in &lt;strong&gt;2m 40s&lt;/strong&gt;&lt;/p&gt;

&lt;p&gt;&lt;a href="https://res.cloudinary.com/practicaldev/image/fetch/s--oBe7UY-k--/c_limit%2Cf_auto%2Cfl_progressive%2Cq_auto%2Cw_800/https://dev-to-uploads.s3.amazonaws.com/uploads/articles/xep7er1dkl0aaccfog0g.png" class="article-body-image-wrapper"&gt;&lt;img src="https://res.cloudinary.com/practicaldev/image/fetch/s--oBe7UY-k--/c_limit%2Cf_auto%2Cfl_progressive%2Cq_auto%2Cw_800/https://dev-to-uploads.s3.amazonaws.com/uploads/articles/xep7er1dkl0aaccfog0g.png" alt="Circle CI Docker build speed with cache" width="800" height="286"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;h3&gt;
  
  
  5. Vercel
&lt;/h3&gt;

&lt;p&gt;Again, very impressive: &lt;strong&gt;38 seconds&lt;/strong&gt; (~40% faster than the first run)&lt;/p&gt;

&lt;p&gt;&lt;a href="https://res.cloudinary.com/practicaldev/image/fetch/s--0o7mzhbz--/c_limit%2Cf_auto%2Cfl_progressive%2Cq_auto%2Cw_800/https://dev-to-uploads.s3.amazonaws.com/uploads/articles/6qp6wubzv814n0937bng.png" class="article-body-image-wrapper"&gt;&lt;img src="https://res.cloudinary.com/practicaldev/image/fetch/s--0o7mzhbz--/c_limit%2Cf_auto%2Cfl_progressive%2Cq_auto%2Cw_800/https://dev-to-uploads.s3.amazonaws.com/uploads/articles/6qp6wubzv814n0937bng.png" alt="Vercel app build speed with cache" width="800" height="278"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;h3&gt;
  
  
  4. Diginext
&lt;/h3&gt;

&lt;p&gt;Woohoo… &lt;strong&gt;21 seconds&lt;/strong&gt;! When the cache hit, Diginext is the winner with &lt;strong&gt;~90% faster&lt;/strong&gt; than the first run.&lt;/p&gt;

&lt;p&gt;&lt;a href="https://res.cloudinary.com/practicaldev/image/fetch/s--wRnu1fus--/c_limit%2Cf_auto%2Cfl_progressive%2Cq_auto%2Cw_800/https://dev-to-uploads.s3.amazonaws.com/uploads/articles/w96n41v38wfcg8u8ny6q.png" class="article-body-image-wrapper"&gt;&lt;img src="https://res.cloudinary.com/practicaldev/image/fetch/s--wRnu1fus--/c_limit%2Cf_auto%2Cfl_progressive%2Cq_auto%2Cw_800/https://dev-to-uploads.s3.amazonaws.com/uploads/articles/w96n41v38wfcg8u8ny6q.png" alt="Diginext app build with cache" width="800" height="120"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;This is so surprising… even with me, its creator.&lt;/p&gt;

&lt;h2&gt;
  
  
  Summary
&lt;/h2&gt;

&lt;p&gt;&lt;strong&gt;GitHub Actions&lt;/strong&gt; and &lt;strong&gt;Circle CI&lt;/strong&gt; were originally designed for purposes other than building apps. Considering their primary functions, it's understandable that the current build speed is deemed acceptable.&lt;/p&gt;

&lt;p&gt;On the other hand, the immensely popular Vercel is gaining significant traction. As a frontend cloud platform, it supports a wide range of the &lt;a href="https://vercel.com/docs/frameworks"&gt;most popular frontend frameworks&lt;/a&gt;, and there's a good chance they will expand their support to include backend frameworks in the future.&lt;/p&gt;

&lt;p&gt;In contrast, &lt;a href="https://github.com/digitopvn/diginext/"&gt;Diginext&lt;/a&gt; is an open-source cloud platform that caters to any types of applications. Its philosophy is encapsulated in the motto, &lt;strong&gt;&lt;em&gt;“if it can run on your computer, it can run on Diginext”&lt;/em&gt;&lt;/strong&gt;, and the platform's mission revolves around &lt;strong&gt;&lt;em&gt;“making coding great again”&lt;/em&gt;&lt;/strong&gt; by simplifying app deployment and cloud resource management.&lt;/p&gt;

&lt;p&gt;I appreciate the boost in my confidence as these tests have helped me reconsider the value of &lt;a href="https://github.com/digitopvn/diginext/"&gt;Diginext&lt;/a&gt;. While it may be deemed unacceptable to compare it directly with renowned platforms like Vercel, it's encouraging to think that if it proves beneficial for my teams, it could potentially benefit the wider developer community as well.&lt;/p&gt;

&lt;blockquote&gt;
&lt;p&gt;&lt;strong&gt;&lt;u&gt;Update:&lt;/u&gt;&lt;/strong&gt; As I pen this article, I observe that &lt;a href="https://render.com/"&gt;Render&lt;/a&gt; and &lt;a href="https://railway.app/"&gt;Railway&lt;/a&gt; are currently making strides towards the same objectives as Diginext. Witnessing their well-established services and robust financial backing does dampen my spirits slightly. However, I refuse to give up. I firmly believe that with the advantages of an open-source platform, &lt;a href="https://github.com/digitopvn/diginext/"&gt;Diginext&lt;/a&gt; can deliver value to the developer community, particularly to those of us who are &lt;a href="https://dev.to/mrgoonie/kubernetes-for-the-poor-2ne"&gt;financially challenged— much like myself&lt;/a&gt;, haha.&lt;/p&gt;
&lt;/blockquote&gt;

&lt;p&gt;&lt;a href="https://res.cloudinary.com/practicaldev/image/fetch/s--swpz-CHn--/c_limit%2Cf_auto%2Cfl_progressive%2Cq_auto%2Cw_800/https://dev-to-uploads.s3.amazonaws.com/uploads/articles/ofqohnv2ie42qeggg42q.png" class="article-body-image-wrapper"&gt;&lt;img src="https://res.cloudinary.com/practicaldev/image/fetch/s--swpz-CHn--/c_limit%2Cf_auto%2Cfl_progressive%2Cq_auto%2Cw_800/https://dev-to-uploads.s3.amazonaws.com/uploads/articles/ofqohnv2ie42qeggg42q.png" alt="I will keep fighting" width="800" height="566"&gt;&lt;/a&gt;&lt;/p&gt;

</description>
      <category>diginext</category>
      <category>performance</category>
      <category>webdev</category>
      <category>opensource</category>
    </item>
    <item>
      <title>“GitDevSecOps”</title>
      <dc:creator>Goon Nguyen</dc:creator>
      <pubDate>Fri, 23 Jun 2023 03:42:48 +0000</pubDate>
      <link>https://forem.com/mrgoonie/gitdevsecops-49gp</link>
      <guid>https://forem.com/mrgoonie/gitdevsecops-49gp</guid>
      <description>&lt;p&gt;You probably heard &lt;strong&gt;DevOps&lt;/strong&gt;, &lt;strong&gt;GitOps&lt;/strong&gt; and even &lt;strong&gt;GitSecOps&lt;/strong&gt;. If not:&lt;/p&gt;

&lt;h2&gt;
  
  
  DevOps
&lt;/h2&gt;

&lt;p&gt;&lt;a href="https://media.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2Fjyce6gaeqi3qs9mch3em.png" class="article-body-image-wrapper"&gt;&lt;img src="https://media.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2Fjyce6gaeqi3qs9mch3em.png" alt="DevOps"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;DevOps is a software development approach that emphasizes collaboration and integration between software development (Dev) and IT operations (Ops). It aims to streamline the software delivery process by automating and improving communication, coordination, and efficiency among development teams, operations teams, and other stakeholders. DevOps practices involve continuous integration, continuous delivery/deployment, infrastructure automation, and monitoring, enabling faster and more reliable software releases.&lt;/p&gt;

&lt;h2&gt;
  
  
  GitOps
&lt;/h2&gt;

&lt;p&gt;&lt;a href="https://media.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2F9wok4d61z6u3ccxsxg68.png" class="article-body-image-wrapper"&gt;&lt;img src="https://media.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2F9wok4d61z6u3ccxsxg68.png" alt="GitOps"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;GitOps is an operational framework that leverages the Git version control system to manage and automate the deployment and operation of infrastructure and applications. It promotes the idea of declaring desired states for infrastructure and applications in Git repositories, and using Git workflows for managing changes and updates. With GitOps, the entire system's configuration and deployment details are versioned, auditable, and reproducible, enabling easy collaboration and traceability.&lt;/p&gt;

&lt;h2&gt;
  
  
  GitSecOps
&lt;/h2&gt;

&lt;p&gt;GitSecOps, on the other hand, extends the GitOps principles to incorporate security practices into the software development and deployment lifecycle. It emphasizes integrating security into the GitOps workflows, ensuring that security controls and best practices are applied throughout the software development process. GitSecOps involves implementing security checks, vulnerability scanning, code analysis, and access controls as part of the GitOps pipeline to maintain a secure and compliant software environment.&lt;/p&gt;

&lt;h2&gt;
  
  
  Why is one or another?
&lt;/h2&gt;

&lt;p&gt;&lt;a href="https://media.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2Flfaeq5f9ve05drmpoit8.png" class="article-body-image-wrapper"&gt;&lt;img src="https://media.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2Flfaeq5f9ve05drmpoit8.png" alt="GitSecOps"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;Choosing one approach over another depends on the specific needs and goals of an organization. DevOps is a broad methodology that focuses on collaboration and automation between development and operations teams. GitOps extends DevOps by using Git for managing infrastructure and application configurations. GitSecOps further enhances DevOps by integrating security practices into the development and deployment process. The choice between these approaches may depend on factors such as the organization's size, existing infrastructure, security requirements, and the level of automation desired.&lt;/p&gt;

&lt;h2&gt;
  
  
  "Git-Dev-Sec-Ops"
&lt;/h2&gt;

&lt;p&gt;By taking the git repository as the source of truth, it is possible to enhance collaboration, transparency, and traceability across development, operations, and security teams. &lt;/p&gt;

&lt;p&gt;This approach can help reduce errors, improve delivery times, and increase the overall quality of the software being produced. Additionally, actively deploying software can help identify and address issues more quickly, leading to a more agile and responsive development process. In the future, we can expect to see more organizations adopting Git-Dev-Sec-Ops methodologies as they strive to develop and deliver software faster and more securely.&lt;/p&gt;

&lt;p&gt;While there is no such thing as a "one-size-fits-all" solution, implementing all of these methodologies requires a lot of effort. However, it is definitely worth it.&lt;/p&gt;

&lt;h2&gt;
  
  
  Automated Deployment &amp;amp; Active Deployment
&lt;/h2&gt;

&lt;p&gt;&lt;a href="https://media.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2Fs9y9zopfi521nlyeutl5.png" class="article-body-image-wrapper"&gt;&lt;img src="https://media.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2Fs9y9zopfi521nlyeutl5.png" alt="Automated Deployment"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;Automated Deployment&lt;/strong&gt; is the process of automating the deployment of software to production or other environments. It involves using tools and processes to automate the building, testing, and deployment of code, which can help reduce errors and improve the speed and reliability of software delivery. In practice, this can mean using tools like Jenkins, Travis CI, and CircleCI to automatically build and deploy code to production environments.&lt;/p&gt;

&lt;p&gt;On the other hand, &lt;strong&gt;Active Deployment&lt;/strong&gt; is the practice of continuously deploying code to production or other environments as soon as it is ready, and manually by the developers without relying on the CI/CD process based on the git branches or webhook events. &lt;strong&gt;Active deployment&lt;/strong&gt; can help identify and address issues more quickly, more proactive but still maintaining automated process, leading to a more agile and responsive development process.&lt;/p&gt;

&lt;p&gt;&lt;a href="https://media.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2F37cbr6tggv7f9m121f7s.png" class="article-body-image-wrapper"&gt;&lt;img src="https://media.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2F37cbr6tggv7f9m121f7s.png" alt="Active Deployment"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;Both &lt;strong&gt;automated deployment&lt;/strong&gt; and &lt;strong&gt;active deployment&lt;/strong&gt; are closely related to the &lt;strong&gt;"Git-Dev-Sec-Ops"&lt;/strong&gt; methodology. By using Git as the source of truth for infrastructure and application configurations, teams can more easily collaborate and automate the deployment process. Automated deployment can help streamline the software delivery process and ensure that code is deployed consistently across environments. Active deployment can help teams respond more quickly to changes and deploy software more frequently, which is a key aspect of the DevOps philosophy.&lt;/p&gt;

&lt;p&gt;Overall, the combination of automated deployment and active deployment can help teams deliver software faster, with fewer errors and greater consistency. This can lead to a more efficient and effective software development process, and ultimately help organizations achieve their business goals. &lt;/p&gt;

&lt;p&gt;Both of these processes are built-in inside…&lt;/p&gt;

&lt;h2&gt;
  
  
  Diginext
&lt;/h2&gt;

&lt;p&gt;&lt;a href="https://media.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2Faiofaasbe0npj1gbwrri.png" class="article-body-image-wrapper"&gt;&lt;img src="https://media.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2Faiofaasbe0npj1gbwrri.png" alt="Diginext"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;is aiming to take care of the &lt;strong&gt;“Git-Dev-Sec-Ops”&lt;/strong&gt; implementation at the begining of time, we all know there is no such thing as &lt;em&gt;“one-size-fit-all”&lt;/em&gt;, but at least we can see how &lt;strong&gt;Diginext&lt;/strong&gt; team put their effort to reach, as a &lt;strong&gt;Developer-Focused platform&lt;/strong&gt;, multiple teams can easily work together by using it to manage cloud resources &amp;amp; deploy apps just in one place. It also help to improve the consistency of development process and operation process.&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;Website: &lt;a href="https://diginext.site" rel="noopener noreferrer"&gt;https://diginext.site&lt;/a&gt;
&lt;/li&gt;
&lt;li&gt;Github: &lt;a href="https://github.com/digitopvn/diginext/" rel="noopener noreferrer"&gt;https://github.com/digitopvn/diginext/&lt;/a&gt;
&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;&lt;em&gt;P/S: The thing I like the most of &lt;strong&gt;Diginext&lt;/strong&gt; is it's utilizing Kubernetes under the hood, and it overcome K8S complexity by stripping K8S away from the developers!&lt;/em&gt;&lt;/p&gt;

&lt;h2&gt;
  
  
  Other blogs
&lt;/h2&gt;

&lt;ul&gt;
&lt;li&gt;&lt;a href="https://dev.to/mrgoonie/i-turn-my-companys-pc-into-my-own-vercel-like-platform-351o"&gt;https://dev.to/mrgoonie/i-turn-my-companys-pc-into-my-own-vercel-like-platform-351o&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;&lt;a href="https://dev.to/mrgoonie/kubernetes-for-the-poor-2ne"&gt;https://dev.to/mrgoonie/kubernetes-for-the-poor-2ne&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;&lt;a href="https://dev.to/mrgoonie/developer-first-platforms-overcoming-k8s-complexity-1lf9"&gt;https://dev.to/mrgoonie/developer-first-platforms-overcoming-k8s-complexity-1lf9&lt;/a&gt;&lt;/li&gt;
&lt;/ul&gt;

</description>
      <category>devops</category>
      <category>gitops</category>
      <category>kubernetes</category>
      <category>diginext</category>
    </item>
    <item>
      <title>Developer-First Platforms - Overcoming K8S Complexity</title>
      <dc:creator>Goon Nguyen</dc:creator>
      <pubDate>Thu, 15 Jun 2023 12:36:21 +0000</pubDate>
      <link>https://forem.com/mrgoonie/developer-first-platforms-overcoming-k8s-complexity-1lf9</link>
      <guid>https://forem.com/mrgoonie/developer-first-platforms-overcoming-k8s-complexity-1lf9</guid>
      <description>&lt;p&gt;As cloud native development continues to evolve, Kubernetes has emerged as the go-to standard for organizations. However, it's important to note that Kubernetes is just the common orchestration framework for now. Many leaders in cloud native development have confirmed that the true challenges lie not in Kubernetes itself, but in the complexities of linking all the components together and making everything work seamlessly.&lt;/p&gt;

&lt;p&gt;Against the backdrop of Kubernetes as the developer-first standard, organizations increasingly seek a developer platform concept and platform engineering as the Holy Grail for making the cloud native journey smoother for developers at every level of experience. &lt;/p&gt;

&lt;p&gt;While there is no tried-and-true developer-focused Kubernetes platform (yet), this is also the beauty of the whole idea. The tooling landscape is vast, with organizations selecting what works best for their needs to put together their own developer platforms. However, this can also lead to choice paralysis and false starts, negating the speed benefits that going cloud native was meant to introduce.&lt;/p&gt;

&lt;p&gt;With this in mind, let’s look at &lt;strong&gt;why creating a developer-focused Kubernetes platform&lt;/strong&gt; makes sense and then explore what components you need to build it.&lt;/p&gt;

&lt;p&gt;&lt;a href="https://res.cloudinary.com/practicaldev/image/fetch/s--Ohuauq1Z--/c_limit%2Cf_auto%2Cfl_progressive%2Cq_auto%2Cw_800/https://dev-to-uploads.s3.amazonaws.com/uploads/articles/3663gc1uhvi2e80bok32.png" class="article-body-image-wrapper"&gt;&lt;img src="https://res.cloudinary.com/practicaldev/image/fetch/s--Ohuauq1Z--/c_limit%2Cf_auto%2Cfl_progressive%2Cq_auto%2Cw_800/https://dev-to-uploads.s3.amazonaws.com/uploads/articles/3663gc1uhvi2e80bok32.png" alt="kubernetes complexity" width="752" height="423"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;h2&gt;
  
  
  &lt;strong&gt;Developer-First Platforms: Overcoming K8s Complexity&lt;/strong&gt;
&lt;/h2&gt;

&lt;p&gt;No one denies that the cloud native paradigm introduces new complexity into the development process. The silos of monolithic development are breaking down, and the linear workflow of coding and handing off to someone else is shifting to a decentralized microservices architecture. This shift brings new challenges, such as different dependencies and the shift-left approach of &lt;em&gt;"you build it, you run it"&lt;/em&gt; that has accompanied the cloud native revolution.&lt;/p&gt;

&lt;p&gt;But how much depth of knowledge about Kubernetes does a developer really need? Should the developer be responsible for the full software life cycle, or just understand critical aspects of it to facilitate faster delivery and feedback loops?&lt;/p&gt;

&lt;p&gt;These questions form the foundation of the discussion on developer platforms, which have been the subject of much debate in recent months. While these platforms aim to eliminate frustration, improve productivity, or standardize workflows, one takeaway from the development community (and their colleagues in &lt;a href="https://roadmap.sh/devops"&gt;DevOps&lt;/a&gt; and platform engineering) is that a developer-first platform should reduce complexity through standardization, yet still accommodate exceptions.&lt;/p&gt;

&lt;p&gt;&lt;a href="https://res.cloudinary.com/practicaldev/image/fetch/s--P-QMtQYF--/c_limit%2Cf_auto%2Cfl_progressive%2Cq_auto%2Cw_800/https://dev-to-uploads.s3.amazonaws.com/uploads/articles/r46ab0ehw0bpldqbf78a.png" class="article-body-image-wrapper"&gt;&lt;img src="https://res.cloudinary.com/practicaldev/image/fetch/s--P-QMtQYF--/c_limit%2Cf_auto%2Cfl_progressive%2Cq_auto%2Cw_800/https://dev-to-uploads.s3.amazonaws.com/uploads/articles/r46ab0ehw0bpldqbf78a.png" alt="developer-focused platforms" width="608" height="208"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;h2&gt;
  
  
  *&lt;strong&gt;&lt;em&gt;Developer-Focused Kubernetes Platform&lt;/em&gt;&lt;/strong&gt;*
&lt;/h2&gt;

&lt;p&gt;There is no &lt;strong&gt;one-size-fits-all developer platform&lt;/strong&gt;, making room for paving a path that achieves exactly what an individual organization needs for its developers. What do developers need to know to ship software safely, and how will a platform get them there?&lt;/p&gt;

&lt;p&gt;Some key considerations for what development teams need from an efficient developer-focused Kubernetes platform include:&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;
&lt;strong&gt;Support for developer self-service and visibility.&lt;/strong&gt; 
Create a baseline for the necessary tools and required visibility to perform the job. Build in flexibility to ensure that no one is locked into a specific approach. A self-service baseline allows everyone to work from the same set of standards independently. This makes it easier to onboard new developers quickly, which facilitates reliable and efficient production.&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;Make it simple.&lt;/strong&gt; 
Developers should have an understanding of Kubernetes, but only to the extent that it helps them ship software and receive critical feedback faster. Simplify and clarify their work by providing them with enough capabilities to work quickly without worrying about secondary considerations, such as infrastructure and security, which are important but not their primary focus.&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;Unleash the power of DevOps/PlatformOps.&lt;/strong&gt; 
DevOps, PlatformOps, and Site Reliability Engineering (SRE) teams are more than just firefighters and first-line support. By creating a developer-focused self-service platform, these teams can focus on strategic projects while also supporting continuous improvement.&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;Centralize key data.&lt;/strong&gt; 
Teams require real-time data to gain insight into what is working and what isn't. Whether measuring performance or tracking compliance, a centralized platform allows for the collection of operational and resource data.&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;Focus on faster feedback.&lt;/strong&gt; 
The current macroeconomic environment highlights the need for faster and more efficient processes. A reliable developer platform should provide rapid feedback to avoid delays caused by waiting for builds to finish.&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;Facilitate the developer experience.&lt;/strong&gt; 
Anything that can reduce cognitive load and keep developers focused on their core tasks is a good investment, especially when market conditions are challenging.&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;While all of this provides background and reasoning for why a developer-focused Kubernetes platform makes sense&lt;/p&gt;

&lt;h3&gt;
  
  
  And that’s the objectives of building…
&lt;/h3&gt;

&lt;h2&gt;
  
  
  &lt;strong&gt;Diginext&lt;/strong&gt;
&lt;/h2&gt;

&lt;p&gt;&lt;strong&gt;Diginext&lt;/strong&gt; is creating an environment that makes it easy for developers to build, test, and deploy software quickly and efficiently. It’s also a place where you can manage and monitor all your cloud resources.&lt;/p&gt;

&lt;p&gt;&lt;a href="https://res.cloudinary.com/practicaldev/image/fetch/s--M7LwSdpB--/c_limit%2Cf_auto%2Cfl_progressive%2Cq_auto%2Cw_800/https://dev-to-uploads.s3.amazonaws.com/uploads/articles/5clboj08n2is923kb3c4.png" class="article-body-image-wrapper"&gt;&lt;img src="https://res.cloudinary.com/practicaldev/image/fetch/s--M7LwSdpB--/c_limit%2Cf_auto%2Cfl_progressive%2Cq_auto%2Cw_800/https://dev-to-uploads.s3.amazonaws.com/uploads/articles/5clboj08n2is923kb3c4.png" alt="Image description" width="800" height="435"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;Learn more about &lt;strong&gt;Diginext&lt;/strong&gt;: &lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;Website: &lt;a href="https://diginext.site"&gt;https://diginext.site&lt;/a&gt;
&lt;/li&gt;
&lt;li&gt;Github: &lt;a href="https://github.com/digitopvn/diginext"&gt;https://github.com/digitopvn/diginext&lt;/a&gt;
&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;Thanks for reading!&lt;/p&gt;

</description>
      <category>kubernetes</category>
      <category>devops</category>
      <category>dx</category>
      <category>diginext</category>
    </item>
    <item>
      <title>Kubernetes for the poor</title>
      <dc:creator>Goon Nguyen</dc:creator>
      <pubDate>Wed, 14 Jun 2023 14:20:11 +0000</pubDate>
      <link>https://forem.com/mrgoonie/kubernetes-for-the-poor-2ne</link>
      <guid>https://forem.com/mrgoonie/kubernetes-for-the-poor-2ne</guid>
      <description>&lt;p&gt;Kubernetes is great, since the last few years, it has proved that it is the best container orchestration software on the market.&lt;/p&gt;

&lt;p&gt;However, there is 2 problems, though: &lt;/p&gt;

&lt;h3&gt;
  
  
  1. It is difficult to learn (and pronouce, lol)
&lt;/h3&gt;

&lt;p&gt;Successfully managing Kubernetes clusters requires a deep understanding of so many concepts, definitions, and practices involved. With so much to consider, it can be difficult for developers to know how to deploy apps in the most effective way.&lt;/p&gt;

&lt;p&gt;To deploy apps on Kubernetes you will need a CI/CD process, so you have to learn a little bit about building container images, pushing it to the container registry, telling the cluster to pull &amp;amp; run a container, monitoring the logs,…&lt;/p&gt;

&lt;p&gt;&lt;a href="https://media.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2Fpkhcgbbdch5cn0mpt9p0.png" class="article-body-image-wrapper"&gt;&lt;img src="https://media.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2Fpkhcgbbdch5cn0mpt9p0.png" alt="Kubernetes is hard"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;h3&gt;
  
  
  2. It’s not cheap
&lt;/h3&gt;

&lt;p&gt;Google Cloud, AWS, Azure,… they are all providing well managed Kubernetes engine service. And &lt;strong&gt;they are not cheap&lt;/strong&gt;, you will be charged for the control plan, and also for the compute engine usage for each nodes of a cluster separately. (Not counting other network &amp;amp; storage costs)&lt;/p&gt;

&lt;p&gt;If you're thinking about running your own managed Kubernetes cluster on your infrastructure, then you will back to deal with the first problem - Kubernetes complexity.&lt;/p&gt;

&lt;p&gt;But that’s not it, if you don’t monitor your workloads well, such as &lt;strong&gt;control, and analyze your resource usage, you may end up having to pay huge Kubernetes bills at the end of the month.&lt;/strong&gt;&lt;/p&gt;

&lt;p&gt;&lt;a href="https://media.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2Fuknikzy8pqgyeo4at4x0.png" class="article-body-image-wrapper"&gt;&lt;img src="https://media.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2Fuknikzy8pqgyeo4at4x0.png" alt="Kubernetes is expensive"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;Another issue is deployment, to deploy on K8S, you need to go through many steps as I mentioned earlier in the (1) section, or you can use CI/CD services like Github Actions or Bitbucket Pipeline to automate the tasks.&lt;/p&gt;

&lt;p&gt;That brings you to find the DevOps engineers for doing such a job. And trust me, &lt;strong&gt;human resources are much expensive than any infrastructure resources.&lt;/strong&gt;&lt;/p&gt;

&lt;p&gt;Additionally, CI/CD services are not free. At first, you might think a thousand build minutes per month is a large number and that you would never reach it. However, in reality, it often ends up being a much higher number.&lt;/p&gt;

&lt;p&gt;&lt;em&gt;(Just do a quick math: if you have four people working on a project, and each of them builds three times a day on average, and each build takes three minutes, by the end of the month you will have spent 1080 minutes on builds: 4 x 3 x 3 x 30 = 1080 minutes, see?)&lt;/em&gt;&lt;/p&gt;

&lt;p&gt;&lt;em&gt;Note that you will likely have more than one project per month, and not all project builds will take less than three minutes!&lt;/em&gt;&lt;/p&gt;

&lt;p&gt;&lt;a href="https://media.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2Ftblziu8r7yhf9ygzg77i.png" class="article-body-image-wrapper"&gt;&lt;img src="https://media.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2Ftblziu8r7yhf9ygzg77i.png" alt="CI/CD build minutes"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;And guess what? If you want to build app faster or your app requires more compute resource to build, you need to pay more money for extra resource quotas!&lt;/p&gt;

&lt;h2&gt;
  
  
  How did I deal with these problems?
&lt;/h2&gt;

&lt;h3&gt;
  
  
  1. I learned Kubernetes so you don’t have to
&lt;/h3&gt;

&lt;p&gt;Kubernetes is hard. Pushing developers to learn it even harder (and cruel, their life is already really tough nowadays)&lt;/p&gt;

&lt;p&gt;&lt;a href="https://media.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2F5kwk5e6mrar16xxkzx2g.png" class="article-body-image-wrapper"&gt;&lt;img src="https://media.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2F5kwk5e6mrar16xxkzx2g.png" alt="Kubernetes complexity"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;So I learned Kubernetes, and I’ve tried to train my team to use it a few times.&lt;/p&gt;

&lt;p&gt;After more than 6 years of working with Kubernetes for my clients, partners, and my own teams, I have realized that the most difficult aspect is training others on how to use Kubernetes and deploy applications onto it.&lt;/p&gt;

&lt;blockquote&gt;
&lt;p&gt;&lt;em&gt;Developers should not have to be frustrated by deploying their apps to the infrastructure, or having to bother DevOps engineers to help with deployment. They should be able to fully focus on developing their apps without needing to understand complex concepts or definitions of servers, domains, and infrastructure-related topics.&lt;/em&gt;&lt;/p&gt;
&lt;/blockquote&gt;

&lt;p&gt;So I started building tools, to help my team deploying apps to Kubernetes cluster.&lt;/p&gt;

&lt;blockquote&gt;
&lt;p&gt;&lt;strong&gt;Why not using Jenkin?&lt;/strong&gt; Because I don’t like Jenkins. Just that, lol. Actually because Jenkins can solve the deployment, but I want more than that, I want to take more control, automation &amp;amp; monitoring my K8S clusters.&lt;/p&gt;
&lt;/blockquote&gt;

&lt;p&gt;It went well… until I started losing control of monitoring workloads when it started growing. Then I still needed someone with DevOps/Kubernetes knowledge to help out, but…&lt;/p&gt;

&lt;h3&gt;
  
  
  2. I’m poor and I still want to keep adopting Kubernetes…
&lt;/h3&gt;

&lt;p&gt;&lt;a href="https://media.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2F4uqztjbvjycjc7kmqiuf.png" class="article-body-image-wrapper"&gt;&lt;img src="https://media.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2F4uqztjbvjycjc7kmqiuf.png" alt="Poor kubernetes devops"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;I faced the challenge by keep evolving the tool I made recently. &lt;/p&gt;

&lt;p&gt;My goals are simply summarized in:&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;Simplify those Kubernetes concepts &amp;amp; definitions to something our developers can understand.&lt;/li&gt;
&lt;li&gt;Enhance our developer experience with &lt;em&gt;easy-to-remember&lt;/em&gt; commands.&lt;/li&gt;
&lt;li&gt;Centralized monitoring our K8S clusters no matter where it is and what is its cloud provider.&lt;/li&gt;
&lt;li&gt;Build and deploy apps on our own server, so it can take the full compute resource for faster build time.&lt;/li&gt;
&lt;li&gt;Manage our cloud resources other than K8S clusters, such as databases, health check,…&lt;/li&gt;
&lt;li&gt;Automate whatever tasks I want…&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;It took me months to build this tool, luckily we've been working with a lot of clients, who have multiple Cloud resources across cloud providers, so I got opportunities to fix and improve the tool day by day.&lt;/p&gt;

&lt;p&gt;Until now, my companies have been using this tool for years.&lt;/p&gt;

&lt;p&gt;I really want to add more features, but as I've become increasingly busy, the release of new features has been slowing down.&lt;/p&gt;

&lt;p&gt;&lt;a href="https://media.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2F7x0bnd9s9xzv1nh2v8s9.png" class="article-body-image-wrapper"&gt;&lt;img src="https://media.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2F7x0bnd9s9xzv1nh2v8s9.png" alt="busy dev life"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;Well, I started considering open-sourcing this project because I believe it can significantly improve the efficiency of those working with multiple Kubernetes clusters and other cloud resources, as it has for me. &lt;em&gt;(and also being poor just like me, lol)&lt;/em&gt;&lt;/p&gt;

&lt;p&gt;And there it is…&lt;/p&gt;

&lt;h2&gt;
  
  
  Diginext
&lt;/h2&gt;

&lt;p&gt;is the web app server and command line interface (CLI) client to help developers deploy their projects &amp;amp; interact with their cloud resources easily.&lt;/p&gt;

&lt;p&gt;&lt;a href="https://media.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2F25ztc7v5aanq1aqsrwce.png" class="article-body-image-wrapper"&gt;&lt;img src="https://media.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2F25ztc7v5aanq1aqsrwce.png" alt="diginext"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;Think of it like your own “Vercel” platform which is running on your own infrastructure, and managing your cloud resources.&lt;/p&gt;

&lt;h3&gt;
  
  
  Wanna try out?
&lt;/h3&gt;

&lt;p&gt;I have a small K8S cluster for free on &lt;a href="https://hobby.diginext.site" rel="noopener noreferrer"&gt;https://hobby.diginext.site&lt;/a&gt; so you can get your hands dirty right away.&lt;/p&gt;

&lt;p&gt;Just follow these steps:&lt;/p&gt;

&lt;ol&gt;
&lt;li&gt;Before creating a new workspace, you will need a key, get one &lt;a href="https://diginext.site" rel="noopener noreferrer"&gt;here&lt;/a&gt; &lt;em&gt;(no worries, it’s FREE)&lt;/em&gt;.&lt;/li&gt;
&lt;li&gt;Create a new Diginext workspace with your DX key in the previous step at: &lt;a href="https://hobby.diginext.site" rel="noopener noreferrer"&gt;https://hobby.diginext.site&lt;/a&gt;
&lt;/li&gt;
&lt;li&gt;Connect your Github to that workspace:
&lt;code&gt;https://hobby.diginext.site/git&lt;/code&gt;
&lt;/li&gt;
&lt;li&gt;Connect your Docker Hub to the workspace to store the container image:
&lt;code&gt;https://hobby.diginext.site/infrastructure/registry&lt;/code&gt;
&lt;/li&gt;
&lt;li&gt;Install Diginext CLI on your computer: &lt;code&gt;npm i @topgroup/diginext --location=global&lt;/code&gt;
&lt;/li&gt;
&lt;li&gt;Connect your Diginext CLI with that workspace: &lt;code&gt;dx login https://hobby.diginext.siet&lt;/code&gt;
&lt;/li&gt;
&lt;li&gt;Create new app with this CLI command: &lt;code&gt;dx new&lt;/code&gt;
For example:

&lt;ul&gt;
&lt;li&gt;Project: &lt;strong&gt;Something&lt;/strong&gt;
&lt;/li&gt;
&lt;li&gt;App: &lt;strong&gt;Static Site&lt;/strong&gt;
&lt;/li&gt;
&lt;li&gt;Framework: pick &lt;strong&gt;“Static Site Framework”&lt;/strong&gt;
&lt;/li&gt;
&lt;li&gt;Git provider: select the one you have connected recently.&lt;/li&gt;
&lt;/ul&gt;
&lt;/li&gt;
&lt;li&gt;Deploy it: &lt;code&gt;cd ./something &amp;amp;&amp;amp; dx deploy&lt;/code&gt;

&lt;ul&gt;
&lt;li&gt;Cluster: pick &lt;strong&gt;“Default Cluster”&lt;/strong&gt;
&lt;/li&gt;
&lt;li&gt;Container registry: pick &lt;strong&gt;“Your Docker Hub”&lt;/strong&gt;
&lt;/li&gt;
&lt;li&gt;Use generated domain: &lt;strong&gt;YES&lt;/strong&gt;
&lt;/li&gt;
&lt;li&gt;Port: &lt;strong&gt;80&lt;/strong&gt;
&lt;/li&gt;
&lt;/ul&gt;
&lt;/li&gt;
&lt;li&gt;Watch the build process at: &lt;code&gt;https://hobby.diginext.site/build/logs?build_slug=...&lt;/code&gt;
&lt;/li&gt;
&lt;li&gt;When it’s finished… Boom! There you go, your website is live at: &lt;code&gt;https://something.dev.diginext.site&lt;/code&gt;
&lt;/li&gt;
&lt;/ol&gt;

&lt;blockquote&gt;
&lt;p&gt;💡 &lt;u&gt;Notes&lt;/u&gt;: &lt;br&gt;
Since this “hobby” workspace is FREE (and I'm poor), I cannot provide any uptime guarantee or SLA, plus that it will have some limited quotas on number of concurrent builds, amount of apps,…&lt;br&gt;
So please don't use it as &lt;strong&gt;a production environment,&lt;/strong&gt; deployments on this cluster are subjected to be deleted to free up the resources at any time.&lt;/p&gt;

&lt;p&gt;🔆 &lt;em&gt;By validating &lt;strong&gt;DX API keys&lt;/strong&gt;, I would be able to limit resources in the workspace, just to make sure my server is having enough rooms for everyone who wanna try out. If you want to get rid of these limits, set up your self-hosted workspaces by following &lt;a href="https://dev.to/mrgoonie/i-turn-my-companys-pc-into-my-own-vercel-like-platform-351o"&gt;this instruction&lt;/a&gt;.&lt;/em&gt;&lt;/p&gt;
&lt;/blockquote&gt;

&lt;h3&gt;
  
  
  Wanna set up your own workspace?
&lt;/h3&gt;

&lt;p&gt;I wrote some articles to help you getting started below:&lt;/p&gt;

&lt;p&gt;&lt;a href="https://dev.to/mrgoonie/i-turn-my-companys-pc-into-my-own-vercel-like-platform-351o"&gt;I turn my company’s PC into my own “Vercel-like” platform&lt;/a&gt; &lt;/p&gt;

&lt;h2&gt;
  
  
  Conclusion
&lt;/h2&gt;

&lt;p&gt;Any feedbacks are welcome. If you are looking for other features, or wanna give me a hand, below is where you can start:&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;&lt;p&gt;&lt;a href="https://topgroup.notion.site/Roadmap-6a8266c2929c48ad8d4c11c954e9d852?pvs=4" rel="noopener noreferrer"&gt;Roadmap&lt;/a&gt; &lt;/p&gt;&lt;/li&gt;
&lt;li&gt;&lt;p&gt;&lt;a href="https://topgroup.notion.site/Getting-Started-8d4155a1797641e6aa4ead9446868533?pvs=4" rel="noopener noreferrer"&gt;Getting Started&lt;/a&gt; &lt;/p&gt;&lt;/li&gt;
&lt;li&gt;&lt;p&gt;&lt;a href="https://topgroup.notion.site/Contributing-6affbb9a0e154c0c97b5e01bf076583e?pvs=4" rel="noopener noreferrer"&gt;Contributing&lt;/a&gt;&lt;/p&gt;&lt;/li&gt;
&lt;/ul&gt;

&lt;h2&gt;
  
  
  Thank you!
&lt;/h2&gt;

&lt;p&gt;It's a long article, thanks for getting here. If you find any difficulties (or bugs), please let me know, I'm happy to help.&lt;/p&gt;

</description>
      <category>devops</category>
      <category>kubernetes</category>
      <category>webdev</category>
      <category>diginext</category>
    </item>
    <item>
      <title>I turned my company’s PC into my own “Vercel-like” platform</title>
      <dc:creator>Goon Nguyen</dc:creator>
      <pubDate>Tue, 13 Jun 2023 12:30:23 +0000</pubDate>
      <link>https://forem.com/mrgoonie/i-turn-my-companys-pc-into-my-own-vercel-like-platform-351o</link>
      <guid>https://forem.com/mrgoonie/i-turn-my-companys-pc-into-my-own-vercel-like-platform-351o</guid>
      <description>&lt;h2&gt;
  
  
  Why?
&lt;/h2&gt;

&lt;ul&gt;
&lt;li&gt;Because… why not? (it’s &lt;strong&gt;&lt;em&gt;FREE&lt;/em&gt;&lt;/strong&gt;, lol)&lt;/li&gt;
&lt;li&gt;Utilize the power of my own PC to build web apps faster &lt;em&gt;(with zero build time cost)&lt;/em&gt;.&lt;/li&gt;
&lt;li&gt;Kubernetes is hard &amp;amp; pushing developers to learn it even harder, well, I learned it so you don't have to.&lt;/li&gt;
&lt;li&gt;Unlike Vercel, with Kubernetes cluster, I (and my teammates) can deploy ANY apps.&lt;/li&gt;
&lt;/ul&gt;

&lt;h2&gt;
  
  
  Requirements
&lt;/h2&gt;

&lt;ul&gt;
&lt;li&gt;A computer (obviously!) with &lt;a href="https://ubuntu.com/download/server" rel="noopener noreferrer"&gt;Ubuntu Server&lt;/a&gt; OS

&lt;ul&gt;
&lt;li&gt;Specification at least: 2 core, 4GB memory&lt;/li&gt;
&lt;li&gt;Recommendation: 4 core, 8GB memory
(because MicroK8S will take around 2,5GB of memory to run, but you will also need some for your applications)&lt;/li&gt;
&lt;li&gt;DigitalOcean has some droplets with good pricing tiers.&lt;/li&gt;
&lt;/ul&gt;


&lt;/li&gt;

&lt;li&gt;

&lt;a href="https://microk8s.io/" rel="noopener noreferrer"&gt;MicroK8S&lt;/a&gt; to spin up a Kubernetes cluster&lt;/li&gt;

&lt;li&gt;Lastly, this magical open-source tool: &lt;a href="https://github.com/digitopvn/diginext" rel="noopener noreferrer"&gt;Diginext&lt;/a&gt;
&lt;/li&gt;

&lt;/ul&gt;

&lt;h2&gt;
  
  
  Architecture
&lt;/h2&gt;

&lt;p&gt;In this case, I use my company’s PC (Ubuntu Server OS, 1TB SSD drive, 8 core, 32GB of memory)&lt;/p&gt;

&lt;p&gt;&lt;a href="https://media.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2Fqwzfpe549nsebojsxrv2.png" class="article-body-image-wrapper"&gt;&lt;img src="https://media.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2Fqwzfpe549nsebojsxrv2.png" alt="diginext-vercel-like-architecture.drawio.png"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;h2&gt;
  
  
  Install MicroK8S &amp;amp; deploy Diginext Server
&lt;/h2&gt;



&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight shell"&gt;&lt;code&gt;curl &lt;span class="nt"&gt;-sfL&lt;/span&gt; https://diginext.site/install/microk8s | sh -
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;After it’s finished, you can try to access this URL: &lt;a href="http://server-ip-address/" rel="noopener noreferrer"&gt;http://server-ip-address&lt;/a&gt;, if you can see the log in / sign up screen, then your cluster is ready!&lt;/p&gt;

&lt;blockquote&gt;
&lt;p&gt;&lt;em&gt;For example: &lt;a href="http://192.168.0.52" rel="noopener noreferrer"&gt;http://192.168.0.52&lt;/a&gt;&lt;/em&gt;&lt;/p&gt;
&lt;/blockquote&gt;

&lt;h2&gt;
  
  
  Create new account
&lt;/h2&gt;

&lt;p&gt;Navigate to: &lt;a href="http://your-ip-address" rel="noopener noreferrer"&gt;http://server-ip-address&lt;/a&gt; then create a new account.&lt;/p&gt;

&lt;p&gt;&lt;a href="https://media.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2Fsk1upu0q9a6f3tuzet6u.png" class="article-body-image-wrapper"&gt;&lt;img src="https://media.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2Fsk1upu0q9a6f3tuzet6u.png" alt="Create new account"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;h3&gt;
  
  
  Then create your first workspace
&lt;/h3&gt;

&lt;p&gt;Give your workspace a name, leave &lt;code&gt;public&lt;/code&gt; unchecked if you don't want other people to freely access your workspace, then submit &amp;amp; you’re good to go.&lt;/p&gt;

&lt;h2&gt;
  
  
  Connect Diginext CLI to your workspace
&lt;/h2&gt;

&lt;p&gt;To be able to deploy webapp to your MicroK8S cluster from your computer, you will need to install Diginext CLI and connect it to your Diginext workspace.&lt;/p&gt;

&lt;p&gt;Open the terminal and install &lt;strong&gt;Diginext CLI&lt;/strong&gt; with:&lt;/p&gt;

&lt;p&gt;&lt;em&gt;(If you don’t have Node.js 18+ installed, get it first)&lt;/em&gt;&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight shell"&gt;&lt;code&gt;npm i @topgroup/diginext &lt;span class="nt"&gt;--location&lt;/span&gt;&lt;span class="o"&gt;=&lt;/span&gt;global
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;After it’s finished, you can use &lt;code&gt;dx&lt;/code&gt; commands. &lt;/p&gt;

&lt;p&gt;But first, let’s connect your &lt;strong&gt;Diginext CLI&lt;/strong&gt; to the workspace:&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight shell"&gt;&lt;code&gt;dx login http://your-ip-address
&lt;span class="c"&gt;# the browser will open up, copy &amp;amp; paste the access token here&lt;/span&gt;
&lt;span class="c"&gt;# you will see a success message&lt;/span&gt;
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;h2&gt;
  
  
  Deploy a static webapp
&lt;/h2&gt;

&lt;ul&gt;
&lt;li&gt;
&lt;p&gt;&lt;strong&gt;Diginext Server&lt;/strong&gt; need permissions to pull the git repository and start building, so let’s navigate to &lt;a href="http://your-ip-address/git" rel="noopener noreferrer"&gt;http://&lt;/a&gt;&lt;a href="http://your-ip-address" rel="noopener noreferrer"&gt;server&lt;/a&gt;&lt;a href="http://your-ip-address/git" rel="noopener noreferrer"&gt;-ip-address/git&lt;/a&gt; and connect your Bitbucket or Github account.&lt;/p&gt;

&lt;p&gt;&lt;a href="https://media.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2Fsz2xbum8azvzbny8sy41.png" class="article-body-image-wrapper"&gt;&lt;img src="https://media.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2Fsz2xbum8azvzbny8sy41.png" alt="connect your Github account"&gt;&lt;/a&gt;&lt;/p&gt;
&lt;/li&gt;
&lt;li&gt;
&lt;p&gt;&lt;strong&gt;Diginext Server&lt;/strong&gt; also need a &lt;strong&gt;container registry&lt;/strong&gt; to store the build image, I will use &lt;strong&gt;Docker Hub&lt;/strong&gt; in this example. Navigate to &lt;a href="http://your-ip-address/infrastructure/registry/" rel="noopener noreferrer"&gt;http://your-ip-address/infrastructure/registry/&lt;/a&gt; and connect your Docker Hub with username &amp;amp; password.&lt;/p&gt;

&lt;p&gt;&lt;a href="https://media.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2Fhevue3j7uqme83okr9f5.png" class="article-body-image-wrapper"&gt;&lt;img src="https://media.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2Fhevue3j7uqme83okr9f5.png" alt="connect your Docker Hub"&gt;&lt;/a&gt;&lt;/p&gt;
&lt;/li&gt;
&lt;li&gt;
&lt;p&gt;When it’s done, back to your Terminal and create a new app with &lt;code&gt;dx new&lt;/code&gt; command &amp;amp; fill in the form:&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;Project: &lt;strong&gt;Hello World&lt;/strong&gt;
&lt;/li&gt;
&lt;li&gt;App: &lt;strong&gt;Static Site&lt;/strong&gt;
&lt;/li&gt;
&lt;li&gt;Framework: pick &lt;strong&gt;“Static Site Framework”&lt;/strong&gt;
&lt;/li&gt;
&lt;li&gt;Git provider: select the one you have connected recently.&lt;/li&gt;
&lt;/ul&gt;


&lt;/li&gt;

&lt;li&gt;&lt;p&gt;Navigate to the directory: &lt;code&gt;cd ./helloworld-staticsite&lt;/code&gt; and you will see the source code of the framework, nothing special here, just a static html files and a &lt;code&gt;Dockerfile&lt;/code&gt;&lt;/p&gt;&lt;/li&gt;

&lt;li&gt;

&lt;p&gt;Deploy to your MicroK8S cluster using this command: &lt;code&gt;dx up&lt;/code&gt;&lt;br&gt;
It will request your Diginext Server to pull the git repo of the webapp, then build the container image from the &lt;code&gt;Dockerfile&lt;/code&gt;, and deploy it the MicroK8S cluster.&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;Cluster: pick &lt;strong&gt;“Default Cluster”&lt;/strong&gt;
&lt;/li&gt;
&lt;li&gt;Use generated domain: &lt;strong&gt;YES&lt;/strong&gt;
&lt;/li&gt;
&lt;li&gt;Port: &lt;strong&gt;80&lt;/strong&gt;
&lt;/li&gt;
&lt;/ul&gt;


&lt;/li&gt;

&lt;li&gt;

&lt;p&gt;Now check out the link in the Terminal to see the build &amp;amp; deploy process, something like this:&lt;/p&gt;

&lt;p&gt;&lt;a href="https://media.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2Fbwv51x4nmdb0tuivp18n.png" class="article-body-image-wrapper"&gt;&lt;img src="https://media.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2Fbwv51x4nmdb0tuivp18n.png" alt="build &amp;amp; deploy process"&gt;&lt;/a&gt;&lt;/p&gt;


&lt;/li&gt;

&lt;/ul&gt;

&lt;p&gt;When it’s finished, click on the auto-generated link, you will see your web app now going live, woohoo!&lt;/p&gt;

&lt;blockquote&gt;
&lt;p&gt;👉 Since I have only set up this server for internal use, if you want to publish it on the internet, you may need to expose some ports on your internet router and configure traffic routing / security guards to your metal server. However, this is beyond the scope of this article.&lt;/p&gt;
&lt;/blockquote&gt;

&lt;h2&gt;
  
  
  What’s next?
&lt;/h2&gt;

&lt;p&gt;Learn more about the stories of &lt;a href="https://github.com/digitopvn/diginext/" rel="noopener noreferrer"&gt;Diginext&lt;/a&gt;.&lt;/p&gt;

</description>
      <category>kubernetes</category>
      <category>devops</category>
      <category>opensource</category>
      <category>diginext</category>
    </item>
  </channel>
</rss>
