COVID-19 casualty

And so it begins.
Today I was made redundant at my current job along with many others. I have no ill feelings. This is what it is. If anything, this gives me a bizarre freedom. I no longer have to WFH when there’s no work and just wondering what they want me to learn, spread myself thin trying to guess what might be coming our way, and getting nothing done. I now have my own schedule and boss. The first part of the day is job related, and the second part is strictly coding. For me? ReactJS, React Native, Gatsby – o – rama! Those will be my main—my protein. I love them. React Native is new to me, but a prop is a prop. My two sides to go with them are NodeJS and VueJS. I missed Node while being a straight front-end developer, and Vue just always intrigued me. So it’s all “a little review and a little new” from now until I see a paycheck.
This is not a big deal. I’m not cowering in an attic hiding from fascists. I’m not turning off lights to hide from a Blitzkrieg. I’m not running from people who used me as a slave. I know. I wrote that already, but reminding myself of that often keeps the pity party at bay. This is a virus. It gets anyone, and it’s pretty easy to hide from it (this from an introvert). These are not the worst of times. These are not impossible or impassable times. These are simply hard times.
Wash your hands, you filthy animals! (Thank you, “This Podcast Will Kill You“)

COVID-19: first post in this new normal

Long before COVID-19 was a hashtag, work had been slow. To keep my tech up and skills relevant, I’d play (learn!) at work on Free Code Camp or with various tutorial. As work for our group continued to not show its head, I girded my loins and started rebuilding my portfolio.
My original one was, bless its heart, just basic HTML and CSS. I liked keeping it around. It is a great reminder why we use libraries such as ReactJS and static site libraries like GatsbyJS. Oh and to iterate instead of copy/past/edit. Keeping the old portfolio reminded me of the problems that led to better ideas. I will find a way to keep it around the way middle-aged people keep their high school jackets or prom dresses, but I needed to update. Trying to work on a portfolio at work felt like having no faith in my company to bring in more business. I was sure they would, but would it be for the React group I’m in or would it be for the Adobe Enterprise Manager? Or just backend work? Look, Work, I love you but I won’t sit around hoping and be left without a portfolio or the time to work on it. I’ll be subtle, but I can’t put it off.
Yet here we are, all working from home, waiting out COVID-19; for me that means 25% learning something new, 25% reviewing what I know, and 50% portfolio (structure—style and content are for after “work” as they do not pass the tech test for me). While I have not updated the résumé, about, contact, etc. content, I can blog, and the upside of not deploying the site yet is that I can write like no one is reading because no one is and no one can.
My new normal of WFH when the W is minimal, means that I don’t have a feel for a start and stop for the day. I am most productive from 11a to 11p. Do I just make sure eight hours of work happens at some time during the day? How does this work? We had no time to have a meeting (face-to-face or via Teams). What is expected? How do I communicate that I’m keeping myself ready?
This is awful. Awful for everyone. I feel there’s a lot of empathy for fellow employees, our local stores, the recently retired, etc. That’s getting me through this. If I lose my job, I lose my job. I will not lose my empathy for others, my skillset, my desire to make people laugh. This is a virus getting us, not a fascist regime, Aliens giving us the international sign of the doughnut, or an asteroid.
Right?

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: Stop with the tech-is-bad bs!

Possible ageism trigger warning.
I’m going to complain about older people. By older people, I also include people my age (50). It’s not about their age, but the generation and exposure to tech those generations had.

In 1987, I got my first Macintosh. At the time, I thought there’s be other apples to choose from. I was hoping I’d upgrade to a Granny Smith or Honey Crisp; however, Apple did not have my fabulous idea in mind. I was 19. I already knew how to touch type because my high school teachers made me take typing in order for them to read my essays. Some people were up in arms, thinking I’d head down the secretary path. First off, don’t be sexist. If I had become a carpenter, I’d have been praised for being tough, but a secretary? I think nothing is tougher than a secretary that has to put up with a sexist boss. I digress.

All through university, I used the computer and computer lab to print out my work. I have never gone back to pen and paper except for correspondences. I still write letters and postcards because I love stamps. I was not in a mass of people embracing the Mac and PC. Some refused. I think they had the same genes of those who thought that horseless carriage was craaaazy. The ratio of those who accept, embrace, and understand tech to those who are resistant change every year. Every year, younger people and more families get computers at home. I am thankful that the person who pushed tech on me was my mom, who is now 75 and killing it on social media, using reply all when CC-ed on conservative, scare-mongering emails, and changing her passwords frequently. She has had a mac every year since 1987, too. So the ageism here is a mindset ageism.

I am getting exhausted defending tech to older (mindset) people. Yesterday, I was paying with Oculus at a demo and enjoying going through a house to change the floors, cabinets, lamps. An older man (older than me by far) shook his head. “I don’t know. I just …” You know how this ends. I demoed a hands-free rubbish bin.
Our mini conversations:
“I would just use my hands”.
“Because you can, sir. Not everyone has both arms. Immunosuppressed people need to avoid germs as much as possible. A parent with hands full could use some help.”
WHAT IS THE BIG DEAL?!
“There’s a man at UT who has the code to 3D print a gun.”
“People are making affordable prosthetics in a tiny fraction of the time.”
I showed him the AR available with some companies’ apps where they can see their products in their home.
“Why not save time by knowing what will look good? Why buy something only to return it? Who has time for that? No one wants to go to a big box store more than once in a week.”

Darling, you can toss your TECH IS BAD at me, and I’ll fire back with tech is now and good. Keyhole surgery? How do they practice? AR and VR to train physicians? Yes, please! Programs to help Alexa understand sign language? Um. Yes! And truthfully, even older tech helped us. Did accountants really prefer pencil to paper over the speed of electronic spreadsheets? I am one who likes to handwrite letters, but that is another way of spending time with my friends. Handwriting out ledgers takes so much time, when Excel or Numbers could speed that up, save and edit without wasting time or paper so you could go outside with your family?

Look. Listen. Look and listen. Tech is no different than anything else:
TV. On all day or watch exactly what you want for the hour then turn it off. Watch fear and hate mongering news shows or watch a science show?
Books. Read hateful rhetoric or a playful fantasy novel?
Books, magazines, TV, movies, and tech are just those. Nothing more. They are good or bad, beneficial or harmful, a waste of time or great fun. They are made and used by humans. They are as good or bad as those who create and use them. To lump anything that is new as something bad is foolish, silly, and short-sighted. What is old and familiar to you was once craaaazy new. Germ theory? If you expect your surgeon to wash and scrub up before surgery, you’re embracing something that was once scoffed as new and crazy. Washing your hands before you eat? See above. Pretty much anytime you enter a hospital or doctor’s/dentist’s office, you need to shut up about tech.

It’s ok if it gets harder to learn. I get that. It sucks to get older. Our minds aren’t as sharp. Age gets everyone until death comes in. But our choices are to keep our minds sharp and open or to just close it and turn away. Maybe this is a message to me. Never be that person, Katy. As you get older and your mind gets duller, don’t repackage any wistfulness into jealousy. I hope to enjoy tech until I die and to use it for good. The only time I don’t want tech is after death. Just toss me into the woods for the wolves. I’m cool with that.

 

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.