shi++. gets. real.

get it?? sh(i++)?? i++???

how do I have friends…

anyway, today’s ah-ha moment comes from my first attempt in the big bad world of programming. After my complete mastery of linux (haha), I decided it was time to get some real cred and start learning to code. 

But where to begin? The internet is extremely unhelpful here. They offer everything from free online tutorials to $20,000 monthlong bootcamps. And which LANGUAGE?! and is there a fundamentals piece I should look into? What about algorithms? And even if I know how the language works where do it… uhm… put it? How does it get from words on my screen to a functioning app?

Since my meeting with our engineering lead was 6 hours away and I couldn’t wait, I just grabbed the source code from one of the dashboards I hope to learn to build and started playing with the code, naturally first changing the text to things like “Kari is amazing.”

that’s when the confusion started. went something like this.

me- so everyone is saying we use ruby but this all looks like html and java what… like… IS Ruby?

 friend- it generates the HTML code.

me- but i thought it was a language just like html…and why are people telling me to learn Ruby when it, if it generates HTML then it seems like I’d need to learn that first?

friend- it’s a different language. sorta.

me- so is it like I type in <Ruby> Code code code </Ruby> and it spits out a bunch of HTML equivalant?

friend- no, it’s much more complex. you need like servers and shit.

me- so once I install all the things does ruby create all the code? and why is the HTML I’m looking at have hardcoded data when I know the data is a result of an underlying query? where does that live? 

And then the ah-ha. where an engineer realizes how much they have to back up when explaining things to someone without a CS degree.

Here is the lesson-

There’s 2 kinds of languages (probably more elegant ways to categorize the nuances but for this discussion, 2): Client side code and server side code.

Java, HTML and CSS are all client side. The stuff you “see” basically. that’s why you can steal it from a webpage and replicate the visual on your own. 

THEN there’s server side code. This is Ruby, SQL etc. You can’t view this outright, but it helps generate the client side code. 

I’m still a little unclear on how they work together and how/where they live, but this is a fairly HUGE important thing to realize when blindly figuring out which “language” to start learning first.

also variables are done in a really stupid way in Javascript.

why this:

why does this:
 
<script>
var x = 1
var i = 2
{x=x+i}
alert(x);
</script>
 
produce the same result as this:
 
<script>
var x = 1
var i = 2
{y=x+i}
alert(y);
</script>
 
is stupid and feels unorganized. but it’s more likely that I just don’t fully understand it yet. 
til next time!
</blog post>