<?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: Bradley Ashton</title>
    <description>The latest articles on DEV Community by Bradley Ashton (@brrradley).</description>
    <link>https://dev.to/brrradley</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%2F1010569%2Fa5f64967-335c-4fbc-b6ca-957e1ab9797e.jpeg</url>
      <title>DEV Community: Bradley Ashton</title>
      <link>https://dev.to/brrradley</link>
    </image>
    <atom:link rel="self" type="application/rss+xml" href="https://dev.to/feed/brrradley"/>
    <language>en</language>
    <item>
      <title>Blog: Hosting fullstack apps on CentOS VPS</title>
      <dc:creator>Bradley Ashton</dc:creator>
      <pubDate>Mon, 15 May 2023 22:33:07 +0000</pubDate>
      <link>https://dev.to/brrradley/blog-hosting-fullstack-apps-on-centos-vps-1ff</link>
      <guid>https://dev.to/brrradley/blog-hosting-fullstack-apps-on-centos-vps-1ff</guid>
      <description>&lt;p&gt;&lt;strong&gt;// This is an ongoing blog and will be updated regularly&lt;/strong&gt;&lt;/p&gt;

&lt;p&gt;My goal is to host projects on my own CentOS VPS hosted on DigitalOcean. During my learning i was always recommended to use services from Heroku, Netlify and Render to host my backend and GitHub Pages for my frontend - i never liked splitting my apps.&lt;br&gt;
&lt;em&gt;I think i heard Next.js can resolve this with serverless options?&lt;/em&gt;&lt;/p&gt;

&lt;p&gt;I also wanted to easily edit my projects without the hassle of &lt;code&gt;npm run build&lt;/code&gt; and uploading. I'd thought of FTP/SSH extensions for VSCode but there must be a better way?&lt;/p&gt;

&lt;p&gt;This is my journey...&lt;/p&gt;


&lt;h2&gt;
  
  
  Server Installations
&lt;/h2&gt;

&lt;p&gt;I installed &lt;strong&gt;Node Version Manager (NVM)&lt;/strong&gt; to my server for &lt;strong&gt;Node and NPM&lt;/strong&gt;. I updated the bash commands and checked the versions to ensure they were installed correctly.&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight plaintext"&gt;&lt;code&gt;# curl -o- https://raw.githubusercontent.com/nvm-sh/nvm/v0.37.2/install.sh | bash
# source ~/.bashrc
# node --version
~ v14.15.4
# npm --version
~ 6.14.4
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;I needed my apps to stay live when terminal was closed so i globally installed the **daemon process manager 'PM2' **and again checked the version to ensure they were installed correctly. This manager will run the dev environment on the live server without needing to create a build package.&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight plaintext"&gt;&lt;code&gt;# npm i -g pm2
# pm2 --version
~ 5.3.0
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;Firstly i created a subdomain (forecast.literecords.com) so my app would have it's own address. Using the &lt;strong&gt;Git Version Control plugin within my cPanel (v110)&lt;/strong&gt; i created a repo and pointed the directory to the subdomain so edits go live as easily as possible.&lt;/p&gt;

&lt;p&gt;&lt;code&gt;# git remote add &amp;lt;local-name&amp;gt; &amp;lt;cpanel-repo-url&amp;gt;&lt;/code&gt;&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight plaintext"&gt;&lt;code&gt;# git remote add cpanel ssh://root@literecords.com/home/litereco/public_html/forecast.literecords.com
# git push -u cpanel main
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;&lt;em&gt;My project is already remotely connected to a GitHub repo so i added my cPanel repo as a second remote (not 'origin').&lt;/em&gt;&lt;/p&gt;

&lt;p&gt;The original ssh user received 'Permission Denied" errors so i changed the user to 'root' which worked. Later i found a solution to the permissions by changing ownership of the directory to the user 'litereco'.&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight plaintext"&gt;&lt;code&gt;# chown -R litereco. /home/litereco/.ssh
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;This project is build using React-Vite so i set the server port and allowed host in 'vite.config.js', this can be done in command line when starting the service too.&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight plaintext"&gt;&lt;code&gt;export default defineConfig({
  plugins: [react()],
  server: {
    port: 4444,
    host: true,
  },
});
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;h3&gt;
  
  
  Problem
&lt;/h3&gt;

&lt;p&gt;I originally thought there was a problem with permissions on my server but i now think it's something else. While the initial upstream set works, further push attempts show an error.&lt;/p&gt;

&lt;p&gt;&lt;code&gt;! [remote rejected] main -&amp;gt; main (Working directory has unstaged changes)&lt;br&gt;
error: failed to push some refs to 'ssh://literecords.com/home/litereco/public_html/forecast.literecords.com'&lt;/code&gt;.&lt;/p&gt;

&lt;p&gt;I tested replacing files through SFTP and the changes are instantly live so i see no reason why &lt;code&gt;# git push&lt;/code&gt; wouldn't do the same once my remote GIT issue is resolved.&lt;/p&gt;


&lt;h2&gt;
  
  
  Starting Services
&lt;/h2&gt;

&lt;p&gt;To run the process with PM2 i SSH connected to my server and navigated to the subdomain directory where the app is located. I then started the service with &lt;code&gt;npm run dev&lt;/code&gt; and gave it a name.&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight plaintext"&gt;&lt;code&gt;# cd home/litereco/public_html/forecast.literecords.com
# pm2 start "npm run dev" --name "Forecast App"
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;






&lt;h2&gt;
  
  
  Nginx
&lt;/h2&gt;

&lt;p&gt;Right now this runs from any part of the parent domain so long as it includes the port &lt;code&gt;:4444&lt;/code&gt; so installed Nginx and configured it to listen on port &lt;code&gt;:4567&lt;/code&gt; because &lt;code&gt;:4444&lt;/code&gt; was already in use and direct the default to my app location.&lt;br&gt;
&lt;code&gt;/etc/nginx/nginx.config&lt;/code&gt;&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight plaintext"&gt;&lt;code&gt;server {
        listen       4567;
        listen       [::]:4567;
        server_name  forecast.literecords.com;
        root         /home/litereco/public_html/forecast.literecords.com;

        # Load configuration files for the default server block.
        include /etc/nginx/default.d/*.conf;

        error_page 404 /404.html;
        location = /404.html {
        }

        error_page 500 502 503 504 /50x.html;
        location = /50x.html {
        }
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;I created my proxy file in &lt;code&gt;/etc/nginx/sites-available/forecast.literecords.com&lt;/code&gt;&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight plaintext"&gt;&lt;code&gt;server {
    server_name  forecast.literecords.com;
    index index.html index.htm;
    access_log /var/log/nginx/nodeapp.log;
    error_log  /var/log/nginx/nodeapp-error.log error;

    location / {
        proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for;
        proxy_set_header X-Forwarded-Proto $scheme;
        proxy_set_header X-Real-IP $remote_addr;
        proxy_set_header Host $http_host;
        proxy_pass http://165.232.78.74:4444;
        proxy_redirect off;
    }
}
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;Tested the NGinx config.&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight plaintext"&gt;&lt;code&gt;# nginx -t
~ nginx: the configuration file /etc/nginx/nginx.conf syntax is ok
~ nginx: configuration file /etc/nginx/nginx.conf test is successful
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;Restarted Nginx service.&lt;br&gt;
&lt;code&gt;# sudo systemctl restart nginx.service&lt;/code&gt;&lt;/p&gt;

&lt;p&gt;Navigated to forecast.literecords.com, &lt;strong&gt;blank page&lt;/strong&gt;!&lt;/p&gt;

</description>
    </item>
    <item>
      <title>Blog: Server Migration</title>
      <dc:creator>Bradley Ashton</dc:creator>
      <pubDate>Thu, 11 May 2023 15:02:26 +0000</pubDate>
      <link>https://dev.to/brrradley/server-migration-log-26oi</link>
      <guid>https://dev.to/brrradley/server-migration-log-26oi</guid>
      <description>&lt;h2&gt;
  
  
  Backstory
&lt;/h2&gt;

&lt;p&gt;I'll start this by saying that yes, i have been a server administrator since 2010 but no, i am no expert!&lt;br&gt;
It was more of a necessity to host the LiteRECORDS community but on the surface it appears like i'm an experienced pro in LAMP stack 🤥.&lt;/p&gt;

&lt;p&gt;Since 2022 i code more with MERN stack so, as NodeJS is a big part of it i needed somewhere suitable to deploy my projects. I could have hosted LiteRECORDS with a public company back in 2010, i could host my apps with public companies like Netlify or Render, but why be a client when i can &lt;em&gt;hold all the apples&lt;/em&gt;?. Anyway, the point of this server migration was to have all the hosting options i need available to me. At this point i might add that i neither have a working server (old or new) and i haven't tested any Node apps on it to ensure this works as it should. I'll keep editing/updating this log with progress reports.&lt;/p&gt;

&lt;p&gt;So, here's my report so far!&lt;/p&gt;
&lt;h2&gt;
  
  
  Installing Software
&lt;/h2&gt;

&lt;p&gt;My currently server runs on Linux CentOS-6 and it has done since it's birth back in 2010 (or there-abouts). I wanted NodeJS installed on the server but there were errors. I needed a later OS so, being hosted with DigitalOcean i looked at upgrading to CentOS-7 with redhat. I looked through a couple of tutorials and aside from being technical beyong my knowledge it was ill advised to do so, new idea needed!&lt;/p&gt;

&lt;p&gt;DigitalOcean hosts servers as "droplets" and charges by data usage instead of monthly/annually etc. I created a new droplet with the latest CentOs available - version 9. It only takes a few minutes and i'm online and logged-in to SSH. I run the NodeJS installation, all looks fine.&lt;/p&gt;

&lt;p&gt;I've always used WHM/cPanel for web management and i knew i'd need it for LiteRECORDS so i go to the docs and get the curl path, here we go! cPanel, Error! cPanel doesn't support CentOs-9, great!..&lt;br&gt;
  &lt;strong&gt;-Destroy Droplet-&lt;/strong&gt;&lt;br&gt;
Build new droplet on CentOS-8.. SSH.. install Node, that works.. cPanel, Error! cPanel doesn't support CentOs-8!..&lt;br&gt;
  &lt;strong&gt;-Destroy Droplet-&lt;/strong&gt;&lt;/p&gt;

&lt;p&gt;At this point i decided to change my priority from Node to cPanel as this is the immediate issue - save some time.&lt;/p&gt;

&lt;p&gt;I found the EOL (end-of-life) roadmap from cPanel on OS versions and CentOS-7 was the latest and support ends in 2024 but there were other Linux systems available. After some discussions with tech friends i was recommended Ubuntu.&lt;br&gt;
Build new droplet on Ubuntu.. SSH.. Curl cPanel.. installing! Great! Node installed, &lt;u&gt;double great&lt;/u&gt;! Next was other software required to run LiteRECORDS. I tried installing WHMSonic which runs our ShoutCast service, Error. The package couldn't install some dependencies. After some more Googling and a ticket request i was told WHMSonic only runs on CentOS 👎🏼. Back to the drawing board.&lt;/p&gt;

&lt;p&gt;I wanted to use the most up-to-date OS to avoid problems in the near future but it seems the software i need won't allow me to do so. CentOS-7 it is. Everything installs fine: cPanel, WHMSonic, Node - Okay, here we go.&lt;/p&gt;
&lt;h2&gt;
  
  
  Server Is Running
&lt;/h2&gt;

&lt;p&gt;WHM was installed and it sent me to my login&lt;br&gt;
&lt;code&gt;https://serverIP.cprapid.com:2087&lt;/code&gt;&lt;br&gt;
Although there were some commands i could use to copy my old server files i'm not well practiced in server CLI so i went back to cPanel Backup Wizard. I could download a full account backup instead of individual 'home', 'MySQL', 'email forwards'. That seemed like the way to go to make this new server as much of a duplicate as possible.&lt;br&gt;
  &lt;strong&gt;-short break for food-&lt;/strong&gt;&lt;br&gt;
I have the backup .tar.gz so i go to restore it to the new cPanel, oh.. cPanel doesn't support full account restoration? Why have it as a backup option then?!! Not a big problem, i'll decompress the backup, locate the user folder and upload it SFTP on FileZilla. 250,000 files uploading!&lt;br&gt;
  &lt;strong&gt;-long break for sleep-&lt;/strong&gt;&lt;br&gt;
I wake up to an 'overwrite, are you sure?' prompt with 32,000 files left. Annoying but what can you do?&lt;/p&gt;

&lt;p&gt;Everything from my old ~user is now on my new server. That sounds like the hard part is over, perfect (update: LOL).&lt;/p&gt;

&lt;p&gt;Accessing a droplet should be as easy as &lt;code&gt;domain/~user&lt;/code&gt; but that wasn't the case. I'm told it's because the server and the user used the same IP neither with domains attached. I went and bought lazyre.co.uk from names.co.uk for £1.00, changed the DNS on the domain host and within a few hours we were live.&lt;/p&gt;
&lt;h2&gt;
  
  
  vBulletin
&lt;/h2&gt;

&lt;p&gt;My homepage is just a white screen, nothing in console.log (damn you PHP and your cryptic troubleshooting). Back to Google it is, surely many others have had this issue when migrating (update: they had).&lt;/p&gt;

&lt;p&gt;I had to go into Apache and change the PHP version down to 7.x, now i'm seeing something.. "Database Error" (no other information provided). Googles some more. Ahh, i need some PHP plugins for vBulletin to run so after some trial and error i get to a vBulletin message. It was a vBulletin error but at least vBulletin is running 🤷🏻‍♂️. I can't remember the errors but i remember repairing the MySQL and it magically started working, hurray!&lt;/p&gt;
&lt;h3&gt;
  
  
  Update
&lt;/h3&gt;

&lt;p&gt;I can't get the domain sitting so the snowball effect is some images aren't loading because the {img_path_misc} use an insecure HTTP 😠.&lt;br&gt;
(update: i should have known at this point it was an SSL issue duhh).&lt;/p&gt;
&lt;h2&gt;
  
  
  Domains &amp;amp; SSH
&lt;/h2&gt;

&lt;p&gt;Last night litere.co.uk connected to the new server and vBulletin was running. The old server was still broken, i couldn't connect SSH and the recovery console wouldn't launch either so i opened a support ticket with DigitalOcean. In the mean time i decided it was time to swap the domains over and have literecords.com point to the new server. I thought that this time i would host the DNS on DigitalOcean. It saves me going to 2 different platforms for host management.&lt;/p&gt;

&lt;p&gt;Within an hour literecords.com was up and running, i disabled the forum boards until i'm able to download a MySQL database and restore it.&lt;br&gt;
  &lt;strong&gt;-saved, bedtime-&lt;/strong&gt;&lt;/p&gt;

&lt;p&gt;This morning literecords.com was 404! I don't understand. Maybe it's because i've hosted the DNS on DigitalOcean instead of GoDaddy??&lt;/p&gt;
&lt;h3&gt;
  
  
  Update
&lt;/h3&gt;

&lt;p&gt;Remember early i mentioned i downloaded a full account backup? The .sql backup was in there (obviously)! Restored the backup and we're up-to-date 🤓.&lt;/p&gt;

&lt;p&gt;The 404 turned out to be the SSL certificates weren't installing on their own, after a manual install everything was running peachy!&lt;/p&gt;
&lt;h2&gt;
  
  
  Email
&lt;/h2&gt;

&lt;p&gt;When creating, modifying or deleting email accounts in cPanel i was getting a 'Permission Denied' error. I tried CHMOD and chown but new permissions wouldn't seem to stick. It's been a tough couple of days so i opened a ticket with cPanel support with SSH login.&lt;/p&gt;

&lt;p&gt;They logged-in and sorted it out but when i refreshed the page i lost access to WHM and cPanel plus SSH with a 'Permission Denied' 😐.&lt;/p&gt;

&lt;p&gt;After some Googling and a few failed attempts i managed to get this sorted by:&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight plaintext"&gt;&lt;code&gt;# vim ~/.ssh/config // "PasswordAuthorizedLogin: NO"
# vim ~/.ssh/authorized_keys // removed all and added my local public key
# systemctl restart sshd
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;h2&gt;
  
  
  Additional Updates
&lt;/h2&gt;

&lt;p&gt;I used Sphinx Search for vBulletin search which i remember being a problem installing at the beginning, infact i hired a developer to resolve it. Lot's of commands later i cannot get Sphinx installed properly.&lt;/p&gt;

&lt;p&gt;After one potential success i changed vBulletin search type to Sphinx and rebuild the counters/indexes. All pages have a 30-45 second refresh time, that's not good.&lt;br&gt;
  &lt;strong&gt;-uninstalls Sphinx, reverts back-&lt;/strong&gt;&lt;/p&gt;

&lt;h2&gt;
  
  
  Result
&lt;/h2&gt;

&lt;p&gt;This morning i destroyed the old droplet, it was time and i still couldn't access it without knowing the ins-and-outs of shell and Linux. Goodbye old girl.&lt;br&gt;
LiteRECORDS is up and running with nothing broken! I never did get Sphinx to work but the regular vBulletin search works so.. nothing lost.&lt;/p&gt;

&lt;p&gt;This concludes my painstaking experience migrating servers, i don't plan to do it again for another decade!&lt;/p&gt;

</description>
    </item>
    <item>
      <title>Blog: How my journey started</title>
      <dc:creator>Bradley Ashton</dc:creator>
      <pubDate>Sat, 04 Feb 2023 10:49:53 +0000</pubDate>
      <link>https://dev.to/brrradley/decafdev-how-it-all-began-20gk</link>
      <guid>https://dev.to/brrradley/decafdev-how-it-all-began-20gk</guid>
      <description>&lt;p&gt;It's hard to remember the details but i'll do my best...&lt;/p&gt;

&lt;p&gt;It was back in my teen days and Yahoo! chatrooms were the &lt;em&gt;big thing&lt;/em&gt; back then but where there is fun there is also mischief. I remember meeting virtual friends and engaging in casual chit-chat, discussing how our day was going and getting to know people.&lt;/p&gt;

&lt;p&gt;On occasion an unusual username would join the room and users would begin to drop out. One day it was me who had been targeted and i quickly realised what was happening. A PING PING PING of mass messages would flood my desktop until my RAM would give-in and Y!Messenger would crash. While this being obviously frustrating i also found myself impressed and curious. I began researching what this was and how it worked. It wasn't long before i found forums about the dark side of the chat world. After a little more digging i found what out what these tools were and more importantly what i would need to create such tools.&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.amazonaws.com%2Fuploads%2Farticles%2Fs6lypvj9uhapsu96kgd3.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%2Fs6lypvj9uhapsu96kgd3.png" alt="Yahoo Booter" width="800" height="600"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;I was lucky enough to have a friend working as a programmer and he introduced me to Microsoft's Visual Basic 6 and gave me a crash course in the fundamentals. From that day i was fixated on coding.&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.amazonaws.com%2Fuploads%2Farticles%2Fgkyi1djuiwud9s0o81ir.gif" 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%2Fgkyi1djuiwud9s0o81ir.gif" alt="vb6 form" width="1024" height="745"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;After months of practicing this code-thing and studying from examples i began creating simple programs that shown the time and date, play sounds on buttons, display lists and create forms. This quickly snowballed into loading text files, using kewlbuttonz.ocx to make my GUI look more fun, winsock.ocx with YMSG15.dll to connect to Yahoo! servers (i never quite continued down the C++ path to understand how .dll files worked). I spent hours using packet sniffer software to understand how data was passed between client and server, understand how packet strings were built and what was needed to replicate these actions successfully. Once i'd fathomed what was essential i was able to manipulate strings to act differently so i could achieve the result i wanted.&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.amazonaws.com%2Fuploads%2Farticles%2F42tcidhqi0u0r8z6an9s.gif" 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%2F42tcidhqi0u0r8z6an9s.gif" alt="Armada, Yahoo Booter" width="589" height="378"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;Soon after, many tests had lead to me creating a working booter program of my own. I was young, playful and yes, i'd become one of them mischievous individuals. The difference being my aim would be to protect my chat room (and later others) and the username "se7en" was to become synonymous in our little area of the Yahoo! world. Unknowingly i had created a booter like no other, a program that didn't flood memory by sending mass private messages. Until this post i haven't shared my method but my infamy is now long forgotten.&lt;/p&gt;

&lt;blockquote&gt;
&lt;p&gt;When sending a packet from one client to another you had to include the header which is the string type. Through sniffing packets i realised that even if you're not notified of an incoming packet it doesn't mean it hasn't been received. I sent just 2 packets through. The first being an outgoing webcam start which, from the receiving end would appear to do nothing but it would open a separate port. The second packet would use this port to send an abstract flood packet type, not recognised and would exceed the maximum packet size. The result would simply logout the client messenger immediately without effort.&lt;br&gt;
 So, that's it, that's the secret. Simple when you know how i guess.&lt;/p&gt;
&lt;/blockquote&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.amazonaws.com%2Fuploads%2Farticles%2Fbm98i7a1vt8nsv0wmpqq.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%2Fbm98i7a1vt8nsv0wmpqq.jpg" alt="Shoot The Messenger, Yahoo Booter" width="349" height="332"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;Over the next 6-12 months i expanded my knowledge of Y! and what else i could build. "Booting" became a nuisance for many and so third-party tools like Y!Tunnel and chat room clients like Yah! and YahEh grew in popularity but vulnerabilities were found using similar methods of packet manipulation. I was surprised this hadn't been noticed and resolved. At this point i had built associations with other programmers. Within a few weeks, &lt;em&gt;remember we were kids and had a lot of time on our hands&lt;/em&gt;, we collaborated to build a lightweight client which we could supply to others and offer a safer experience. It would be regularly updated to prevent new booting techniques and who better to prevent booting than the people that make the most popular booters!&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.amazonaws.com%2Fuploads%2Farticles%2Ftmxbgdy79glas91cv6oq.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%2Ftmxbgdy79glas91cv6oq.jpg" alt="Yahn00b!, Yahoo Client" width="800" height="618"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;To be more productive with my time i had been taking web coding classes funded by my local council. Thanks to 2 tutors, the infamous Macromedia Suite and an understanding of how code is written i'd learnt how to build website using HTML and CSS. Practice makes permanent so i created a website of my own and hosted it on a free web server - which was very popular at the time. I began building templates and sharing them between my communities and while they wasn't quite as popular as i'd hoped i did learn a lot along the way.&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.amazonaws.com%2Fuploads%2Farticles%2Fqf6w76vw7l5qmvxrpm5k.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%2Fqf6w76vw7l5qmvxrpm5k.png" alt="Evil Coders website" width="800" height="605"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;At this point there were factions and alliances between programming groups and websites, my own site included. Looking back, it was nothing special but it was something i'd designed and produced myself, i was incredibly proud. Feeling the need to further progress i had looked into what i could program next. Being mixed-up in the seedy communities i'd looked into the illegal side of things ie trojan software and hacking.&lt;/p&gt;

&lt;p&gt;Until now my friends had found my ventures 'cool and funny' but this was going too far. I was now at the age where sitting at home in-front of a monitor all day was not going to be enough to support myself (although that's what i do now but whatever..) and i was mixing with a different group of peers. I had different opportunities now, new circles and thankfully this took my focus away from what could have been a questionable future. This is how this part of my life concludes. Messengers weren't so popular anymore and i had something new and shiny to quench my interest (find out more from the next blog post).&lt;/p&gt;

&lt;p&gt;&lt;em&gt;Some files were found on an old drive so they may not have looked then as they do now. I haven't included images of my flagship program 'ABC++' for reasons i cannot disclose.&lt;/em&gt;&lt;/p&gt;

</description>
      <category>ethereum</category>
      <category>blockchain</category>
      <category>web3</category>
    </item>
  </channel>
</rss>
