## Mary Dickson Diaz

### Code, Life, Learning

#### Tag: argh

Gentle readers,

I had planned to get back into tech blogging this January with the Code Newbie “blog more” challenge — but then everyone in my house got sick and would you believe I am still sick today — this is the bronchitis that keeps giving, I tell you.

I had also planned to start prepping for tech interviews to launch a job search sometime later this year. I have been happy working at ExpertVoice (formerly Experticity, formerly ReadyPulse) — where for two years I’ve been doing full-stack software development with a fantastic team. My hours and work location are flexible, I get to work on interesting projects, the snacks are plentiful, and the time off “unlimited.”

Job perks aside, I’ve always known that it wasn’t my forever job. My commute isn’t ideal, and the company is heavily skewed towards the outdoor industry, which meant that a large segment of clients are gun manufacturers (hunting and whatnot). They don’t sell guns directly, but they definitely help gun manufacturers sell guns and shooting accessories to military and law enforcement officers. This has never aligned with my values, and sometime after the mass shooting in Vegas, I remember thinking, crap, I have to find a new job.

You know… sometime.

all my free time goes to this kid

Anyway, an unexpected round of layoffs (30% of the company) has turned “sometime” into “right dang now” and I find myself facing down my nemesis, the tech interview. Just like finding a job out of boot camp, finding a(nother) job now requires dedicated and specific preparation. I took some baby steps at the end of last year and did a few interviews with little to no prep — and failed spectacularly. Apparently the fact that I have a few years of actual job experience, have built real software that people use, and can provide great references means nada if I can’t solve a specific technical challenge on a whiteboard or on a shared screen, while my interviewer watches, within the time allotted, which SPOILERS:

This is a process post. Or, how I think through possible courses of action when I hit a roadblock.

I’ve been making my way through Ruby the Hard Way bit by bit and I had a lot of fun this weekend with exercise 45, “you make a game.” This book and the Python version are both great learning tools for the language, and now that I’m getting to the end I see it’s a great tool for learning the basics of web deployment as well. *More than once* I have gone off on a side tangent and scoured the internet for a solution to my problem, only to be redirected back to the book and find that it addresses my question several exercises later.

I like my game, a simple text adventure based on Adrienne Rich’s poem ‘Diving into the Wreck,’ so much that I want to share it on the web with you, and that kicked off the latest rabbit hole. I still haven’t found a solution to this, so if any of you out there know enough to help me out, I would greatly appreciate it!

Here’s where I’m at:

First, something easy:

I logged in to twitter tonight to catch this total bullshizz. A re-tweet from “import python” and Guido van Rossum (which I clicked through to read and thought “aww, that’s a little hokey, but ok”) and subsequent calls to remove the tweet and its content from the plagiarizing site. Turns out some dude stole Anna’s ‘love letter’ in its entirety and republished on his blog. With no attribution. With *self attribution* (it was signed ‘love, Milap’). And the retweet (not of Anna, of the plagiarizer) got like 50 twitter “favorites” since this Guido guy has 61k followers.

This little blog here isn’t very big (my follower number is in the dozen, yes that’s singular) and partially for that reason I would be furious, *fur-i-ous*, if someone were to appropriate my content as their own and get amplified for it.  All has been corrected, and YAY for that, but it still hit home, and hard.

So, if you use twitter even casually, give Anna a follow, or check out her blog wherein she highlights a diverse group of women (including black and Latina women) who use python and django.  So cool.

The storm? That’s coming tomorrow, when a bunch of dudes arrive to re-level our house. Presumably with us and our stuff in it. Our little house, built in 1919 (I still cannot wrap my head around that number) has been through so much, and tomorrow we’re paying some people a lot of money (so much money, I can’t wrap my head around that number either) to make sure it doesn’t fall down for the next 30 years. A few weeks ago they called me, and offered, for just a few hundred dollars more, to guarantee their foundation work on the house for *50 years* instead of 30, and I may have just laughed at the guy because in my head I was thinking “certainly we’ll all be dead or living below ground by then” and, less fatalistic, “whoever we sell this house to is not going to care about 30 vs. 50 year guarantee.” (And they haven’t called me since then! Now they call Josh.)

But time marches on, with or without us. Here’s some dirt I dug up on our new digs using the Seattle Times historic archives (library card may be required):

First, a note about learning style:

It’s been brought to my attention that some of what I’ve been interpreting as, well, bad or (assuming good intent, which I do) disorganized teaching is actually something called “flipped classroom” which I’d heard about in my previous job. I think it’s a not uncommon style for college-level teaching. The gist is: students read the material beforehand and come prepared with questions and ready to teach it back. The professor is then more of a coach/mentor, and by having students teach the material you hit on some really high level learning objectives. There’s not a lot of teacher-driven demos/lecture during class time (which, inconveniently, is something I find really helpful for my own learning style and wrote about in learning and watching people code).

So, this helps me with perspective. And, again, it’s a shame that I’ve been without working internet at home for 3/4ths of the class (not planned), and have not had as much time as I’d like to really play in the material. These are things *solely on me*.

question = raw_input(“Did everyone have a good weekend?”)

Team, you’ll be happy to know that I showed that headache and those bookshelves who’s boss (boss = “Mary”) and am feeling, well, not exactly *back in biz* but definitely *getting closer to being back in biz*. We’re scheduled to have working internet AND dishwasher this week and I am almost caught up on my class homework. Soon, perhaps, I will have working code to show you. Soon. If you want to see some non-functional code, I have that in droves.

First, a new house update: still getting settled, but happy. No internet yet at home, which is stressful for a few reasons, one being that my new class started and I haven’t been able to fully access the courseware. But, I’m in love with our new neighborhood and yesterday I discovered the Hillman City Collaboratory that has co-working space available (and so much other cool stuff that deserves a post of its own). I may head over there today and take advantage of their internet.

On to the class…

Hey Wu-team, Mary here, checking in from the Fields of Distractionville. I spent like three whole days this week dreaming of Greek island sunsets and planning an international trip that may or may not come to fruition. I’d be lying if I didn’t share that I’m feeling a bit deterred. Thus, I  don’t have anything new to share this week except for this music video and some hard truths. (Java-javaScript, y’all.)

HARD TRUTH #1: Recursive algorithms: you have to learn them.

Colin is a bad-ass programmer and when I questioned the relevance of this Python McNugget quiz question he shot down my hope that the question was an outlier. You can google for more, and here is Colin’s proof that 43 is the highest possible “non-McNugget number,” if you are interested: click me for McProof.

In a nutshell, recursive algorithms look like this:

def recurPower(base, exp): //this defines a function 'recurPower' that takes in two numbers and returns base^exp
if exp == 0:
return 1
elif exp == 1:
return base
else:
return base * recurPower(base, exp-1)

It’s tricky to conceptualize the idea of using a function *while defining that function* but that’s how recursive algorithms work. This one is about the simplest they get, it’s all downhill from here.

HARD TRUTH #2: Programing == Math.

I will admit to purposefully not turning in this week’s Python assignment about looking at programs and analyzing them for efficiency and efficiency’s opposite, complexity. An example is: how many steps will it take the computer to execute this program? And while it would be lovely to be able to answer “1” or “42,” the answer is usually something more like “5log2(n)+2008.”

Complexity impacts run-time and memory usage, all stuff that programmers need to care about, I suppose. Conceptually, I can understand that a more efficient program is going to mean the difference between your lightning fast web application beating out the slower competition. But as I’m still learning, I skimmed over this lesson thinking: “This is advanced math stuff and it’s tripping me up. I’ll skip this for now. I need to get programs consistently running first, and then I’ll worry about how efficient they are.”

And then look what pops up in the latest Code Fellows lesson:

Yeeeah. Hello, complexity. And do you see that lovely red bar of lowest complexity… what does that say? That’s a log function, friends. That’s MATH.

So, ok. Not to worry. One step at a time. The last hard truth is personal to me, but here it is:

HARD TRUTH #3: Do not go gentle down that web development path.

I’ve been wavering a bit on the best course of action for me going forward. After reflection, I think I want to pursue further study in Python with an eye to data science and analytics, what is sometimes referred to as “back-end” programming (systems focused) as opposed to web development which is “front-end” (user focused).  The good news is that Code Fellows has a pathway to making this happen. The bad news is that it’s hard. Like, really hard. And full of math. There is less precedence, programs, and guidance for this path than if I were to pursue web development, and I’ll still have to learn JavaScript to be employable, and I’m ok with that.

So, what now?

Make programs. Get them working. Get registered for the Foundations II Python Course. Make more programs. Make websites. Look at job descriptions and figure out what jobs/skills are connected to programming with Python (learn git), learn those skills and find people in those jobs.

…And plan the honeymoon, because that’s important too. 😀

Programmers: what hard truths did you learn early (or late) in your careers? Share ’em in the comments!

Python quiz commences:

Eight hours later:

© 2019 Mary Dickson Diaz

Theme by Anders NorenUp ↑