How to Study Hard

Today I’m writing from the Cleveland Game Dev Meetup. This month we’re meeting in the Mayfield Public Library.  Strangely, both times I have come to a Meetup, my GPS has tried to tell me the destination doesn’t exist.

I’m listening to someone explain how Construct 2 is a great platform, and comparing it to Pulse. I wanted to ask someone his opinion of Ableton as a music DAW. But I’m not really getting any code written! I have to admit, I haven’t really touched the Unity tutorial I started last Meetup, and it has been a month. Now that I’m done with my code bootcamp, WCCI, it feels weird to not be working hard on anything in the evening after my day job. I really need to pick up some side project.

You’re right, I did not finish Identiflora yet. I was originally going to work through it as a .NET project, but now I’m not sure if that is the best idea. (Did I say this already? I feel like a broken record.) So in lieu of really “working on the big passion project”, I am working on some smaller things.

I still feel like I should be learning on CodeEval, but it is admittedly pretty dry. So I am excited that I just found Codingame – it is like CodeEval, full of problems to solve using your coding skills, but these are couched like games. It’s really a fun concept, even if it’s still hard work. Speaking of “hard work disguised as a game” I am also enjoying Human Resource Machine by Tomorrow Corporation, the same game company that made World of Goo. In Human Resource Machine you program (using a pseudo coding language) people to take certain integers and drop them into certain boxes – yeah you are really doing the same loops and if/thens that you would be learning in CodeEval, but giving it game trappings makes it fun!

I guess not everything can be made easier and into a game. I really enjoy listening to J. Vernon McGee. He is gone now, but his radio program is now a podcast, and it takes you through the whole Bible, verse by verse, over the course of five years. I once heard him say (and I think he was quoting but I don’t recall whom, sorry),  that if you are having a hard time with a Bible passage, because it is dry and hard to understand, you have to moisten it with the sweat of your brow. Hard work is hard work! But it leads to deeper insights.

That goes for coding too.

 

Launch House Game Dev Meetup

I have made and sold art for years and still have a hard time (sometimes) calling myself an Artist. So I feel almost funny being at a game development meetup when I have never even tried to make a game. It isn’t “impostor syndrome” it’s just, I’m not sure if I am passionate about it. Not sure what I bring to the proverbial table. But I am here today, at the Shaker Launch House, with about 10 other people working on their own games. I don’t have a specific game idea to work on, but I brought art supplies and am working through some Unity 3D demos. In fact, I watched a lot of tutorials yesterday on beginning game development, and they said the important thing is to “start making a game out of what you can do” as opposed to “start with a great idea”. If you start with a great story to tell, and it is leagues out of your capacity to tell it, you will get stuck and quit. If you make a game that is just “two dots moving” (or..something), then you can actually finish a thing and then move on to the next one with one complete project under your belt (and experience).

My favorite games are ones with interesting characters and stories, and honestly, most of them are 2D not 3D. (In fact, I still like interactive fiction/text adventures.) But Unity does 2D as well. I should learn 3D since I sculpt and I’d like to see if I can print something in 3D. So many skills overlap!

I’ve always wanted to write and illustrate stories and books – art books? nature books? field guides? story books? I just love books. I did not really think about making games (I feel like all of my friends have always wanted to make games). I’m still not sure it is my platform, but I really want the experience of learning new things. And good games tell stories.

IMG_1158
Launch House Angel?

 

Game Development, JavaScript, and Persistence

Well, this week I have been taking a break from my Udacity project (in a sense) by strengthening my JavaScript and HTML5 Canvas understanding before going back to tackle FEND “Project 3: Frogger Clone”.  Here is some information that has been helping me:

Zenva has a class on making an HTML5 game from scratch. The instructor is fantastic and goes over every line of code. I highly recommend this.

After that course, I went back to my Project 3, and felt I understood a bit more of the direction I should take it. But my core knowledge of JavaScript is still lacking, and I didn’t know how to actually get from point a to point b. Currently I am working my way through Eloquent JavaScript by Marijn Haverbeke, seriously this time, taking notes, working through the exercises in the provided code sandbox.

As I am working through Eloquent Javascript, sometimes I have been hunting up further resources to explain the things in it. For this I am greatly indebted to JavaScript Is Sexy.com  even if the name makes me die a little bit inside.  Get a load of this explanation of Variable Scope!

This week I have discovered a really great podcast, too! It’s called Lostcast by Lost Decade Games and is all about game development. It’s from a very realistic perspective, unlike some of the other podcasts I’ve found.  You can join their forum too, they are great guys. They have encouraged me greatly with art tips.

Lately I’ve felt like I’ve had to concentrate on studying coding, and leave my art and craft skills to rot on the back burner (…that’s a kind of mixed metaphor). But it sounds like there are plenty of reasons to keep honing both art and coding hobbies together. Thank you Matt Hackett! I also look at Rob Stenzinger, another “coding artist”. Also add The John Su to the list of “coding artists I admire who are far more talented in their sleep than I am while concentrating very hard on something, like coding and art.” It’s a surprisingly long list.

Finally, here is a very informative blog post explaining what an entry-level front end (mostly JavaScript) developer really should understand in order to get a job.

I feel bad that all I do is link you to other people, but all these resources are  really great and I want to pass them along!

 

 

 

jQuery is not JavaScript, except (surprise), it is.

I didn’t really understand what jQuery was until this week.
If you are just getting into front end web development, maybe this will help the light-bulb turn on for you as well.
All I really had to do is read the first sentence at the https://api.jquery.com/ web page: jQuery is a library of JavaScript commands, developed by John Resig. It isn’t a separate language. It’s a library of powerful commands. As Cameron said in my Udacity course, “if you had a few days, you could come up with a library of commands like this yourself”. But that is, as someone else commented, like saying the Mona Lisa is just paint. The jQuery library is concise, and streamlined to work effectively at what it does. You can open the library itself in your editor of choice (I like Note++) and look at it, and even start to see how it works.

In my studies at Udacity I have moved from JavaScript to jQuery. But I don’t feel like I have a strong enough background in JavaScript to fully understand how to shortcut the commands using jQuery. I just purchased a copy of Secrets of the JavaScript Ninja, by John Resig and Bear Bibeault. My copy didn’t arrive yet, but I’ll let you know if I find it valuable. In fact, I just heard an interview with John Resig on this episode of Code Newbie podcast. It’s an interesting listen too, though he doesn’t get into jQuery code itself in the interview.

If you have any insights or tips, let me know!

Slow Progress, Various Resources

I have been bogged down this week and making very little progress on my Udacity work, to be honest. I still found a few good resources.

Good resources I found this week:

Device Screenshot Emulator allows you take screenshots of how your site looks on various devices. This has been especially handy when I want to place images of projects I’ve worked on into my Udacity resume project. It is so accurate, the function on my site that I could always get to work in emulation in Chrome, but not actually work on my iPhone, fails to work in this emulator.

JSHint allows you to paste a chunk of code into the screen, and will make suggestions about things you may have missed or done in a non-standard way. This helped me a lot when I was getting an obscure error in Chrome due to some missing brackets.

Non JavaScript resources:

HTMLFreeTemplateStuff a Tumblr of interesting HTML and CSS templates.

Fantastic list of art tutorials by Jonathan Rector check out his art.

This isn’t even a resource, but I really have been helped by using HabitRPG to motivate myself. Losing virtual hit points by failing to complete tasks has been compelling! It also motivates me get at least 5k steps a day (yes I know 10k would be better), spend more time in prayer, work on my biceps, and any other thing I set for myself as a task. And I get to ride a pink dragon and have a pet zombie octopus.

 

Now I get to check “Write a Blog Post” off my task list!habitrpg

JavaScript is Messy

I told a friend I was having trouble with JavaScript and she said “JavaScript is messy”. I thought about this and she’s right. I am only starting to learn it, but it does have more instances of “you can do this legitimately a bunch of different ways1 than you might want your computer language to allow.

I have trouble even remembering where you need to put a “{ }” or where you just need a “;”. I don’t think those are the “messy” parts, those are just me learning the grammar of the program; learning the punctuation.

But when browsing StackOverflow I can find questions like “Why is JavaScript inconsistent across browsers” and articles on Reddit like “My JavaScript is Messy” and ycombinator articles that just confuse me (but contain some good links).

I guess JavaScript is a language. Languages grow and change. It was created by a guy back “in the day” on Netscape, and now it’s being used long after Netscape is cold in the ground. I’m sure they didn’t develop it in the 90’s thinking that it was going to become this big standard thing, used by everyone, everywhere. Now people are so constantly and consistently asking JavaScript to do things, lots of other programming frameworks and libraries have been built up around just trying to make JavaScript work faster/do things you want better/easier/more consistently. Like Node.js and Angular and JQuery and Bootstrap.

And I’m sure I’ll love the speed and ease of use those bring. But first, I’m still trying to work my way into a basic knowledge of JavaScript. The best resource this week has been the Mozilla Developer Network. This is a great, thorough explanation of just about everything you could want to know as a front end developer.  If you were somehow trapped on a desert island with a copy of MDN you would emerge from the harrowing ordeal with a substantive knowledge of the web as we know it today, and also, starve to death.

Ok, back to trying to make a for loop without crashing my browser.

1What is up with “Object Literal Notation” people. OR you can use a constructor? Too many choices!

 

I don’t Understand JavaScript

So I finally hit a little “wall” in my Udacity course. Starting from my code background of “null”1, I don’t really understand JavaScript at the pace they are giving it to me in this course. So I thought “There must be a How to learn X the Hard Way  for JavaScript that I can check!” I was wrong.2

But I found something else that was very helpful! I found an article on tuts+ called The Best Way to Learn JavaScript.  And it recommended going through the JavaScript course at Codecademy. Oh! Why didn’t I think of that? I really enjoy Codecademy anyway. So now I’ve paused Udacity studies this week to get a refresher at Codecademy.

Further on the “list of things I should have realized but didn’t”, if you are working through a course at Codecademy and get stuck, you can’t continue, and they don’t give you a solution. In order to find a solution when I was stuck, I discovered people are broadcasting themselves going through the classes on YouTube! It’s a great way to watch someone else struggle with the same thing you are (and get a hint). Note, they may be doing it on Twitch.tv too, but I didn’t check.

Finally, I started reading Eloquent Javascript which is free to read online. I haven’t gotten too far, but I expect I will buy a copy just to support the author.

1 Well, “nil” but “null” is a JavaScript term, so it’s a weak pun, yay.
2And even if there was one, it may have been beyond me, to be fair.

I don’t understand Git and GitHub

I have sometimes wanted to throw the computer across the room when trying to figure out Git, but I found some good tutorials! I’ll put the links at the bottom of this post. Not only did I find helpful tutorials, but I want to put some of what I learned about the Git commands into “non technical terms”.

Git is used to help you organize backup copies of your program. Every time you commit a copy of what you are working on, it is like saving a copy of your document/project. Typically you do this every time you’ve added something or worked on something. All the previous saved versions of your project (or whole program directory, called a repository,) still exist, and you don’t  have to keep making incremental file names the way I usually do. And before you save your file, you can look at the differences you’ve made since the last time you saved. Status will check to see  which files are staged to be saved (commit).

I end up with a big directory full of confusingly-named copies like HorseFridayA.PSD, HorseFridayB.PSD, HorseFridayB2.PSD as I am working on an Adobe Photoshop file, for example. But with Git, your current save contains a log of all the changed versions you’ve made in the past! So if you need to go back and undo something, you have all those undo-states available.

Not only can you see a log of all the changes you’ve made, if you want to go back to a previous version and then “try something different and crazy that may not work” you can clone the project and make a branch. In the branch you can create a second version of your project. Then you can work on that version. And if you end up liking those features and wanting to add them back into the original version, you can merge them back together. Handy!

But another major reason people use Git is this: when you upload your project repository to GitHub other people on your team can make changes and work on the documents at the same time you are in them. Then you can update and merge them all back together. Git will warn you if you have made conflicting changes, and you can resolve them before you merge. And you can see the differences between what you did to your copy of the file, and the other team member did.

You can even use GitHub to fork and make a copy of another person’s code repository and alter it to do the things you’d like it to do. You can pull that copy down to your local computer, make changes and push it back.

So Git and GitHub are powerful and useful, once you know what they are for! I still don’t exactly understand why the command line is favored over a graphical interface, but it is, and “they” say you will find it great after you get used to it.

 Ok, now for the tutorial links. These are some I found especially clear and easy to follow:

Making the command prompt easier to use:

Online Learning Tools (Part 2)

After I wrote that blog post on Online Learning Tools, I realized that I knew there was a site called Udacity that I had never tried. So, in the interest of being thorough, I went there to check it out. Let me tell you, I’m glad I did!

Udacity
Now I hesitated to try Udacity since I was already enjoying Udemy and I thought it would just be “more of the same.” They aren’t the same. Udacity has aspects of Udemy, sure; it has online classes at your own pace. But it has them arranged to form “Nanodegrees“: comprehensive sets of courses, developed by a key set of teachers working together. They aren’t random “this class looks interesting” buffets (which is how I am/was treating Udemy).

In Udemy there are sub-sets of classes within the classes, by “teaching group”. Say, you can group classes by “Infinite Skills” brand, and often they will go on sale that way “all Infinite Skills classes are 20% off with coupon AWESOMECOUPON“. But you could also find Infinite Skills classes at www.infiniteskills.com proper. Udacity, on the other hand, is very focused in what it offers, and who teaches it. I would say “which gives an overall more consistent learning style” but I haven’t actually enrolled in any courses yet. But I’m so convinced that Udacity is quality stuff, I’m about to enroll in the Front End Web Developer Nanodegree when enrollment begins. Wish me luck!

And Many More
Now there are so many more education options out there that I didn’t mention, like Skilledup and Coursera, edX, who knows how many others. I’m just going to add a link to LifeHack’s list of 25 Killer Sites for Free Online Education.

OddMall 2014

I had a table at OddMall!  I was next to SikRik Masks.  OddMall was held in the John S Knight center in downtown Akron Ohio, because it outgrew its old venue. I had never been there before, though I am acquainted with the guy who runs the whole show, Andy Hopp, from attending his other conventions. It was exciting to be in a big juried show like this!

Unfortunately I didn’t sell very much. But it was a good experience! If you are interested in buying any of my jewelry or dragons, some of the jewelry is up on Etsy, but it is better to just ask me about my dragons via glimmer [at] glimmerville.com.

Here be Dragons

Glimmerville at Odd Mall