<?xml version="1.0" encoding="UTF-8"?>
<rss version="2.0" xmlns:atom="http://www.w3.org/2005/Atom" xmlns:dc="http://purl.org/dc/elements/1.1/">
  <channel>
    <title>DEV Community: Jackfiallos</title>
    <description>The latest articles on DEV Community by Jackfiallos (@jackfiallos).</description>
    <link>https://dev.to/jackfiallos</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.us-east-2.amazonaws.com%2Fuploads%2Fuser%2Fprofile_image%2F97620%2F297976c5-bb5f-4466-925b-54b4f4cb04be.jpeg</url>
      <title>DEV Community: Jackfiallos</title>
      <link>https://dev.to/jackfiallos</link>
    </image>
    <atom:link rel="self" type="application/rss+xml" href="https://dev.to/feed/jackfiallos"/>
    <language>en</language>
    <item>
      <title>I Don’t Think I’m Losing My Memory. I Think I’m Trying to Think at AI Speed.</title>
      <dc:creator>Jackfiallos</dc:creator>
      <pubDate>Wed, 02 Sep 2026 11:10:27 +0000</pubDate>
      <link>https://dev.to/jackfiallos/i-dont-think-im-losing-my-memory-i-think-im-trying-to-think-at-ai-speed-1pde</link>
      <guid>https://dev.to/jackfiallos/i-dont-think-im-losing-my-memory-i-think-im-trying-to-think-at-ai-speed-1pde</guid>
      <description>&lt;p&gt;Something strange has been happening lately, I keep forgetting small things.&lt;/p&gt;

&lt;p&gt;Not names.&lt;br&gt;
Not conversations.&lt;br&gt;
Not important events.&lt;br&gt;
Small pieces of routines.&lt;/p&gt;

&lt;p&gt;Things I’ve done almost automatically for years, for example:&lt;/p&gt;

&lt;p&gt;Every night I usually prepare everything I need for the gym the next morning.&lt;/p&gt;

&lt;p&gt;Clothes.&lt;br&gt;
Shoes.&lt;br&gt;
Supplements.&lt;/p&gt;

&lt;p&gt;Nothing complicated, but lately I’ll prepare the clothes... and forget the shoes. Or prepare everything except the supplements.&lt;/p&gt;

&lt;p&gt;Small things, but frequent enough that I started noticing. And then I started seeing the same pattern at work.&lt;/p&gt;


&lt;h2&gt;
  
  
  I lose the thread
&lt;/h2&gt;

&lt;p&gt;I might have three or four coding agents running at the same time.&lt;/p&gt;

&lt;p&gt;One is fixing a bug.&lt;br&gt;
Another is exploring a ticket.&lt;br&gt;
Another is refactoring something.&lt;br&gt;
Another is working in a different application entirely.&lt;/p&gt;

&lt;p&gt;While Agent A works, I move to B, while B is thinking, I review C, then A finishes, so I go back to A.&lt;/p&gt;

&lt;p&gt;And suddenly:&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;What was I doing before this?&lt;/strong&gt;&lt;/p&gt;

&lt;p&gt;Sometimes I need a minute, I open the previous ticket, read a few lines. look at the code and then the entire context comes back.&lt;/p&gt;

&lt;p&gt;That’s when I started wondering:&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;Maybe this isn’t a memory problem.&lt;/strong&gt;&lt;/p&gt;

&lt;p&gt;Maybe I’m just constantly dropping context.&lt;/p&gt;


&lt;h2&gt;
  
  
  Developers already understand this problem
&lt;/h2&gt;

&lt;p&gt;We talk about context all the time. processes have context, requests have context, applications have state, LLMs have context windows.&lt;/p&gt;

&lt;p&gt;And humans do too.&lt;/p&gt;

&lt;p&gt;When I’m working on a bug, my brain is temporarily holding things like:&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;what I’m trying to fix&lt;/li&gt;
&lt;li&gt;what I already tested&lt;/li&gt;
&lt;li&gt;what failed&lt;/li&gt;
&lt;li&gt;what I suspect&lt;/li&gt;
&lt;li&gt;what file matters&lt;/li&gt;
&lt;li&gt;what another service is doing&lt;/li&gt;
&lt;li&gt;what I need to check next&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;That information may never reach long-term memory, It doesn’t need to. It only needs to stay available long enough for me to finish the task.&lt;/p&gt;

&lt;p&gt;That is working memory and working memory is not infinite.&lt;/p&gt;


&lt;h2&gt;
  
  
  AI changed something important
&lt;/h2&gt;

&lt;p&gt;For most of my career, software development had friction.&lt;/p&gt;

&lt;p&gt;You wrote code, you compiled, you waited, you ran tests, you searched documentation, you read Stack Overflow, you tried something. It failed, you stared at the problem, then you tried again, there were pauses. Not necessarily intentional pauses, but pauses.&lt;/p&gt;

&lt;p&gt;Now I can do this:&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight plaintext"&gt;&lt;code&gt;Task A -&amp;gt; Agent A working
Task B -&amp;gt; Agent B working
Task C -&amp;gt; Agent C working
Task D -&amp;gt; Agent D working
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;Amazing, four things moving at once, except eventually:&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight plaintext"&gt;&lt;code&gt;Agent A -&amp;gt; finished
Agent B -&amp;gt; needs clarification
Agent C -&amp;gt; changed 12 files
Agent D -&amp;gt; found another problem
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;And every single one of them comes back to the same place.&lt;/p&gt;

&lt;blockquote&gt;
&lt;p&gt;Me.&lt;/p&gt;
&lt;/blockquote&gt;




&lt;h2&gt;
  
  
  The agents are parallel. I’m not.
&lt;/h2&gt;

&lt;p&gt;This sounds obvious, but I don’t think I fully understood what it meant. AI made execution parallel, it did not make my attention parallel.&lt;/p&gt;

&lt;p&gt;Every result still needs a human, someone has to understand it, review it, question it, check the diff, understand the architecture, notice the weird assumption, decide what happens next.&lt;/p&gt;

&lt;p&gt;AI reduced the cost of producing work, but it did not remove the cost of:&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;understanding&lt;/strong&gt;&lt;br&gt;
&lt;strong&gt;evaluating&lt;/strong&gt;&lt;br&gt;
&lt;strong&gt;integrating&lt;/strong&gt;&lt;br&gt;
&lt;strong&gt;deciding&lt;/strong&gt;&lt;/p&gt;

&lt;p&gt;And now there is simply more of that work arriving.&lt;/p&gt;

&lt;blockquote&gt;
&lt;p&gt;Faster.&lt;/p&gt;
&lt;/blockquote&gt;


&lt;h2&gt;
  
  
  Faster output means more decisions
&lt;/h2&gt;

&lt;p&gt;This is where things get strange. Imagine a task used to take me 30 minutes. Now an agent gives me a decent first implementation in 3, I saved 27 minutes.&lt;/p&gt;

&lt;p&gt;Great.&lt;/p&gt;

&lt;p&gt;So what do I do with those 27 minutes?&lt;br&gt;
I start another task of course - duh!&lt;/p&gt;

&lt;p&gt;Then another, then another and suddenly my workflow looks like this:&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight plaintext"&gt;&lt;code&gt;prompt
switch
review
switch
approve
switch
debug
switch
ask follow-up
switch
read diff
switch
remember what I was doing
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;The machine got faster, so I made my day more concurrent, and eventually something interesting happens:&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;I am producing more while feeling less focused.&lt;/strong&gt;&lt;/p&gt;

&lt;p&gt;That feels like a contradiction, it probably isn’t.&lt;/p&gt;




&lt;h2&gt;
  
  
  Context switching has a cost
&lt;/h2&gt;

&lt;p&gt;We already knew this before AI.&lt;/p&gt;

&lt;p&gt;Slack did it.&lt;br&gt;
Email did it.&lt;br&gt;
Meetings did it.&lt;br&gt;
Notifications did it.&lt;/p&gt;

&lt;p&gt;But agents make something much easier:&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;starting more work.&lt;/strong&gt;&lt;/p&gt;

&lt;p&gt;Before AI, opening another task meant I had to actually work on another task, there was a natural cost. Now I can start another workstream with a prompt, thirty seconds later, something else is running in parallel.&lt;/p&gt;

&lt;p&gt;The cost of starting work has collapsed, the cost of keeping that work inside my head has not. That changes everything.&lt;/p&gt;


&lt;h2&gt;
  
  
  Maybe I’m not forgetting
&lt;/h2&gt;

&lt;p&gt;This is probably the part I find most interesting. When I return to something after ten minutes and think:&lt;/p&gt;

&lt;blockquote&gt;
&lt;p&gt;What was I doing?&lt;/p&gt;
&lt;/blockquote&gt;

&lt;p&gt;the experience feels like forgetting, but then I look at the code.&lt;/p&gt;

&lt;p&gt;Read the ticket.&lt;br&gt;
See the previous message.&lt;/p&gt;

&lt;p&gt;And suddenly:&lt;br&gt;
Oh, right.&lt;/p&gt;

&lt;p&gt;Everything comes back, the memory was probably not gone. The context was simply no longer active.&lt;/p&gt;

&lt;p&gt;There’s a big difference between:&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;losing information&lt;/strong&gt; and &lt;strong&gt;losing access to information because your attention moved somewhere else.&lt;/strong&gt;&lt;/p&gt;

&lt;p&gt;Subjectively, though, they can feel almost identical.&lt;/p&gt;

&lt;p&gt;Both feel like:&lt;/p&gt;

&lt;blockquote&gt;
&lt;p&gt;I forgot.&lt;/p&gt;
&lt;/blockquote&gt;


&lt;h2&gt;
  
  
  And yes, life is also happening
&lt;/h2&gt;

&lt;p&gt;I don’t think AI explains everything.&lt;/p&gt;

&lt;p&gt;Not even close, stress matters, sleep matters, family matters. mental health matters, changes in routine matter.&lt;/p&gt;

&lt;p&gt;Life can leave a lot of invisible processes running in the background.&lt;/p&gt;

&lt;p&gt;In my own case, the last few months have contained enough personal stuff that cognitive load is probably already higher than normal.&lt;/p&gt;

&lt;p&gt;So saying:&lt;/p&gt;

&lt;blockquote&gt;
&lt;p&gt;AI is doing this to me&lt;/p&gt;
&lt;/blockquote&gt;

&lt;p&gt;would be lazy. I don’t know that, but I do think AI may be acting as an amplifier. It gives me the ability to create far more cognitive demand than I could create before.&lt;/p&gt;

&lt;p&gt;And because that demand looks like productive work... it’s very easy not to recognize it as overload.&lt;/p&gt;


&lt;h2&gt;
  
  
  Productivity can hide overload
&lt;/h2&gt;

&lt;p&gt;That’s probably what worries me most, overload doesn’t always feel like overload.&lt;/p&gt;

&lt;p&gt;Sometimes it looks like this:&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;lots of commits&lt;/li&gt;
&lt;li&gt;lots of tickets moving&lt;/li&gt;
&lt;li&gt;lots of agents running&lt;/li&gt;
&lt;li&gt;lots of answers&lt;/li&gt;
&lt;li&gt;lots of progress&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;Everything appears productive, meanwhile:&lt;/p&gt;

&lt;p&gt;attention becomes more fragmented, tasks become harder to reconstruct, small routines start losing pieces, you start rereading things, you switch windows and forget why, you finish the day having done a lot... but feeling strangely scattered.&lt;/p&gt;

&lt;p&gt;That’s an interesting failure mode because the dashboard says productivity went up.&lt;/p&gt;


&lt;h2&gt;
  
  
  We removed almost all the waiting
&lt;/h2&gt;

&lt;p&gt;For decades, engineering has tried to remove latency.&lt;/p&gt;

&lt;p&gt;Faster builds.&lt;br&gt;
Faster tests.&lt;br&gt;
Faster computers.&lt;br&gt;
Faster deployments.&lt;br&gt;
Faster feedback.&lt;br&gt;
Faster everything.&lt;/p&gt;

&lt;p&gt;That was mostly a good thing, but I’ve started wondering whether some of that waiting had an accidental benefit.&lt;/p&gt;

&lt;p&gt;Waiting for a build.&lt;br&gt;
Walking to get coffee.&lt;br&gt;
Reading documentation slowly.&lt;/p&gt;

&lt;p&gt;Looking at a bug without immediately asking something else for the answer.&lt;/p&gt;

&lt;p&gt;Sitting with a problem. Those moments looked inefficient, but perhaps they gave the brain time to stay inside one context.&lt;/p&gt;

&lt;p&gt;AI is removing enormous amounts of friction, which is amazing. But the machine no longer forces us to slow down, maybe that means we need to do it ourselves.&lt;/p&gt;


&lt;h2&gt;
  
  
  More speed should not mean more concurrency
&lt;/h2&gt;

&lt;p&gt;This is the adjustment I’m experimenting with.&lt;/p&gt;

&lt;p&gt;I’m not trying to use less AI. I’m not going back to doing everything manually, that would miss the point.&lt;/p&gt;

&lt;p&gt;Instead, I’m trying to separate two resources:&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight plaintext"&gt;&lt;code&gt;Machine throughput
!=
Human attention
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;An agent finishing something does not mean I must review it immediately. An agent waiting does not mean I must start another one. A task taking 3 minutes instead of 30 does not mean I need 10 tasks in flight.&lt;/p&gt;

&lt;p&gt;The mental model I’m trying to adopt is:&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight plaintext"&gt;&lt;code&gt;AI works in parallel.

I work sequentially.
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;The agents can wait.&lt;br&gt;
The output can wait.&lt;br&gt;
The notification can wait.&lt;br&gt;
My attention decides what runs next.&lt;/p&gt;

&lt;p&gt;The funny thing is that most agent interfaces still behave like chat applications.&lt;/p&gt;

&lt;p&gt;Something happens, they tell you. Another thing happens, they tell you again.&lt;/p&gt;

&lt;p&gt;The result is basically:&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight plaintext"&gt;&lt;code&gt;Agent A -&amp;gt; INTERRUPT
Agent C -&amp;gt; INTERRUPT
Agent B -&amp;gt; INTERRUPT
Agent D -&amp;gt; INTERRUPT
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;Maybe that is the wrong model, maybe what I actually want is:&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight plaintext"&gt;&lt;code&gt;11:00 AM

Agent review queue

A: finished
B: blocked
C: needs one decision
D: still working
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;One review window, one context-switching event. Machines stay asynchronous and humans stay sane. That feels much closer to how agent systems should eventually work.&lt;/p&gt;




&lt;h2&gt;
  
  
  Developers may just be early
&lt;/h2&gt;

&lt;p&gt;I suspect developers will encounter this problem earlier than most people, simply because coding agents already make extreme parallelism possible.&lt;/p&gt;

&lt;p&gt;Today I can have agents:&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;writing code&lt;/li&gt;
&lt;li&gt;debugging&lt;/li&gt;
&lt;li&gt;reviewing pull requests&lt;/li&gt;
&lt;li&gt;creating tests&lt;/li&gt;
&lt;li&gt;researching libraries&lt;/li&gt;
&lt;li&gt;exploring architecture&lt;/li&gt;
&lt;li&gt;documenting systems&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;all at once.&lt;/p&gt;

&lt;p&gt;Soon this won’t be unusual, and it won’t be limited to developers.&lt;/p&gt;

&lt;p&gt;Managers will have agents, designers will have agents, researchers will have agents, founders will have agents, students will have agents. Knowledge work may become massively parallel, human cognition will not.&lt;/p&gt;

&lt;p&gt;There is already a lot of discussion around cognitive offloading.&lt;/p&gt;

&lt;p&gt;The concern is understandable.&lt;/p&gt;

&lt;p&gt;If AI writes for us, remembers for us, searches for us, reasons for us... maybe we exercise certain cognitive abilities less, but there may be another problem hiding on the opposite side.&lt;/p&gt;

&lt;p&gt;Not:&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;AI makes us think less.&lt;/strong&gt;&lt;/p&gt;

&lt;p&gt;But:&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;AI makes it possible for us to try thinking about too many things at once.&lt;/strong&gt;&lt;/p&gt;

&lt;p&gt;The chain might look something like this:&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight plaintext"&gt;&lt;code&gt;More AI
   ↓
More output
   ↓
More work in flight
   ↓
More decisions
   ↓
More context switching
   ↓
More fragmented attention
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;Maybe we’re not becoming forgetful, maybe we’re just overflowing our cognitive context window.&lt;/p&gt;




&lt;h2&gt;
  
  
  I don’t need to think at machine speed
&lt;/h2&gt;

&lt;p&gt;This may sound obvious too, but I think many of us are unconsciously doing exactly that.&lt;/p&gt;

&lt;p&gt;The AI answers faster, so we answer faster. The agent finishes faster, so we start something else faster. Research takes seconds, so we immediately consume more research.&lt;/p&gt;

&lt;p&gt;Every efficiency gain creates another opportunity to do something.&lt;/p&gt;

&lt;p&gt;And if every second AI saves becomes another task... we haven’t really created free time, we’ve increased throughput. Those are not the same thing.&lt;/p&gt;




&lt;h2&gt;
  
  
  The next AI bottleneck might be us
&lt;/h2&gt;

&lt;p&gt;It’s still early, agents are new and most people are only starting to build AI deeply into their daily workflows. So I don’t know whether this becomes a serious widespread proble, maybe it doesn’t, but I think it’s worth paying attention to, because eventually one developer won’t be supervising one assistant.&lt;/p&gt;

&lt;p&gt;They may be supervising five agents, then ten, then twenty. At some point, the machine will not be the limiting factor anymore. The limiting factor will be the person trying to understand what all those machines just did.&lt;/p&gt;

&lt;p&gt;And maybe one of the most important skills in an AI-heavy world will not be learning how to make AI move faster.&lt;/p&gt;

&lt;p&gt;It will be learning when &lt;strong&gt;not to follow it&lt;/strong&gt;.&lt;/p&gt;

&lt;p&gt;The machines can work at machine speed, we still need to think at human speed.&lt;/p&gt;

&lt;p&gt;And maybe that is something worth protecting.&lt;/p&gt;

</description>
      <category>ai</category>
      <category>coding</category>
      <category>mentalhealth</category>
      <category>productivity</category>
    </item>
    <item>
      <title>Building Solo: Architecture, Decisions, and Challenges After Launching Deeditt</title>
      <dc:creator>Jackfiallos</dc:creator>
      <pubDate>Fri, 23 May 2025 15:05:30 +0000</pubDate>
      <link>https://dev.to/jackfiallos/building-solo-architecture-decisions-and-challenges-after-launching-deeditt-1769</link>
      <guid>https://dev.to/jackfiallos/building-solo-architecture-decisions-and-challenges-after-launching-deeditt-1769</guid>
      <description>&lt;p&gt;&lt;a href="https://media2.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%2F37ffkp3hghni75e67v75.png" class="article-body-image-wrapper"&gt;&lt;img src="https://media2.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%2F37ffkp3hghni75e67v75.png" alt="Deeditt Infrastructure" width="800" height="546"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;blockquote&gt;
&lt;p&gt;A solid infrastructure doesn't guarantee users. Neither does a good idea, but sharing the journey?&lt;br&gt;
That changes things.&lt;/p&gt;
&lt;/blockquote&gt;




&lt;h2&gt;
  
  
  👋 Who I Am and What I'm Building
&lt;/h2&gt;

&lt;p&gt;I'm a software developer with years of experience building products from scratch, scaling infrastructure, and leading teams, but for the past few years, I've been working on something personal that I have named &lt;strong&gt;Deeditt&lt;/strong&gt;.&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;Deeditt&lt;/strong&gt; is a different kind of social network. While platforms like LinkedIn only celebrate achievements, Medium rewards articles written for algorithms rather than people, and the others where you can post anything you want, Deeditt offers something more authentic: documenting the journey whether personal or professional. What you learned, what you did wrong, what you had to rebuild from scratch.&lt;/p&gt;

&lt;p&gt;It's a platform where you can share your real experiences through &lt;strong&gt;"deeds"&lt;/strong&gt; (individual posts) and organize them into &lt;strong&gt;"journeys"&lt;/strong&gt; (collections that tell a complete story over time). Think of it as a way to show "how I got here" not just "look where I am."&lt;/p&gt;

&lt;blockquote&gt;
&lt;p&gt;&lt;strong&gt;Have you ever wanted to share the stumbles in a project but couldn't find where that story fits?&lt;/strong&gt; you're right, this is what Deeditt was built for.&lt;/p&gt;
&lt;/blockquote&gt;




&lt;h2&gt;
  
  
  🤔 Why I decided to build such thing
&lt;/h2&gt;

&lt;p&gt;During job interviews and team building, I noticed how people often told small lies about their experience because there was no tangible way to prove otherwise. I kept thinking, "&lt;strong&gt;If there was a platform where people documented their actual journey, this wouldn't happen&lt;/strong&gt;".&lt;/p&gt;

&lt;p&gt;Like many who work behind complex systems, I felt something was missing: a space where people could share the process, not just the outcome. I wanted to read more about difficult decisions and less about brilliant successes, to have a better idea of people's real experiences.&lt;/p&gt;

&lt;p&gt;So I decided to build it myself, because it's definitely better to learn from someone else's experience than from their final achievement where they usually say "I learned to roller skate, here are 5 tips that will teach you to go faster."&lt;/p&gt;

&lt;p&gt;It took me about a year to mentally prepare for this long-term commitment, another year to develop the backend, frontend, server setup, and basic security, and yet another year to start testing the idea with real users. This timeline stretched out because I had a full-time job and Deeditt was my side project, which meant evenings and weekends were my development time.&lt;/p&gt;




&lt;h2&gt;
  
  
  📱 A wrong beginning? I Started with a Mobile App
&lt;/h2&gt;

&lt;p&gt;When I imagined Deeditt, I saw it as a social network and automatically thought of a mobile app. It seemed logical, so I started building with &lt;a href="https://reactnative.dev/" rel="noopener noreferrer"&gt;React Native&lt;/a&gt;, a technology I already knew well and that allowed me to maintain a single codebase for iOS and Android.&lt;/p&gt;

&lt;p&gt;So I started building the mobile app using &lt;strong&gt;React Native&lt;/strong&gt; with &lt;strong&gt;TypeScript&lt;/strong&gt;, along with &lt;strong&gt;Zustand&lt;/strong&gt; for state management and &lt;strong&gt;React Navigation&lt;/strong&gt; for routing. I chose this stack because it offered the best balance between development speed and performance. Some might argue that using &lt;strong&gt;Expo&lt;/strong&gt; would have been a better choice, but at the time I started the project, Expo didn’t meet my needs. I required more flexibility and control than Expo could offer back then.&lt;/p&gt;

&lt;p&gt;I started with just a few screens, but within months it grew so much that I kept introducing more and more features that I thought were "needed." This was the first trap - feature creep without users to validate what was actually necessary but on the other hand, I always was building this for myself.&lt;/p&gt;

&lt;p&gt;But wait! Deeditt is also a &lt;strong&gt;free space&lt;/strong&gt; for writing, for expanding ideas, for reflection, and that's not so comfortable on a small screen. Over time like a year after, I realized that starting with web might have been more effective for initial adoption. Visibility and long-form content fit better there. It wasn't a critical mistake, but an important lesson about how the platform defines product dynamics.&lt;/p&gt;




&lt;h2&gt;
  
  
  🌐 Building the Web Version: A Work in Progress
&lt;/h2&gt;

&lt;p&gt;This realization led me to start working on a complete web version, which is what I'm doing now. Even though it's partially completed, there's a lot of work to do to fully match what I built in the mobile app.&lt;/p&gt;

&lt;p&gt;For the web version, I'm using &lt;a href="https://astro.build/" rel="noopener noreferrer"&gt;Astro Framework&lt;/a&gt; with Preact islands for interactive components - a perfect match for a content-first platform that needs good SEO and performance. I've decided to work in small stages and introduce features one by one. The first stage was deed details and journey detail pages, and now I'm working on authentication, deed posting, and more navigation pages for deeds discovery.&lt;/p&gt;

&lt;p&gt;Though the mobile experience is excellent, I discovered many people prefer not to install new apps, especially in markets with geographic restrictions where the web offers greater accessibility. Fortunately, my architecture allows me to extend easily without having to rebuild everything from scratch.&lt;/p&gt;




&lt;h2&gt;
  
  
  🧱 Architecture: When the Stack Works But Isn't Enough
&lt;/h2&gt;

&lt;p&gt;Technically, I set out to build a system that could sustain itself without constant intervention. So I developed a self-sufficient architecture, focused on efficiency and low cost. Basically, much of what cloud service providers do for you, I decided to do myself. The result is many hours of work, but an extremely low monthly expense to maintain the infrastructure.&lt;/p&gt;

&lt;p&gt;I work with:&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;
&lt;a href="https://www.docker.com/" rel="noopener noreferrer"&gt;Docker&lt;/a&gt; for containerization, with services defined for production&lt;/li&gt;
&lt;li&gt;
&lt;a href="https://github.com/features/actions" rel="noopener noreferrer"&gt;GitHub Actions&lt;/a&gt; for CI/CD pipelines&lt;/li&gt;
&lt;li&gt;
&lt;a href="https://www.redhat.com/en/ansible-collaborative" rel="noopener noreferrer"&gt;Ansible&lt;/a&gt; with custom scripts that manage remote deployments on my VPS&lt;/li&gt;
&lt;li&gt;
&lt;a href="https://prometheus.io/" rel="noopener noreferrer"&gt;Prometheus&lt;/a&gt; with &lt;a href="https://grafana.com/" rel="noopener noreferrer"&gt;Grafana&lt;/a&gt; for monitoring and visualization&lt;/li&gt;
&lt;li&gt;
&lt;a href="https://newrelic.com/" rel="noopener noreferrer"&gt;New Relic&lt;/a&gt; for performance monitoring&lt;/li&gt;
&lt;li&gt;
&lt;a href="https://grafana.com/oss/loki/" rel="noopener noreferrer"&gt;Loki&lt;/a&gt; for log aggregation&lt;/li&gt;
&lt;li&gt;
&lt;a href="https://slack.com" rel="noopener noreferrer"&gt;Slack&lt;/a&gt; for real-time alerts&lt;/li&gt;
&lt;li&gt;
&lt;a href="https://rollbar.com/" rel="noopener noreferrer"&gt;Rollbar&lt;/a&gt; for exception tracking&lt;/li&gt;
&lt;li&gt;A set of microservices divided by functionality, each with its isolated &lt;a href="https://www.postgresql.org/" rel="noopener noreferrer"&gt;PostgreSQL&lt;/a&gt; database that is using &lt;a href="https://www.pgbouncer.org/" rel="noopener noreferrer"&gt;PgBouncer&lt;/a&gt;.&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;Most services are written in Node.js (&lt;a href="https://nestjs.com/" rel="noopener noreferrer"&gt;NestJS framework&lt;/a&gt;), Python (&lt;a href="https://fastapi.tiangolo.com/" rel="noopener noreferrer"&gt;FastAPI&lt;/a&gt;), and Go (&lt;a href="https://gofiber.io/" rel="noopener noreferrer"&gt;Fiber&lt;/a&gt;), depending on the type of workload. API-heavy services are built with NestJS for its structure, computation-intensive services use Go for its performance, and data processing pipelines use Python for its rich ecosystem of libraries.&lt;/p&gt;

&lt;p&gt;I don't use tools like Terraform or EKS. I want to maintain control and avoid unnecessary costs. My infrastructure-as-code consists of Ansible playbooks and shell scripts, which together handle everything from server provisioning to automatic SSL certificate management with &lt;a href="https://certbot.eff.org/" rel="noopener noreferrer"&gt;certbot&lt;/a&gt;. Automation allows me to make monthly releases that rarely take more than a few minutes.&lt;/p&gt;

&lt;p&gt;Background services run with &lt;a href="https://www.prefect.io/" rel="noopener noreferrer"&gt;Prefect&lt;/a&gt; for workflow orchestration, and asynchronous communications between applications use &lt;a href="https://bullmq.io/" rel="noopener noreferrer"&gt;BullMQ&lt;/a&gt; with Redis as the message broker. For real-time features, I use Socket.IO with Redis adapters to support scaling. Currently, Deeditt costs me not more than $150 USD monthly, and that's enough to support a few hundred more users before needing to scale.&lt;/p&gt;




&lt;h2&gt;
  
  
  🔀 The Challenge of Service Communication
&lt;/h2&gt;

&lt;p&gt;One of the most complex challenges was establishing communication between different micro-services and servers. With &lt;a href="https://docs.docker.com/engine/swarm/" rel="noopener noreferrer"&gt;Docker Swarm&lt;/a&gt; orchestrating several nodes, I had to make difficult decisions about how to distribute limited resources most efficiently.&lt;/p&gt;

&lt;p&gt;I implemented an internal API gateway pattern where each service communicates through a central orchestrator that handles routing, authentication, and rate limiting. This reduces point-to-point communications and simplifies the overall architecture. Since everything runs under Docker Swarm, I don't need additional service discovery tools - the built-in networking handles service location efficiently.&lt;/p&gt;

&lt;p&gt;For data consistency across services, I implemented an event-driven architecture using a message queue system. When a service makes a state change, it publishes an event to a topic that other interested services subscribe to. This maintains eventual consistency without tight coupling.&lt;/p&gt;

&lt;p&gt;I had to write several custom rules to ensure stable connections between containers. Nothing overly complex, but certainly delicate. This is where my previous experience with distributed systems proved invaluable. I could have started with more sophisticated methods, but maintaining them would have been a headache I wanted to avoid at this stage.&lt;/p&gt;




&lt;h2&gt;
  
  
  🧩 The Hidden Complexity Behind Simplicity
&lt;/h2&gt;

&lt;p&gt;There's a whole world of complexity beneath Deeditt's surface that users never see. For example:&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;&lt;p&gt;&lt;strong&gt;Internationalization&lt;/strong&gt;: While Deeditt is prepared for multiple languages, I've currently implemented 6 languages in the frontend and 2 in the backend. The infrastructure is ready for full localization including time formats and cultural contexts, but it's not completely set up yet.&lt;/p&gt;&lt;/li&gt;
&lt;li&gt;&lt;p&gt;&lt;strong&gt;Content Caching&lt;/strong&gt;: What appears real-time actually involves caching systems with slight delays, optimizing the balance between immediacy and server load. User feeds are cached with intelligent invalidation to ensure content stays fresh.&lt;/p&gt;&lt;/li&gt;
&lt;li&gt;&lt;p&gt;&lt;strong&gt;Security Layers&lt;/strong&gt;: Multiple security systems work together to protect user data and ensure platform integrity, from authentication to data validation.&lt;/p&gt;&lt;/li&gt;
&lt;li&gt;&lt;p&gt;&lt;strong&gt;Recommendation Engine&lt;/strong&gt;: I'm working on a system that suggests relevant content and connections based on user interests and behavior patterns. It's still a work in progress, but even in its early stages, it helps users discover content they might find valuable.&lt;/p&gt;&lt;/li&gt;
&lt;li&gt;&lt;p&gt;&lt;strong&gt;Interface Complexity&lt;/strong&gt;: The UI might resemble &lt;a href="https://x.com/" rel="noopener noreferrer"&gt;Twitter&lt;/a&gt; or &lt;a href="https://www.threads.com/?hl=en" rel="noopener noreferrer"&gt;Threads&lt;/a&gt; at first glance, but once inside each "deed," there's a different world of options to discover—creating this intuitive complexity was one of the toughest design challenges.&lt;/p&gt;&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;Each of these elements taught me something valuable, both technically and about user expectations. The most elegant solutions are often those the user never notices are there.&lt;/p&gt;




&lt;h2&gt;
  
  
  🔄 Deployment and Recovery: Versions, Environments, and Pragmatism
&lt;/h2&gt;

&lt;p&gt;I work with three branches (dev, staging, production). Since my budget is limited, my sandbox is very restricted and shares some resources with production plus a local mix, which forces me to be careful, but it works.&lt;/p&gt;

&lt;p&gt;To stay organized, I use &lt;a href="https://linear.app/" rel="noopener noreferrer"&gt;Linear&lt;/a&gt; for project management, and each ticket number becomes a branch name. This approach clearly helps me identify what I'm building and keeps my work focused. Once a feature is ready, it gets merged into dev. This simple system creates a clear connection between planning and implementation that's invaluable when working solo.&lt;/p&gt;

&lt;p&gt;Each deployment is linked to a version tag, both in GitHub and Docker Hub. If something fails, I rollback to a previous stable image. My deployment strategy ensures minimal disruption when updating services, with health checks confirming stability before completing the transition.&lt;/p&gt;

&lt;p&gt;For smaller projects, this level of organization might seem excessive, but when managing multiple micro-services and a growing feature set, having this structured approach to deployment and recovery has saved me countless hours of troubleshooting.&lt;/p&gt;




&lt;h2&gt;
  
  
  🧠 Technical (and Not-So-Technical) Learnings
&lt;/h2&gt;

&lt;p&gt;One of the first systems I implemented was a scoring algorithm with many rules and a popularity system based on multiple factors. It considered interaction patterns, content quality, and user engagement signals to determine what should be shown in feeds.&lt;/p&gt;

&lt;p&gt;But over time, I realized I had over-designed things that actually needed to be simple. I refactored the system to focus on just a few core metrics, which resulted in both better performance and more intuitive results for users.&lt;/p&gt;

&lt;p&gt;I also spent many hours creating monitoring dashboards. I tracked everything from resource usage to user engagement patterns. But eventually, I understood I was optimizing things that didn't yet need attention. In early stages, less is more.&lt;/p&gt;

&lt;blockquote&gt;
&lt;p&gt;&lt;strong&gt;Have you spent hours optimizing something that didn't really need optimization at that moment?&lt;/strong&gt;&lt;/p&gt;
&lt;/blockquote&gt;

&lt;p&gt;If I were to go back, I would simplify. Not everything needs to be perfect from day one. Sometimes, "&lt;strong&gt;good enough&lt;/strong&gt;" is exactly what's needed.&lt;/p&gt;

&lt;p&gt;In retrospect, developing such comprehensive metrics at an early stage was premature. Although it gives me visibility into the platform, that time could have been invested in features more important for attracting users.&lt;/p&gt;




&lt;h2&gt;
  
  
  🔑 The Unique Value: Journeys as a Differentiator
&lt;/h2&gt;

&lt;p&gt;What truly distinguishes &lt;strong&gt;Deeditt&lt;/strong&gt; from other platforms are &lt;strong&gt;"Journeys"&lt;/strong&gt;. While other social networks show isolated moments, Deeditt allows grouping related &lt;strong&gt;"deeds"&lt;/strong&gt; (achievements/actions) that together tell a complete story over time.&lt;/p&gt;

&lt;p&gt;Technically, Journeys are implemented as a flexible structure where each journey can contain multiple deeds, and journeys can also connect to other journeys. This creates a way to organize content that mirrors how real experiences are interconnected.&lt;/p&gt;

&lt;p&gt;Each deed within a journey can include images, videos, hashtags, and mentions of other users. Additionally, you can configure privacy settings and define who has access to specific journeys and deeds through customizable visibility policies.&lt;/p&gt;

&lt;p&gt;This approach solves a silent but critical problem of our time: &lt;strong&gt;the difficulty of verifying if someone really has the experience they claim&lt;/strong&gt;. By seeing a complete story with all its parts, including obstacles and failures, you get an authentic context that traditional platforms don't offer.&lt;/p&gt;

&lt;p&gt;And like many things we do in life, we're always involved in more than just one thing. I'm a clear example—while writing about the development process of Deeditt, I also share thoughts about my son, my journey learning open water swimming, some health issues, and other topics. Each of these is separate, without needing to share too many personal details—just a general view of the moment I'm going through.&lt;/p&gt;

&lt;p&gt;The most beautiful part so far is that search engines are already starting to discover the content being created on Deeditt, and that means a lot of positive things.&lt;/p&gt;




&lt;h2&gt;
  
  
  🌪️ The Real Challenge: Users, Community, and Visibility
&lt;/h2&gt;

&lt;blockquote&gt;
&lt;p&gt;None of this matters if nobody uses it.&lt;/p&gt;
&lt;/blockquote&gt;

&lt;p&gt;And there's the real challenge: building community. I returned to social media after years away, only to discover that organic marketing, content, and interaction are completely different worlds from distributed systems and CI/CD pipelines.&lt;/p&gt;

&lt;p&gt;On platforms like Medium, I encountered the usual problem: algorithms that don't show what you write if you're not "playing the game." Claps, reads, comments... nothing seemed to have consistency. On LinkedIn, I saw an avalanche of "perfect posts" where everyone is successful, brilliant, and unstoppable.&lt;/p&gt;

&lt;p&gt;Deeditt doesn't want that, Deeditt wants the journey, the stumbles, the questionable decisions, the discarded versions.&lt;/p&gt;

&lt;p&gt;And of course, that's not easy to sell.&lt;/p&gt;

&lt;h2&gt;
  
  
  👂 What I've Learned from Feedback
&lt;/h2&gt;

&lt;p&gt;User feedback has been revealing. many get excited about the concept, suggest features, and celebrate updates... but then don't actively use the platform.&lt;/p&gt;

&lt;p&gt;This paradox—the gap between what people say and what they do—has been one of my biggest learning. By tracking feature adoption and identifying drop-off points, I discovered that while users loved the concept of Journeys, the friction of creating them was too high.&lt;/p&gt;

&lt;p&gt;I'm using that behavior to adjust the experience, but I'm doing it calmly. I want to listen more than I assume, and I'm prepared to change whatever is necessary.&lt;/p&gt;




&lt;h2&gt;
  
  
  💬 Breaking the Technical-Human Barrier
&lt;/h2&gt;

&lt;p&gt;Perhaps the most unexpected challenge has been learning to express myself effectively. As a developer, I was used to communicating with computers, not people. Marketing, clear communication, and emotional connection are skills I've had to develop from scratch.&lt;/p&gt;

&lt;blockquote&gt;
&lt;p&gt;It's ironic: I created a platform to improve authentic communication, and in the process, I'm learning to be more authentic in my own communication.&lt;/p&gt;
&lt;/blockquote&gt;

&lt;h2&gt;
  
  
  ✋ To Those Who Haven't Started Yet: Don't Wait for Everything to Be Figured Out
&lt;/h2&gt;

&lt;p&gt;If you're reading this and haven't started your project yet because you're waiting for your idea to be ready or the stack to be perfect, I'll tell you honestly: it won't be.&lt;/p&gt;

&lt;p&gt;Start with what you know. Adjust along the way. Nothing is definitive. I've modified many parts I thought were immovable. Building is iterating, and if you can share what you experience, even a little, you're doing something much more valuable than it seems.&lt;/p&gt;

&lt;p&gt;If you have an idea, start it and don't wait for it to be perfect, don't wait to have everything clear. You'll solve things as you go, and what seems like a great solution today might not be tomorrow. That's okay. That's what building is about.&lt;/p&gt;




&lt;h2&gt;
  
  
  Before Closing
&lt;/h2&gt;

&lt;p&gt;I'm still building &lt;strong&gt;Deeditt&lt;/strong&gt;. I'm still writing about its evolution under the title "&lt;a href="https://deeditt.com/app/users/@jackfiallos/journeys/a7b3836d-e7cd-4023-9baf-4a5a8035befb" rel="noopener noreferrer"&gt;Building Deeditt&lt;/a&gt;" I don't know when it will grow, or how many people will use it. But I do know that every line of code, every adjustment, and every decision is made with purpose.&lt;/p&gt;

&lt;p&gt;What I want to convey is that building solo is possible—even rewarding—but requires balancing technical and human skills. You don't need to spend fortunes on cloud services to create something valuable, but the time you invest is perhaps your most precious resource.&lt;/p&gt;

&lt;p&gt;I continue working on &lt;strong&gt;Deeditt&lt;/strong&gt; because I believe it makes sense, even if growth is slow. I do it because I want there to be a place where we can show our processes—without fear and without embellishment.&lt;/p&gt;

&lt;p&gt;In the end, it's about creating spaces where we can all grow, share, and learn together.&lt;/p&gt;

&lt;p&gt;If you're curious, I invite you to take a look at what I've been building. I'm always eager to hear others' stories—feedback, good or bad, is always welcome. And if you're feeling a bit tired of traditional social media, I propose a different model for sharing content. One where you don’t need to chase validation or constantly post something flashy. I call it &lt;strong&gt;"slow content"&lt;/strong&gt;—a way of publishing that encourages you to write only when you have something meaningful to share, something that adds value to your knowledge and might resonate with others.&lt;/p&gt;

&lt;p&gt;And if you're also building something, I'd love to hear your story on Deeditt—or tell me in the comments.&lt;/p&gt;

</description>
      <category>indiehacker</category>
      <category>learning</category>
      <category>buildinpublic</category>
      <category>startup</category>
    </item>
    <item>
      <title>How do you deploy your applications?</title>
      <dc:creator>Jackfiallos</dc:creator>
      <pubDate>Sun, 17 May 2020 10:13:12 +0000</pubDate>
      <link>https://dev.to/jackfiallos/how-do-you-deploy-your-applications-4i32</link>
      <guid>https://dev.to/jackfiallos/how-do-you-deploy-your-applications-4i32</guid>
      <description>&lt;p&gt;Usually I use Mina and Codeship and before Capistrano and Jenkins but I'm interested of knowing what you people use to deploy your applications. Comments and links are very welcome.&lt;/p&gt;

&lt;p&gt;Cheers!&lt;/p&gt;

</description>
      <category>discuss</category>
      <category>question</category>
      <category>deployment</category>
      <category>tools</category>
    </item>
    <item>
      <title>Create your own tunnelling like ngrok does</title>
      <dc:creator>Jackfiallos</dc:creator>
      <pubDate>Wed, 19 Feb 2020 18:36:48 +0000</pubDate>
      <link>https://dev.to/jackfiallos/create-your-own-tunnelling-like-ngrok-does-kg4</link>
      <guid>https://dev.to/jackfiallos/create-your-own-tunnelling-like-ngrok-does-kg4</guid>
      <description>&lt;p&gt;If you're here is because you don't want to use &lt;a href="https://ngrok.com/" rel="noopener noreferrer"&gt;ngrok&lt;/a&gt; or you are looking for an alternative to it, which is pretty valid because if somebody did that, why you don't?&lt;/p&gt;

&lt;p&gt;Well, this story begins with me trying to make my local development environment public and here is where &lt;a href="https://ngrok.com/" rel="noopener noreferrer"&gt;ngrok&lt;/a&gt; came to the rescue, this tool works really well, but with some limitations, like having a random subdomain every time you restart your application or using more than one connection, are the things you will need to deal with unless you don't pay for it.&lt;/p&gt;

&lt;p&gt;So basically everything works behind ssh tunnelling connections, and if you want to create your own &lt;a href="https://ngrok.com/" rel="noopener noreferrer"&gt;ngrok&lt;/a&gt; clone, mainly you will need a VPS server running Linux preferentially.&lt;/p&gt;

&lt;p&gt;Now try to connect your local computer to the VPS server through SSH (111.111.111.111 in this case).&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight shell"&gt;&lt;code&gt;&lt;span class="nv"&gt;$ &lt;/span&gt;ssh root@111.111.111.111
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;There are some different ways to get this done, every connection string depends on the service provider you're using, could need to type your password or could be using a .pem key but in the end, will have the same result.&lt;/p&gt;

&lt;p&gt;With your VPS session opened, just type the next command in your terminal, if you have issues with this command try to open the &lt;a href="https://www.ssh.com/ssh/sshd_config" rel="noopener noreferrer"&gt;sshd_config&lt;/a&gt; file and write at the very end "&lt;a href="https://www.ssh.com/ssh/tunneling/example" rel="noopener noreferrer"&gt;GatewayPorts yes&lt;/a&gt;".&lt;/p&gt;

&lt;p&gt;$ echo "GatewayPorts yes" &amp;gt;&amp;gt; /etc/ssh/sshd_config&lt;br&gt;
By default, OpenSSH only allows connecting to remote forwarded ports from the server host. However, the GatewayPorts option in the server configuration file sshd_config can be used to control this.&lt;/p&gt;

&lt;p&gt;Restart the SSH service and exit from your session&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight shell"&gt;&lt;code&gt;&lt;span class="nv"&gt;$ &lt;/span&gt;service ssh restart
&lt;span class="nv"&gt;$ &lt;/span&gt;&lt;span class="nb"&gt;exit&lt;/span&gt;
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;Now you should be able to run a command similar to this one, and guess what!!&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight shell"&gt;&lt;code&gt;&lt;span class="nv"&gt;$ &lt;/span&gt;ssh &lt;span class="nt"&gt;-R&lt;/span&gt; 8080:localhost:3000 root@111.111.111.111
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;Voilá, this will open the port 8080 on the VPS server and will forward it to the port 3000 on our local machine, basically means you can type on your browser &lt;a href="http://111.111.111.111:8080" rel="noopener noreferrer"&gt;http://111.111.111.111:8080&lt;/a&gt; and effectively will redirect the traffic to your local computer.&lt;/p&gt;

&lt;p&gt;I know you want more, say.. subdomains and https connections? yeah, why not, let's finish this.&lt;/p&gt;

&lt;p&gt;The next part of this mini how-to is creating a subdomain and link it with your public VPS IP, but I'm will leave this to you, again .. this depends on what service provider you're using.&lt;/p&gt;

&lt;p&gt;At this point, you have your VPS server running and ready to forward from source to destination ports, let's assume you have your subdomain created as well, now the next step will be setting up your web server with a reverse proxy tweak. In my case I decided to use Nginx, it's my favourite and it's really simple to set up, actually, my current configuration is similar to this:&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight shell"&gt;&lt;code&gt;server &lt;span class="o"&gt;{&lt;/span&gt;
    listen 80 default_server&lt;span class="p"&gt;;&lt;/span&gt;
    listen &lt;span class="o"&gt;[&lt;/span&gt;::]:80 default_server&lt;span class="p"&gt;;&lt;/span&gt;

    server_name _&lt;span class="p"&gt;;&lt;/span&gt;
    location / &lt;span class="o"&gt;{&lt;/span&gt;
        proxy_pass http://127.0.0.1:8080&lt;span class="p"&gt;;&lt;/span&gt;
    &lt;span class="o"&gt;}&lt;/span&gt;
&lt;span class="o"&gt;}&lt;/span&gt;
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;And again, works! my VPS server receives traffic from my subdomain and redirects to 127.0.0.1:8080 which is the same server but through SSH tunnelling.&lt;/p&gt;

&lt;p&gt;If we test again typing in the browser address bar &lt;a href="http://yoursubdomain.domain.com" rel="noopener noreferrer"&gt;http://yoursubdomain.domain.com&lt;/a&gt; should work and redirect again all petitions to your local computer.&lt;/p&gt;

&lt;p&gt;This still needs to work with SSL and to complete this step I recommend you to install &lt;a href="https://certbot.eff.org/" rel="noopener noreferrer"&gt;certbot&lt;/a&gt; and follow the instructions, it's pretty straight forward so I don't have a doubt you will get it.&lt;/p&gt;

&lt;p&gt;This is my first article as a non-native English-speaker, so be kind and patient.&lt;/p&gt;

&lt;p&gt;Happy Coding! :D&lt;/p&gt;

</description>
      <category>ssh</category>
      <category>tunnelling</category>
      <category>ngrok</category>
      <category>forward</category>
    </item>
  </channel>
</rss>
