Django Girls Seattle and Reading List for Python

Yikes!  Long time, no post!  Sorry, my faithful few readers, you’re much appreciated.  Here’s some recommended reading, and a small summary of what I’ve been up to!

Python recommended reading list:

  1. Django Girls tutorial gives you a quick and dirty introduction to Python where you can actually start doing things.
  2. Coursera’s Introduction to Python is good for those without any programming experience looking to learn the basics of Python by building games.  It has good projects, though so does Udacity’s Intro to Computer Science that will use your intro skills.
  3. How to Think Like a Computer Scientist is another free online book that is a great introduction to programming and problem solving.
  4. Problem Solving with Algorithms and Data Structures in Python is a free online book that is good once you have the basics of Python down to learn more about algorithms and data structures.

On August 7th/8th, there will be a Django Girls workshop in Seattle, and I encourage others to join!  It’s intended for those with very little/no programming experience to get their feet wet making a blog with Django and Python.  Check out Django Girls Seattle for more information!  I will be coaching, and I believe they still need more coaches as well.

I’ve also been playing with the Meteor framework for JS.  It solves a lot of the frustrating issues with the MEAN stack and instead slops everything together in a beautiful, seamless package.  It’s lovely.  I’ve seen it compared to Rails for Ruby, but it’s considered more seamless because of all the JavaScript on every side, which I personally love.  I’m not going to lie – I like JavaScript.  Hell, I love JavaScript.  I know that’s not a popular opinion amongst programmers, but it’s one that’s growing!

And finally, for those who are worried about my physical well-being…

Physical therapy is still going for my lovely shoulder, which is always fun, but it’s getting stronger.  I still have my shoulder blade winging all the time, unfortunately, but that’s slowly getting better which is good.  2 months from now and it will have been a year since I was injured and a bit longer since I decided to make the career change.  It’s always interesting thinking about the events that set you on your current path.

Also I started an internship!  I’ll go more into that later,  but it’s very exciting!

Advertisements
Django Girls Seattle and Reading List for Python

Usernames: An Opportunity to Name Yourself…Poorly (until you grow old and just use your real name).

AIM – The Initial Introduction to Self-Naming

Welcome to a non-coding related blog post.  I hope you enjoy your stay.  Today’s topic?  Usernames.  I didn’t realize this when I was younger, but when I was about 10-years-old, I was granted access to this program called AOL Instant Messenger or AIM when I was at my uncle’s house and connected to the internet for the first time with my big sister.  This was probably negligent on all involved party’s sides, since I spent most of my early adolescence getting all my social needs met through technology when I wasn’t at school with my parents asking me to sneak out and go to parties like my older sisters did, but it also lead to me needing to do something I’d never even considered.  Give myself a name with which other people could call me and contact me.  A username.

AIM logo
A running yellow man. My husband would say this was indicative of my future taste in men. I would say his skin is more olive than yellow, but I do love it when he runs. ♥

DBZMeetsMoon

My first few usernames on AIM were rather classy based on the media I consumed at the time.  For example, I loved Dragon Ball Z and Sailor Moon, so my first user ID was DBZMeetsMoon.  If this had actually happened, I imagine something like this would be the consequence:

Sailor Moon chasing DBZ character for blowing up the moon.

And don’t you dare pretend for a second that you haven’t briefly hoped this would happen as a kid if you were young in the 90s.  I’m looking at you DBZ purists who are offended by the possibility.

More Refined Tastes: xXXx/zZZz

As I matured, however, to a socially awkward middle schooler, my tastes also matured.  Rather than twirling moon princesses and guys grunting as they glowed colors around them (because grunting makes you glow, clearly, that’s why they say women glow after giving birth), I moved onto giant robots.  Gundam Wing.

Consequently, my next username was TrowaBartonGirl.  Not to be confused with Trowa Barton’s Girl in a romantic connotation.  No, no, I just liked the character Trowa Barton (because who doesn’t admire a guy suffering from amnesia by operating heavy machinery?) and I was a girl, so I decided to combine those two details into a single username.  Plus, part of that admiration may have been due to thinking he had romantic inclinations towards another male character in the show.

The Xs?  Well, as anyone who ever made a username and ran into it being taken while a pre-teen knows, Xs are super cool, especially when they frame your username.  The only cooler letter is Z, which as I realized I was sleepy all the time as a lethargic teenager, I updated my username to include that instead.  Brilliance, really.

This same naming trend continued for a few other characters I liked in anime including
Kazuki Fuuchouin from Get Backers and Kurama from Yu Yu Hakusho.

Before you need to ask, yes, I liked pretty boys as a teen, and no, for some reason my husband hasn’t said anything about my love of pretty boys forming my appreciation of him.  That’s correct, my husband thinks a yellow, blob of a man is more indicative of my attraction to him than the excessive quantities of Japanese culture I consumed.  I’ve decided not to think on that too much.

A Misspelled Name of My Own or Don’t Trust Strangers on the Internet

Eventually one of the strangers who I IMed suggested I should have my very own username.  A name of my own.  Now, I’d seen my fair share of Loverboy69s, HotGurl69, BigButtsUnite69 and other things ending in 69, so I was a bit concerned about this daunting task.  Plus, how to choose a name?  I could just use the one I was born with, but then people on the internet would clearly relentlessly stalk me and murder me.

Stranger on the internet, with her superior knowledge of Japanese, I language my anime-loving self obviously enjoyed, decided to help me.  Now, what she told me was a name meaning “Dark Star” (which I didn’t particularly care for since honestly I thought it sounded silly but in Japanese it looked pretty to my Japanophile eyes), actually meant nothing.  It wasn’t a name for anyone, and none of it meant anything at all.

Still, I ended up using that username since I was about 12 until I was around 18.  That’s correct, for 6 years I was meaningless pretty sounds, much like a toddler formulating their first sounds.

At 18, I started using variants, taking the first part of the name that meant “overwork” and adding panda to it, because pandas were cute and had dark circles under their eyes, much like me when I don’t sleep.

The Food Phase

Eventually, I reached a point where I had tired of my babbling username.  I moved on to food.  Sure, I had a dog I loved and adored, and at this time I had created usernames for my parents on multiple sources where they had the formula dog_name + “Caretaker”.  Fortunately, they both had their own dogs.

But no.  I was a consumer.  I consumed food.  And at around the age 20, I had tasted my first persimmon.  And they were tasty.  So my steam log in to this day is Persimmons.  However, sometimes I would regress (or forget my persimmons password, associated email addresses, and security question answers) and also have a PersiPanda username as well.  I personally liked it a bit more due to the alliteration, and who doesn’t love alliteration?  This was essential to success, because clearly if you can’t figure out your account information you might as well just create a new one.  Hooray security!

Finally, The Name

Part of undergrad at CMU involved being forced to have an email address of the formula first_initial + last_name for everything.  My first initial and last name both started with the same letter, so telling people how to email me was very annoying.  After getting married, my husband’s last name is also too short to use this formula due to length requirements.  It’s marginally annoying, and it’s boring.

Consequently, the onset of what I consider my responsible adulthood was a mix of annoying emails involving my name, things involving my partial name, and finally an email address including my entire name since Liu is one of the most common last names a Chinese person could possibly have, but not many people with it have my very non-Chinese middle name (given middle names are usually reserved for kiddo’s Chinese names).

This naming structure seems pretty common for old people.  Not that I blame them.  Admitting you decided to name yourself “kittencuddlesforever1981” is a little awkward given people pick up your birth year and the fact you have an unnaturally love for cats rather quickly.  I do miss, though, in the 90s when this wasn’t atypical to share with someone and made my heart filled with awkward love for a very brief way to get to know a bit more about a stranger you were just meeting.

As a result, I feel the username for my twitter handle “theladyliu” was a gentle compromise with responsible adulthood where information is all facts and my rebellious youth where I self-named things I like – in this case, alliteration and period dramas!

Usernames: An Opportunity to Name Yourself…Poorly (until you grow old and just use your real name).

Coursera – Fundamentals of Computing from Rice University – A Surprising New Love for MOOCs

Let me start by saying the courses I’m reviewing are currently still open for enrollment, so head over to Fundamentals of Computing path from Rice University on Coursera if you’d like to join, and if you’re on the Eastside of the Seattle Area, come join my study group!

Background Knowledge: Where I was with MOOCs Before This Coursera Course

Prior to recently, any Coursera course I was interested in wasn’t available while I was available for it.  That has all changed.  As anyone who has read my blog before knows…

followers
You know, these guys. The guy with kids. The girl in a chair. The singing enthusiast. The smiler. The scowler. You all know who you are.

I haven’t had a great deal of love for MOOCs and other online learning modules such as Treehouse, Udacity, Udemy, Codecademy, and the likes, because I continuously felt like everything was dumbed down to make it accessible to everyone including people who may not be able to continue grasping the content once they got tougher or had to apply it to any independent project because of all the hand-holding.  That is, they intentionally avoided causing situations where people would think, failed to teach them any actual skills and instead set people up to be great typists, or were structured so bizarrely that the independent work paired with the content was inappropriate either due to providing no challenge and just regurgitating what was just learned or due to not working on content recently learned to help solidify student independence.

So between slow pacing, bad pedagogy, and redundancy, I inevitably said books were the way to go and abandoned everything else.

I’m not taking that back, by the way, I still think books are amazing and so much more efficient than certain MOOCs.  I even continued to find them better than the MIT opencourseware, but that might have been due to a number of MIT’s classes I was interested in required fancy hardware I didn’t have access to, so I had to walk away with my head hung in shame.

The Course: Fundamentals of Computing

I had asked a friend about her recommendations for basic CS books to read up on.  While she has an undergrad degree from University of Waterloo, she’s generally very supportive of my independent-study approach to my career change.  That said, she did think that basic CS such as algorithms, data structures, etc was best handled through a class of some sort and recommended the Fundamentals of Computing path from Rice University on Coursera.

It started about a month after our conversation, so I signed up and continued studying independently in the mean time.  While the certificate pathway and their recommendations is one of the courses at a time, I had enough background with JavaScript that I figured I could compensate for the Principals of Computing class and Algorithm class with googling the differences between what I knew and what I was being asked to do with Python.

Dictionaries, tuples, etc were new, but not so novel I couldn’t read briefly about them and apply them, so so far this hasn’t been an issue.  If you have a fairly solid background in another language, I encourage you to do the same.

Course Structure

I hadn’t very high hopes after my previous encounter with MOOCs, and after the first week being incredibly easy and simple (much like the first week of class in undergrad where you get a syllabus and rules handed to you), I still believed this might be the case.  Then came week two.

I had used the Coursera forums to set up a study group with a couple people in my area, and while working on the project spent some quality time in a Starbucks with my classmates.  I legitimately felt like I was back in college again.  I was thinking about problems that were challenging to me, collaborating with my classmates, and as is my favorite part of programming, celebrating resolving puzzles and testing to make sure it still functions in fringe cases and bug free.

The setup was very typical of MOOCs, but also included some elements often neglected.  All three of the classes have the same basic requirements.

  1. Weekly video lectures, around an hour in total.
  2. Homework (some basic coding questions, math questions, etc)
  3. Mini-projects (make a program!  This week, we made 2048)

The weekly video lectures are well done.  In most MOOCs like Treehouse, these are usually high quality though sometimes redundant.  From MIT’s Open Courseware, they were slow and involved a lot of the professor stumbling in the middle of a lecture hall and not the best sound quality or video quality.  Here, there is minimal wasted time (and any waste is usually entertaining, nerdy jokes), easy to view in double time, and the lectures are concise but give you the necessary information interlaced with Udacity style mini-quizzes.  The professors know what they want to tell you, and they tell you it concisely.

Homework is beneficial but not excessive.  It reviews concepts or has you review math that you likely haven’t done in over a decade if you’re the same age as most MOOC users, and helps you get in the right mindset for the mini-projects.

Mini-projects can be simplistic depending on whether or not you’re trying to program without eating lunch (whoops!), but they’re challenging enough that you feel as though you’d applying your learned skills in a unique problem that you need to solve.  I currently feel like there’s a bit too much hand-holding, but part of machine grading is that you need certain structural elements present in order to assess whether or not it meets the requirements, so to some extent this is unavoidable in some of the classes, especially when trying to accommodate so many mooching students.

And finally…

MOOCs have an important place in the accessibility of education, in my opinion, but a lot of them have a long way to go to being actually beneficial.  Fundamentals of Computing from Rice University is an example of the practice done very well without dumbing everything down.

I have to say I currently love it.  I’m not sure if it’s because the forums are so active with students collaborating or study groups make me happy, but I’m pretty certain it’s because I’m learning a lot and enjoying it.

Joooooin uuuuuuus.

Coursera – Fundamentals of Computing from Rice University – A Surprising New Love for MOOCs

Responsive grids on responsive images using JavaScript & CSS3: A Tale of Past Projects

The Problem: Why the Change?!

So back on March 13th this year, I did a blog post about a simple battleship game I made while learning with Head First’s JavaScript book.  Anyone who can recall also knows that this was quite possibly the ugliest, poorly synchronized, wreck of green I have ever seen.

On top of that, it wasn’t responsive, so when I’d pull it up on my cell phone thinking about adding AI to add some actual element of interest and challenge to it, I’d remember I couldn’t actually dink around with the 1024px background image at all in a reasonable manner on my cell.  The reasonable, time-sensitive solution would be to grab my laptop, but instead I decided to ignore time-sensitive solutions and instead update my website that no one but I use at this point.

After all, the fact that I’d link people to my questionably entertaining JavaScript game and they couldn’t get back to my homepage without editing the address bar was a bit of an issue.

board
This. Green. Black. Nothing like my homepage (not to say that’s a bad thing, since my homepage is white and gray and has the color inspiration of someone who enjoys staring at lightbulbs).

Superficial Improvements!

White and grey is apparently the color scheme I was rolling with, and there’s clearly no reason to change that.  Ever.  Grey and white has, as described above, has the artistic influence of staring at a lightbulb.  Clearly I should have it infect every portion of my website.

Consequently, I spent some quality time with photoshop to turn the green/black scheme to white/grey.  It’s simple, elegant, not green.

New layout!  Responsive and all!
This. White. Grey. Exactly like my homepage.

Coding the changes with CSS and JavaScript!

I had originally thought, “I can definitely use some magical functionality of CSS I’m unaware of to make it responsive!”  Turns out there isn’t a magical functionality, at least not that I could find, so I decided to use JavaScript and jQuery instead to query changes.  There were a few aspects of CSS that were helpful though.  For example, using the board as a background image and having it be responsive was slightly problematic, so instead I used it as a normal image and used the CSS attribute “z-index”.  This allows stacking of elements in different orders with smaller numbers being at the bottom and larger at the top.  Consequently, I stacked setting the board to have a z-index: -1 and the table’s z-index: 1.  This caused the board to act like a background image with the table placed above it.

Next, I used the width() and height() methods to query the image, setting the page to make this query whenever a resize occurs.  I then set the resulting size of the table and individual cells to be dependent on this height and width based on the proportion of the board it occupies.

One mistake I had made during this process was at one point I set the “height” CSS attribute for the image to 100% as well (rather than just “width”), which resulted in image warping and strange overlays at small sizes.  Most modern smart phones won’t get to that size, but I figured it’d be best to just avoid that all together.  Learning is fun!

Here’s a jsfiddle to see how it works and the actual code.  Feel free to resize the “results” section to see the army of ships move about.  All your guesses will be correct, sure, but it’ll take you 49 turns to defeat me!  Bwahahaha.  Ha.  …Ha.

The Results: It’s Prettier, Hooray!

It’s not hideous!  It’s responsive!  A resounding success!

Oh yeah, now I can dink around with it on my cell phone while contemplating adding features to actually make it interesting and perhaps even enjoyable to play.  Maybe even clicking guesses instead of typing them!  Perhaps a slightly stupid AI to compete with!  The possibilities.

More importantly, though, I’ve made it so my site overall flows together a lot better.  The Great Dalmuti has even been contained to the confines of the wrapper div, which is always a nice perk since it looks less ridiculous on larger screens where you have 12 tiny cards sprawled across the monitor in one and a half rows.  Don’t get me wrong, lots of UI improvements need to happen on both ends, but it does mesh in with the rest of the site better, and who doesn’t want that?!  Hooray.  Meshing!

Other Notes & Personal Progress

While I’m still continuing to work on The Great Dalmuti (you’ll notice it has taxes now and wild cards!), I’ve also started a couple courses on Coursera.  They’re the “Fundamentals of Computing” courses, though I’m doing them with a few alterations.  Rather than taking one at a time, I’ve decided to attempt stacking them all together.  I figure this won’t be too problematic since I’m adept in the ways of Google to help support gaps in knowledge, and so far that has been helpful.  My background in JavaScript has made picking up Python overall very simple, though there are some aspects of it I’m not as familiar with.

Then, naturally, I’m not paying for the certificate either since given the current attitude towards non-traditional education from businesses, I don’t think it actually has any value in a 1st world country.  Not to mention I’m just there to leech knowledge.  I won’t go into a long rant about the problems in traditional education with my former teacher hat on, but suffice it to say I think non-traditional education is a good use of resources and a good source of independent growth if you’re remotely disciplined.

I’m currently organizing a Seattle area (Eastside) study group if anyone would like to join us.

Shoulder still recovering.  Still have zero sense of body awareness.  One day, I will be body aware, just you wait!

Responsive grids on responsive images using JavaScript & CSS3: A Tale of Past Projects

MOOCs (Treehouse, Udacity, Udemy, Codecademy, etc): A source of slooooow frustration to learn coding. Long live books!

I’ve recently learned after another week of blog neglect that I had a visitor from Canada, Jamaica, and Germany.  Welcome, non-Americans!  Hello to all the American readers as well.  My faithful 15 who see this show up in their news feed then click away in hopes of something more interesting.  You’re appreciated.  Adored even.  Adored so much that I drew an MS paint picture of all of you to show my adoration!

followers

Sorry for the pile of you stacked together.  I ran out of room for standing people, and then my hand got tired.  I did, however, include that one guy’s two kids.  Yeah, you know who you are, that one guy, and thanks to personal information you divulged on the internet I know you have children.  Don’t worry, you know about my little dog too, so we’re pretty even on the creepy factor.

If you’re the person who is singing, smiling, or permanently in a chair refusing to move while everyone else is standing, you’re awesome.  You’re not like the other followers who just pile up on the floor when the room gets crowded or awkwardly stand on other people’s heads.  You know what’s up.

Alright, odd monologue about nothing aside, let’s get back to the point, shall we?

I previously wrote a post about where to learn web coding where I compared Udacity, Udemy, and Codecademy as either very cheap or free learning methods.  I ultimately decided Udacity was for me, then had to go back and redact the monkeys out of that statement when I realized Udacity was for me situationally but progressively got less for me and more for no one as they stopped describing the “why” and got into just straight up “how”, which put me back to inferring the why a lot, which I’m fully capable of doing, but for very basic things was just so inefficient and rather than watching video lectures I could get my Google search on much faster (which is to say still rather slowly in comparison to having a skilled teacher instruct me).  I then thought, hmm, well, I keep getting spammed by CodeSchool and Treehouse ads on youtube, why not succumb to my Google overlords?

I went with Treehouse because my husband kept telling me how great it was, and I’m super easily influenced by incredibly handsome men who are easily excitable.  Plus, upon researching it, everyone seemed to support it for beginners and CodeSchool was more for intermediate people.  After Codecademy and some Udacity, I didn’t feel very intermediate.  So I signed up, and after the first course on “how to make a website”, I was grateful how much faster I gained the information compared to Udacity and how complete it was.  I happily petered over to my website and put some fancy looking things on it that changed size and disappeared as the screen resolution shrunk.  Then I did the next part, which was “CSS basics”.  Which was hours of the same information.  I was not pleased!  But I figured I grew in depth slightly, so maybe it was worthwhile.  Or so I tried to convince myself.

Then I got to JavaScript basics.  Also, no bad.  It was a bit slow, very a bit slow, and I was introduced to a concept and would start completing the programs they were going to use as an example before the example happened.  I figured it was good practice, so why not carry on?  Then…then I got to HTML forms.  I heard the advice to practice with CSS on your own since how you format an HTML form behaves in strange ways compared to usual HTML and that we couldn’t actually do anything with the form without a server side language either.  This made me want to bang my head on the wall.  I mean, what’s the point in wasting the time to say that if you aren’t going to go over why it behaves strange in comparison and what some of that behavior looks like?  But again, I used my inferential skills, and all was well.  The second part was incredibly frustrating, though.  I’ve been trying to apply whatever I learn as soon as I learn it so I can retain it, however having just learned a skill I couldn’t do more with than make a form that went to nowhere wasn’t particularly useful for practicing.  Motivating myself to get through that section involved a lot of tooth pulling.

I’ve moved on to more JavaScript, but it still feels like it’s moving slow.  I’ve invested over 25 hours into this program so far based on their in program timer for how long it should take to complete (and I’m not sure how much their track changes have adjusted this), but I feel like my retention is pretty poor.  Since doing my photo gallery slide show side project and learning far more from that, I had continued doing Treehouse, but I realized my issue with it.

Treehouse is intended for everyone starting at next to no computer experience, which is made pretty clear from their first course in the Front End Web Developer track.  Massively Open Online Courses are like general education in public school.  It’s meant to serve everybody and assumes everyone knows nothing, even though that’s not necessarily the case.  This isn’t a bad thing, it’s just if you can infer, and if you need some redundancy for retention but the redundancy you respond to isn’t someone telling you the same thing repeatedly, then it’s probably not a great resource for you.  This is unfortunate since I respond really well to hearing information then discussing it with others, and MOOCs provide auditory input.  Consequently, I think a bootcamp such as ADA would be a good match for my learning style, but whether or not I will be able to participate is undetermined yet (since, uh, applicants hear back around mid-March for interviews and end of March for actual acceptance?).  Whether or not ADA is in my future, I still want to learn, so I’ve moved on to another resource.

A book!  I know, I know, learning from books is a super novel idea that no one until this very moment has thought of.  My husband had used the Head First C# book, but he eventually found one part too hard and gave up.  I was never particularly interested in C#, so I never checked it out, but I checked out a couple of their other books while loitering in book stores and then checking the kindle sample version.  The strategies employed are simply good teaching (and entertaining!), and on top of that when I looked at the Java book, the first chapter nearly caught me up with everything I’d learned in roughly 10 hours+ on Treehouse.  So…yeah, I went with this book for the time being.  It’s super interesting to read and engaging, which helps with some of the motivational deficits I’ve experienced with watching MOOC videos.  They had an older Javascript book that was apparently pretty not great, but the internet tells me this is a good resource.  Then again, the internet also told me that Udacity, Treehouse, Udemy, and Codecademy were good resources, which to a point they were, but had a lot of room to grow.

I haven’t decided if I’ll keep dabbling on Treehouse for a bit or not.  After multiple lessons that I couldn’t put into practice, the slow pacing, and the seemingly limited breadth, I may have outgrown it.  The biggest reason for people to go to MOOCs instead of scouring the internet is because they want to save the time spent identifying resources to learn, what to learn, and sometimes the more personable approach to learning with a video lecturer.  A lot of MOOCs still seem to structure their content illogically (ex. HTML forms without any back-end knowledge to make it actually work placed in the middle of JavaScript lessons when no JavaScript is actually needed in order to use HTML forms), which is a good area to improve, and some focus more on having their students regurgitate information than practicing to mastery.  Udacity’s end of unit assignments, practice problems, and optional homework were great for independent practice, but often the quality of teaching dipped.  Treehouse also started having some independent practice exercises as I progressed, but the slow pacing caused me to treat everything like an independent practice exercise, which left me with a new content deficit.  Determining sequential, engaging curriculum is an area any education needs to firmly establish to help educate its students, let alone retain them.  Pacing, however, is usually more an indicator of who you’re trying to teach.

Hopefully my books + Google strategy will go well.  Otherwise CodeSchool has nearly all of the MEAN stack taught on their site, and that might be an appealing alternative.  So far, though, I’m a big fan of the book strategy.  …Don’t read near the end of my last blog post discussing coding resources where I said the same thing then shortly after changed my mind.

MOOCs (Treehouse, Udacity, Udemy, Codecademy, etc): A source of slooooow frustration to learn coding. Long live books!

Where to Learn Web Coding: Udemy, Codecademy or Udacity

Congratulations, everyone, you’re spared my MSPaint art!  For now…

Since apparently learning to code is some major fad right now (which I perpetuated in my classroom before my shoulder was busted), my greatest challenge with learning to code is how many options there are out there to learn  Too many is the answer.  Too many.  The very basics of good teaching are to teach both the “how” and the “why”, modeling, providing time for support practice, and providing independent practice so I can retain and generalize the skills learned.  The options I’ve found online all vary significantly in quality in these respects, and the quality seems to change and drop off at regular intervals.  For example, my Udemy.com class in C++ was a great place to start.  Initially, the e-instructor explained everything very clearly with his amazing thick accent.  Most importantly, he started with teaching “why” you do certain things before teaching “how”, which as a teacher I know is essential to ensuring someone can use the skills in the future to solve unique problems they never came across.  They’d have the tools to attack a problem that seemed foreign because they knew how their tools worked and consequently where they would be effective to use and the impact they could have.  Unfortunately, about half-way through the lesson, (as I mentioned with my issue involving fatty fingers and validity checks), the quality sort of dropped off and instead of teaching he just started to show how to do things without anything resembling why.  Thankfully, I’m pretty good at deduction and producing cases that can ensure whether or not something is working the way I suspect it is, and I can look information up pretty well, but what’s the point in paying for a class that I need to supplement with hours of trial & error + research to learn a basic functions actual functionality?  I want to spend those hours of trial & error + research learning how to solve my own problems instead!  Way more fun.

The other issue I had with the Udemy.com class I took was the lack of independent activities or homework to ensure I had learned what I was expected to learn.  There were two incredibly easy quizzes total, but that’s all.  Again, this wouldn’t have been a big deal if I had known the “why” behind what I was doing, because I could easily make up my own activities, but when you lack the “why”, independently structuring a problem you can solve gets a little trickier – which is how I knew I knew less than I had expected to by the time I finished.

Despite some major educational flaws involving my inability to generalize the skills I learned without hours of independent study and raking through the internet, I still believe C++ was a good place to start since it tied to a language I had some background in – even if it was nearly a decade ago.  I had taken C in high school when I first loved coding, but ultimately decided to go to college for something else because while I loved it, I wanted it to continue to be more of a hobby so that my love didn’t fall away.  In college, I continued to work in some scripting languages to make mods and additions to games I loved (Ragnarok Online, oh yeah!), but by senior year I was so busy being old that it dropped off.

In hind sight, this might have been a silly line of reasoning.  Why not pursue something that I love as a career?  The passion should have gotten me through all the normal ups and downs no problem, but for whatever reason I had a fear that something I loved to do for recreation would become tainted once it was a career.  Fortunately, years of tech support helping pay for my undergraduate school also made me realize I love teaching and going to Carnegie Mellon made me more than aware of the fact I’m totally cool with people who have disabilities.  Somewhat joking, but also CMU has an abnormally high rate of students with Autism Spectrum Disorder.  Which is awesome.

Anyway, on a less personal note, once I finished with my Udemy course, I felt sort of disillusioned and uncertain of what to do with myself.  I knew my next step was going to be learning languages that I can use on my old web domain after the fundamentals of coding were out of the way, but I felt like they hadn’t really been fully taught and my independent deductions left me hesitant to say I was correct in said deductions and standing on solid ground.  I looked at a few different sources as where to go next.

I tried Codecademy.com.  I had two major complaints.  While the format of the website was amazing and something I hope to be able to make one day with the instructions, code, then seeing what you build in real time all lined up in a way where it didn’t feel crowded, it was far too much like rote memorization and once again didn’t include the “why”.  I could figure out how by looking at source code and messing around with it.  My second issue was the pacing of the lessons was so slow that after I got a bit into CSS I decided to try something else. Also, I learn very well with audio, so videos would have been nice too, but this is more a personal learning style issue than actually a critique on the material.

I checked another Udemy course, but they all looked to lack independent tasks and explaining “why” as well.  There were a few Ruby online programs out there that were either free or charged very little, the online courses from Stanford and the like, and a couple things like TheOdinProject.com, which has a great information for reading and connects to a wide breadth of different resources (including Codecademy, TreeHouse, etc…) as well as laying what to learn out in a specific order, but a lot of it linked back to Codecademy for basic information.  Which, as I stated earlier, not a huge fan even if I want to cuddle their website at night.  Then finally, I found the one for me.  Udacity.com.  For now, this is the path I’ll be on until I likely wander over to TheOdinProject or FreeCodeCamp looking for more.

Udacity explains things clearly, including why you use different parts of code or how functions work, and then offers quizzes and homework immediately requiring you to independently apply what was learned.  Also, there are videos, so that’s a plus for me, and you code things without them explicitly telling you exactly what to code to the point where you can probably copy and paste unlike Codecademy.  Some people may not like that it gives information not directly tied to the immediate skill you’re trying to acquire, for example a few minutes spent talking about Ada Lovelace, but I genuinely enjoyed the random tidbits of information.

The how, the why, modeling (lectures showing how to do something) and guided practice (quizzes that then walk you through the steps – I’m assuming this would be closer to typical guided practice if you paid, but I’m good with my freebies), and independent application (homework & since you have enough of the why you can set your own assignments easily such as working on that old domain!).  Udacity is the closest thing I have found to best practices in teaching online so far.

Udacity is perfect for me – at least for the time being where I’m still just getting off the ground and trying to solidify my learning from C++ into other languages.  I plan on starting with Python since it’s the closest to C++ (though so much simpler and more elegant), while I continue with HTML/CSS through independent study since they both so far have seemed incredibly direct while I was doing Codecademy.

I have, of course, also considered a bootcamp, but that’s a post for another day.

Thank you, mushiwulf, for introducing me to FreeCodeCamp.com and your blog always serves as good motivation (or is that a work distraction?!)

EDIT 1/30/15: I just finished Udacity’s HTML/CSS section, and I felt the need to update to say that while there are some portions where they explain how/why quite well, there are others where they return to the old school way of teaching code which is “look at this block of text – copy it onto yours – see what it does!”  At this point I can only really recommend their introduction to CS course, though I may recommend others as I continue or stop recommending that one if it gets progressively worse which seems to be the trend in MOOCs.

Which, again, I’m totally up for that, but don’t really need a video about the basics to send me on that path of using view source.  So I’ve resorted back to dinking around with things independently.  My husband has started using Treehouse, and I’m considering doing so as well, but it looks like it just goes so slowly.  Painfully slowly.  I love python so much more than HTML, though…

Where to Learn Web Coding: Udemy, Codecademy or Udacity

The End of My Self Delusion: the Too-Big Bike Incident

I want to begin this story with a couple of truths that those closest to me and now strangers on the internet are well aware of.  When I say I was 8 years old when something happened, most likely it was within 3 years of that.  That’s right, the reality is I was somewhere between 5 and 11, and as the years have passed unimportant things such as my actual age at the time have faded away.  This statement has also protected me from some possible embarrassment when it comes to delayed developmental milestones or seeming arrogant for rapidly reached ones.

So, here’s another truth that those closest to me and now strangers on the internet are well aware of.  If it involves spelling, gross or fine motor skills, and anything remotely involving being coordinated, assume it occurred in the latter half of the age range.  If it involves anything I can do without having to move from a stationary position, assume it happened in the first half of the age range.  So if I told you I was in a special spelling group in class for horri-bad spellers when I was 8, how old was I really?  Ding-ding-ding, 10!  If I tell you I was doing my older sister’s math homework and she did my daily oral language homework when I was 8, how old was I really?  Ding-ding-ding, 7!  Wait, I wonder if those two statements have any correlation…

Ahem, onto the point.  When I was 8, I felt hesitantly invincible.  I occasionally got a scuffed knee and would bleed, but it’d go away within a few days and any evidence I was a mere mortal was no longer observable.  I, though far more timid than my middle sister, would still jump off decks after watching her do it a few times, crawl onto the rooftop with her, and climb until the tree branches wobbled too much.  Know this, the reason I hesitated wasn’t due to a fear of death or permanent damage, but more I didn’t enjoy certain sensations.  Once I got too high in a tree, the branches shook, and I’d get dizzy.  Jumping off a deck gave me slivers unless I went to specific spots she had already worn down, and I hated slivers.  I was pretty sure I could do anything without any real harm coming to me, and at a time where your growth finally paused so your brain could catch up for a few years before sprouting again, that was a pretty great experience.

That is, until I rode an adult’s bike for the first time.

My bike had training wheels.  It was a pretty large bike to still have training wheels, but my parents never really got around to teaching me how to ride without.  I assume with my mom it was because she was too busy working, and my dad likely couldn’t find the tool in his garage to take the training wheels off.  But my super creepy neighbor found the time, and boy oh boy was I going to take him up on the offer to teach me how to ride a bike without training wheels.  Everyone would be so impressed that I, the uncoordinated Lady, could finally ride a big girl bike instead of that infantile mess that couldn’t make it over the jumps made of plywood and logs that my neighbor boys made.

So, my neighbor took out his wife’s no-training-wheels bike, one sunny afternoon.  Now, growing up I was always unusually short (25 percentile or below) until I hit puberty and finally crawled to the other side the average range with my mildly superior height.  My mom blames my dad exposing me to coffee, my dad blames my mom’s height, my sisters blame my friends all being abnormally tall.  Whatever the case, I, an 8 year old, was definitely not tall enough to ride a grown woman’s bike, especially when I had been raised on training wheels.

AND ADORABLE TOO! :D
Clearly this was a great idea that would have no undesirable consequences.

You may be thinking, clearly she bled within seconds!  No, pessimist, I did not.  I think that was the greatest downfall of this experience.  I spent 15 minutes with my neighbor holding the bike steady, pushing me back and forth as I gradually figured out how to pedal while standing up and attempting to steer the bike.  I felt the wind in my hair uninhibited by the extra friction caused by training wheels.  I was a big girl bike rider.  I was a big girl bike peddler.  I was the queen of the big girls.

Only not really.  I thought it a good idea after my neighbor had gone inside but left me unattended with his wife’s bike to try some more on my own.  I couldn’t get enough momentum by peddling on my own, so I mostly just tried to balance for a few seconds until I would inevitably land to the side and stop the fall with one of my feet.  It was ineffective.  The bike was too big, and I was too unskilled to move it on my own.  So I did what had to be done.  I pushed that bike to the top of the hill that was my childhood driveway, stood on it with the tips of my toes touching the pedals as I had done so far to balance a few seconds, and then, before I realized it, the wheels went whirling down the slope of the hill, hurdling me down fast.  I couldn’t figure out the hand breaks, having always stopped bikes beforehand by peddling backwards.  I couldn’t maintain balance.  I couldn’t handle speed.  I couldn’t steer.  In seconds, I had crashed into the mailboxes beside our fence and landed knuckles and face into the concrete road.

I sobbed; I bled, and I had snot running down my nose as I realized the most horrific truth of my 8th year: I was destructible.  Now I didn’t realize this in the way the elderly do where they greet death as an old friend who slowly all their friends go to live with in a crazy hippy resort that they neglect to visit until death, too, becomes their reality.  I realized this in the way my older sister finally realized she could truly change the shape of the world around her by knocking over her uncoordinated little sister’s domino house her beloved little sister spent hours creating, only for me this realization happened with my body and the change was bodily harm.  There were truly things out there that could hurt me, change me, make me bleed far more than just a little scraped knee.  I could have my face, hands, elbows, everything ache all at one time.  I could be scarred.  Seconds was all it took, and so much of my understanding of the world had changed, even as my mother held my hands under the sink to clean out my bleeding knuckles as i sobbed.

And I never had any other delusions since! :D Except this one.
And I never had any other delusions since! 😀 Except this one.

Nearly 20 years later, I still have the scars from falling off my bike that day.  They’re just little circles around my knuckles to remind me that sometimes we overestimate the progress we’ve made and can hurt ourselves as a result.  It’s important to grow gradually and push yourself as you reach those milestones, but jumping way ahead of what you’re ready for will just hurt you in the end.

Riding a bike down a hill when I was still using training wheels made me bloody, overwhelmed and confused.  Peeking at the end of my programming book when I’m in the beginning just makes me feel overwhelmed and confused.  Trying to teach a student about logarithms when they don’t understand exponents let alone multiplication makes them feel overwhelmed and confused.

Though I realized this years ago, recalling it again in the same context of bodily harm made me just feel sort of strange about myself.  Realizing you have limitations in areas you didn’t previously is humbling but also puts you in a position where you start questioning your other assumptions – assumptions essential to your day to day functioning.  I thought I was the Queen of the EBD Teachers.  For the first few years, I was calm, collected, talked kids out of assaultive incidents on a regular basis by coaching them with a few failures, had my students make more than a year’s growth in academic areas while still teaching them social/emotional/behavioral regulation skills and stress management.  I had students exit my behavior classroom multiple times a year to rejoin the general education population.  I thought I was invincible, sitting at the top of the hill all alone on a too-big bike.  Then a kid rammed me into a wall.  He kept swinging, and I realized just how destructible I was.

Today I had my doctor’s appointment for my shoulder, was diagnosed with more bad shoulder muscle and tendon labels to further explain more bad shoulder pain, mobility limitations, numbness, and symptoms.  I was told in about 8 weeks my restrictions would be reduced most likely depending on my continued progress in physical therapy.  Which is great news, but I still can’t help but feel a bit strange about the fact a few seconds had such a significant impact on 6 months on my life.  It’ll be interesting to see if I still have the big bump on my shoulder 20 years from now like I have the scars on my knuckles from falling over the handlebars on a too-big bike.

The End of My Self Delusion: the Too-Big Bike Incident