What got me into tech and scripting


The original Idea
I love learning foreign languages. I must say this now, there is nothing on this planet (aside from eating pints of ice cream) that I love to do more than learning to speak, read, and write a language that is completely alien to me. At one point, though, this love turned into an obsession and I decided, I was going to try to learn as much about languages as possible so that were I to be transported to any place on the earth, I could find out where I was communicate with the locals just enough to find my way back home. I was so serious about this, in fact, I decided if I couldn't live in every place around the world, I would make the small room I spent most of my time outside of work in the world. And so my idea for F7immersion arose. 

My influence
I already belonged to an online community of polyglots on Facebook consisting of thousands of members around the world. Truly, a splendid group to be a part of, full of people genuinely enthusiastic about learning languages. Many people gave great tips, but a common theme I found was most people didn't have the means to travel around but most had access to televisions or online media. Wouldn't it be great if we could all share with each other our respective media and immerse ourselves and close to zero cost and zero effort through our mutual efforts? This forum planted a seed that would later spark some of the most personal rapid growth I would see up to that point in my life. 

My friends the superheroes
I was very fortunate to have very tech-savvy friends at my University, many of them being international students. Perhaps, I'm making a generalization here, but a large majority of international students in higher education seem to have a very good grounding in programming and tech support.  Well, one day my computer was giving out and my friends offered to build me a laptop using a site called xoticpc. It would come without an operating system and my friend said he would just install ubuntu on it while I waited to get my windows installation going after vacation. This small gesture would go on to plant another seed that let me down the path I'm on currently. Who knew computers were so customizable and so flexible. You are the master of your domain. My friend Chuan likened booting up his computer off of his Puppy Linux hard drive on the school network to feeling like God. What a funny bloke. But I can see what he meant at the time. There is something to be said for the power a single personal computer gives to it's user when used properly and improperly. I remember watching my CS friends get drunk and have a hack off in the library wing where one crazy fellow created a Russian roulette batch file that had a 1 in 6 chance of formatting the hard drive of the user when plugged into the USB port. Luckily he never got to using it as everyone unplugged their laptops and pulled them into a loving embrace to protect their files from that maniac! How are these guys doing these, to me at least, god-like feats? I could never do such a thing. These guys are geniuses. To be fair, a lot of them were and would go on to work at very successful startups and interning at the likes of google at 19 years old. I saw these guys break into the school infrastructure through brute forcing the network password and holding StarCraft Lan Parties at the library after hours. I knew all these things were possible after I graduated from college, and it always stayed in the back of my head that there were guys out there with a remarkable ability to do what they wanted with tech. It just took my first batch file to realize I was capable of doing these things and much more. 

F7immersoin: early beginnings
Back to F7immersion. Perhaps, I wouldn't be able to make a language immersion program that would  help the polyglot world, and that everyone and their grandma would want to get on their computers. But maybe I could tailor make something for myself and give myself those super powers I saw my friends wielding back in college. Back in college I had a reputation for being a bit looney about studying Japanese. It was my major and I always had Japanese audio I had ripped from a streaming Keyhole TV, or podcasts, playing in the dorm room. This took a lot of effort to keep going as my neighbors and I had agreements to quiet hours, so I couldn't actually play my audio 24/7 like I wanted to (hey, maybe we actually are capable of picking stuff up while we sleep?) My friend Isaac told me there was a very user friendly way to have my turn on from sleep automatically and start playing my Japanese audio for me at least. Just point to the file set a time and schedule and voila, immersion as an alarm clock. And wouldn't you know it worked (WakeonStandby for these interested.)

The problem
Post college, I still wanted to keep studying Japanese, so I kept my efforts up, but I would get up and move a lot around the house and then my dad would come in to my room and shut off the speakers when I wasn't there. My dad thought I was crazy when I told him I needed to keep the sound going. And so my idea for a completely automated immersion environment became a necessity. But how was I going to accomplish this? Enter, Windows Batch. 

Windows Batch: saver of father-son relationships
This was where it all changed. I had already messed around with Python at my friend's suggestion, as soon as I graduated from college, but I lost interest pretty quickly as there were no applications that  really interested me. Cool, I could make a hello world app, so what? I googled "how to automate an audio playlist" and got some results on a superuser forum where someone suggested just making a batch file that would time out and play the specified file. I followed the instructions and couldn't get things to work. But after a about an hour of googling I found the right video and got things working. The implications were profound and I knew it. Whenever I had to go to the bathroom, go shopping, or what have you, I could push a button for specified length timer I had prebuilt and my immersion environment would be playing again without my dad causing me any problems. By scripting a few lines I was able to change my world. Just like those PC superheroes I met in college.  Eventually I had setup where I could play set timers that would play music, movies, and podcasts all at random depending on which folder the Batch file pointed to. But my needs for language immersion were still much more than what my Batch writing skills could match. I needed more customization options, ease of setting timers and if at all possible a GUI with menu options to expedite the customization process. For now I had reached my limits. Time to focus on language learning. 

Unhealthy Obsession perpetuated
Well I focused a little too much on copying and pasting information into my Anki Digital Flash Card colletion and after a few too many keystrokes I started to develop overuse injuries. It turns out my drive was more than what my body could keep up with. So after looking up some online guides for helping people with RSI recover, hotkey mapping with AHK came up a lot. I discovered, not only could I save on keystrokes, but also mouse movements; that is, I could automate things like taking large swatch of information on websites that didn't have copy-capable/downloadable databases. I got my RSI under control and now added hotkey functionality to F7immersion. I could know choose  from 10 preset timers to restart my immersion environment using the F1-F10 keys to point to my premade batch files.

A chance meeting
As it were, it seems, as in many other fields, there is a great demand for digitization with languages. Unfortunately, the language I was most intent on studying, Japanese, had very poor Optical Character Recognition, up until around the time I got into Windows Batch. And wouldn't you know it, they had released their OCR algorithm for free use. I found a useful resource, Capture2Text, that was my dream come true. Google OCR Wherever you need it!
I tried it out and found a bug I got in contact with the writer about and he instructed me on playing with a config file. It turned out that the program was written in AHK. It was curious to me that this programmer was cable of making such a sophisticated program with such simple-looking software. However, as I dug into the script he had available on github, I found a very clean and easy to understand syntax very similar to python. I knew it. This was my way into scripting. 

A new found love 
What followed was one of the most concentrated and intense periods of learning in my life. It felt like I was studying for a term final non-stop for what turned into a month-long self-imposed boot camp, but it was all driven by a need to understand and desire to improve. It was one of the most rewarding periods of my life. In this short period, I learned how to create and use arrays, create GUIs troubleshoot for bad code, create profiles, configuration files, use compilers, as well as a points system that could keep track of the hours you spent listening to a language that manifested one's progress through tomogachi-like eggs that evolved into various monsters as you listened to more and more hours. I had done it, I created what I said I would like to make for the world. I was ecstatic! I later taught myself how to put together an install package using NullSoft  Install System, got a few people to try out my beta and had much success in giving my fellow polyglotters another useful tool in their arsenal to get close to their dreams of speaking and understanding multiple languages. 

Unforeseen benefits
Along the way, I also developed some other soft skills such as, respectfully requesting usage rights to online media content providers ranging from musicians to podcasters in Japan, doing correspondence and troubleshooting with my beta testers and marketing the program to online users by making my own website, promoting and teaching various use cases for the program with a instructional YouTube videos I made of me using the program with a screen recorder. 

I still host this program on my website F7immersion.com, feel free to stop by and give it a try if you're feeling a desire to immerse yourself in another language, there are audio files preloaded for a variety of languages already!

Becoming the superhero
Well, This was all almost about 10 years ago now, and other than a few side projects, many of which were much more useful to me than F7immersion for my language learning, I haven't developed much other than the occasional screen clicker to help me get repetitive tasks done. Still, when I think back to what I did and am able to accomplish I get giddy with excitement. It's funny to think, if you were to tell my 19 year-old self, that I would be making computer programs that other aspiring polyglots would be using around the world, and essentially become one of those superheroes running around college campus, I'd say you were nuts. 

Well, this got very long. If you've made it this far, I would love to hear what got you into tech, coding, programming or any other technical passion you fell in love with.

Thanks for reading.

Comments