Open comments for this post
Day 5
Today I finished preparing the project files, including the README.md and Dockerfile, and fixed all the bugs I was aware of.
I also updated the project page with a new description, a screenshot, and a demo URL.
The list I had in front of me is now completely finished, which means I can finally ship the project.
Of course, after shipping it, I’ll still continue updating the global chat, but before that I need to take a short break.
See you in my other projects — or in this one again sometime in the near future!!!
Open comments for this post
Day 4
Today I worked on adding chat history (when someone joins, the last 10 messages are displayed), as well as notifications for users joining/leaving the chat and error messages.
The biggest issue today was that exit messages were not being displayed. The fix turned out to be quite simple — I was using a double lock, which caused the code to freeze.
My plans for tomorrow are to check if everything works as intended, update the README file, update the Docker files, look into py2exe, and upload everything to GitHub and ship the project!!!
Yes, we are finally getting to my first ship, but don’t worry, updates will still continue after that.
See you tomorrow!!!
Open comments for this post
Day 3
Today I added the ability to execute commands directly from the server, such as ban and kick, giving the server moderation control over the chat.
I also fixed an issue where receiving a message while typing would interrupt the input. After searching the entire internet, I finally found the holy grail: prompt_toolkit. Because of that, I can put GUI development on hold for now.
The biggest challenge today was figuring out why I was getting a CMD-related error when starting the server with prompt_toolkit. It turns out that prompt_toolkit doesn’t work properly with PyCharm’s default console, so I had to enable the “Emulate terminal in output console” option.
My plans for tomorrow are:
Finish the command system (if I can think of any more useful commands).
Take a look at py2exe so I can generate an .exe file from the Python client.
Try to fix a bug where the client doesn’t properly stop after being banned, kicked, or disconnected.
See you tomorrow!!!
Open comments for this post
Day 2*
Today, I added nickname checking to the server to make sure that no two users can join the chat with the same nickname. I also implemented a message cooldown to help protect against spammers.
I also tried experimenting with the GUI a little, but it’s not the right time yet — the to-do list I have in front of me is still huge.
The problem of the day was that I hadn’t worked with Python dictionaries before, so I had to quickly learn how to use them xd.
My plans for tomorrow are to add a banning system as a command that can be executed directly from the server, along with other custom commands that the server will be able to perform.
I’m shutting down the VPS server until I ship the project.
See you tomorrow!!!
- Technically it’s Day 3 because I didn’t work on it yesterday, but that’s a different story.
Open comments for this post
Devlog 2
Just like the tutorial suggested, I added a desktop background (I had no better idea, so I used the Windows XP wallpaper) and a top bar.
I think it’s starting to look pretty decent so far.
Next time, I plan to spend a bit more time working on it (a few hours) before posting another devlog, so I can polish everything up a little more.
See you in the next devlog!
Open comments for this post
Devlog 1
Today, after spending the whole day messing around in KiCad, I decided I needed to code something. But since I didn’t have enough time to open Python and continue working on the Global Chat, I decided to switch to a new project.
Let me introduce you to NetraOS!!!
During the last hour, I programmed a loading screen that will be shown while the desktop is starting up. I’ll probably change it later to make it look a bit nicer, but for now I’m pretty happy with how it looks.
See you in the next devlog!
P.S. Since this is not my main project, I’m not sure how often new devlogs will appear.
Open comments for this post
Devlog 1:
Hi, today for the first time in a while I decided to do something not related to networking, so I found the perfect project: Hackpad.
In this devlog I’ll show a picture of my progress so far while creating the schematic, which I honestly don’t even know if it works yet (if you have any feedback, feel free to leave a comment).
I wanted to build a macropad with 9 buttons, which in my future firmware will be used to open programs and automate certain actions on my computer.
As for the OLED display, I’m not really sure yet what it will show, but I might use it to display CPU, GPU, and RAM usage. The rotary encoder also doesn’t have a defined function yet.
It’s starting to look interesting.
See you next time!!!
P.S. This is not my main project, so I’m not sure how often new devlogs will appear.
Open comments for this post
Day 1 (Part 2)
Before going to sleep (it was already night in Poland), I improved the security a bit and added a system message in chat when someone joins.
I’ll try to dedicate a full day soon to security, so it’s not easy to create malicious clients.
See you tomorrow for real!!!
Open comments for this post
Day 1
Today I rewrote the whole code to prepare it for a global chat system. I deployed everything on a VPS, so now by downloading client.py you can already chat with other people, but only through the terminal for now.
I also added client version checking, so if someone is using an outdated version, they won’t be able to connect to the server.
Usernames were also introduced, replacing IDs from the echo server, so now every user can set whatever nickname they want.
The main bug of the day was related to broadcasting messages to all users — sometimes messages were sent only to one person or not sent at all. I fixed it somehow… honestly not even sure how xd.
Tomorrow’s plan is to try implementing a graphical interface so it doesn’t rely on the terminal anymore.
At night (in Poland), I also updated part of the README file.
If you want to test the global chat yourself, you can download the client here:
https://github.com/wuffgame/Global-Chat/blob/main/global-chat/client.py
There are no bans for spam or offensive usernames yet, but I trust you won’t spam the server or use inappropriate nicknames.
See you tomorrow!!!
Open comments for this post
Day 0 (Part 2)
Today I decided to finish the echo server so that it can support multiple clients (currently up to 5). Each client also gets its own ID to keep the server logs cleaner and easier to read.
I also added a Dockerfile and a docker-compose.yml, so the server can be launched on a VPS without any extra setup or hassle.
As always, a few issues appeared along the way. At first, I’m not even sure what I messed up, but when I deployed the server to my VPS, Docker didn’t expose the container ports correctly, so the client couldn’t connect. After some debugging, I managed to fix it.
Another challenge was handling a dynamic number of client IDs. However, since I’m planning to switch to nicknames instead of IDs later, I decided not to spend too much time on it for now.
Tomorrow’s plan is to finally start Day 1, refactor everything and prepare the project for turning it into a proper global chat system. I also want to start working on a terminal-based global chat version either tomorrow or the day after. I already know some things will be problematic there, but I’ll probably solve them in Day 3 or later when I start working on a full GUI.
For now, I also plan to write a README later today or tomorrow.
See you in the next devlog!!!
P.S. Devlogs might not appear daily until the summer holidays in Poland start.
Open comments for this post
Day 0
Since yesterday, I decided to start working on a global chat application in Python. Everyone will be able to log in and chat, while I, as the amazing moderation team, will be able to ban people who break the rules.
Yesterday, I spent some time talking with AI and watching videos to understand how sockets and threading work in Python.
Today, since I got back late from a trip, I decided to practice what I learned yesterday instead of rushing into the full project. I built a local echo server that currently supports one client (but I’ll probably add multi-client support tomorrow).
I also added a primitive client verification system, so if a client is not compatible with the server, the connection gets rejected. Right now it works by sending a specific string.
The only issue I had was that after disconnecting the client, the server started infinitely sending “”. Luckily, I quickly realized I could stop it using if not.
See you tomorrow in the next devlog!