Learning how to learn … again

I have learned many things. I have also forgotten many things. To avoid the latter, I pay attention to how I do the former.

One of the hardest things to learn how to learn is programming. German? Study. Flip those 1990 3×5 flash cards. Flip through that Duden. Do a junior year abroad in Germany and Austria. Read texts in German. Write to German-speaking friends. Workbooks. Texts. You know. Writing, editing, and proofreading skills? A little study and a lot of doing. Read. Know your style guides. Write a lot. Go over and improve your writing. So much rinse-lather-repeating. There was a lot of learning about < insert topic here > before engaging in < insert aforementioned topic here >, and even then I am learning as I do. I get feedback from those I’m writing to or talking with. I have decades of texts and journals to refer to and learn from. I’m in classes. I have several professors at once. All that worked for me with what I’ve studied before. It does not work for me as I learn programming and coding.

I’ve done two coding boot camps: one focused on front-end development, the other on the MERN stack in a full-stacky sort of way. Please. I hate the term “full-stack” as much as I hate “Renaissance men”. Look. Listen. Look and listen. You can’t be awesome at everything. No. You can’t. No matter what your online dating profile says. If I could, I would another. Why? It’s like cheap uni without the essays. I think of boot camps as flights. Do one. Figure out what you love. Focus. Do another. Isn’t that what we did at university? Go in with one major, take some classes, learn that you love this other topic or get more specific with your major, keep studying. I am not dumping a truck-load of coin at returning to university. Been there; done that. Boot camps were perfect. But like university, they do not last forever. Also, the living conditions are dreadful.

How do I keep learning on my own? I can’t just read my German texts, play Der Die Das games on my iPhone, and watch German language YouTube channels as I knit. It also doesn’t work to take handwritten notes while I watch tutorials. I don’t print out Medium articles to highlight and make notes in the margins. I tried that out of habit. I do think that writing notes by hand while I watch tutorials was incredibly helpful. Writing code by hand? Changing colors to focus my attention to what I need to remember. Or to see how one code block affects another? And just the slower pace of writing all of that down was incredibly helpful. It was also, however, so … stink … ing … sloooooow. Screw that. It helped me a lot, but at a pace that is not sustainable.

Now what? I think I’ve got it. One of my instructors told me that he learned by watching a tutorial three times: Just watch, follow and code along, do solo and refer back when stuck. Yes! Almost. But that works for me. And it helps me to do other things I feel that I miss out on while learning. I’ve put my spin on it. I’ll listen to the tutorial while I knit, fold laundry, chill with my eyes closed. Anything that keeps me listening but not watching. Focus on what is being said. Listen to the new terms. If I am knitting, I’ll just set a timer for 30-40 minutes. Listen to as many sections that fit into that time. Put the yarn away. Do some casual home squats, crack my knuckles, and go back to where started and code along. Do my own version after I’m done or in parallel. I sometimes listen to many sections. Other times I just repeat one until I know it by heart. It depends. Do I need a refresher and a dusting off of brain matter or do I need a deep dive (hello, JWT and PassportJS)? Either way, since I do not have a live human to go to for advice or have call on me when I raise my hand, I just like to listen and listen.

One bonus (or major problem?) is that I talk to them, imitate their voices, or say those -isms they have. Wes Bos has a few. My favourite is “That’s no way to live your life.” Andrew Mead has “How’d you do?” and “And that’s faaantastic!”. I don’t know. I think this repetition also leads to familiarity with the tutor, so they become someone I know and less of a 2D talking head.

I should add that there are some tutors I cannot listen to when I am tired. It is not that they are boring. Not at all. But some voices and talking styles put me to sleep. Lulling, not boring, me to sleep. For them, I have learned to listen while I get ready for bed. Repeat as I fall asleep. Do the work the next day while I have my coffee. I’m not naming that person. I make him sound boring. It’s not. He’s not at all boring; he has taught me a lot. His voice is just mellowing.

Now. Time to get cracking!

 

 

 

750 Words: Practice, Habits, Learning

(750words.com entry for today: 911 words, including metadata list,  stats)

To learn something (anything), one has to practice. The comic artist Sarah Andersen of Sarah’s Scribbles has a widely shared strip about what makes her great. It’s practice. No matter what anyone tells you, it’s practice. Practice is closely related to habit.

If I want to improve upon a skill, I need to practice often and then that becomes a habit. A good one. With ADHD, it is hard to get a habit going. Unlike what some people assume, the distraction for me is not TV—it is other skills. Let’s reference another wonderful comic artist: Allie Brosh, the genius behind Hyperbole and a Half and the much-memed “All the things!” drawing. I’m not distracted by bad things. I’m distracted by other skills and topics within skills. I’m distracted by the newsletters that inform me of new tutorials and tutorials that teach me new frameworks. If I’m trying to break into web development, I’m working on HTML5, CSS3, preprocessors, JavaScript, JS frameworks and libraries, Node, etc. I’ll be focusing on one when an idea for another pops up. That is, while making an HTML/CSS technical document page for a FreeCodeCamp project, an idea for a fullstack app comes to mind. It takes incredible will not to change focus. This little blog post was started when I was thinking about what topic to write about for that technical document assignment.

I should add that this is a problem when flying solo. It’s another reason I love having a boss. I may have ADHD, but I also have anxiety about not doing my job and doing right by my team and manager. Not a sycophant in anyway, but I don’t slack if it means another person will look bad. Right now, I’m flying solo. I am my worst boss. Now, to give myself a break, as I look up job postings and read about what I have to know to be considered, I can’t help but add to my “Learn all the things” list. And to learn all the things, I have to practice. Practice and practice. Lather and repeat. Forget rinsing. I don’t think that works when I want to retain skills. No rinsing. Just keep lathering.

Here are the skills and habits I need to build. There’s no order. I’m writing this as they come to me. There’s never any order!
Skill: HTML5 + CSS3 mobile-first responsive web design.
Skill: JavaScript frontend fun—focusing on ReactJS, not forgetting little jQuery, and getting to know VueJS.
Skill: JavaScript backend with Node—getting endpoints and routing down pat, getting comfy with noSQL as well as SQL, ExpressJS myself.
Habit: Planning app in advance vs creating on the fly.
Habit: Addressing build/Gulp and testing/Mocha-Chai in every project.
Skill: Python—make more of a priority
Skill: Game Maker Language—for fun and for OOP practice.
Habit: GitHub—not working on the master, branches for every new thing.
Habit: Jobs—apply daily!
Habit: Own up—Tweet daily the #100daysofcode and blog the process (do not blog daily)
Skill: German—Refresh it. Listen to a YouTube video every day.
Skill: Art—Doodle on Sketch App to illustrate my own apps or just do my own doodles. Wacom, paper?
Habit: Read—Read before bed. Read fiction! Escape.
Habit: Craft—Attack the fiber stash.
Habit: Exercise—C25k, gym, and/or cycle. August is awful.
Habit: Healthy eating—This would be better labeled “Don’t let ADHD’s impulsivity affect your food choices”, but that is too long.
Skill: Writing—I don’t care if it’s handwriting and dealing with my illegible script or getting a postcard out. Just write.

If I kept track of the above with a bar graph, there’d be tall bars on the tech skills and smaller bars on skills and habits that have some distance from the laptop. I blame the job situation. Hard to put down the laptop and tech learning to read or attack the yarn stash when I am underemployed. I am ok with that. I can’t have this even. Once employed, I know the other things will get more attention. Right? Yes. Right … RIGHT!

What about the ethics? This gets me a lot. To learn, I watch tutorials, but if I just do their projects, it’s just follow the leader. I have to do my own. Tutorials, therefore, take a lot of time for me. I watch, rewind, then do. I do this until my own idea that applies this skill comes to my head. I create my own repo for a new app. For example, I’m doing Brad Traversy’s fullstack social media tutorial. I watch and listen, I do what he does. On my own, I’m applying what I’m learning to make a social media app for adoption groups so that they don’t have to always rely on Facebook for their volunteers to connect. I’m writing down other ideas for social media apps with the hope of every new social media app I do, I’ll refer less and less to the tutorial. Is it ok to do this? Am I plagiarising? Or is this like taking various illustrations to trace and trace and trace, then build your own style doing your own thing? I do not know. I just know that I have to practice. I need to copy someone. I’m by myself. I am not in a classroom or workspace where I can flesh things out with instructors and senior devs.

I’m winging it.

I’m still learning how I learn, Vern.

COFFEE: 2
ENERGY: 6
FOCUS: 4
HAPPINESS: 7
LOCATION: home
STRESS: 6
AMPM: am
NONFICTION: t

 

Gitty up with baby steps

I just read this article by Ariel Camus on FreeCodeCamp about becoming a Git Master. While I understand the need to have branches when working with others, I have been slack to adopt that process when working on my own projects. That is changing.

Slowly. Slowly because I have to remember to do it, not because I am resistant. Swiss cheese for brains.

I returned to one of my early assignments. I had completed a vanilla JavaScript Hangman in time, but I felt it could be better. Upon completion, it functioned as a hangman game and had a nice look to it:

hangman

I’d like to have the chalkboard and window closer, but the last thing I’ll change is the styling. The first thing I did was add Gulp to bundle and watch. There’s a branch. Next up was to give it better functionality. When I turned it in, it had a word bank that did not have words or phrases, so I had no desire to deal with hyphens, apostrophes, or spaces. Next I wanted to add more word banks. One for different themes and have the players choose a theme. Currently, the only theme is “pants”. Then I’ll deal with keeping track of losses as well as wins before ending this with styling.

Instead of touching the master, that was good enough as it was and possibly ruining it, I created my first branch: tests. I have since finished the tests and added that new function to the branch and merged. Next up, I checked out a word banks branch. This is where I am now.

Such a great habit to get into and it took me this long to do it? No. Not really. I have done it before, but I just forget to. When I realize I need to be on a branch, I’m already working on the master. It would not occur to me to work on the master when I’m part of a team, so why is this hard to remember when it is just me? Maybe I should just rip myself a new one so that mucking up the master is something that terrifies me. Put a mirror on my desk to really make the argument with myself seem real. Storm out. Apologize. Make up with ice cream. I see this as a win-win sitch.

 

 

My Brain Hurts: recursion with factorials

With pencil and paper in hand, I have no problem with recursive patterns. Fibonacci schmibbo-hotsytotsy. Factorials schmacks-Oreos.

“Write a recursive function to …” blah mork loopy loo let me leave the interview now so you can continue with someone better, and I can drown my sorrows in two scoops of ImNotWorthy. 

I know this because it was not until I was asked to demonstrate recursion in a mock interview (I requested this topic), that I saw that my comprehension was passive. I understood it when I saw it. … ish. Understood-ish. But there was absolutely no active comprehension. I could not do it on my own. No ish. Nuthin. Fear? Nerves? A pebble in my shoe?

It is that whole “snake eating it’s tail” that was throwing me. I could not recreate what was going on. There is no stack with pencil and paper. I can write it out and do them in my head until I needed a calculator, but even with a calculator, all I needed was a line:

5! = 5 x 4 x 3 x 2 x 1

I understood stacks in other terms (callbacks, pancakes), but the recursion was hurting my brain, until I made it a literal stack in my head. I was treating the part of the code block after the base case as a spiral when (for me) thinking about it as slapping 3×5 cards down. No wonder I didn’t understand the stack; I wasn’t treating it like one.

I’ve been playing with recursion and different tasks as I plow through books on algorithms and tech interview skills. Factorials and Fibonacci are the easier ones to grasp. Not easy. EasIER. Comparative. Like farts smell better than decomposing bodies. They don’t smell good, just better.

I wouldn’t say that I could whip out recursion any time, and I know that I wouldn’t want to with factorials (O(n2) and all that), but I’m getting there. I spent some time on JSFiddle and with my markers to play.

factorial_recursion

The code is old news.

const factorial = n => {
if(n===1){
return 1; //my base case
}
return n * factorial(n - 1); //my nut case
}

I did not set include checking to see that n is a non-negative integer. That was not the point of my doodling because checking for that was not the hard part. This post isn’t about a fully-tested function to return the factorial of a number; this is about me getting the recursive part.

Ok to be the good-enough dev? Yepsilon.

Oh, I just know that would raise some hackles. “Good enough” sounds like one is lowering the bar. If I want to be just good enough dev, then I’m ok with bugs, sloppy code, side-effects, untested code. But what is the next level up from good-enough? Better enough? Hardly. Not if you care about spoken and written language. Best? Who is best? Perfect? Riiiight. You keep telling yourself that, tiger. Perfectionism is not our friend, nor are those who think they are perfect. So let us be happy calling what is not perfect “good enough”. Ok? Are you with me?

If you’re too code-y dev-y, then think about epsilon and any approximation algorithms. I have been watching MIT’s Open CourseWare (if only I could stop calling it Online CourseWare or writing MITOCD), specifically 6.0001 Introduction to Computer Science and Programming in Python with Dr. Ana Bell. While going over the approximate solution for finding a cube root, I re-encountered epsilon (ε, or error. To find a cube root of a number that isn’t a perfect cube, I have to be ok with getting close enough. Good enough, not perfect. See? Ok. Good enough seems less lazy now, doesn’t it? Sure. You were ready to label me lazy until I mentioned “algorithms” and “epsilon”. The larger my epsilon, the less accurate my answer will be, but it is still epsilon.

I’m never going to be perfect. I will never finish a project if I worry so much about perfection. But I can be good enough with an epsilon of 0.1. And the next iteration of that project, theme, or tutorial assignment could be good enough with ε = 0.01. More learning and practice and repetition and repetition and repetition will lead to ε = 0.0001. But I will never be perfect. And that’s ok.

What I want to say here this morning is that “the devil” is the spirit of fear that drives us into rigidity and anxiety, which saps our good will and clouds our compassion. The spirit of Love is where our allegiance lies as good people, spiritual people, people who want to make the world better place. Love is always in dialogue with fear in our souls and bodies and minds. So when perfectionism is sharpening its claws in you, take some deep breaths, stop comparing your insides to other people’s outsides, remind yourself to be a good enough witch, and wonder — what would this whole situation be like if I had more love.

(from The Devil and Martha Stewart, by Meg “OMG I lurv her!” Barnhouse)

Pure CSS Images: Now what

Here I am so far. (I am using screenshots because my version is not responsive.)

mid-century modern prints
Original by Kerry Beary and my wip. (I believe she spells it -mellows and not -mallows because she’s punny.)

In terms of what is left to do that is furniture or furnishings, I have the lamp and interior of the pod. I can do those and stay pretty true to the original; however, when it’s time to do the cats …

What do I do? Do I make CSS cats that are not much like the original? There are limits with CSS. Do I make them in SVGs? I think if I do that, it feels too much like plagiarising. SVSs are a last resort. Or maybe just put a cat in the back and a person on the bench? Change it enough? I have no idea. Thankfully, I still have that lamp to do. I might animate that.

I’m exhausted.

CodePen Challenge: del & ins tags

This is my first CodePen challenge, and the topic is using the del and ins tags.

list of greyhound myths
Screenshot of my del and ins attempt

My applied creativity level was low for this one. I have never used del and ins and had to figure out what their default styles were and how I could alter them. The examples found on CodePen are fanbloodytastic. I’d like to play more with del and ins and include animations like this one by Mark Praschan or make the strike-outs more organic like the school essay example by Halida Astatin (also has great animations). These were just a few. I had to back off the CodePenChallenge rabbit warren to stay focused.

This challenge didn’t excite me as much as others I have seen; however, since I did not know about del and ins, I found value in it. Learning can’t always be snazzy. Now that I have explored the other submissions, I could snazzy up my edits.

Checkers did my head in

My current Pure CSS Image attempt is this gem from Kerry Beary.

I cannot tab in my code snippet, so just deal with it. (It even hurts my own eyes.)

@for $i from 1 through 7{
.#{rectangle-band}-#{$i}{
margin-left: 0px;
@if $i % 2 == 0 {
@for $i from 0 through 3{
.#{square}-#{$i}{
margin-left: $i*60px;
@if $i % 2 == 1 {
background: $evenband;
}
}
}
}
@if $i % 2 == 1 {
@for $i from 0 through 3{
.#{square}-#{$i}{
margin-left: $i*60px;
@if $i % 2 == 0 {
background: $evenband;
}
}
}
}
}
}

Iterating in Pug. Iterating in Sass. Nesting them. Checking for odd or even. ERMAGERD! But I did it.

Screen Shot 2018-05-07 at 1.38.12 PM

For now. But looking at it above, I see that the chair is too big. No. I’m not going to fuss. There are times to let it go. This is one of those times.

I have to get circles or semi-circles in there. That’ll be a new set of curse words. Let me just admire this for a second!

Ok. Done. Now I have to dry heave.

So I made a thing

So I made this thing:

charley_harper_calc

See the Pen Charley Harper Calculator (no fcn) by Katy Cassidy (@ihatetoast) on CodePen. Charley Harper’s style is very CSS-friendly. Hellur, geometry! These ladybugs were taken from the “Last Aphid” print.

Since it had been a while since finishing the pure CSS challenge, remembering what I learned was tough. I use Text Expander for Pug and Sass for-loops. That helped. I was hoping to use the for loops for the dots and buttons, but some needed specific help. I could loop through all 9 dots or just the odd ones, but eventually I had to pick and choose which dots appeared to satisfy the look.

There’s no functionality here. Nothing to add or subtract. I would love create a calculator with this as a design, but I’d use SVGs for the bugs. I thought it would also be fun if instead of their twitching, they’d skittle off in all directions on hover, but with the various levels and z-indices, it made for a lot of decapitation.

I am not disappointed in learning those limitations. It’s learning. I love making a purty thang, but I love even more that I learned something while doing it. So. What is next? I am thinking mid-century gravel art.

 

Tenacity

Almost nine months ago, I completed a (week) daily coding challenge called Daily CSS Images. I am about to embark on round 2. I say “about to” because I do not know if I am going to redo the challenge and stick to the old prompts or find others. If I decide to do my own prompts, I need to have 50 ready. I don’t want to spend half of the day deciding.

It is no surprise that I learned a lot about Pug/Jade and Sass in this challenge, but what I learned (or realised) the most was how daily practice improves a skill. I knew that, but that knowledge had become dusty. What I love is seeing the change.

Day 1: Bear Cub

Screen Shot 2018-04-27 at 12.43.00 PM

See the Pen DailyCSSimages Day 1: bear cub by Katy Cassidy (@ihatetoast) on CodePen.

Day 49: Dance Dance Revolution pad

Screen Shot 2018-04-27 at 12.45.23 PM

See the Pen Daily CSS Images Day 49: Dance Dance Revolution pad by Katy Cassidy (@ihatetoast) on CodePen.

Day 50 was Party City. It was ok. I’m not ashamed of it, but I think day 49 shows more of what I learned:  Daily CSS Images Day 50 – Party City by Katy Cassidy (@ihatetoast) on CodePen.

I code every day. That is not hard to do. Harder is not coding, getting up, stepping back, going outside. Oh, I love the outside. I’d code there if I could and if mosquitos left me alone. I’d moto to the hill country if I could trust reception or remembering to pack up and return home before sundown. Coding every day is not a problem. Harder is keeping a track going. Using my tenacity and my ADHD (which I call KatyHD) hyperfocus to stick to one or two themes. Depth over breadth. Do the thing, not do all the things. Do the thing and do it every day. Hard when one has a breadth of interests. Sigh. Sadly, this requires the S-word.

SCHEDULE

I know! Sent shivers down my back, too. Following a schedule is not the hard part. I can do that. Making it. Ugh. Making one will require me to let some interests come before others. How can I choose? It’s like choosing sad critter over all the others in the shelter. Alas, my tenacity requires such discipline.