Picking Up Programming

If you’ve looked through any of my recent posts, you’ll see that I’ve been focusing on studying Mandarin Chinese and Japanese, the latter of which I was only planning on studying for six weeks before a trip to Japan. However, due to the ongoing Coronavirus outbreak here in China, my trip to Japan has been cancelled. That also means that I don’t really need to continue on with studying Japanese. I guess I could, in limited fashion, but it doesn’t have to be a focus of mine.

Further, as I’ve just been informed, my March workload has been cancelled and that will give me at least another month of time to fill. gives me at least another five weeks of time to fill. And I don’t want to waste it.

And that brings me to my next idea: picking up programming.

Why programming? And why now?

There are a couple of stand out reasons.

Above all, since I don’t need to focus so much on learning Japanese I can now dedicate myself to something a little bit more “practical”.

Second, I’ve always had an interest in programming (if you’ve read my About page you’ll see that I once tried to learn how to program many years ago… but failed) and I figure with my current time off, picking up some useful programming might be a good idea.

Third, a thought struck me: in all my language learning years and even my previous attempts at learning how to code I wonder if I’ve ever had a structured approach as I do now for my language learning?

And it’s that third thought that gets me most intrigued: if I could set out to learn some Japanese in six weeks, how much programming could I learn in that same amount of time?

So that brings me to this latest challenge: are the skills required to learn a human language transferrable to a computer language?

I can hear the chortles and chuckles already and I can hear the purists scoff at the idea. Computers require logic, not persuasive intonation! To become a programmer takes years of work, not six weeks!

The same can be said for learning a language.

But, I should make this very clear, this pursuit isn’t about becoming a “computer programmer / engineer / scientist” or whatever much like learning Japanese wasn’t about becoming fluent in a month. No. Instead, this is about learning how to make better use of the things we use every day (computers) and making my life easier.

So the challenge remains: how much can I learn within a month and, given what I learn, what can I do with it?

But now I had to choose a language to learn. I didn’t want to pick up just any language, I wanted something I could actually use. Rather foolishly I asked people “what programming language should I learn?” to which I was told to learn about the basics of design and structures, etc. Sounds like grammar work to me. Also didn’t sound like I could do much with that. But their answers weren’t entirely misguided, but the problem was in my own question.

My folly was that I wasn’t aware of what I could do with each of the different languages out there. Moreover, I hadn’t specified what I wanted to with this language.

So, what do I want to do with this or these programming languages?

Make my life easier.

How or in what way?

Spreadsheets, I want to know how to work with spreadsheets better. I seem to use a lot of those.

Ok, what sort of spreadsheets? Why don’t you just use Microsoft Virtual Basic or an Excel macro? (The idea being to simply learn how to use spreadsheets better by learning the languages specifically for spreadsheets.)

But I want broader than that. Isn’t there something that I could use across my computer? That could take a spreadsheet from here and do something with it and then put it over here?

You could just do that manually, you don’t need to learn a whole language to do that.

And what about accessing the internet?

You mean web scraping?

Yes.

And sorting photos (I have a lot of those) and videos and checking where the duplicates are. This would be very useful and no doubt save me some hard drive space. I’m also sure that there are programs out there that can do this already but I’m not sure they go as far as I’d like them to.

As for web scraping, it’s actually rather limited in scope, mostly to pull stock charts or data or even screenshots of my own websites in an automated fashion. Yes, I can do all of this by hand, but it’d be nice if I could get someone else to do it.

And so the line of questioning goes until we are able to develop an idea of what would be the best approach for this matter.

To be clear, I am not looking to become a computer whiz, I don’t care. I’m not going to be applying for any other jobs as a “computer bla bla bla” any time soon if ever. So all of that syntax and design mumbo jumbo, I care only insofar that it actually makes my life easier.

Oh, and I could use some website knowledge too. I’m guessing HTML isn’t what it used to be, or, moreover, it still is what is used to be and that it is simply dated and used in a smaller capacity than some of the newer languages.

So, given all of that, what are my options?

You do have a few:

The good ol’ go-to language for “modern-ish” computering is C++, the language of my high school years and a perennial favourite for making “actual” programs. It’s also kind of complicated and requires a lot of debugging (checking your code for errors) and a compiler (which puts together all of your code into a usable form) and, well, doesn’t exactly light the candle on either end. So… nope to C++.

Forget FORTAN or BASIC or whatever else predated C++, Windows and Mac OS replaced the need for those a long time ago for us everyday people.

Java? Ech. University nightmare. Although I’m aware it is used in Android APPs (iOS APPs use Apple’s proprietary language called Swift or with Objective-C), I have looked into developing APPS before and decided that it’s way to complicated to keep up-to-date on and I’d rather focus my efforts somewhere else. Plus, to reiterate, I’m looking to make my life easier, not make another job for me.

PHP, HTML or CSS are the names that come up for web development and other such things, but it seems they are all needed in order to make something look good, and I’m not sure I want to dedicate myself to learning three languages at once for a rather small pay-off… which would be simply make this website look like it doesn’t use the WordPress default template from a few years back. So not too much to gain there.

Anything more modern? Cross platform (ie, Windows and Mac, maybe that thing called Linux)? Easy-ish to learn? Lots of resources to choose from? Friendly help (not those trolls that plagued early coding forums)?

After some internet searching I came across the language that seemed to fit the bill. I’d heard of it before but had never really looked into it. Apparently it’s a pretty popular language these days, which is especially good before that then means it will be used for the foreseeable future. It also seems to be digging into the future of a lot of things, everything from automation to machine learning to AI to games and other, simple, everyday type usage.

Sounds good. Almost too good to be true. What is it?

Python.

I knew I’d seen this name before. Although I thought the language’s name had something to do with the snake, it is actually taken from the Monty Python comedy troupe for whatever reason. But where had I seen it before?

Turns out I had come across this name a few years back when I saw a book by the name of Automate the Boring Stuff with Python by Al Sweigart. Hey! It’s right in the title! Although I recall seeing the book, I don’t think I ever actually made my way through the book, both because of time constraints and the horrid memories of trying to learn Hex code from high school, it’s a well-praised book in the Python community.

Further, most internet searches about Python suggest that the language is actually “easy” to read, though still requiring time and effort to be put in. How much time and effort? Some guesses were a month and others said years in order to become a proficient whatever it is. A month sounds good. That’s about the amount of time I have! Let’s try that and see if I’m still interested.

Next, if you do Google “how to learn Python” you’ll see lots of resources available, on blogs, videos, textbooks, and more. I wanted to stay away from the “cookbook” type of manuals because those are for people who actually know what they’re doing, not us folks who don’t even know how to set up IDLE just yet. I wanted something easy to understand and that I could implement rather quickly… or at least within a month’s time.

(IDLE is the coding environment that comes packaged with Python and just about every computer has it already installed, you just have to Google how to find it on your system. On Mac OS you need to go through Terminal and Type in “idle” with or without the quotation marks and press enter and then the Python “integrated development environment” (IDLE) will pop up. You can try it too!)

Find Terminal.
Type in idle and hit enter.
And voila, there’s your Python development environment. Literally that easy.

Finally, aside from Sweigart’s Automate book, python.org hosts a lot fo useful information and other projects for people to learn how to code.

Overall, Python seems to be the language to learn these days and its seems easy enough to learn something useful within a short amount of time.

So that’s settled. Now what’s the game plan?

And here’s where learning Python like any other language comes in.

The first thing I created was a spreadsheet and I simply copied the template I already made for my other language learning.

Python study hours February 2020.

You’ll first note that I started this a few weeks ago as I wanted to make sure I was actually interested in getting it done.

Next, I left the columns in place for now and was wondering how they might align with learning a computer language. I think I can draw some similarities:

  • Characters – can be the “grammar” of the language, that is, actually being able to identify what Python coding looks like instead of something else, such as C++ or Javascript. Further, this will eventually become learning the different parts of syntax, functions and other abilities of the language.
  • Reading – I’m counting as “Reading” Al Sweigart’s book Automate the Boring Stuff with Python and working with the projects he has in that book. This would also include reading up on anything else related to Python, such as “how to…” or even researching any errors I come across.
  • Listening – Much like learning a language, I wanted to become familiar with it and that meant I wanted to gain some exposure to how languages are talked about and “the lingo” is these days. I figure, much like passive and intensive listening can help build a human language, so too can listening to other programmers talk about their work help develop my own programming skills. So far it’s helped and for “listening” my go-to podcast is Michael Kennedy’s TalkPython to Me. I highly recommend this podcast as he has several episodes dedicated to beginners with questions like “What am I even trying to do?”
  • APP – And similar to my Mandarin Chinese or Japanese studies, I’ve sued the HSK textbooks and Duolingo as a method to learn. For Python, however, I’m using SoloLearn, a free APP that hosts a bunch of lessons on a variety of computer programming languages. It’s easy enough to use and doesn’t require a rigid login process so I can access here in China. I’ve debated whether “Characters” and “APP” could be the same thing because I’m essentially learning the basics of the language rather than trying to solve any problems at this stage.
  • Coding – I’m equating “Coding” with “Speaking” in that this is a productive skill. I will not count the book work as “Coding” since much of the code is already given to me. Instead, I expect this column to remain empty for the foreseeable future until I either move beyond the book I’m using or trying to solve a program on my own (but with lots of help from online resources).

And so, with this sort of arrangement and schedule, I think I should be able to learn at least something about modern programming and whether or not I’ll actually be able to build something useful. Should the end of March come up and I haven’t much progress, then I think it’d be safe to say that I’ll leave it alone and move onto something else.

And with that…

“Hello World!”

***

For easy reference, here’s a list of links I’ve mentioned above:

Six Weeks to… Japanese? – The beginning of my learning Japanese challenge.

TalkPython to Me (https://talkpython.fm/) – Informative podcast by Maichael Kennedy all about Python and its tangents.

Automate the Boring Stuff with Python (https://automatetheboringstuff.com) – The book by Al Sweigart that teaches Python through useful programming projects.

python.org – Download the latest version of the Python language.


Posted

in

by

Tags:

stevensirski