Can Replit Be My New Daddy?

Can Replit Be My New Daddy?

Hey, I'm Dave

I was a late bloomer as far as figuring out what I wanted to do for a career — although many say it's never too late. My original decision as a 19-year-old to double major in English and Sociology was a foolishly undertaken misadventure that culminated in failure.

Afterward, I spent the first half of my 20s plodding through various uninspiring jobs whilst meandering through a variety of used textbooks and random websites, always hunting for an intellectual pursuit that I would find both fulfilling personally and economically rewarding.

After playing with random Linux distributions on a used rack server for a while, I decided Information Technology was a perfect fit. In Autumn of 2017 I enrolled in a web development and programming associate degree program at Lakeshore Technical College, and I graduated with Presidential Honors two years later after a four semester 4.0 GPA streak. I've since continued my education at Lakeland University's Kellett School, also maintaining a 4.0 GPA streak as I work towards my bachelor of science degree in computer science, which I plan to attain in a matter of weeks.

This whole time I have attended school fully online, being a remote student even before the pandemic made it cool 😏. I hope to continue similarly in graduate school this autumn, but I anticipate encountering speed bumps that are much like those I have already encountered along the way.

Is it tacky to brag about your GPA in your first post on Hashnode? I think it might be, but then again I have a fragile sense of self-esteem due to a lack of real-world industry experience so maybe you'll forgive me that transgression this once 😅.

The Tech Travails of a Stay-At-Home-Dad

Being a parent, especially if you are the primary caregiver for a young one for their first few years of life, really inspires a lot of regrets regarding how wasteful you were with your time beforehand. If anything, it inspires a newfound gratitude, and in many cases it makes you much more goal-oriented.

I wish I had more time to code. More specifically, I wish I had more time to code personal projects at my in-home workstation, where uninterrupted time has a unique ability to draw me into a flow state. For that reason, even many times that in theory could be spent physically at a laptop coding on a proper keyboard don't feel like real opportunities. The interruptions that are endemic to parenthood alone make the perceived motivational cost of even sitting down to start coding a lot higher.

FB_IMG_8731382001551067429.jpg

That's why for a phase I did lots of JavaScript problems on Edabit when I did have a few spare moments with the laptop. As long as I skipped the evil ones involving regex, I could easily pound out a quick problem or two and get my code fix in before all hell broke loose for the fifteenth time that day. I learned a lot about JavaScript that way.

If you're dedicated, you try your damnedest not to let parenting get in the way.

Allow me to guide you through the crypt containing technologies I formerly used to maximize my productivity.

20210315_152508.jpg

20210315_152434.jpg

Originally I used this keyboard along with a pair of bluetooth earbuds when my son was a newborn so I could do typing-heavy Duolingo lessons quietly and easily while he slept on me. Which reminds me, I suspect the Duo owl may soon break out the thumbscrews if I keep breaking my Norwegian streak...

I quickly tried to experiment with coding on my android smartphone. I tried a variety of free SSH apps years ago in conjunction with LinuxAcademy servers and then my own rented Digital Ocean droplets. At one point I actually convinced myself I would finally teach myself how to use VIM with that keyboard on mobile while my infant son was napping on me. Queue the gag reel of me incessantly DuckDuckGoing how to get vimtutor running on Android... I was pursuing a degree in web development so maybe VIM and I were never meant to be 💔.

Eventually I graduated to the Termux app, but there always seemed to be some weird obstacle or inconvenience to accomplishing whatever task I had set out to complete and so not infrequently did I find myself pining for a VS Code session.

Even my choice of school projects catered to my desire to spend more time coding. Being alone all day everyday with an infant was a new experience for me, and I found myself coping with the stress by meticulously tracking feeding and diaper changes (i.e. stdin and stdout — best to stay prepared for stderr as well 😜) on paper. I chose to make a hybrid mobile app for a school project to replace my paper tracking habit, at that time in jQuery Mobile. It was a hilariously poorly made application, complete with an utterly insecure PHP server application component that really only served to infuriate my efforts at the time to understand CORS requests.

I took a step back from trying to write code on mobile devices after I graduated with my Associate Degree. It was getting out of hand and no matter what app or service I tried, it felt like more effort than it was worth.

Joma Tech even made a video about coding a web app on a mobile, which I remember fondly chuckling at. It seemed the idea of coding on mobile really was a pipe dream best left for jokes.

As I began my bachelor's degree, I decided my time might be better spent anyway with a graph paper notebook and pencil in hand when I was unable to access the laptop. By that time I had taken enough courses in Object-Oriented Programming and Database Design and fooled around enough with serious OOP frameworks like Laravel to know that, really, good pre-planning is half the battle with programming.

Sure, while on my laptop, I could make UML diagrams on draw.io or relational database diagrams on dbdiagram.io. But on mobile last time I checked there weren't any good options for that. So instead I went old-school and used graph paper.

20210315_155432.jpg

For my first C++ course, I spent almost the entire summer of 2020 ambitiously planning a maze generator program. I ended up compromising on a number of proper OOP design principles in order to get the project finished with the minimum set of features that I had in mind. Still, I ended up quite satisfied with the end product. I spent hours and hours doodling in that graph paper notebook, working out kinks in different algorithms and figuring out how to implement them.

By that point, I had given up the dream of coding on mobile. One day, in my Programming Languages course with my favorite instructor, I was introduced to a technology that would drastically alter my workflow.

Can Replit Be My New Daddy?

My instructor commonly live-streamed our classes over Blackboard Collaborate via an university provided computer that was inconvenient or impossible for him to install new software on. Consequently, many of his demos of various programming languages involved him copying code from Notepad++ into random, free web-based REPLs. Eventually he ended up on Replit, and so my latest obsession was born.

If you are unfamiliar, Replit (formerly Repl.it) is a free web-based service for coding. As of this writing, it supports over 50 languages. While being able to code in your browser, especially in so many different languages, is innovative enough, the really killer feature is how mobile-friendly it is.

I challenge you to find a more versatile and functional IDE that works on mobile. I'm sure there will be more as the years wear on, but Replit to me will always be the Kleenex brand of mobile-compatible IDEs.

Why I Don't Mind The Warts

I have so far only really used Replit for JavaScript and Python (almost always using it with Hacker's Keyboard), along with a smattering of other languages for a few brief moments out of curiosity. Still, it doesn't take long as a developer to marvel at the platform and wonder how it might work under-the-hood.

Along with the code editor, you get a console, a shell (on PC only at this time 😥), and a github integration feature that doesn't feel as experimental as they say it is. There are lots of other features as well, but in my mind those are the critical features that, in combination with the mobile-compatibility, make me keep coming back.

I'm not advocating the idea of replacing my VS Code habit with Replit. For my own use cases, they aren't competitors, but complements. When I first started using Replit, the little time I had with my laptop had to be spent on Programming Languages and Data Structures school work. In my spare time away from laptop (AFL?) I started a Typed Vectors Data Structure project in JavaScript inspired by the C++ Vectors I was working with in my Data Structures course.

I was able to get a TDD workflow going, even without direct shell access on mobile, thanks to the run scripts feature. You can also easily install third-party dependencies; not that I needed to for TDD per se, but realistically if you want, for example, code coverage functionality for your tests you probably aren't going to code that yourself from your mobile phone lol.

Lately I've been pushing Replit to see if it can handle my shenanigans, and sure I've ran into issues. Occasional editor freezes (I am a Firefox Mobile hipster though, so someone lemme know if it works better in Chrome... I'll still use Firefox, but lemme know anyway 😅), bizarre cursor issues, and stuff like that. It's nothing that "off and on again" doesn't fix though, and worse case scenario (that I haven't encountered yet, thankfully) Replit has Github integration, remember?

But I'm not worried. I'm working on a somewhat large and masculine 💪 personal project right now in Python, trying to reimplement some of the features of two of my favorite major frameworks in other languages. It's not important, just a "for fun" practice project for a language that I happen to be using in school. If at any point the project outgrows Replit, that's cool because that means it's awesome enough to justify that precious laptop time with VS Code. If it never outgrows Replit, well at least we had fun and made friends along the way 😎.

A Beggar Dreams Briefly of Being A Chooser

Confession: I'm a cheapskate that just uses the free version of Replit, BUT I love the service so much that I'd like to give my personal wish list for features in the future:

✅ Direct 🐚 Access on Mobile, obviously

✅ A Mobile App 👀 would easily be the most used app on my phone, hands down. Just think of the monetization opportunities.

✅ A cute, but also darkly humorous and memeable mascot like Duolingo has

Hey... A dork can dream 😍