DEV Community

Cover image for How to learn programming without a computer?
Mohamed Karroumi
Mohamed Karroumi

Posted on

How to learn programming without a computer?

_Note: This is not a professional nor informative article. I wrote it while setting in the bathroom. _

Picture this: Morocco, a kid born into a low-income family... well, let's be real, a very poor one. That was me. We're talking "can't afford a computer because it costs a year's worth of work" level of poor. But hey, life's full of surprises, right?

Fast forward to 2019. I'm 18, fresh out of high school with a diploma specializing in Life and Earth Sciences (what we call SVT - Sciences de la Vie et de la Terre), and I've just scored my first-ever phone - a Samsung Galaxy Grand Prime. This brick of a device? It became my ticket to the coding world.

Now, I had my sights set on the fancy SMI program (that's Science Mathématiques et Informatique equivalent to Computer science program). But here's the kicker - my physics and math grades were about as impressive as a wet noodle. Dream crushed? Nah, just redirected.

So, I did what any reasonable person would do - I enrolled in biology. Why? Two words: government grant. Also, my original speciality. We're talking a whopping $190 every three months. Cha-ching! First year of college rolls around, and guess what I'm studying? Not biology, that's for sure. My brain had gone rogue, obsessing over HTML, CSS, and JavaScript. Biology textbooks? More like coasters for my endless cups of coffee.

After a year of this charade, I pulled a 180 and switched to English studies. Why? Because every scientific subject in Morocco is taught in French without having other options, and let's just say French and I have some... historical beef. That's a story for another day.

This English gig? It blew the doors wide open. Suddenly, I'm swimming in top-notch tutorials, discovering tech I'd never even heard of in the Arabic dev community. Before I knew it, I'm juggling React, PHP, C++, C, Java, Python, Kotlin - you name it, I was trying to learn everything. I watched the full 100s playlist of Fireship. One tiny problem though - I knew all these languages in theory, but I had no way to actually learn and run them. Frustrating? You bet your last dirham it was.

Enter Termux - the tiny terminal that could. This bad boy let me run Python on my phone. Then Ubuntu. My mind was blown. Six months and two grants later, I upgraded to a used Samsung S9 for a cool $150. Cue the victory dance! at that time.

With my "new" S9, I'm running Linux GUI through VNC, and even managed to get VSCode up and running. Sure, my phone was basically a handheld radiator at this point, but who cares about a little third-degree burn when you're coding? I dove into design, React, Svelte, more C/C++, and then struck gold - ThePrimeagen's algorithm course on Frontend Masters. This dude, along with Theo, became my coding heroes. Thanks to them, I leveled up to TypeScript and Rust.

So there I was, feeling pretty good about my TypeScript and Rust skills, when I stumbled upon the Tauri framework. GUI desktop apps on a phone? Challenge accepted! But let me tell you, Rust was being a real pain in the... well, you know. My poor phone would practically have a meltdown trying to compile Rust projects. It was like asking a toaster to launch a space shuttle.

This setback led to a temporary halt in my coding endeavors. However, an unexpected opportunity arose during a visit to a local coffee shop. Overhearing a conversation about student management challenges at a private school, I approached the speaker and proposed developing a desktop application to address these issues. I smooth-talked my way into a "paid internship" (spoiler alert: it wasn't) to develop a desktop app for managing students, payments, classes - the whole shebang. But how was I gonna pull this off without a computer that could handle Rust? Enter GitHub's student pack and Codespaces. Free access to a virtual machine I could control from my phone using VNC. Finally, I could compile that b***h (Rust, I mean). Take that, limited resources!

Three months of blood, sweat, and probably a few tears later, I proudly presented my partial work to Mr. Coffee Shop. I asked for a partial payment to keep the project going (internet ain't cheap in these parts, folks). His response? "There's no such thing as a paid internship." Ouch. Talk about a plot twist.

Just when I thought things couldn't get more challenging, life threw me a curveball. My father was diagnosed with cancer. Coding? It took a backseat. For two long years, my focus shifted entirely to family.

After my father's recovery, I decided to jump back into the coding world with a bang. My brilliant idea? A tutorial on creating a sidebar in Svelte. Why? Because apparently, not that much people had titled a video quite like that. Niche markets, am I right?

Recording this beast of a tutorial in Codespace was... an adventure. VNC lag? Check. VS Code eating RAM for breakfast? Double-check. I switched to Nvim (shoutout to ThePrimeagen for this) and re-recorded that tutorial so many times, I probably could've recited it in my sleep. Ten takes or so later, I'd burned through all my free core-hours for the month. And it was only the beginning of the month! Talk about pressure.

With one last shot at glory, I managed to record a solid 2-hour video. Was it perfect? Of course not.

After I recorded the video, I found myself in a classic "expectation vs. reality" situation. Picture this: me, armed with my trusty phone and a dream of YouTube stardom, downloading not one, not two, but FIVE video editing apps. Why? Because apparently, I thought I was editing the next "Avengers" movie instead of a simple coding tutorial.

These apps had the audacity to demand anywhere from 9 to 30 hours to spit out the final video. I mean, come on! By that time, I could've learned a whole new programming language or watched an entire season of "Silicon Valley" - twice!

But then, I stumbled upon a feature in Alight Motion called "bookmarks". These little lifesavers are basically time markers you can plop down in your video. And here's where it gets good - the app let me export the project as XML.

Now, remember that C++ I learned way back when my phone was doubling as a space heater? Time for it to shine! I whipped up a script faster than you can say "sudo make me a sandwich". This bad boy took those XML bookmarks, converted them into an array of "hh:mm:ss.SS" formatted time values, and used them to slice and dice my video like a coding ninja. Each pair of values became the start and end of a clip, and voilà - all the good parts extracted and stitched together into one beautiful video file.

So there you have it, folks. Who needs fancy equipment when you've got a smartphone, a dream, and a healthy dose of coding ingenuity? Next stop: YouTube channel, viral video, and of course, becoming a millionaire. I mean, that's how it works, right? Just add some sick beats, maybe a lens flare or two, and watch the money roll in. Silicon Valley, here I come!

(Disclaimer: Results may vary. Millionaire status not guaranteed. But hey, at least I'll have a cool video to show for it!)

Top comments (1)

Collapse
 
hudash profile image
Huda Shakir

Your story is so inspiring, I know how hard it is staring out with limited resources, I was in a similar situation when I first started out
I there was a laptop at my home when I first started college, but it was shared between me and my brother who also was studying in the same field (I specialized in Software Development, and he was into networks and cyber security)
we were studying in the same building and we had to rush to exchange the laptop during the free time until the next lecuter starts.
it was an old (which was at that time an 8 year old device) beaten up lenovo core i3 4th gen with 4 gigs of ram, with an HDD drive that was practically dying, and with out a battery to hold the charge we had to always put it in the charger for it to work and where I live we have electricity shutdowns for long periods of time.

I used to get home to work on a Flutter project for college, by the time the application is built for debug which used to take half an hour, the electricity would go out, I had to stay at the collage library for so late every day so I could work on my assignments, and my home was far (transportation time took 1h30min), and I would come home and watch courses on my phone.
but I still managed to be a the top 3 in my class, my brother also graduated at the top 3 of his class

after I graduated thankfully I have found a job that pays really well (I worked on the same old laptop for 6 months), and I was able to buy a new laptop for myself then I was able to buy one for my brother
and now I teach at the same institution that I graduated from, I always encourage my student who are from a poor background or are in similer situations to continue to seek knowledge and apply what they learn from applications like sololearn since you can programm in for a wide range of languages, or installing Matlab on their phones for the course that requires it, I always keep students who don't have laptops in mind and I would give them ways to do there assignments from their phones

when we see on social media and youtube all these people that show off there expensive setups with multiple huge monitors we forget that it is about the dedication, commitment, hard work, and love for programming that makes us better developers.
your article has inspired me to talk about this topic with my students in my next lecture.
thank you for speaking about this.

note: after I wrote the comment I have seen how long it is😂