<?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: Warren Thinwar</title>
    <description>The latest articles on DEV Community by Warren Thinwar (@thinwar).</description>
    <link>https://dev.to/thinwar</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%2F3016447%2F9276a482-b54b-456a-b67e-42574de230f8.jpg</url>
      <title>DEV Community: Warren Thinwar</title>
      <link>https://dev.to/thinwar</link>
    </image>
    <atom:link rel="self" type="application/rss+xml" href="https://dev.to/feed/thinwar"/>
    <language>en</language>
    <item>
      <title>What LuxDevHQ Week 2 Taught Me About Linux and Postgres</title>
      <dc:creator>Warren Thinwar</dc:creator>
      <pubDate>Tue, 01 Sep 2026 04:02:30 +0000</pubDate>
      <link>https://dev.to/thinwar/what-luxdevhq-week-2-taught-me-about-linux-and-postgres-53d</link>
      <guid>https://dev.to/thinwar/what-luxdevhq-week-2-taught-me-about-linux-and-postgres-53d</guid>
      <description>&lt;p&gt;What LuxDevHQ Week 2 Taught Me About Linux and Postgres&lt;/p&gt;

&lt;p&gt;Week 2 of the Data Engineering track at LuxDevHQ was the week I stopped treating the terminal like a black box that occasionally yells at me, and started treating errors like they were trying to help.&lt;/p&gt;

&lt;p&gt;Nothing dramatic happened. I didn't break the server. I didn't lose data. If anything, the most useful moment of the whole week was a command that refused to run. But that refusal taught me more about how Linux thinks than any command that worked on the first try ever has.&lt;/p&gt;

&lt;p&gt;Here's what stuck.&lt;/p&gt;

&lt;p&gt;Orientation is not optional&lt;/p&gt;

&lt;p&gt;Before this week, my instinct when I opened a terminal was to just start typing the command I came to run. This week I got burned — well, mildly singed — by jumping straight into a task without checking where I actually was.&lt;/p&gt;

&lt;p&gt;Over the course of one session I was hopping between three different contexts: a remote droplet, my local WSL environment, and a Postgres-as-a-user shell. Half of my confusion that day wasn't about syntax at all. It was that I genuinely wasn't sure which machine or which user I was operating as when I ran a command.&lt;/p&gt;

&lt;p&gt;So now this is muscle memory, five commands, every single time I open a new shell:&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="sb"&gt;`&lt;/span&gt;bash
&lt;span class="nb"&gt;whoami&lt;/span&gt;                  &lt;span class="c"&gt;# who am I?&lt;/span&gt;
&lt;span class="nb"&gt;hostname&lt;/span&gt; &lt;span class="nt"&gt;-I&lt;/span&gt;             &lt;span class="c"&gt;# what machine am I on?&lt;/span&gt;
&lt;span class="nb"&gt;groups&lt;/span&gt;                  &lt;span class="c"&gt;# what can I do here?&lt;/span&gt;
&lt;span class="nb"&gt;pwd&lt;/span&gt;                     &lt;span class="c"&gt;# where am I?&lt;/span&gt;
&lt;span class="nb"&gt;ls&lt;/span&gt; &lt;span class="nt"&gt;-l&lt;/span&gt;                   &lt;span class="c"&gt;# what's in front of me`?&lt;/span&gt;
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;Boring. Cheap. Non-negotiable. It costs five seconds and it's saved me from running a "safe" command in the wrong context more than once.&lt;/p&gt;

&lt;p&gt;SSH mistakes are loud, so don't repeat them&lt;/p&gt;

&lt;p&gt;Small one, but worth writing down: I fat-fingered an SSH login with the wrong username (caleb instead of thinwar) and my first instinct was to just... try again with the same wrong username, thinking maybe I mistyped the password.&lt;/p&gt;

&lt;p&gt;Bad habit. On a shared server, repeated failed logins with the same username look exactly like someone brute-forcing an account — even if it's just you being sleepy. The better habit is: if a login fails, stop, actually check which user you meant to be, and only then retry.&lt;/p&gt;

&lt;p&gt;The usermod error that taught me the most this week&lt;/p&gt;

&lt;p&gt;This is the one I want to spend the most time on, because it's the moment the whole week clicked for me.&lt;/p&gt;

&lt;p&gt;I tried to change my own home directory while logged in as myself:&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight shell"&gt;&lt;code&gt;bash
usermod &lt;span class="nt"&gt;-d&lt;/span&gt; /home/data warren
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;And it failed:&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight plaintext"&gt;&lt;code&gt;usermod
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;: user warren is currently used by process 363&lt;/p&gt;

&lt;p&gt;My first reaction, honestly, was mild annoyance — "why won't this just work." But sitting with it for a second: this is Linux doing something smart. You can't change certain fields — home directory, UID — for a user that has live running processes, because doing that mid-session could corrupt whatever's relying on the old value. And since I was logged in as warren, running the command as warren, I was always going to hit this wall.&lt;/p&gt;

&lt;p&gt;Instead of guessing around it, I went and actually diagnosed what was running:&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight shell"&gt;&lt;code&gt;bash
ps &lt;span class="nt"&gt;-u&lt;/span&gt; warren                &lt;span class="c"&gt;# everything running as me right now&lt;/span&gt;
ps &lt;span class="nt"&gt;-p&lt;/span&gt; 363 &lt;span class="nt"&gt;-f&lt;/span&gt;                &lt;span class="c"&gt;# what specifically is PID 363?&lt;/span&gt;
ps &lt;span class="nt"&gt;-u&lt;/span&gt; warren &lt;span class="nt"&gt;--forest&lt;/span&gt;       &lt;span class="c"&gt;# the whole process tree for my user&lt;/span&gt;
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;And the real fix, if you genuinely need to change a live user's home directory, isn't a force flag — it's logging out and doing it from a different session or a different admin user entirely:&lt;/p&gt;

&lt;p&gt;bash&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="nb"&gt;sudo &lt;/span&gt;usermod &lt;span class="nt"&gt;-d&lt;/span&gt; /home/newpath &lt;span class="nt"&gt;-m&lt;/span&gt; warren
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;The habit I'm taking from this: when usermod refuses with a "currently used by process" error, that's not a bug to route around. That's the system protecting you. My job is to log out and retry from elsewhere, not to go hunting for -f.&lt;/p&gt;

&lt;p&gt;Shells, /etc/shells, and the case of the "no changes" mystery&lt;/p&gt;

&lt;p&gt;Same session, different rabbit hole. I wanted to understand valid login shells before touching anything, so:&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight shell"&gt;&lt;code&gt;bash
&lt;span class="nb"&gt;cat&lt;/span&gt; /etc/shells
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;This file is the system's allow-list — the programs it considers valid login shells. chsh and usermod -s will generally only accept a path that's listed here.&lt;/p&gt;

&lt;p&gt;I compared my current shell against my options:&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight shell"&gt;&lt;code&gt;bash
&lt;span class="nb"&gt;echo&lt;/span&gt; &lt;span class="nv"&gt;$SHELL&lt;/span&gt;
&lt;span class="nb"&gt;grep &lt;/span&gt;warren /etc/passwd     &lt;span class="c"&gt;# last field = configured login shell&lt;/span&gt;
&lt;span class="nb"&gt;cat&lt;/span&gt; /etc/shells
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;Then tried setting it to something "different" just to watch the mechanism work:&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight shell"&gt;&lt;code&gt;bash
&lt;span class="nb"&gt;sudo &lt;/span&gt;usermod &lt;span class="nt"&gt;-s&lt;/span&gt; /usr/bin/bash warren
&lt;span class="nb"&gt;grep &lt;/span&gt;warren /etc/passwd
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;And got told, essentially, "nothing changed." Turns out /bin/bash and /usr/bin/bash are usually just the same binary — one's a symlink to the other — so the system correctly recognized there was nothing to update. Not an error. Just Linux being precise.&lt;/p&gt;

&lt;p&gt;The real lesson here is the gap between $SHELL and /etc/passwd. $SHELL reflects your current session — it can lag behind a change until you log back in. /etc/passwd is the ground truth for what's actually configured. So now: grep  /etc/passwd before and after any shell change, always.&lt;/p&gt;

&lt;p&gt;A safe checklist for changing a live user's settings&lt;/p&gt;

&lt;p&gt;Putting the two lessons above together, this is the sequence I'm now committing to for touching any account that might be actively logged in:&lt;/p&gt;

&lt;p&gt;bash&lt;/p&gt;

&lt;h1&gt;
  
  
  1. Check if the user has active processes
&lt;/h1&gt;



&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight shell"&gt;&lt;code&gt;ps &lt;span class="nt"&gt;-u&lt;/span&gt; &amp;lt;user&amp;gt;
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;h1&gt;
  
  
  2. Check current values before you touch anything
&lt;/h1&gt;



&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight shell"&gt;&lt;code&gt;&lt;span class="nb"&gt;grep&lt;/span&gt; &amp;lt;user&amp;gt; /etc/passwd
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;h1&gt;
  
  
  3. If processes exist and you're changing something process-sensitive
&lt;/h1&gt;

&lt;h1&gt;
  
  
  (home dir, UID, GID) — log that user out first, don't force it
&lt;/h1&gt;

&lt;h1&gt;
  
  
  4. Make the change
&lt;/h1&gt;



&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight shell"&gt;&lt;code&gt;&lt;span class="nb"&gt;sudo &lt;/span&gt;usermod &amp;lt;flags&amp;gt; &amp;lt;user&amp;gt;
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;h1&gt;
  
  
  5. Verify immediately
&lt;/h1&gt;



&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight shell"&gt;&lt;code&gt;&lt;span class="nb"&gt;grep&lt;/span&gt; &amp;lt;user&amp;gt; /etc/passwd
&lt;span class="nb"&gt;id&lt;/span&gt; &amp;lt;user&amp;gt;
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;The distinction worth internalizing (this feels like the kind of thing that gets asked in interviews): shell changes and supplementary group changes are generally safe to do on a live session. Home directory and UID changes are not — and the system will tell you so, if you're paying attention.&lt;/p&gt;

&lt;p&gt;Postgres: the 3-step grant pattern for a role that can actually do things&lt;/p&gt;

&lt;p&gt;The Linux stuff was about being careful. The Postgres stuff was about being complete. It's easy to create a role and grant it something, run a query, see it work, and think you're done — and then discover three weeks later that half of what the role needs is still locked.&lt;/p&gt;

&lt;p&gt;Here's the sequence that actually gives a new role (teammate, or an app) working access, not just existence:&lt;/p&gt;

&lt;p&gt;sql&lt;br&gt;
-- Step 1: create the database and the role&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight sql"&gt;&lt;code&gt;&lt;span class="k"&gt;CREATE&lt;/span&gt; &lt;span class="k"&gt;DATABASE&lt;/span&gt; &lt;span class="n"&gt;project_db&lt;/span&gt;&lt;span class="p"&gt;;&lt;/span&gt;
&lt;span class="k"&gt;CREATE&lt;/span&gt; &lt;span class="k"&gt;USER&lt;/span&gt; &lt;span class="n"&gt;app_user&lt;/span&gt; &lt;span class="k"&gt;WITH&lt;/span&gt; &lt;span class="n"&gt;PASSWORD&lt;/span&gt; &lt;span class="s1"&gt;'change_me'&lt;/span&gt;&lt;span class="p"&gt;;&lt;/span&gt;
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;-- Step 2: let the role connect and create inside the schema&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight sql"&gt;&lt;code&gt;&lt;span class="k"&gt;GRANT&lt;/span&gt; &lt;span class="k"&gt;ALL&lt;/span&gt; &lt;span class="k"&gt;PRIVILEGES&lt;/span&gt; &lt;span class="k"&gt;ON&lt;/span&gt; &lt;span class="k"&gt;DATABASE&lt;/span&gt; &lt;span class="n"&gt;project_db&lt;/span&gt; &lt;span class="k"&gt;TO&lt;/span&gt; &lt;span class="n"&gt;app_user&lt;/span&gt;&lt;span class="p"&gt;;&lt;/span&gt;
&lt;span class="err"&gt;\&lt;/span&gt;&lt;span class="k"&gt;c&lt;/span&gt; &lt;span class="n"&gt;project_db&lt;/span&gt;
&lt;span class="k"&gt;GRANT&lt;/span&gt; &lt;span class="k"&gt;USAGE&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt; &lt;span class="k"&gt;CREATE&lt;/span&gt; &lt;span class="k"&gt;ON&lt;/span&gt; &lt;span class="k"&gt;SCHEMA&lt;/span&gt; &lt;span class="k"&gt;public&lt;/span&gt; &lt;span class="k"&gt;TO&lt;/span&gt; &lt;span class="n"&gt;app_user&lt;/span&gt;&lt;span class="p"&gt;;&lt;/span&gt;

&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;-- Step 3: extend rights to tables — existing AND future&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight sql"&gt;&lt;code&gt;&lt;span class="k"&gt;GRANT&lt;/span&gt; &lt;span class="k"&gt;ALL&lt;/span&gt; &lt;span class="k"&gt;PRIVILEGES&lt;/span&gt; &lt;span class="k"&gt;ON&lt;/span&gt; &lt;span class="k"&gt;ALL&lt;/span&gt; &lt;span class="n"&gt;TABLES&lt;/span&gt; &lt;span class="k"&gt;IN&lt;/span&gt; &lt;span class="k"&gt;SCHEMA&lt;/span&gt; &lt;span class="k"&gt;public&lt;/span&gt; &lt;span class="k"&gt;TO&lt;/span&gt; &lt;span class="n"&gt;app_user&lt;/span&gt;&lt;span class="p"&gt;;&lt;/span&gt;
&lt;span class="k"&gt;ALTER&lt;/span&gt; &lt;span class="k"&gt;DEFAULT&lt;/span&gt; &lt;span class="k"&gt;PRIVILEGES&lt;/span&gt; &lt;span class="k"&gt;IN&lt;/span&gt; &lt;span class="k"&gt;SCHEMA&lt;/span&gt; &lt;span class="k"&gt;public&lt;/span&gt; &lt;span class="k"&gt;GRANT&lt;/span&gt; &lt;span class="k"&gt;ALL&lt;/span&gt; &lt;span class="k"&gt;PRIVILEGES&lt;/span&gt; &lt;span class="k"&gt;ON&lt;/span&gt; &lt;span class="n"&gt;TABLES&lt;/span&gt; &lt;span class="k"&gt;TO&lt;/span&gt; &lt;span class="n"&gt;app_user&lt;/span&gt;&lt;span class="p"&gt;;&lt;/span&gt;

&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;That last line is the one that's easy to skip and expensive to forget. Without ALTER DEFAULT PRIVILEGES, any table someone creates after today won't automatically be visible to app_user. It's not implied by the earlier grants — it's a separate, forward-looking rule. Now it's a habit every time I provision a role, not an afterthought.&lt;/p&gt;

&lt;p&gt;Inspecting a database like you didn't build it&lt;/p&gt;

&lt;p&gt;Also practiced: the muscle of walking into an unfamiliar database and figuring out its shape before touching it, which is basically the day-to-day reality of joining any real team.&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight sql"&gt;&lt;code&gt;&lt;span class="k"&gt;SQL&lt;/span&gt;
&lt;span class="err"&gt;\&lt;/span&gt;&lt;span class="k"&gt;c&lt;/span&gt; &lt;span class="n"&gt;project_db&lt;/span&gt;
&lt;span class="err"&gt;\&lt;/span&gt;&lt;span class="n"&gt;dt&lt;/span&gt;              &lt;span class="c1"&gt;-- what tables exist?&lt;/span&gt;
&lt;span class="err"&gt;\&lt;/span&gt;&lt;span class="n"&gt;d&lt;/span&gt; &lt;span class="n"&gt;customers&lt;/span&gt;     &lt;span class="c1"&gt;-- what does this one actually look like?&lt;/span&gt;
&lt;span class="err"&gt;\&lt;/span&gt;&lt;span class="n"&gt;ds&lt;/span&gt;              &lt;span class="c1"&gt;-- any sequences behind it?&lt;/span&gt;
&lt;span class="err"&gt;\&lt;/span&gt;&lt;span class="n"&gt;di&lt;/span&gt;              &lt;span class="c1"&gt;-- any indexes I should know about?&lt;/span&gt;
&lt;span class="err"&gt;\&lt;/span&gt;&lt;span class="n"&gt;du&lt;/span&gt;              &lt;span class="c1"&gt;-- who else has access?&lt;/span&gt;

&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;Then confirming data actually flows the way you expect:&lt;/p&gt;

&lt;p&gt;SQL&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight sql"&gt;&lt;code&gt;&lt;span class="k"&gt;INSERT&lt;/span&gt; &lt;span class="k"&gt;INTO&lt;/span&gt; &lt;span class="n"&gt;customers&lt;/span&gt; &lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="n"&gt;first_name&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt; &lt;span class="n"&gt;last_name&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt; &lt;span class="n"&gt;email&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt; &lt;span class="n"&gt;age&lt;/span&gt;&lt;span class="p"&gt;)&lt;/span&gt;
&lt;span class="k"&gt;VALUES&lt;/span&gt; &lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="s1"&gt;'Test'&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt; &lt;span class="s1"&gt;'User'&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt; &lt;span class="s1"&gt;'test@example.com'&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt; &lt;span class="mi"&gt;99&lt;/span&gt;&lt;span class="p"&gt;);&lt;/span&gt;

&lt;span class="k"&gt;SELECT&lt;/span&gt; &lt;span class="o"&gt;*&lt;/span&gt; &lt;span class="k"&gt;FROM&lt;/span&gt; &lt;span class="n"&gt;customers&lt;/span&gt; &lt;span class="k"&gt;WHERE&lt;/span&gt; &lt;span class="n"&gt;age&lt;/span&gt; &lt;span class="o"&gt;&amp;gt;&lt;/span&gt; &lt;span class="mi"&gt;25&lt;/span&gt;&lt;span class="p"&gt;;&lt;/span&gt;
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;




&lt;p&gt;The one-line habit here: run \d &lt;/p&gt; before writing any query against a table you didn't create. It's the fastest way to avoid a typo'd column name costing you ten minutes of confusion.
&lt;p&gt;Permissions, practiced on something that doesn't matter&lt;/p&gt;
&lt;p&gt;Small sandbox exercise, but a good one — practicing chmod/chown on a throwaway file instead of on anything that matters:&lt;br&gt;&lt;br&gt;
&lt;/p&gt;
&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight shell"&gt;&lt;code&gt;bash&lt;br&gt;
&lt;span class="nb"&gt;touch &lt;/span&gt;practice.txt&lt;br&gt;
&lt;span class="nb"&gt;ls&lt;/span&gt; &lt;span class="nt"&gt;-l&lt;/span&gt; practice.txt              &lt;span class="c"&gt;# baseline: -rw-r--r--&lt;/span&gt;

&lt;p&gt;&lt;span class="nb"&gt;chmod &lt;/span&gt;u+x practice.txt          &lt;span class="c"&gt;# add owner execute&lt;/span&gt;&lt;br&gt;
&lt;span class="nb"&gt;chmod &lt;/span&gt;g+w practice.txt          &lt;span class="c"&gt;# add group write&lt;/span&gt;&lt;br&gt;
&lt;span class="nb"&gt;ls&lt;/span&gt; &lt;span class="nt"&gt;-l&lt;/span&gt; practice.txt              &lt;span class="c"&gt;# confirm: -rwxrw-r--&lt;/span&gt;&lt;/p&gt;

&lt;p&gt;&lt;span class="nb"&gt;sudo chown&lt;/span&gt; &lt;span class="si"&gt;$(&lt;/span&gt;&lt;span class="nb"&gt;whoami&lt;/span&gt;&lt;span class="si"&gt;)&lt;/span&gt;:&lt;span class="si"&gt;$(&lt;/span&gt;&lt;span class="nb"&gt;whoami&lt;/span&gt;&lt;span class="si"&gt;)&lt;/span&gt; practice.txt&lt;br&gt;
&lt;span class="nb"&gt;rm &lt;/span&gt;practice.txt                 &lt;span class="c"&gt;# clean up after yourself&lt;/span&gt;&lt;br&gt;
&lt;/p&gt;&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;

&lt;p&gt;Habit: ls -l immediately before and after any permission change. Permissions are invisible until you actually check — and checking costs one command.&lt;/p&gt;
&lt;p&gt;The loop underneath all of it&lt;/p&gt;
&lt;p&gt;If I zoom out, everything above collapses into the same six-step loop, and I think this loop is actually the transferable skill — more than any individual command:&lt;/p&gt;
&lt;p&gt;Orient — whoami, hostname -I, groups, pwd&lt;br&gt;&lt;br&gt;
Connect deliberately — SSH in, confirm you're where you meant to be&lt;br&gt;&lt;br&gt;
Inspect before you change — \l, \dt, \d, ls -l&lt;br&gt;&lt;br&gt;
Change one thing at a time&lt;br&gt;&lt;br&gt;
Verify immediately after — \dt, ls -l, id, SELECT *&lt;br&gt;&lt;br&gt;
Clean up test artifacts — drop test rows, remove scratch files&lt;br&gt;&lt;br&gt;
The actual takeaway&lt;/p&gt;
&lt;p&gt;The usermod refusal is the moment I keep coming back to. It would have been easy to read that error as "this tool is broken" or go looking for a force flag to push through it. Instead it was the system correctly refusing to let me destabilize my own live session.&lt;/p&gt;
&lt;p&gt;That's the real Week 2 lesson, underneath all the specific commands: learning to tell the difference between "this is a typo I need to fix" and "this is a safety feature doing its job." The second one shows up a lot more often in real infrastructure work than I expected, and it's a much better use of your attention than fighting it.&lt;/p&gt;
&lt;p&gt;On to Week 3.&lt;/p&gt;
&lt;div class="table-wrapper-paragraph"&gt;&lt;table&gt;


&lt;/table&gt;&lt;/div&gt;

</description>
      <category>database</category>
      <category>learning</category>
      <category>linux</category>
      <category>postgres</category>
    </item>
    <item>
      <title>My First Week at LuxDev HQ: Getting Comfortable with Git and the Command Line</title>
      <dc:creator>Warren Thinwar</dc:creator>
      <pubDate>Sun, 23 Aug 2026 10:35:21 +0000</pubDate>
      <link>https://dev.to/thinwar/my-first-week-at-luxdev-hq-getting-comfortable-with-git-and-the-command-line-4pkb</link>
      <guid>https://dev.to/thinwar/my-first-week-at-luxdev-hq-getting-comfortable-with-git-and-the-command-line-4pkb</guid>
      <description>&lt;p&gt;Starting something new in tech can be exciting, but it can also be a little overwhelming.&lt;/p&gt;

&lt;p&gt;This week at &lt;strong&gt;LuxDev HQ&lt;/strong&gt;, I got to work with some tools and concepts that are becoming an important part of my journey as an IT student. We covered everything from installing &lt;strong&gt;Anaconda Distribution&lt;/strong&gt; and &lt;strong&gt;Git Bash&lt;/strong&gt; to learning basic terminal commands and using Git through VS Code.&lt;/p&gt;

&lt;p&gt;At first, some of these commands looked very simple. But I quickly realised that understanding the basics is important because these are the tools developers use every day.&lt;/p&gt;

&lt;h2&gt;
  
  
  Getting Started with Anaconda
&lt;/h2&gt;

&lt;p&gt;One of the first things we worked on was installing &lt;strong&gt;Anaconda Distribution&lt;/strong&gt;.&lt;/p&gt;

&lt;p&gt;Anaconda was new to me, but I learned that it provides a convenient environment for working with Python and its libraries. Instead of installing everything separately and dealing with different dependencies manually, Anaconda makes setting up a Python environment much easier.&lt;/p&gt;

&lt;p&gt;This was especially useful because I’m becoming more interested in data and Python-based development.&lt;/p&gt;

&lt;p&gt;The installation itself wasn't particularly complicated, but it was a good reminder that before writing code, you need to make sure your development environment is properly set up.&lt;/p&gt;

&lt;p&gt;A small setup problem can easily turn into a big headache later.&lt;/p&gt;

&lt;h2&gt;
  
  
  Getting Familiar with Git Bash
&lt;/h2&gt;

&lt;p&gt;Next came &lt;strong&gt;Git Bash&lt;/strong&gt;.&lt;/p&gt;

&lt;p&gt;I had used Git before, but this week gave me a better understanding of working with Git from the command line.&lt;/p&gt;

&lt;p&gt;Git Bash provides a terminal environment where I could run commands and interact with files and Git repositories without relying entirely on a graphical interface.&lt;/p&gt;

&lt;p&gt;Some of the commands we practised included:&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="nb"&gt;mkdir
cd
touch
echo&lt;/span&gt;
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;They might look basic, but they are useful building blocks.&lt;/p&gt;

&lt;h3&gt;
  
  
  &lt;code&gt;mkdir&lt;/code&gt;
&lt;/h3&gt;

&lt;p&gt;&lt;code&gt;mkdir&lt;/code&gt; is used to create a new directory.&lt;/p&gt;

&lt;p&gt;For example:&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="nb"&gt;mkdir &lt;/span&gt;my-project
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;This creates a new folder called &lt;code&gt;my-project&lt;/code&gt;.&lt;/p&gt;

&lt;h3&gt;
  
  
  &lt;code&gt;cd&lt;/code&gt;
&lt;/h3&gt;

&lt;p&gt;&lt;code&gt;cd&lt;/code&gt; is used to move into a directory.&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="nb"&gt;cd &lt;/span&gt;my-project
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;This takes me inside the folder I just created.&lt;/p&gt;

&lt;p&gt;It sounds simple, but being comfortable navigating between directories becomes important when working with larger projects.&lt;/p&gt;

&lt;h3&gt;
  
  
  &lt;code&gt;touch&lt;/code&gt;
&lt;/h3&gt;

&lt;p&gt;We also learned how to create files using &lt;code&gt;touch&lt;/code&gt;. In our case, we created a README Markdown file:&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="nb"&gt;touch &lt;/span&gt;readme.md
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;This creates an empty &lt;code&gt;readme.md&lt;/code&gt; file inside the current directory.&lt;/p&gt;

&lt;p&gt;It was a simple command, but it helped me understand how files can be created directly from the terminal instead of always using the VS Code interface.&lt;/p&gt;

&lt;h3&gt;
  
  
  &lt;code&gt;echo&lt;/code&gt;
&lt;/h3&gt;

&lt;p&gt;Another command we practised was &lt;code&gt;echo&lt;/code&gt;.&lt;/p&gt;

&lt;p&gt;For example:&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="nb"&gt;echo&lt;/span&gt; &lt;span class="s2"&gt;"Hello World"&lt;/span&gt;
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;This displays &lt;code&gt;Hello World&lt;/code&gt; in the terminal.&lt;/p&gt;

&lt;p&gt;We could also use &lt;code&gt;echo&lt;/code&gt; to write text into a file:&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="nb"&gt;echo&lt;/span&gt; &lt;span class="s2"&gt;"Hello World"&lt;/span&gt; &lt;span class="o"&gt;&amp;gt;&lt;/span&gt; readm.md
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;Practising these commands helped me become more comfortable using the terminal instead of always depending on a graphical interface.&lt;/p&gt;

&lt;h2&gt;
  
  
  Learning Git Through Practice
&lt;/h2&gt;

&lt;p&gt;The biggest part of the week for me was getting more comfortable with &lt;strong&gt;Git&lt;/strong&gt;.&lt;/p&gt;

&lt;p&gt;Git can seem confusing when you're first introduced to concepts like repositories, commits, staging and pushing.&lt;/p&gt;

&lt;p&gt;But once you start actually using it, the workflow starts making more sense.&lt;/p&gt;

&lt;p&gt;The basic idea we worked with was:&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;Make changes → Stage changes → Commit → Push&lt;/strong&gt;&lt;/p&gt;

&lt;p&gt;After making changes to a project, Git allows us to keep track of what has changed.&lt;/p&gt;

&lt;p&gt;This is one of the things I appreciate about Git. Instead of having different copies of the same project everywhere, Git gives us a proper history of the changes we make.&lt;/p&gt;

&lt;h2&gt;
  
  
  Using Source Control in VS Code
&lt;/h2&gt;

&lt;p&gt;We also learned how to push our changes using the &lt;strong&gt;Source Control&lt;/strong&gt; section in VS Code.&lt;/p&gt;

&lt;p&gt;This was probably one of the most practical things we covered.&lt;/p&gt;

&lt;p&gt;Instead of running every Git command manually in Git Bash, VS Code provides a visual interface where we can see the files we have changed.&lt;/p&gt;

&lt;p&gt;Our workflow was:&lt;/p&gt;

&lt;ol&gt;
&lt;li&gt;Make changes to the project.&lt;/li&gt;
&lt;li&gt;Open Source Control in VS Code.&lt;/li&gt;
&lt;li&gt;Review the changed files.&lt;/li&gt;
&lt;li&gt;Stage the changes.&lt;/li&gt;
&lt;li&gt;Write a commit message.&lt;/li&gt;
&lt;li&gt;Commit the changes.&lt;/li&gt;
&lt;li&gt;Push the changes to GitHub.&lt;/li&gt;
&lt;/ol&gt;

&lt;p&gt;Seeing everything directly inside VS Code made the Git workflow much easier for me to understand.&lt;/p&gt;

&lt;p&gt;It also helped me realise that Git isn't just something you learn for the sake of learning it. It's something I'll probably be using regularly as I continue building projects.&lt;/p&gt;

&lt;h2&gt;
  
  
  What I Took Away From This Week
&lt;/h2&gt;

&lt;p&gt;One thing I learned this week is that &lt;strong&gt;the simple stuff matters&lt;/strong&gt;.&lt;/p&gt;

&lt;p&gt;Commands like &lt;code&gt;cd&lt;/code&gt;, &lt;code&gt;mkdir&lt;/code&gt;, &lt;code&gt;touch&lt;/code&gt; and &lt;code&gt;echo&lt;/code&gt; aren't complicated, but understanding them makes working with the terminal much less intimidating.&lt;/p&gt;

&lt;p&gt;The same applies to Git.&lt;/p&gt;

&lt;p&gt;I don't need to memorise every Git command immediately. What matters right now is understanding the basic workflow and getting comfortable using it.&lt;/p&gt;

&lt;p&gt;I'm also starting to see how the different tools fit together:&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;Git Bash&lt;/strong&gt; → working with commands and files&lt;br&gt;
&lt;strong&gt;Git&lt;/strong&gt; → tracking changes to projects&lt;br&gt;
&lt;strong&gt;GitHub&lt;/strong&gt; → storing repositories online&lt;br&gt;
&lt;strong&gt;VS Code&lt;/strong&gt; → writing code and managing changes&lt;br&gt;
&lt;strong&gt;Anaconda&lt;/strong&gt; → managing Python environments and tools&lt;/p&gt;

&lt;p&gt;Individually, these tools are useful. Together, they are becoming part of my development workflow.&lt;/p&gt;

&lt;h2&gt;
  
  
  Final Thoughts
&lt;/h2&gt;

&lt;p&gt;Overall, this was a good week at LuxDev HQ.&lt;/p&gt;

&lt;p&gt;There were moments where I had to stop and think about what a command was actually doing, but that's part of learning.&lt;/p&gt;

&lt;p&gt;I'm beginning to understand that becoming better at tech isn't only about learning programming languages. It's also about becoming comfortable with the tools developers use to build and manage their projects.&lt;/p&gt;

&lt;p&gt;This week was mainly about the fundamentals, but those fundamentals are going to matter as we move into more advanced topics.&lt;/p&gt;

&lt;p&gt;I'm looking forward to seeing what we learn next.&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;One week down. More to learn.&lt;/strong&gt;&lt;/p&gt;

</description>
      <category>beginners</category>
      <category>git</category>
      <category>learning</category>
      <category>tools</category>
    </item>
    <item>
      <title>Cohort 9 Onboarding Sessions</title>
      <dc:creator>Warren Thinwar</dc:creator>
      <pubDate>Mon, 10 Aug 2026 09:35:05 +0000</pubDate>
      <link>https://dev.to/thinwar/cohort-9-onboarding-sessions-3l4n</link>
      <guid>https://dev.to/thinwar/cohort-9-onboarding-sessions-3l4n</guid>
      <description>&lt;h2&gt;
  
  
  Introduction
&lt;/h2&gt;

&lt;h3&gt;
  
  
  Introduction to LuxDevHq
&lt;/h3&gt;

&lt;p&gt;Data is the new buzzword that every company is trying to figure out. Today I am joining an &lt;strong&gt;onboarding&lt;/strong&gt; session for my new journey as a learner at LuxdevHq &lt;em&gt;Cohort 9 Program&lt;/em&gt;, that starts today 10th of August. This article covers my experience at LuxDevHq's onboarding session for my cohort&lt;/p&gt;

&lt;h2&gt;
  
  
  List of Items Learned
&lt;/h2&gt;

&lt;p&gt;Here are some of the areas I have discovered today;&lt;/p&gt;

&lt;ol&gt;
&lt;li&gt;I love baking&lt;/li&gt;
&lt;li&gt;Wesley is a marketer&lt;/li&gt;
&lt;/ol&gt;

&lt;p&gt;Additionally, we have also learned that:&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;Luxdev offers a course for free after the first course.&lt;/li&gt;
&lt;li&gt;Moses has serious hobbies and Joker has hobbies, and both hobbies cannot compete&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;Stephen gave us a quote:&lt;/p&gt;

&lt;blockquote&gt;
&lt;p&gt;I Came, I Saw, I Conquered!&lt;br&gt;
By Stephan&lt;/p&gt;
&lt;/blockquote&gt;

&lt;h2&gt;
  
  
  Writing Lines Of Code
&lt;/h2&gt;

&lt;p&gt;Here is a practical example of a line of code I will be using in class to practice SQL:&lt;/p&gt;

&lt;p&gt;&lt;code&gt;SELECT * FROM cohort9.applications;&lt;/code&gt;&lt;/p&gt;

&lt;h2&gt;
  
  
  Writing a block of code
&lt;/h2&gt;

&lt;p&gt;Here is an example of an SQL Block that I wrote during onboarding session&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight sql"&gt;&lt;code&gt;&lt;span class="k"&gt;SELECT&lt;/span&gt; &lt;span class="n"&gt;student_name&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt;
&lt;span class="k"&gt;FROM&lt;/span&gt; &lt;span class="n"&gt;cohort9&lt;/span&gt;&lt;span class="p"&gt;.&lt;/span&gt;&lt;span class="n"&gt;Applications&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt;
&lt;span class="k"&gt;WHERE&lt;/span&gt; &lt;span class="n"&gt;student_name&lt;/span&gt; &lt;span class="o"&gt;=&lt;/span&gt; &lt;span class="nv"&gt;"Mark"&lt;/span&gt;
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;h2&gt;
  
  
  Photo Session
&lt;/h2&gt;

&lt;p&gt;We also had a photo session with the available students who came for the session&lt;/p&gt;

&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.us-east-2.amazonaws.com%2Fuploads%2Farticles%2F35s5t06vwarohm9npwdm.jpg" 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.us-east-2.amazonaws.com%2Fuploads%2Farticles%2F35s5t06vwarohm9npwdm.jpg" alt="Anime Shangri-la-frontier" width="736" height="736"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;h2&gt;
  
  
  Adding url link
&lt;/h2&gt;

&lt;p&gt;Here is a link to Luxdev's github&lt;br&gt;
&lt;a href="https://github.com/" rel="noopener noreferrer"&gt;Luxdev&lt;/a&gt;&lt;/p&gt;

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

&lt;p&gt;In conclusion, today's luxdevHQ onboarding session has been quite&lt;br&gt;
informative and insightful about their programs, different ways we can write good articles, the role of articles in Tech, and how to ensure how to write a good article.&lt;/p&gt;

</description>
      <category>ai</category>
      <category>webdev</category>
      <category>programming</category>
      <category>python</category>
    </item>
    <item>
      <title>How Excel is Used in Real-World Data Analysis</title>
      <dc:creator>Warren Thinwar</dc:creator>
      <pubDate>Mon, 08 Jun 2026 04:31:09 +0000</pubDate>
      <link>https://dev.to/thinwar/how-excel-is-used-in-real-world-data-analysis-29bc</link>
      <guid>https://dev.to/thinwar/how-excel-is-used-in-real-world-data-analysis-29bc</guid>
      <description>&lt;h2&gt;
  
  
  WHAT IS EXCEL?
&lt;/h2&gt;

&lt;p&gt;Excel is a software used for data entry, analysis and data visualization and uses data also to generate insights from the data given&lt;/p&gt;

&lt;h2&gt;
  
  
  Three ways Excel is used in real-world data analysis
&lt;/h2&gt;

&lt;p&gt;1.Data Cleaning&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;A lot of companies or organizations use data cleaning to see whether their general insights are correct and also to fix any errors in the messy data so that it can be used efficiently&lt;/li&gt;
&lt;/ul&gt;

&lt;ol&gt;
&lt;li&gt;Checking Performance&lt;/li&gt;
&lt;/ol&gt;

&lt;ul&gt;
&lt;li&gt;This means that in Excel employees can be evaluated on the work done and the amount of hours they put in their tasks so as to ensure work is done efficiently &lt;/li&gt;
&lt;/ul&gt;

&lt;ol&gt;
&lt;li&gt;Marketing&lt;/li&gt;
&lt;/ol&gt;

&lt;ul&gt;
&lt;li&gt;Excel can be used to evaluate which products are selling and record latest trends happening so that they can engage with users and expect feedback on how to improve and what areas to work on&lt;/li&gt;
&lt;/ul&gt;

&lt;h2&gt;
  
  
  Mention at least 3 Excel features or formulas you've learned so far and explain how they can
&lt;/h2&gt;

&lt;p&gt;be applied  &lt;/p&gt;

&lt;h2&gt;
  
  
  Mention at least 3 Excel features or formulas you've learned so far and explain how they can be applied
&lt;/h2&gt;

&lt;ol&gt;
&lt;li&gt;Sorting&lt;/li&gt;
&lt;/ol&gt;

&lt;ul&gt;
&lt;li&gt;Sorting lets you arrange your data alphabetically, numerically, or by date, making it much easier to spot patterns and fix mistakes&lt;/li&gt;
&lt;/ul&gt;

&lt;ol&gt;
&lt;li&gt;Find and Replace&lt;/li&gt;
&lt;/ol&gt;

&lt;ul&gt;
&lt;li&gt;By pressing CTRL + H this helps you to fix typos across the selected row and also replace text or numbers with the desired figure or text&lt;/li&gt;
&lt;/ul&gt;

&lt;ol&gt;
&lt;li&gt;Sum Function&lt;/li&gt;
&lt;/ol&gt;

&lt;ul&gt;
&lt;li&gt;By writing (=SUM) and selecting the desired rows or column this is a mathematical formula used to add and find the total figure accurately&lt;/li&gt;
&lt;/ul&gt;

&lt;h2&gt;
  
  
  How has learning Excel changed the way you see data?
&lt;/h2&gt;

&lt;p&gt;Learning Excel completely shifted my perspective. Now, I see data as something dynamic and full of hidden stories. Instead of just seeing a list of inputs, I realize that with the right tools, you can slice through the chaos to find actual patterns and trends. It has taught me to look at information more critically—asking why numbers look a certain way and how they connect to the bigger picture. Excel transforms raw numbers into actionable insights, and it’s made me realize that data isn't just something you store; it's a powerful tool you use to make smart, informed decisions.&lt;/p&gt;

</description>
    </item>
    <item>
      <title>Intro to Data Science</title>
      <dc:creator>Warren Thinwar</dc:creator>
      <pubDate>Tue, 26 May 2026 09:47:37 +0000</pubDate>
      <link>https://dev.to/thinwar/intro-to-data-science-5077</link>
      <guid>https://dev.to/thinwar/intro-to-data-science-5077</guid>
      <description>&lt;p&gt;&lt;a href="https://www.anaconda.com/download" rel="noopener noreferrer"&gt;Anaconda&lt;/a&gt;&lt;br&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%2Fsnqrlbw7ohifcb8spob8.jpg" 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%2Fsnqrlbw7ohifcb8spob8.jpg" alt=" " width="768" height="1024"&gt;&lt;/a&gt;&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight plaintext"&gt;&lt;code&gt;hello

&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;





&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight plaintext"&gt;&lt;code&gt;[](url)
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;&lt;em&gt;this is ok&lt;/em&gt;&lt;/p&gt;

&lt;ol&gt;
&lt;li&gt;apple&lt;/li&gt;
&lt;li&gt;banana&lt;/li&gt;
&lt;/ol&gt;

&lt;h2&gt;
  
  
  Introduction
&lt;/h2&gt;

&lt;h3&gt;
  
  
  key areas in Data Science
&lt;/h3&gt;

&lt;blockquote&gt;
&lt;p&gt;Luxdev hq is in garden estate&lt;br&gt;
&lt;strong&gt;Hello its me&lt;/strong&gt;&lt;/p&gt;
&lt;/blockquote&gt;

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