Learning to Code on a 12 Year Old Machine - A Journey of Patience and Perseverance
Until I started learning to code and gained confidence enough to learn more technologies other than just dabbling in plain HTML and CSS, I never really knew the limitations of my laptop.
The first casualty. Enter Angular ⚙️
After learning some vanilla JavaScript and discovering a whole new world of frameworks, I decided to try Angular.
It was less than a week of dabbling in the framework that I almost did this to my laptop 😂
Angular was the first framework I used, and I will never forget the 17 minutes it took to create my first project with the framework. I knew then and there that my brief acquaintance with the framework had come to an abrupt end.
‘Mobile developer’ sounded good. Enter Flutter 🧰
I wouldn’t wish this on anyone. I remember it taking so long to build a Flutter app that I thought I had broken my laptop and, mind you, I wasn’t even using a virtual emulator opting to use my phone to run the app on because that was the only way that I could try out the language.
Never has 22 minutes seemed like an eternity. I ended my relationship with Flutter as quickly as it had began. Till we meet again Flutter, till we meet again 👋
Would you look at that! Enter Vue 😃
The Vue.js framework happened to be the sweet spot and after dabbling in it for a couple of weekends, I decided to pursue it fully.
It takes approximately 10 minutes for me to create a new Vue project and I know that’s nothing to write home about, but believe me when I say this, those fewer minutes pale in comparison to the time it takes to create an Angular project or to build a Flutter app on my laptop.
Sofa, so good. Enter my desk setup 🛋️
A large portion of my journey in web development has been spent on this piece of furniture.
Most people have proper desk setups with height adjustable seats, well, not me. I have two buffed up cushions for the optimal sitting height. When I made those brown synthetic leather cushion covers, I was putting my sewing skills to the test 😅
How is my back still alive? Well, Pomodoro is the only answer I have for you. Those seemingly short breaks in between Pomodoro time blocks give me the chance to get in some much needed stretching.
I am not planking you, this is real. Enter plank, my table 📓
Back when I was a kid I used to watch a lot of Cartoon Network as I’m sure most of you did and if you remember, there was this one cartoon, Ed, Edd and Eddy where there was a character called Jonny Wood-Boy who used to carry around a plank of wood which was, unsurprisingly, named Plank. The two were so acquainted, nearly inseparable.
Well, I’ve grown quite attached to my plank. I cut a piece of plywood at just the right length that it sits perfectly on the left and right arm rests of the sofa.
It offers enough room for my bulky laptop which sits centered, my handy mouse which sits on the right side and my phone on the left churning out as much chill music as I can listen to.
The plywood also has just enough room for me to lay my notebook down below the mouse and jot down some useful notes and as an added bonus, I avoid having the hefty laptop weigh down my laps and it acts as insulation from the amount of heat that this big boy produces whenever we’re fingers deep in a coding session 😅
Editor's choice. Enter VS Code ☕
I believe VS Code is among the best, if not the best code editor. Once I switched over from using Sublime Text, I don't think I’ll ever use anything else as my main editor.
The versatility of the editor and the vast amount of useful extensions it offers has made my life easier and I'm sure that you'd agree too if you use the editor. These extensions have made my self-taught journey easier and I've honestly learnt how to write code more quickly and efficiently. That being said, let me now mention how long it takes for me to open up a project in Code.
After clicking the Open with Code option from the context menu, I wait for the project files to be loaded into the editor. If luck is on my side that day and I don’t get greeted with a window not responding message, I wait for the code to be parsed and for extensions to load. Once the colour highlighting kicks in, that’s when I know I’m ready to start coding. The process takes about 3 to 5 minutes depending on how big the code files are.
However, since I started working on larger projects, I’ve found myself more often in situations where with larger code files like Vue components that contain more code in the template, script and style sections, the code files don’t usually get parsed correctly. Things like colour highlighting and auto-completion fail to load and I usually find myself staring at what I can only describe as a giant text file with no visual separation anywhere in the syntax. The only remedy for that being to close down the editor and open up the project again, hoping that the next time round is the charm 😂
If all loads well at this point, starting a local development server kicks the time up to a total of around 9 minutes. This, mind you, is time calculated after the laptop already powered on and everything had loaded prior to opening up the project in Code. Add to that my Windows boot time and we're way past the 15 minute mark before I can get ready to code.
All this loading and waiting that I have to sit through might sound like a deal breaker for you, but the editor is the one compromise that I can't make. So whenever I start a new project or open an existing one, I use the time, the load time I mean, to plan how I'm going to tackle the tasks ahead or even have some tea as I wait.
I still keep Sublime Text around cause it's lightweight and less resource intensive, so whenever I'm working on a project in Code and I need to refer to some old code I wrote in another project, I prefer viewing it in Sublime rather than putting more strain on the already stretched resources by opening up another project in Code 😫
Looks, sometimes, matter. Enter Google Fonts 🤩
I have some of the most popular fonts from Google Fonts installed locally on my machine. The main reason for this is that having my laptop connected to an active Internet connection whenever I'm working on any web project multiplies the slow factor noticeably - A major pain. A pain that became, quite frankly, unbearable.
Here's the 10 step process of accessing the Internet to get fonts
- Click on the Network icon on Windows
- Wait for the Connections pop up then choose a connection
- Wait for the connection to be successful
- Click on the browser icon
- Wait for the browser to recover from the shock that there’s an active Internet connection (PS: The browser opens up much faster if there’s no Internet connection)
- Click on the URL field
- Wait for the text cursor to appear on the URL field
- Type in a URL address and experience some out of this world ghosting because I often finish typing in an entire link before the actual characters I typed in appear onscreen 😂
- Wait for the site I typed in to load
- Comb through the fonts to find a desired one and linking to that particular font in my project 🏁
As you can clearly tell, this is quite a painful process that takes what seems like an eternity to complete. On average it’s around 15 minutes before I actually write a single line of code or more if I hadn’t already launched my code editor before connecting to the Internet.
Now you know why I prefer to have some fonts installed locally on my laptop. This way, whenever I am working on designs, I know I can easily make them appear exactly as I had intended. Also, when I am working on a project, I can also access the fonts quickly.
The only time I link to the actual fonts from Google Fonts is when I'm done working on the project and I'm ready to deploy.
Go forth and be brave. Enter Brave 🦁
I bet you that right now, you have multiple tabs running on your browser and since the introduction of grouped tabs, I'm pretty sure that the total number of tabs in your phone’s browser is quite a lot. I know this because I personally I’m a culprit.
You might find yourself having an article that you can’t get to reading right away and so, you opt not to close that tab. Every new search you perform on a new tab and before you know it, your tab numbers are soaring through double and triple digits.
Well, I wish that was the case for me on my enthusiast machine. I daren’t watch a YouTube tutorial on my browser while working or venture beyond the safety of six browser tabs because any free resources available at this point get thrown out the window the moment I try to do that.
Calling the experience slow doesn’t even begin to explain it 😫
Also, you’d think that pursuing web development would mean that I’d at least have a good Internet connection, but sadly that hasn’t been the case for me. My phone has been the primary source of my Internet with which I’ve had to contend with my carriers’ poor services, to say the least.
Have a look at the networks speeds I get. I bet you’ve never seen so much pain in a picture 😂
I had had enough of this when I started working on my Movie Database project which required a constant, stable Internet connection to be seen through. And so, I decided to pack up and go spend a couple of weeks at a friend’s place because he at least has a passable Internet connection.
And as an added bonus, my friend majored in Computer Science so it was nice having someone with whom I could talk to about programming topics and bounce off ideas from.
I remember using a different computer at his place to do a quick search on Google and I was in awe at how fluid the experience was. It almost brought me to tears.
The feeling of using a computer that bended to your every will without breaking a sweat was exhilarating. I felt like, prior to that moment, I had never used a computer before in my life. I would click on the browser icon and in the blink of an eye the app was served up and ready for use. I remember having multiple tabs open and switching back and forth between them was such a breeze.
Even the simple mindless action of closing a browser tab brought me such joy. Joy I never thought my weary heart could feel. It felt like the stuff of dreams, just clicking on anything you wanted to and having that action executed near instantaneously.
That experience made me dream about my future in this field and gear that I would one day love to have.
I can’t believe my computer is classified as a surfboard 😂
After my brief venture into that land full of peace and responsiveness, I was back to my slothium. The difference between the two computers is like night and day. I cannot stress that enough.
Two screens are better than one. Enter my phone 📱
YouTube, Udemy, technical reads etc., it has been my phone that has enabled me to learn.
A big thank you to all those YouTubers and Udemy course instructors who make videos that are zoomed in enough to make their content consumable on small-screened devices as well.
Many of us can't access massive screen areas offered by large monitors, so we use our phones and tablets to consume such content.
Bigger is better. Enter a larger screen 🖥️
I have a soft spot for cats 😅
During the time I spent at my friend’s place, I got the chance to use an old monitor he had laying around as my second screen. Having the extra screen to work with was quite the treat.
Looking back, I was definitely more productive while connected to the second screen and I would more than likely get a monitor that favours productivity in future 🤓
Draw freely. Enter Inkscape 🎨
I know that in the web design scene there are plenty of big names when it comes to design. I'm sure you've heard of AdobeXD, Figma, Sketch and the likes, and if you did a quick search on YouTube for anything related to web design, a large number of the videos you’d find would be making use of one of these design tools.
Well, that's not my case, that's not how I learnt to design for the web. I use a nifty design software called Inkscape.
Inkscape is my top choice for a design tool. I was using it long before I entered into the programming scene, from designing birthday cards and fliers for friends and family, to designing 2D game sprites for games I never made.
It's when I started my web development journey that I really started to harness the power of Inkscape. I use it for color scheming, wire framing, editing and cropping images and making other assets that I use for the web including the profile picture I've used on this blog.
It does everything that I could possibly need it to do and enough so that I never bothered finding out what the competition had to offer.
My first question when it comes to design has always been, can I do it in Inkscape? And that's how I've grown to love the software 🧡
Start your engines. Enter the operating system ⏱️
I bet most of you have never given a second thought to how much time it takes for the Windows Start Menu to pop up after clicking on the Start icon or pressing the Windows Key on your keyboard.
One day I was deep in a coding session. Running multiple windows, VS Code at the helm of my operations, Brave for my output, Sublime Text to refer to some code snippets and Vue at the heart of it all. Suddenly, in the middle of typing, my left pinkie accidentally pressed the Windows Key and since that was one more task I had added on top of the already stretched resources on my laptop, there was no other option but to wait for the Start Menu to show up before I could close it. Try guessing how long that took.
It took a record breaking 42 seconds for the Start Menu to show up 😲
Yes, you read that number right. I didn't mean to write 4 seconds or 2 seconds; no. I actually mean 42 seconds.
Take that for what you will.
Wait for it... Enter unresponsiveness ⌛
If I had a dollar for every time a file explorer window or a browser tab was not responding on my laptop, I would definitely have a better laptop, but unfortunately for you, you wouldn't be reading this post today 😂
It moves in slow-notion. Enter Notion 🐌
I downloaded the Notion desktop app and tried to use it to manage my workflow, but it quickly became apparent that that was a battle I could not face on this laptop and, yet again, down went another great tool.
I quickly switched to using Trello instead. At least with Trello, the experience has been much more forgiving.
Enter the star of the show, the uninspiring, Inspiron 💔
In gaming, there's a site called Can I Run It? which lets you know the system requirements of playing a particular video game. From that information you can tell whether your pc can play that game or not.
I wish there was such an option for programming and if there is, please let me know 😅 That would have saved me a lot of trial and quitting with some of the frameworks, languages and tools that I’ve tried to use.
When I got the laptop, it was clear to see that it had gone through some pretty rough times. Above you can see the state that the original keyboard was in. Some keys were missing, lost in a place unknown, and the ones that were intact were really hard to actuate. The story of what happened to this poor keyboard is best left for the previous owner. You and I can only imagine the life that it was subjected to.
All I know is that some kids dropped the near 4 kilogram (8.8 pound) behemoth and only the bezel took the hit, and I honestly wouldn't blame them.
It still amazes me that the screen somehow managed to go unscathed 😂
I wouldn't want to see the floor where all this happened.
Soon after I got it, I walked into a repair shop which was more of a junk yard for dead computers, TVs and other electronics that seemed to be in use way back before I arrived on the blue planet. Many of which didn't seem like they would ever see another day of life. They seemed like they were just there to be bled dry for parts. To date, I still wonder if even half of them had any owners who were coming back for them or the owners had resigned to the hash truth of their realities and just decided to pawn their electronics as parts or forfeited them entirely.
So I asked the repair guy if he could find me a keyboard. Not if he had a keyboard, but if he could find one.
The convention when going to repair shops, since I can remember, has always been to ask if they 'could find' whatever part it was that you were looking for and if the repair guy said he didn't have what you needed, you'd see him walk out of his shop carrying your device and he'd tell you to follow him as he took you to the various other repair shops around as he asked on your behalf if they could find the part which you were looking.
He’d do this for you at about two or three other shops with no luck and then he'd turn to you and tell you to give him your phone number and that he’d be sure to let you know if he found any of the parts you were looking for. Sometimes he never did and you were basically forced to accept your device’s fate and just come back to the repair shop and sell it for parts. At least that way, you didn't have a dead piece of tech taking up space and gathering up dust in your home.
Fortunately for me, the repair guy took a quick glance at my laptop and then walked into the back of his shop and a few moments later emerged carrying in his hand what seemed to be the twin sibling of my laptop.
I felt like the luckiest Joe alive because he had the same exact laptop as mine, although that one was far too gone, but at least it had one thing going for it, the keyboard.
He then gracefully removed the keyboard from the old relic and switched it out with mine. After a quick test of all the keys in a text document and the affirmation that they were all responsive, the light at the end of the tunnel started shining a tad brighter 😊
It's a shame that I couldn't get to fix the broken front bezel because someone else had already gotten that piece of the pie.
Looking back at that moment, I'm glad I got the most important part – the keyboard.
It was a keyboard that I happened to find on some random afternoon that ended up being just right for my laptop that helped me embark on my self-taught path as a web developer 😂
That day I went home all jollied up 😊
Fresh out of juice. Enter the charger ⚡
The charger has definitely seen better days and since it’s the laptop’s original charger, I’m surprised that it's still kicking. It was definitely built to last.
The number of times other people and I have accidentally come into contact with the cable making it wiggle in its slot which in turn happened to shut down my laptop is countless. This charger is a delicate, but very important piece of the puzzle, despite sections of it being buried in multiple layers of electrical tape as reinforcements.
At some point, the cable kept slipping out of its port all on its own kicking me out of a coding session every single time because the laptop shut down. That's when I decided to wedge in a piece of paper into the charging port to keep that from happening. It works 😅
A free stand. Enter the battery 🔋
The battery gave out a few years prior to me getting my hands on the laptop and ever since, the laptop has been operating like a desktop computer - if there's no power, there's no using it 😤
Here’s another fun fact for you, I can't even power on the machine if the battery is connected in its slot, so I just use the charger as my power source and the battery, albeit dead, is not all that useless. I use it to elevate the laptop, just as you would use the stands found at the bottom of most keyboards. This elevation serves two purposes; the first is to give me a slightly better typing angle and the second, the most important purpose, is to allow for a much better air flow.
The laptop sits flat on the table and with the one tiny intake fan located on bottom of it, it barely gets in any air and when it starts to heave, nearly, every half hour or so due to the load of work I’ve thrown at it, you might think that there’s a Boeing taking off from my laps 😂
So the small gap created between the laptop’s bottom and the table as a result of using the battery as a stand definitely helps, allowing for a much better air flow.
"The numbers, Mason. What do the numbers mean?" Enter the specs 📦
Don't let the EVGA sticker fool you. I love this sticker because it captures precisely how my laptop operates - At its limit, 90% of the time it 😂
Here are the specs of my enthusiast machine and no, your eyes do not deceive you.
- Intel Pentium T4500 Dual Core (Intel Slothium Inside)
- 5400RPM HDD
- 2GB DDR2 RAM
There's a time Brad Traversy of Traversy Media said in one of his YouTube videos that he was using a slow machine and I honestly laughed at the thought of it. I'm sure the difference between the machine he was using at the time and mine is worlds apart 😅
On some really bad days I experience system wide lags where the mouse cursor doesn't even respond and as a sanity check, I usually turn my mouse over just to see if it’s actually still on or maybe the cursor isn't responding because the mouse went off due to an empty battery.
Sometimes even just the thought of waking up to my slothium and knowing that I have to spend a good 15-20 minutes before I can get to studying gives me instant fatigue. Even if I was fresh out of an 8-hour sleep.
Once I get coding, a simple mindless action such as bringing up a context menu to create a New Folder or to access more file options is a chore in itself 😩
If you’ve ever worked with
Node Package Manager (npm), you’ve probably never thought twice about running
npm run build
or any other command to initialize your
project or to build it for production, but on the day I created a
React app that took
37 minutes to complete, that changed for me.
I was shaken to my developer core and since then, for projects that I only view on my laptop, I only create a new project in Vue or React once, and then I zip the created project files and keep them for future use.
So, for example, if I decided to create another React app, rather than running the command to create a new React app, I would just opt to extract the zipped project files into a folder and continue working from there.
When I had learnt a bit of Vue and decided to put my skills to the test, I came up with two project ideas; one was to make a Movie DB and the other was to make a remastered version of a notes app I had made when I was learning the ropes with coding.
The time I spent working on those larger projects is when the idea of blogging about my journey came to me. There has never been a time in my life when I wanted to give up so badly as during those times with coding.
Maybe someday I’ll be able to venture back into that land of peace and responsiveness I had experienced at my friend’s place.
The tale ends, but the journey is far from over. Enter the conclusion 🏁
If it wasn't for my online tutors and mentors and my enthusiast machine, you wouldn't be reading this blog today. So I'm eternally grateful to who they are and all that they do to better the lives of millions across the globe.
If you are starting out or have been coding for a while and are feeling overwhelmed and want to quit, ask yourself this, how important is your why?
Try to remember why you started learning in the first place. If you can answer that, you can definitely keep going and remember, your reach is further than you might think 🎯
So how am I learning to code on a 12-year-old machine? That’s an easy one - patience and perseverance. One day at a time, one keystroke at a time.
“When something is important enough, you do it even when the odds are not in your favour.” – Elon Musk
Why the blog?
Well, if you've read this far then you can probably answer that and if not, here’s why.
Honestly, I believe I'm on a journey worth documenting, so I can look back and see how far I've come, the challenges I've faced, and the knowledge that with each passing day that I live through this patience-inducing cycle, I get closer and closer to my dreams.
At the time of writing this, I'm still diving deeper into the Vue.js ecosystem and learning SQL along the way in my self-taught journey and most importantly, I'm still going strong with my 12-year-old laptop 😄
Having read this far, I'm grateful for the time you have taken. I'd love to hear your feedback. Maybe you could even share your own coding experiences with me 😊
Feel free to share this with someone you know who needs the encouragement to keep going even when everything around them is screaming no.
As a self-taught developer on his way to attaining 10,000 hours of mastery in patience and perseverance, Allan enjoys trying out new recipes when not coding and helps manage an animal farm.
View his portfolio.
A coffee could help him calm his nerves as he waits for his computer to load his next project 😉