How to learn programming without a computer?
Tags: learning, mobile, github, codenewbie
Published: 2024-06-21 18:21:06

**_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!)