Projects
My biggest project as of 9/10/24 is most definitely this website.
I've always had the idea of creating one, heavily inspired by the Youtuber "Network Chucks". I thought it was a great idea for me to gather all my experiences and skills onto a Website that I could show in applications and to employers, and I get to make it look cool.
As a way to kill time productively and finding a new hobby, I started building this website on the 15th of September 2024. I also chose to build it from scratch rather than using website building tools such as WordPress, because where's the fun in that?
The code and framework behind the Website can be easily accessed by right-clicking the page and pressing "Inspect" or by pressing F12.
How I built it
Website building is as easy as people make it out. My previous experience with creating Websites was from when I learnt it as part of the National 5 Computing Science curriculum, in where I basically did nothing apart from creating a tiny HTML and CSS file with almost no Javascript.
I was pretty much building this with next to 0 previous knowledge, as the knowledge I did have before was really vague and limited.
My main way of learning was through Youtube, specifically a Youtuber named BroCode. I have a playlist of the majority of videos I used to learn HTML, CSS and JS, shown by clicking below:
Click Here
In addition, I had to do alot of browsing through GitHub and Stack Overflow comments of people having the same issues I did to trouble shoot problems. I also used websites such as W3Schools and Mdn Web Docs. For tools, I use VSS Code to write everything with HTML, CSS and JS extensions and LiveServer to test the website.
To upload the Website onto the internet, I use GitHub pages and I bought a domain name from Namecheap.com.
Problems while making
My biggest problem and headache I had when building this website wasn't actually the coding, but rather uploading it to the internet.
Next Steps
My next steps for this website is to definitely implement animations and smooth transitions to make the Website feel more dynamic, I also am trying to clean up the code as I have learnt lots from when I started and some old code resides with the newer, efficient code.
This will mean that I will end up changing the layout of the homepage, as most of the old code is there and I think I can do better with the layout of the content.
Another thing that I want to work in is better implementation with Icons.
I started playing with Arduinos by getting an ELEGOO Super Starter Kit as a gift. I began by initally creating really simple circuits that didn't require code, such as a simple LED bulb connected by a button.
In this video, I was showing my friend the circuit and explaining how a breadboard worked (something that I learnt minutes before making the video)
To actually start learning how to code the Arduino and the C++ language, I referred to a tutorial supplied by freeCodeCamp.com on Youtube. The video is in my learning playlist which can be found by clicking below.
Click Here
While learning, I had some failures such as accidentally blowing up an LED while testing out how a thermistor works. I forgot to add another regular resistor to make it into a potential divider and relied on the thermistors own resistance to protect the LED, which wasn't enough.
In this project I use a 1 digit, 7 segment display and utilize it to create a simple countdown timer.
In this project I upgrade from a 1 digit, 7 segment display to a 4 digit, 7 segment display.
Circuit is as shown:
I used this diagram to assign the Digits and Segments:
The clock works by inputting a number between 0 to 9999 into the Serial monitor of the Arduino program. When inputted, the clock will start ticking. Once the clock has reached 0, the active buzzer will start buzzing.
The code is shown below:
One very noticable thing about the code is the amount of repetitions of
sevseg.refreshDisplay(); and delay(delayTime);
This is due to the guide I was shown using this method although it is inefficient. To better optimise and shorten the code, I used a for loop which is shown between line 67 and 69.
It is also why the repetitions are commented out.
While making this project, I funnily realised the circuit looked like an explosive device and gave the idea of creating a simulated FAKE bomb.
One that does not blow up but counts down and beeps nervewrackingly and flickers a light.
This project is shown in the next tab.
int A = 8;
int F = 7;
int B = 6;
int E = 11;
int D = 12;
int DP = 13;
int C = 10;
int G = 9;
int D1 = 2;
int D2 = 3;
int D3 = 4;
int D4 = 5;
int delayTime = 5;
int userInput;
int buzzPin = A4;
#include "SevSeg.h"
SevSeg sevseg;
void setup() {
// put your setup code here, to run once:
pinMode(A, OUTPUT);
pinMode(F, OUTPUT);
pinMode(B, OUTPUT);
pinMode(E, OUTPUT);
pinMode(D, OUTPUT);
pinMode(DP, OUTPUT);
pinMode(C, OUTPUT);
pinMode(G, OUTPUT);
pinMode(D1, OUTPUT);
pinMode(D2, OUTPUT);
pinMode(D3, OUTPUT);
pinMode(D4, OUTPUT);
byte numDigits = 4;
byte digitPins[] = {D1, D2, D3, D4};
byte segmentPins[] = {A, B, C, D, E, F, G, DP};
bool resistorOnSegments= true;
byte hardwareConfig = COMMON_CATHODE;
bool updateWithDelays = true;
bool leadingZeros = false;
sevseg.begin
(hardwareConfig, numDigits, digitPins, segmentPins,
resistorOnSegments, updateWithDelays, leadingZeros);
sevseg.setBrightness(90);
Serial.begin(9600);
}
void loop() {
// put your main code here, to run repeatedly:
Serial.println("set a timer up to 9999 seconds");
while(Serial.available() == 0){
// while command makes above command only print once until
user inputs number to set up variables
}
userInput = Serial.parseInt();
// retrieves user input from serial monitor as an integer, not a string
if (userInput <= 9999 && userInput > 0){ // limits input between 0 and 9999
while(userInput > 0){
sevseg.setNumber(userInput);
for (int i = 0; i <= 200; i++) {
sevseg.refreshDisplay();
delay(delayTime);
}
// sevseg.refreshDisplay();
// delay(delayTime);
// sevseg.refreshDisplay();
// delay(delayTime);
// sevseg.refreshDisplay();
// delay(delayTime);
// sevseg.refreshDisplay();
// delay(delayTime);
// sevseg.refreshDisplay();
// delay(delayTime);
// sevseg.refreshDisplay();
// delay(delayTime);
// sevseg.refreshDisplay();
// delay(delayTime);
// sevseg.refreshDisplay();
// delay(delayTime);
// sevseg.refreshDisplay();
// delay(delayTime);
// sevseg.refreshDisplay();
// delay(delayTime);
// sevseg.refreshDisplay();
// delay(delayTime);
// sevseg.refreshDisplay();
// delay(delayTime);
// sevseg.refreshDisplay();
// delay(delayTime);
// sevseg.refreshDisplay();
// delay(delayTime);
// sevseg.refreshDisplay();
// delay(delayTime);
// sevseg.refreshDisplay();
// delay(delayTime);
// sevseg.refreshDisplay();
// delay(delayTime);
// sevseg.refreshDisplay();
// delay(delayTime);
// sevseg.refreshDisplay();
// delay(delayTime);
// sevseg.refreshDisplay();
// delay(delayTime);
// sevseg.refreshDisplay();
// delay(delayTime);
// sevseg.refreshDisplay();
// delay(delayTime);
// sevseg.refreshDisplay();
// delay(delayTime);
// sevseg.refreshDisplay();
// delay(delayTime);
// sevseg.refreshDisplay();
// delay(delayTime);
// sevseg.refreshDisplay();
// delay(delayTime);
// sevseg.refreshDisplay();
// delay(delayTime);
// sevseg.refreshDisplay();
// delay(delayTime);
// sevseg.refreshDisplay();
// delay(delayTime);
// sevseg.refreshDisplay();
// delay(delayTime);
// sevseg.refreshDisplay();
// delay(delayTime);
// sevseg.refreshDisplay();
// delay(delayTime);
// sevseg.refreshDisplay();
// delay(delayTime);
// sevseg.refreshDisplay();
// delay(delayTime);
// sevseg.refreshDisplay();
// delay(delayTime);
// sevseg.refreshDisplay();
// delay(delayTime);
// sevseg.refreshDisplay();
// delay(delayTime);
// sevseg.refreshDisplay();
// delay(delayTime);
// sevseg.refreshDisplay();
// delay(delayTime);
// sevseg.refreshDisplay();
// delay(delayTime);
// sevseg.refreshDisplay();
// delay(delayTime);
// sevseg.refreshDisplay();
// delay(delayTime);
// sevseg.refreshDisplay();
// delay(delayTime);
// sevseg.refreshDisplay();
// delay(delayTime);
// sevseg.refreshDisplay();
// delay(delayTime);
// sevseg.refreshDisplay();
// delay(delayTime);
// sevseg.refreshDisplay();
// delay(delayTime);
// sevseg.refreshDisplay();
// delay(delayTime);
// sevseg.refreshDisplay();
// delay(delayTime);
// sevseg.refreshDisplay();
// delay(delayTime);
// sevseg.refreshDisplay();
// delay(delayTime);
// sevseg.refreshDisplay();
// delay(delayTime);
// sevseg.refreshDisplay();
// delay(delayTime);
// sevseg.refreshDisplay();
// delay(delayTime);
// sevseg.refreshDisplay();
// delay(delayTime);
// sevseg.refreshDisplay();
// delay(delayTime);
// sevseg.refreshDisplay();
// delay(delayTime);
// sevseg.refreshDisplay();
// delay(delayTime);
// sevseg.refreshDisplay();
// delay(delayTime);
// sevseg.refreshDisplay();
// delay(delayTime);
// sevseg.refreshDisplay();
// delay(delayTime);
// sevseg.refreshDisplay();
// delay(delayTime);
// sevseg.refreshDisplay();
// delay(delayTime);
// sevseg.refreshDisplay();
// delay(delayTime);
// sevseg.refreshDisplay();
// delay(delayTime);
// sevseg.refreshDisplay();
// delay(delayTime);
// sevseg.refreshDisplay();
// delay(delayTime);
// sevseg.refreshDisplay();
// delay(delayTime);
// sevseg.refreshDisplay();
// delay(delayTime);
// sevseg.refreshDisplay();
// delay(delayTime);
// sevseg.refreshDisplay();
// delay(delayTime);
// sevseg.refreshDisplay();
// delay(delayTime);
// sevseg.refreshDisplay();
// delay(delayTime);
// sevseg.refreshDisplay();
// delay(delayTime);
// sevseg.refreshDisplay();
// delay(delayTime);
// sevseg.refreshDisplay();
// delay(delayTime);
// sevseg.refreshDisplay();
// delay(delayTime);
// sevseg.refreshDisplay();
// delay(delayTime);
// sevseg.refreshDisplay();
// delay(delayTime);
// sevseg.refreshDisplay();
// delay(delayTime);
// sevseg.refreshDisplay();
// delay(delayTime);
// sevseg.refreshDisplay();
// delay(delayTime);
// sevseg.refreshDisplay();
// delay(delayTime);
// sevseg.refreshDisplay();
// delay(delayTime);
// sevseg.refreshDisplay();
// delay(delayTime);
// sevseg.refreshDisplay();
// delay(delayTime);
// sevseg.refreshDisplay();
// delay(delayTime);
// sevseg.refreshDisplay();
// delay(delayTime);
// sevseg.refreshDisplay();
// delay(delayTime);
// sevseg.refreshDisplay();
// delay(delayTime);
// sevseg.refreshDisplay();
// delay(delayTime);
// sevseg.refreshDisplay();
// delay(delayTime);
// sevseg.refreshDisplay();
// delay(delayTime);
// sevseg.refreshDisplay();
// delay(delayTime);
// sevseg.refreshDisplay();
// delay(delayTime);
// sevseg.refreshDisplay();
// delay(delayTime);
// sevseg.refreshDisplay();
// delay(delayTime);
// sevseg.refreshDisplay();
// delay(delayTime);
// sevseg.refreshDisplay();
// delay(delayTime);
// sevseg.refreshDisplay();
// delay(delayTime);
// sevseg.refreshDisplay();
// delay(delayTime);
// sevseg.refreshDisplay();
// delay(delayTime);
// sevseg.refreshDisplay();
// delay(delayTime);
// sevseg.refreshDisplay();
// delay(delayTime);
// sevseg.refreshDisplay();
// delay(delayTime);
// sevseg.refreshDisplay();
// delay(delayTime);
// sevseg.refreshDisplay();
// delay(delayTime);
// sevseg.refreshDisplay();
// delay(delayTime);
// sevseg.refreshDisplay();
// delay(delayTime);
// sevseg.refreshDisplay();
// delay(delayTime);
// sevseg.refreshDisplay();
// delay(delayTime);
// sevseg.refreshDisplay();
// delay(delayTime);
// sevseg.refreshDisplay();
// delay(delayTime);
// sevseg.refreshDisplay();
// delay(delayTime);
// sevseg.refreshDisplay();
// delay(delayTime);
// sevseg.refreshDisplay();
// delay(delayTime);
// sevseg.refreshDisplay();
// delay(delayTime);
// sevseg.refreshDisplay();
// delay(delayTime);
// sevseg.refreshDisplay();
// delay(delayTime);
// sevseg.refreshDisplay();
// delay(delayTime);
// sevseg.refreshDisplay();
// delay(delayTime);
// sevseg.refreshDisplay();
// delay(delayTime);
// sevseg.refreshDisplay();
// delay(delayTime);
// sevseg.refreshDisplay();
// delay(delayTime);
// sevseg.refreshDisplay();
// delay(delayTime);
// sevseg.refreshDisplay();
// delay(delayTime);
// sevseg.refreshDisplay();
// delay(delayTime);
// sevseg.refreshDisplay();
// delay(delayTime);
// sevseg.refreshDisplay();
// delay(delayTime);
// sevseg.refreshDisplay();
// delay(delayTime);
// sevseg.refreshDisplay();
// delay(delayTime);
// sevseg.refreshDisplay();
// delay(delayTime);
// sevseg.refreshDisplay();
// delay(delayTime);
// sevseg.refreshDisplay();
// delay(delayTime);
// sevseg.refreshDisplay();
// delay(delayTime);
// sevseg.refreshDisplay();
// delay(delayTime);
// sevseg.refreshDisplay();
// delay(delayTime);
// sevseg.refreshDisplay();
// delay(delayTime);
// sevseg.refreshDisplay();
// delay(delayTime);
// sevseg.refreshDisplay();
// delay(delayTime);
// sevseg.refreshDisplay();
// delay(delayTime);
// sevseg.refreshDisplay();
// delay(delayTime);
// sevseg.refreshDisplay();
// delay(delayTime);
// sevseg.refreshDisplay();
// delay(delayTime);
// sevseg.refreshDisplay();
// delay(delayTime);
// sevseg.refreshDisplay();
// delay(delayTime);
// sevseg.refreshDisplay();
// delay(delayTime);
// sevseg.refreshDisplay();
// delay(delayTime);
// sevseg.refreshDisplay();
// delay(delayTime);
// sevseg.refreshDisplay();
// delay(delayTime);
// sevseg.refreshDisplay();
// delay(delayTime);
// sevseg.refreshDisplay();
// delay(delayTime);
// sevseg.refreshDisplay();
// delay(delayTime);
// sevseg.refreshDisplay();
// delay(delayTime);
// sevseg.refreshDisplay();
// delay(delayTime);
// sevseg.refreshDisplay();
// delay(delayTime);
// sevseg.refreshDisplay();
// delay(delayTime);
// sevseg.refreshDisplay();
// delay(delayTime);
// sevseg.refreshDisplay();
// delay(delayTime);
// sevseg.refreshDisplay();
// delay(delayTime);
// sevseg.refreshDisplay();
// delay(delayTime);
// sevseg.refreshDisplay();
// delay(delayTime);
// sevseg.refreshDisplay();
// delay(delayTime);
// sevseg.refreshDisplay();
// delay(delayTime);
// sevseg.refreshDisplay();
// delay(delayTime);
// sevseg.refreshDisplay();
// delay(delayTime);
// sevseg.refreshDisplay();
// delay(delayTime);
// sevseg.refreshDisplay();
// delay(delayTime);
// sevseg.refreshDisplay();
// delay(delayTime);
// sevseg.refreshDisplay();
// delay(delayTime);
// sevseg.refreshDisplay();
// delay(delayTime);
// sevseg.refreshDisplay();
// delay(delayTime);
// sevseg.refreshDisplay();
// delay(delayTime);
// sevseg.refreshDisplay();
// delay(delayTime);
// sevseg.refreshDisplay();
// delay(delayTime);
// sevseg.refreshDisplay();
// delay(delayTime);
// sevseg.refreshDisplay();
// delay(delayTime);
// sevseg.refreshDisplay();
// delay(delayTime);
// sevseg.refreshDisplay();
// delay(delayTime);
// sevseg.refreshDisplay();
// delay(delayTime);
// sevseg.refreshDisplay();
// delay(delayTime);
// sevseg.refreshDisplay();
// delay(delayTime);
// sevseg.refreshDisplay();
// delay(delayTime);
// sevseg.refreshDisplay();
// delay(delayTime);
// sevseg.refreshDisplay();
// delay(delayTime);
// sevseg.refreshDisplay();
// delay(delayTime);
// sevseg.refreshDisplay();
// delay(delayTime);
// sevseg.refreshDisplay();
// delay(delayTime);
// sevseg.refreshDisplay();
// delay(delayTime);
// sevseg.refreshDisplay();
// delay(delayTime);
// sevseg.refreshDisplay();
// delay(delayTime);
// sevseg.refreshDisplay();
// delay(delayTime);
// sevseg.refreshDisplay();
// delay(delayTime);
// sevseg.refreshDisplay();
// delay(delayTime);
// sevseg.refreshDisplay();
// delay(delayTime);
// sevseg.refreshDisplay();
// delay(delayTime);
// sevseg.refreshDisplay();
// delay(delayTime);
// sevseg.refreshDisplay();
// delay(delayTime);
// sevseg.refreshDisplay();
// delay(delayTime);
// sevseg.refreshDisplay();
// delay(delayTime);
// sevseg.refreshDisplay();
// delay(delayTime);
// sevseg.refreshDisplay();
// delay(delayTime);
// sevseg.refreshDisplay();
// delay(delayTime);
// sevseg.refreshDisplay();
// delay(delayTime);
// sevseg.refreshDisplay();
// delay(delayTime);
// sevseg.refreshDisplay();
// delay(delayTime);
// sevseg.refreshDisplay();
// delay(delayTime);
// sevseg.refreshDisplay();
// delay(delayTime);
// sevseg.refreshDisplay();
// delay(delayTime);
// sevseg.refreshDisplay();
// delay(delayTime);
// sevseg.refreshDisplay();
// delay(delayTime);
// sevseg.refreshDisplay();
// delay(delayTime);
// sevseg.refreshDisplay();
// delay(delayTime);
// sevseg.refreshDisplay();
// delay(delayTime);
// sevseg.refreshDisplay();
// delay(delayTime);
// sevseg.refreshDisplay();
// delay(delayTime);
// sevseg.refreshDisplay();
// delay(delayTime);
// sevseg.refreshDisplay();
// delay(delayTime);
// sevseg.refreshDisplay();
// delay(delayTime);
// sevseg.refreshDisplay();
// delay(delayTime);
userInput = userInput - 1;
sevseg.refreshDisplay();
}
sevseg.blank();
analogWrite(A4, 255);
delay(2000);
analogWrite(A4, 0);
}
else{
Serial.println("error, please select between 0 and 9999 seconds");
}
}
In this project, I alter the existing 7 digit alarm clock and turn it into a simulated FAKE bomb prank.
The components used are: 5641AS, 220 Ohm resistors, Active Buzzer, Rectifying diode, Red LED.
This project was the first time I went off script from the guide and started coding on my own. While programming, I discovered the
"do...while"
command loop which helped make the project work.
I also used another persons code as inspiration and a sort of backboard for this:
https://www.instructables.com/Arduino-Ticking-Time-Bomb/
This project is most definitely not perfect and I'm not completely happy with the result. This was just a way for me to test my current knowledge. One issue that I need to learn is how to do 2 different actions simultaneously, such as having the buzzer play while the timer goes down. I intend to return to this project
#include "SevSeg.h"
int A = 8;
int F = 7;
int B = 6;
int E = 11;
int D = 12;
int DP = 13;
int C = 10;
int G = 9;
int D1 = 2;
int D2 = 3;
int D3 = 4;
int D4 = 5;
int delayTime = 5;
int userInput;
int buzzPin = A4;
int j = 0;
SevSeg sevseg;
void setup() {
// put your setup code here, to run once:
pinMode(A, OUTPUT);
pinMode(F, OUTPUT);
pinMode(B, OUTPUT);
pinMode(E, OUTPUT);
pinMode(D, OUTPUT);
pinMode(DP, OUTPUT);
pinMode(C, OUTPUT);
pinMode(G, OUTPUT);
pinMode(D1, OUTPUT);
pinMode(D2, OUTPUT);
pinMode(D3, OUTPUT);
pinMode(D4, OUTPUT);
byte numDigits = 4; // how many digits on timer(4)
byte digitPins[] = {D1, D2, D3, D4}; // assigning which are digit pins
byte segmentPins[] = {A, B, C, D, E, F, G, DP}; // assigning which are segment pins
bool resistorOnSegments= true; // resistors are put on each segment pin in circuit
byte hardwareConfig = COMMON_CATHODE; // display is a common cathode
bool updateWithDelays = true;
bool leadingZeros = false;
sevseg.begin(hardwareConfig, numDigits, digitPins, segmentPins,
resistorOnSegments, updateWithDelays, leadingZeros);
// allowing sevseg to input all info in
sevseg.setBrightness(90);
Serial.begin(9600); // begin serial monitor
}
void loop() {
// put your main code here, to run repeatedly:
Serial.println("set a timer up to 9999 seconds");
while(Serial.available() == 0){
// while command makes above command only print once until
user inputs number to set up variables
}
userInput = Serial.parseInt();
if (userInput <= 9999 && userInput > 0){
while(userInput > 0){
sevseg.setNumber(userInput);
for (int i = 0; i <= 200; i++) {
sevseg.refreshDisplay();
delay(delayTime);
}
analogWrite(A4, 150);
delay(20);
analogWrite(A4, 0);
delay(970);
userInput = userInput - 1;
sevseg.refreshDisplay();
}
sevseg.blank();
do {
for (int j = 0; j <= 1 ; j++ ) {
//looping the led to flash over and over again
analogWrite(A5, 255);
delay(100);
analogWrite(A5, 0);
delay(100);
}
analogWrite(A4, 255);
j++;
} while (j <= 100);
analogWrite(A4, 0);
analogWrite(A5, 0);
}else
{
Serial.println("error");
}
}
The goal of this project was to repurpose my old Samsung S10 into an emulation console. The idea was to utilise Samsung DeX, which is a mode the phone can go when connected to a screen that turns the OS into a Computer format.
I used this phone for a solid 4 years and the battery was showing it's age, by losing a percentage of charge every 2 minutes, so I decided on first doing a battery replacement.
The repair was much easier to do than usual as the back glass of the phone was almost about to fall apart. However, I still had to order a heatgun to heat up the glue of the battery.
I ordered a battery from eBay and a replacement back glass from AliExpress. The heat gun was ordered from Amazon.
I first started by shutting off the phone, taking out the SIM tray and slowly peeled off the back glass and unscrewing the plastic covers. With the heat gun, I peeled off remaining residue and was able to access all the components in the phone.
Then I disconnected the battery by taking off the lego connector for the ribbon cable using a plastic ridge. Using the heat gun, I heated up the glue sticking the battery onto the body by aiming it at the screen, because aiming a heat gun at a battery is a recipe for disaster.
I had problems while actually removing the battery, as the glue was still very sticky and there was barely any space to put leverage on the battery. I was scared that I would puncture the battery with the tweezers and all the plastic ridges I had would simply bend while taking the battery out.
I eventually used a plastic spatula used for camping and that did the trick.
After taking out the battery, I simply stuck the new one in using electronic double sided tape and closed everything up. After dusting the insides, I installed the back glass which was transparent as I like seeing into electronics.
After the repair, I installed emulation apps such as Lemuroid, MelonDS and others. With this, I was able to play childhood games such as Spongebob Truth or Square and GTA Vice City.
Problems
As a first repair, it most definitely wasn't perfect. At first, I wanted to reuse the original backglass but peel back the white coating to turn it transparent. However, I applied too much pressure onto the tempered glass and it shattered everywhere, cutting my finger and leaving a scar. This taught me to be careful no matter what and use as least amount of force when it comes to fragile items.
There is also another issue with the installation of the new back glass. When installing it, there was not enough weight acting on the glass while the glue settled which meant that it wasn't setted in perfectly. It now has sharp edges and there is an air gap in the middle of the phone, however seeing that this phone would be barely held I didn't see this as much of an issue.
Next Steps
I definitely am planning on returning back to this project. I really want to get controller attachments so I can use the phone like an actual console device, like a Nintendo Switch or DS. As of now, I currently use the phone as a mini cloud storage as it has 512GB storage.
This is my new personal Nintendo 3DS Games Console. I bought it used on eBay for £100 as I have always wanted to get back to playing childhood games and realised the aftermarket potential of it. It is an "old" Nintendo 3DS and came with a 4gb SD card included.
The idea for this console was to eventually hack it and install custom firmware onto it (Luma3DS) and install Homebrew on it for emulation and comfort updates. I also want to replace the shell, as although the original one is pretty good for the used price (since 3DS as of 7/12/2024 go for up to £300), there are some scratchs and marks and I want to personalise it more overall.
After a couple of weeks of playing some of my childhood games (Super Mario Bros and Pokemon), I decided it was time to hack it. I wanted to play some of my actual games before hacking it in fear of potentially bricking it again like my brother.
One smaller hobby I occasionally do is PC Building. I've always loved tinkering and playing with computers and I have built 3 computers, troubleshooting and fixed many other ones, and will continue to for the future.
Personal Build
As a reward for getting all As in my National 5s, I was told that I could get a PC so I started learning and designing my personal computer. I chose to build it rather than a PreBuilt because I've always wanted to build one and it has practical use in the way I can fully control what I buy and be as cost effective as possible.
Specs
- AMD Ryzen 5 5600x (with included CPU Cooler)
- ASUS ROG Strix B550-A Gaming
- Kingston FURY Beast 16GB DDR4-3200 CL16
- WD Blue SN570 1TB
- AMD XFX Speedster SWFT 319 Radeon RX 6800 16 GB
- Fractal Design Pop Air ATX
- SeaSonic B12 BC 850W
I still had alot of things planned for this computer, as I decided that I would buy all the main stuff and slowly upgrade it overtime. This computer was a powerhouse but was a bit loud due to the fact it had the stock CPU cooler which meant I couldn't overclock it and on load, it would roar loudly.
I eventually settled with an air cooler, specifically the DeepCool AK620
I replaced the old stock cooler with this one and experienced a massive increase in power and decrease in sound coming from the fans.
I was still unsatisfied by the volume and the look of the fans at the front of the PC, so I replaced the 2 120mm intake fans with 140mm ones. I then moved the original intakes onto the top as exhausts. With some fine tuning I was still able to get positive pressure air pumping through the PC.
Before
After
Final Build (25/10/24)
Nathan's Computer
This PC build was dedicated to my friend Nathan who was switching from Console Gaming to PC Gaming.
Specs
- AMD Ryzen 5 7600 3.8 GHz 6-Core Processor
- Asus ROG STRIX B650-A GAMING WIFI ATX AM5 Motherboard
- G.Skill Ripjaws S5 32 GB (2 x 16 GB) DDR5-5600 CL28 Memory
- Western Digital Blue SN570 1 TB M.2-2280 PCIe 3.0 X4 NVME Solid State Drive
- Sapphire PURE Radeon RX 7800 XT 16 GB Video Card
- Corsair 4000D Airflow ATX Mid Tower Case
- SeaSonic B12 BC 750 W 80+ Bronze Certified ATX Power Supply
Adrian's Computer
This PC build was dedicated to my friend Adrian who was also switching from Console to PC.
Specs
- AMD Ryzen 5 5600x (with included CPU Cooler)
- MSI MPG B550 GAMING PLUS ATX AM4
- Corsair Vengeance RGB Pro 16 GB (2 x 8 GB) DDR4-3200 CL16 Memory
- KIOXIA EXCERIA G2 1 TB M.2-2280 PCIe 3.0 X4 NVME Solid State Drive
- ASRock Challenger OC Radeon RX 7700 XT 12 GB Video Card
- KOLINK Observatory MX Mesh ARGB ATX Mid Tower Case
Corsair CV650 650 W 80+ Bronze Certified ATX Power Supply
- Asus PCE-AX3000 802.11a/b/g/n/ac/ax PCIe x1 Wi-Fi Adapter
Note: We didn't actually use cellotape to move a power cable, that would just be bad.
This page is to show some potential project ideas that I want to do in the future, and also to remind me about them so I can go back to them.
Potential Computer Server
I intend to reuse my older brother's old computer into something that could be turned into a NAS (Network Accessed Storage), Game Server, or turn it into a family computer using Linux. This is because it is A: Too old for Windows to be effective on it, and B: I really want to try out Linux and play with it.
Personal 3DS XL (Potentially Modded in the future)
I grew up with a Nintendo 3DS XL as my first ever console, which was a gift from my brother when I was around 7-8 years old. I loved it until my brother bricked the device while trying to mod it. To this day I am still trying to fix it and have some ideas on how to revive it.
I bought another one used from eBay and am currently slowly modding it to personalise it. In the future, I plan on continuing what my brother did and fully mod it with custom firmware (and not break the device).
Currently, I plan on switching the cover plates from my "new" 3DS to my actual childhood one because I dig the blue colour.
Modding a Playstation 4
I will be giving my little sister my old PS4, as she is in need of an entertainment device other than her phone and a PS4 is just a computer with the sole purpose of playing games and entertainment applications.
I intend on first cleaning out the entire console from the inside and possibly replacing the hard drive with a SATA SSD for faster bootup and read-write speeds.