Learning to code

I’ve wanted to program for years, most of my life, actually. The furthest I’ve gotten is some tiny BASIC programs, and bash scripting. Someone mentioned to me that for a person with such strong opinions about software, it is odd that I don’t write any. I agree.

Choosing a programming language to learn is tough. Everyone will like their language, which means that there are very few people who could assess your interests and make a recommendation. It is also compounded by the fact that I have dealt with various languages for a long time in my webcraft, so I have my built-in biases as well.

I’ve gotten my list down to a few, all of which I intend to learn at least the basics. They are, in order of focus: JavaScript, Lua and Python.

JavaScript, because I feel like I can get by okay without writing my own code, but it would be neat to step up my game in webcraft, and start applying it to other platforms, aka webapps on mobile devices. Every vendor is trying to make the web feel like it is native to the device it is on, and I would like to be in on that. I have ideas for games that can be done by the technologies we mean when we use HTML5 as a buzzword. Also, I think node.js is really cool, and makes it so JavaScript has a pretty complete feature set for me.

Lua, because it is used in a lot of games, is becoming a scripting language used in MediaWiki, and what Prosody is written in (I’ve always wanted to write a jabber dice plugin, nothing works the way I want it). I have a lot of ideas for using Semantic MediaWiki data, and Lua is another tool, and potentially very powerful at that.

And of course there is Python. I want to learn Python for various reasons, but the most important one is probably because it feels like something a hacker knows. I use it everyday, a surprising amount of GNU/Linux desktops use a lot of Python just beneath the surface. There is also MediaGoblin, pygame, and Ren’Py, all of which I would like to contribute to eventually.

Challenges

My reservations are that coding makes my life difficult, specifically, I can't sleep. My hope is that therapy and perhaps medication will help me get pass the early barrier where I can't focus on a language any more, and have to stop to get my life together.

I am able to point that out because since we found out were we going to be parents, I’ve been researching my brain (well, various brain sciences, not mine in particular) to figure out why I am the way I am, and how I can mitigate some horrible traits of mine so they aren’t transmitted to Clover.

Well, it turns out that they aren’t horrible, and that I have various symptoms of ADHD, as well as the behaviors that come from compensating for them (like low self-esteem, or the feeling that I am too lazy or stupid to learn how to code).

I am learning JavaScript first, because it is something that is strongly integrated into my daily work, I am somewhat familiar with how it works, and I hope that helps me ease into it when I am feeling desperate and stupid.

If you know me, and you know any of these languages, I could use the support when I ask questions, and recommendations on where to start. So far I am doing the JavaScript tracks on Code Academy and going through Eloquent JavaScript, which I find easy to read and understand.

I hope one day I look back on this post and am all like, “d00d, you killed it! You made that one awesome game, and you mentor others! And it all started here.” Because I like totally talk like that. :slight_smile:

Pete Forsyth said

Just wanted to say I have been through a lot of the same thought processes. Messed around with BASIC a bunch as a kid, have dabbled in shell scripting, understand databases pretty well, was at one point pretty good with AppleScript (which is a much more serious language than lots of people seem to think). My list is about the same as yours, except that Python is probably up top.

Mainly because I just got a Raspberry Pi, which seems pretty heavily geared toward learning Python.

I’ll try to come back and report my progress if I get past “hello world,” which is about where I’m at so far!

Cool! I am sure I will bump into you afk soon, so we will have to trade hello world recipes.

I have wanted a Raspberry Pi for a while, but recently I’ve opted for devices that come with screens (I am getting rid of our monitor, and we don’t have a tv). I just pledged for a GCW-Zero, which is capable of running pygame, so that will be where I apply that knowledge initially! :slight_smile:

The first thing I did with my RaspPi was look at pygame, because it came on the default Raspbian image you can get from the RaspPi site! I noticed a bug in “Wormy” (snake clone) and we fixed it: if you were going right (for example), and you pressed up and left faster than the animation frame, you’d die by hitting yourself without seeing yourself actually hit yourself. So we fixed it by messing with the order in which it calculates direction and making sure that it never advanced in a direction faster than a frame of animation. And then added multiplayer. After that, I looked it up and it turns out Wormy is in this book: http://inventwithpython.com/pygame/chapter6.html so I have dreams of getting in touch with the author and pushing some changes upstream, haha….

I really like pygame and that book because it gives you a place to start. Look at someone else’s working code, mess with it, see stuff change — this is less daunting than starting from 0. To me at least!