Mary Dickson Diaz

Code, Life, Learning

Tag: code school (page 1 of 2)

video yourself whiteboarding

I’m taking a weekly class with Kal Academy, a refresher course on data structures and algorithms. I can’t say enough good things about Kal’s classes — they are small, personalized, affordable, positive learning environments. Very worthwhile if you are a woman in technology in the greater Seattle area. In addition to the data structures and algorithm classes, which are mandatory for anyone who wants to improve at technical whiteboard exams, she also offers classes in business intelligence and object-oriented programming (in Microsoft stack).

Our homework this week (and ongoing) is to video ourselves whiteboarding. This is intimidating and potentially embarrassing, so of course I am sharing it with the world. Behold the screen capture worth 1000 words:

youtube video capture

Slow clap, YouTube. 👏 Watch it here:

And here’s the final code (after some refactoring):

I highly recommend going through this exercise if there is a technical interview in your future. It will improve your practice and give you confidence. This session lasted about 30 minutes but felt much longer. I had to re-do my code a few times, which felt more awkward than it looks. (Verdict: not terrible for a first attempt, but I’ll get better.)

Technical note: I used YouTube live on-air with Google Hangouts enabled. The directions are not very clear, but I was able to set my video to private (only those with link can view) and the recording worked fine and was instantly available on my YouTube channel. I did not attempt to do any screen sharing.

It’s a different experience to whiteboard without anyone giving you real-time feedback than with it. But, try it and tape it anyway.

Kal is collecting the videos and sharing with the class, so we’ll get to see a few other people’s approaches and solutions, which is always super useful. (Share yours in the comments if you try this!)

Need some sample whiteboard questions? Try not to think about them too long before you start the camera rolling, that’s cheating.

These are all fucking terrible, except maybe #8.

Better sources:

Happy (live) coding!

a modest (code school) proposal

I posted awhile back that after two classes, I took a break from working as a Teaching Assistant with Code Fellows. Part of this was logistical: it’s hard to dedicate yourself to a job search while also working long hours to support students and instructors. The job opportunities I’d been hoping for didn’t materialize, so I decided to double down on my efforts.

The second part of leaving was emotional — It’s intense work. Two months seemed like a manageable amount of time to sustain that level of full-time effort. By the end, I was exhausted. I’d had a terrific first class working with my former instructor, and was excited to bring that experience with me to a second class with a new instructor and TA team. The last week of that class was particularly stressful when I clashed with just about everyone on their decision to throw out all the assignments done up to that point and heavily weigh “instructor gut feeling” and a hastily conceived and executed pen-and-paper “quiz” as grounds for student advancement, or not. In doing so, I watched in real-time as all the studies about gender bias in the classroom played out, and experienced the frustration of fighting back against it, all the while being treated to a lecture about how none of this was sexist, at all, the opposite in fact!

So I left that team. And since then, I’ve found myself distancing myself from Code Fellows and gravitating more to communities where inclusion and diversity are lived values. I’m also hitting month five of job searching, witnessing how other code schools have programs in place that help with the gap from code school -> industry, and feeling that Code Fellows is still for the most part sending us off with a pat on the back and a “go get ’em, tiger.”

But it doesn’t have to be this way! Code Fellows has a uniquely diverse and passionate student base and huge potential to be something great. As a friend and alumnus, I have some ideas. I will probably get labeled a “hater” for this, but it comes from a place of optimism.

Part 1: The Low Hanging Fruit

ApplePicker

Continue reading

the plan, part 3

Oh hey, Happy Thanksgiving December! My last post was a cliffhanger that wound up more suspenseful than intended. And then December exploded and I’ve been busy with no time to blog. But I started down this path, so let’s dive back in. 🙂

Crater Lake

Andy Spearing, Crater Lake

Ok, so I was talking about my assumptions going into this year, and I left off at number 4:

  1. I can learn to code in a year — TRUE
  2. I will be job-seeking in a year — TRUE-ish
  3. I can tailor a program of free resources and paid classes for less money and time than the cost of graduate school — TRUE w/caveats
  4. As long as I can build software, the amount of math I’ll need to know is minimal
  5. An all-women learning environment is preferable to co-ed (but not a deal-breaker).
  6. MOOCs will be a great tech resource for learning computer science
  7. Meet-ups will be a great way to network, make connections, and find job leads

Continue reading

the plan, part 2

Hey, you got a few minutes? Ok, let’s talk about The Plan.

In January, I quit my job to pursue a path in software development. I didn’t really know then that it was called “software development.” I’m still not particularly married to that job title or role, strictly speaking, but a lot of other roles stem from that one so it’s not a bad place to start.

(I am married to Josh, though! I wasn’t when I started. Pretty cool, huh?)

But be ye more educated than I:

credit Brandon Hays 2015 RubyConf talk, full slides here

Knowing very little about the tech industry, I made several key assumptions going into this journey.  In this post I’ll detail how these assumptions have panned out (and in a follow-up post I’ll talk about where things go from here).

Assumptions:

  1. I can learn to code in a year
  2. I will be job-seeking in a year
  3. I can tailor a program of free resources and paid classes for less money and time than the cost of graduate school
  4. As long as I can build software, the amount of math I’ll need to know is minimal
  5. An all-women learning environment is preferable to co-ed (but not a deal-breaker).
  6. MOOCs will be a great tech resource for learning computer science
  7. Meet-ups will be a great way to network, make connections, and find job leads

Continue reading

try angular

this is what angular feels like, a bit

In the last two weeks of my Code Fellows Ruby on Rails bootcamp, we’re focusing on JavaScript, JQuery, and all their friends. This week we kick off with Angular. Angular is a JavaScript tool created by Google for fast, responsive websites. I completed the (free) Code School course “Shaping Up With Angular” and I’m about to embark on a quest to connect it to a persistent database. In my case it will be a Ruby on Rails app.

But first, let’s talk Angular!

MODULE

When you create a JavaScript file to hold some Angular, you initialize it like so:

var app = angular.module('gemStore', ['store-products']);

if you’re not well-versed in JavaScript, this is essentially saying: Declare a variable “app” and set it equal to an Angular module named “gemStore” that depends on another module named “store-products.” Once you’ve declared at least one module, you can get going filling it up with useful stuff like…

CONTROLLERS & DIRECTIVES

Controllers work similar to how they work in Rails. You can set up and assign a controller to a specific part of your webpage, and it can render and manipulate data in a variety of ways. In the tutorial, we set up controllers to manage information about the gems, the product tabs, product reviews, etc. If your code is getting repetitive and/or you want to isolate specific chunks of the page, you can create directives instead that will load a separate html page using naming-conventions (much like how Rails renders partials). Depending on what you’re trying to do, you may be able to include controller functions in a new directive and eliminate the need for a separate controller altogether. Neat!

SCOPE

Angular controllers are called on specific DOM elements , and operate within the scope of that element only. So for example, here’s some pseudocode:

<section id=gems ng-controller="gemController">
  <unordered list of gems>
    <gem 1>
    <gem 2>
    <gem 3>
  <end of list>
<end of section>

Outside this lovely, contained section, if you want information about gems you are entirely out of luck. Note how any of the list objects know about gems (and any child elements we might create under them, if we so choose)–basically anything that’s in the gem section family.

But not outside that family. They know about other stuff, maybe. Like maybe they know about…

DATA BINDING

If you’ve ever typed on a website and had text show up magically elsewhere, tracking as you type, that’s a two-way data-binding and Angular is a pro at it. Here, why don’t you go make some boxes to see how it works? Hmmmm… boxes. That’s not very try angular. Get it, triangular? I feel like this demo could be improved… perhaps a project for a rainy day…

DEPENDENCY INJECTION

Wow, that one sounds pretty grim, right? Coffee is my dependency injection these days. But we already saw this above — you remember in that top example how my app.js had an array of one element — it looked like this:

angular.module('gemStore', ['store-products']);

The app can’t run without the file where I’ve created a module named ‘store-products’, so injecting the dependency here tells my app where to look to import that info. Once it knows how to read ‘store-products’, it inherits any and all controllers and directives in that dependency JavaScript file, and the app can load as usual. Quickly, we hope!

Ok, off I go to attach this gemstore to a database… wish me luck and above-average retention as we dive into the last week of instruction (#justkeepswimming).

teachable moments

[This one from the drafts folder, folks. Reflections on the code bootcamp, week 3-ish out of 8. Written on the number 7 bus en route from class, most likely. My bus commute is at best two and at worst three hours every day. I had grand plans to maximize that time, but here it is week 6 and I’m still spending it mostly on phone games.]

learn-64058_1280

stop teaching me things, I’m trying to learn

As a middle school teacher, I became attuned to “teachable moments,” opportunities to impart knowledge related or unrelated to the topic at hand in response to what is happening in the classroom. Sometimes these situations relate to “real world” knowledge, questions about current events, observations about how people interact with each other. “This wasn’t on my lesson plan, but this is a teachable moment and I need to take advantage of it while it’s here.” Genuine connections, stuff kids will remember.

My instructor and TA are great at taking advantage of these in class. When someone couldn’t connect their laptop to the overhead, we got a lesson in how to clone a repo in github. Unexpected errors get dissected until they’re solved.  The answer to “who else has seen this error?” is usually not nil. Almost nothing is off the table, and I’m a better programmer for it.

It’s not always a picnic though. The structure of this class is a lot of stuff to get done in a short time frame. I’ve had multiple scenarios where I ask a question about how to implement something in my code, only to be steered towards doing it an entirely different way, often with huge structural implications. My impulse here is to respond with “Hell no, I’m almost done! That sounds like a great suggestion for another app. Let me just finish it my way and move on.” I’ve had to resist those feelings of impatience or frustration in order to leave myself open for what I’m thinking about as unsolicited learning. Those situations where I did *not* want a lesson, or not on some topic other than the one at play, but here is one anyway. It can be valuable if I stay open to it. Hell, I can even ignore it once received, as long as I get it.

It’s a blessing and a curse to be meta attuned to what’s happening with my own learning. And of course timing is everything. I may be open to one lesson at a given point and another one, I just want to go home and think about it and hash it out later. I’ve tried to convey this with as much respect and humility as possible while still being assertive– it’s my time, and I usually know what’s going to be productive for me and when the only solution to hitting a wall is to step away from it and come back later. That conversation looks something like this: “I see what you’re saying. This code could be definitely be refactored. I don’t know enough about this particular function and I’m not in the headspace to dig into it now, so I’d like to table this to research and work on later. I’m confident I have what I need to solve this now.”

It’s all a process.

reviewing the rails tutorials

so you want to build pizza dot net? try rails!

so you want to build pizza dot net? try Rails!

Hey everyone!  This is my last week as a ‘person of leisure’ before class starts up in full force next Monday.  I received a coursework invitation, and the first assignment is to answer the question: “How was your Rails tutorial?” to which I respond, “…which one?

Before I even saw the question I was considering a run-down on the Rails online tutorials I tried, what I learned, recommended order, and which ones are worth salt. So, here goes! These are roughly ranked in “do this first” order unless otherwise stated.

Michael Hartl – Rails Tutorial

oops my cow is upside down

oops my cow is upside down

Continue reading

memo to my younger self

Consider this a #tbt.

sophomore English major w/ill-advised eyebrow ring

I’ve made a lot of decisions (or, in failing to make a decision, reinforced the path I was on) re: education, career, and life, and for the most part I regret none of it. All my cumulative life experiences exist to put me exactly where I need to be today. And here is a good place! So in the hypothetical “what would you say to your college self if you could go back” I’d probably say — this is a nice gig so enjoy it, be kind to your friends/family and yourself. Everything is going to take longer than you think now, but you’ll get there.

You know: heavy on validation, easy on specifics.

If I could, though, I’d be like JUST ONE THING: will you please take at least one statistics class and intro to economics. At some point in my college tenure I decided that I didn’t want to study those things, so I didn’t. I, in fact, *rejected a major in journalism* because it required those electives.

And there’s precedent for me taking college classes not because I had to but because it seemed like the right thing to do — throughout my k-12 schooling, “calculus” always seemed like the pinnacle of stuff smart people learn, so I took calculus. I bet if my older, wiser, more attractive self came to visit college Mary, I could have convinced myself to take some stats classes. This has always been my Achilles Heel as I’ve explored career paths that involve any type of number crunching (and most do).

So let’s talk data science.

Continue reading

riding rails (for fun and profit)

At the end of my interview, the instructor asked, “Soooo… what are you doing in September?”

And just like that, I snagged a spot in Code Fellows coveted Ruby on Rails development accelerator, an 8 week full-time bootcamp designed to jump-start a career in web development. Hi-fives for everyone!

I was nervous but well-prepared going into the interview. Keeping this website and writing about what I’m learning has been a good way to internalize it and work out “talking points.” I was glad that I took some time to clean up my portfolio site (www.marythought.com) since that was one of the first questions asked, “do you have a projects site we can look at?” Why YES indeed I do!

I have a month to prepare, so I updated The Plan with what I’m working on before class starts. In a nutshell:

  • get some more perspectives on Ruby on Rails, and learn as much as I can about Rails apps
  • review JavaScript (two weeks of the DA will focus on this) and practice it via some hands-on projects
  • bone up on algorithms and core programing concepts

I’m also going to try to take care of some of those pesky “life” tasks. I finally renewed the car registration (they give you two years in Washington before you have to get an emissions test), and I need to set up my new health insurance and convert to life as a married person.

At times throughout this process I’ve felt a bit aimless, so it’s good to be entering into a period of intense, highly structured time focused on becoming career-ready. And, much as I’m currently feeling “let’s get this show ON THE ROAD” it all happened exactly when it needed to, and not before.

Thanks for coming along for the ride. More adventures to come!

on motivation and timing

Hey folks, this is a short, feel-good post.

I’m halfway through my Ruby II class and I’ve completed all the homework exercises.

_All of them._ Two weeks ahead.

I’m now working on the development accelerator (DA) application challenges, which are going to be challenging, but seem entirely doable.

I’m light years ahead of where I was halfway through the Python II class. If you’re considering taking a Code Fellows Foundations II class (or any coding class), you might be interested to know WHY this one is going so much better than the last. So here are a few of the contributing factors, as far as I can tell:

Continue reading

Older posts

© 2017 Mary Dickson Diaz

Theme by Anders NorenUp ↑