Mary Dickson Diaz

Code, Life, Learning

Author: mary (page 2 of 11)

scenes from the MIT museum

Last weekend in Boston for my dear friend’s wedding we had a few hours to kill before our flight home, so we stopped by the MIT Museum to hang out with some robots. Josh is an alumnus, so he gets free admission +1. Students, meanwhile, have to pay $5! Stay in school, kids.

20160320_143731

A LISP machine! You may remember Lisp from that Wizard book.

20160320_143909

I didn’t get a picture of the Black Falcon, but you can see it with its creator here. I was struck by the violent words and imagery used to design this “tool for minimally invasive surgery.” This is a tool for helping people, for saving lives, yet it looks like a gun and is described in terms of master/slave technologies. I wonder if a team of students designing such a device today would consider design elements and description to better suit the intended purpose.

20160320_144131

Pebbles, perhaps a precursor to the Mars Curiosity rover?

20160320_144243

Kismet, the sociable robot (inspired by kids)!

A video posted by @marythought on

The entire Arthur Ganson room was amazing, and I particularly liked this piece featuring a wishbone (or a “merrythought“) pulling an elaborate machine behind it. This is how I feel all the time.

20160320_14440920160320_144420

How kids and adults (presumably) view robot potential! Homework producers and dog walkers. Sign me up for both.

20160320_222917

This is cheating, because it’s not from the MIT Museum at all, rather from “The Martian” during the flight home. I just want to point out that computing never (rarely?) works this way. Unless you’re using Test Driven Development to rescue your fallen comrade on Mars, in which case, high-five!

Wedding #latergram

A photo posted by @marythought on


Bonus pic, Josh and I clean up nice!

The MIT museum is $10 general admission and well worth a visit if you’re in the area. It’s near a place named Dumpling Room that I wish I’d had the appetite for at the time, and Toscanini’s ice cream for dessert.

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 gift and cost of clarity

7-Your Move

An update! Since I decided to Go Into The City many wonderful connections have been made. I updated The Plan with my goals for March:

 

  • Go to coffee 2x+/week, with someone I know and someone I don’t know (find folks doing jobs I want and ask them how they got there)
  • Go to meetups, 2x+/week
  • Find an open source project to contribute to (possibly through Open Seattle, CF App Builder Club or the Outreachy application process)
  • Work through Harvard CS50, Programming Interviews Exposed, and Cracking the Code Interview
  • Apply to jobs, 3+/week
  • Take a new class through Code School or Pluralsight and build a new app or add to an existing one with new skills
    • Angular (focus on Rails backed Angular)
  • Reinforce core skills
  • Stretch Goals:
    • Learn VIM
    • Outreachy application (most likely Wikimedia)

Some of these I am doing well on and others not so much, but we’re not even to the Ides of March yet so I’m just going to silently note it for now. Besides, I think it’s time to narrow my focus even further. Recent conversations have been valuable in determining exactly what type of opportunities I’m looking for among my diverse and varied interests and abilities. This leads me to the following Career Intention:

I am looking for full-time or contract work… 

     …as a junior software developer

     …in a supportive learning community

     …where I can work on substantial projects

     …preferably in Ruby on Rails

     …with people who value diversity and inclusion.

That’s it! It’s a tall order but not impossible to find. And, I need to be putting all my efforts towards learning experiences and projects that will move me closer to this role. Other tech related ventures that are not coding, I bless and release.

The closest match I’ve found so far is an Outreachy learning opportunity with the Wiki Education Foundation’s Wikipedia course dashboard system. The dashboard is built in Ruby on Rails and uses a combination of technologies I’ve worked with and technologies I haven’t worked with but would like to learn. The project manager is based here in Seattle and would be great to work with. The opportunity itself is a three month internship, paid (a small amount), with a respectable network and prestige for alumni that can lead to more opportunities.

I’m struggling to get my development environment set up to jump in and contribute in some small ways (required for the application), but it’s a priority for the March 22 deadline. More to come on the technicalities of that.

It is tough but a great relief to let go of “I’m open to all sorts of tech and coding related opportunities.” It means I’m still not getting paid, but I’m not compromising on activities that won’t move me closer to the goal.

Having now clarified my intentions, it should be easier to share them with the world and let the world help.

how to use the wordpress rest api in rails

Folks, if you’re reading this over at www.marydickson.info, my Rails portfolio site, things are about to get real meta. Several weeks ago I RSVPed for a WordPress Developer’s meetup called Introduction to the REST API. I’ve used APIs with Rails, Angular, and in Twitterbots– an API (application program interface) is simply a way to transfer information from a server to a client, often using a format called JSON (JavaScript object notation). APIs are key to mobile apps that access the same database as a web based site. “REST” (representational state transfer) means that a system understands a set of standard verbs used to communicate over HTML, including: GET, POST, PUT, DELETE, etc. You can use an AJAX (asynchronous JavaScript and xml) call to transmit data via the REST verbs and either fetch data, post new data, update existing data, or delete a record, and the information will be persisted in a database somewhere behind the scenes.

That’s a lot of acronyms. Here have a picture:

how APIs work, sort of

Super! MARY, BUT WHY SHOULD WE CARE?

Long story short: I’ve had this WordPress blog since I started coding, and since then I’ve coded other web sites “from scratch,” including a professional portfolio site, that are much easier for me to customize and that add legitimacy to my claim of web developer. So that is what I want to share with potential employers but I *also* want them to see my awesome technical blog posts so they will think “She sounds cool and writes good. Let’s pay her money in exchange for her time!” UNTIL NOW the way to do that was to direct people to this site, marydickson.com, and hope that they will also go check out marydickson.info, or vice versa. Awkward.

The WordPress API allows me to import blog posts from marydickson.com and render them as a tab on marydickson.info. If you have any sort of non-WordPress site and you’d like to link to or display your blog posts, you can do that with the WordPress REST API. I’ll walk you through what I did to get this working in a Rails app:

Continue reading

go into the city

gointothecity

“Now get up and go into the city and you will be told what you must do.”

I’m not particularly religious, but this photo by my friend Andrea was so timely this morning it brought me nearly to tears.

I’m wavering these days, trying to figure out the best path forward. What to work on, what to study, where to spend my time and energy to appeal to potential employers. I’ve been kinda all over the place: I spent a week climbing the Code Wars code challenge rankings to #2 for my Code Fellows “clan.” I went back through the assignments for Code 301 (the class I TAed) and completed them myself, to make sure I thoroughly understand all the components of a MVC website. (301 is a new class, which is why I hadn’t completed the assignments previously.) I’ve been coding in JavaScript and Ruby. I tried Rails 5. I went (finally) to an Open Seattle meetup and met some great people with neat project ideas. I started learning vim!

What I know is this: when I try to plot my path forward from my living room, I get nowhere. So my goal for the remainder of the month is to figuratively and literally GO INTO THE CITY. Look around. Talk to people. And listen for the clues to what to do next.

try rails 5

Hey folks! Last week wrapped up my second teaching assistant commitment, and while I managed to get myself invited back (barely) (I have more to say about this), I’m taking a break to focus on building skills and job seeking.

On the menu for today: let’s talk Rails 5. This’ll be short, since I need to dive into it.

Screen Shot 2016-02-03 at 3.21.29 PM

yaaaayayyyyayayyay

BUT FIRST… version control.

Since I finished my Ruby on Rails training in 4.something, Rails released a beta version of 5.0, and Ruby has also released a new version, from 2.2 -> 2.3. I’ve fought hard against installing a ruby version manager after disastrous attempts with rvm and rbenv, which hate each other, and will leave your development environment totally FUBAR if you’re not careful. So I nuked everything and avoided any Ruby version control, until now– and now I know better, and there’s no longer any excuse. My instructor says “try chruby!” so chruby it is!

I followed these instructions… including the setup for powder, which is my Rails development server of choice. I installed Ruby 2.3.0 as default and 2.2.4 as a “so then we’ll have it”. Apparently I had been using a version of ruby called 2.2.3p173.  Gross. No more!:

(Oh right, I have to update to El Capital also. Dammit.)

OK, ONTO RAILS:

So now we have software version control, sweeeeet. However, that version control does not extend to Rails, so how to play with the new version without destroying my current install (most recent stable version)?

Option 1: Clone the Rails repo and create a new Rails app from that starting point. 

I followed this guide for how to clone the Rails repo and then create a new Rails API app using the latest beta version (“edge”):

Fun! This worked as expected. I did have to run a bundle install before the bundle exec rails new etc would work. If you go this route, at the end your gemfile will contain this line:

gem 'rails', github: "rails/rails"

Option 2: Create a Rails app like normal and then update the gemfile with desired Rails version

Do you really have to clone the entire Rails repo? Probably not, right? In my second attempt, I tried to teach an existing Rails app to use the new version. The latest beta release in rubygems.org has this language for your gemfile:

gem 'rails', '~> 5.0', '>= 5.0.0.beta2'

However, that did not work. This did!

gem 'rails', '5.0.0.beta2'

I had to run a bundle update after bundle install, but otherwise everything went smoothly.

COOL NOW WHAT?

Well, my install worked a bit TOO well, and now all new Rails apps are initiating with 5.0. That was not my intention, but it should be easy enough to switch back if needed. Funny enough, when I run a new Rails app now, this is what the gemfile looks like:

gem 'rails', '>= 5.0.0.beta2', '< 5.1'

YMMV. Gentle reminder: Rails 5 is not currently recommended for production environments.

the wait

Hard to fathom that January is nearly over. What a ride it’s been already.

Earlier this month I had to take my laptop in to the Apple store because it started making vacuum cleaner noises. When I called them to get some additional information, this song above was the hold music. I thought it was sooooo clever. But then I called again a week later and the hold music had nothing to do with waiting, so maybe just a coincidence?

Nevertheless, I have a few irons in the fire at the moment and the waiting is exciting and terrifying, while simultaneously I am trying to continue to forge ahead in case nothing comes of it.

Being unable to talk about my own job search I will tell you instead about a conversation with a colleague last night, a  fellow TA who graduated around the same time I did from the JavaScript Accelerator. She’s slated to start working in February for a company here in Seattle who empowers female entrepreneurs, in a contract-to-hire position. When I asked, “How’d you find out about that gig?” she told me that she invited someone out to coffee for a networking conversation, a women she got connected to on Twitter, and that conversation turned into “hey can you come in to interview?” which then turned into “actually nevermind, can you start in February?”

via GIPHY

“Hang on, so you went to coffee… and then… you didn’t have to do a phone tech screen…”

“Nope, they just offered me the job. It’s contract so if it doesn’t work out, no harm done to them or me.”

“…You didn’t have to code on a whiteboard…”

” 🙂 ”

via GIPHY

I’m really happy for her, and the more I thought about it, the more I land on: WHY AREN’T MORE ORGANIZATIONS DOING THIS??

I interviewed back in November for job that seemed like a *great fit*, working as a Rails developer (“engineer”) at the local office of an org that allows users to track which books they’ve read and want to read. The job description said “be less than a year out of school” so I applied despite my green-ness, had a great “cultural fit” convo, and then got whomped in the technical phone screen. Guess what: that job is still unfilled, or still hiring, it showed up again today in my job postings notification. In the three months since they talked with me, at least two things have happened: 1. I got better; 2. The technology changed. If they had just hired me in November for a three-month run, I could have gotten better *on their technology stack* and we would both know by now whether it was a good fit for a longer commitment or permanent hire.

Josh helped put this in perspective for me yesterday, talking about another potentially stressful interview process coming up. “It’s not whether your technical skills are good enough to fit on their team, it’s whether they have the training capacity to take you on.” He continued: “[Company X] has enough resources, they could potentially take any of the five of us in this room [including the cats] and train us to work with their software. Whether they choose to do so is reflective of their own priorities and not your abilities or capacity to learn.”

#perspective

This article is making the rounds, and I think it’s an essential, and relevant, read: Why Doesn’t Silicon Valley Hire Black Coders? 

I’m not advocating for throwing your “Ace the Technical Interview” book out the window, but there’s something here worth considering, both for technical job seekers and those to seek to hire them. At a minimum, maybe it’s time to schedule those informational interviews you’ve been putting off!

Say, can I take you out for a cup of coffee?

“A tree house, a free house, a secret you and me house…”

EDIT: Shortly after this post, I heard back from Pierce County that the partnership is ending shortly due to new financial obligations that Treehouse is requiring to continue offering free access for all of their cardholders. And sure enough, the links in this post are no longer working. So, I’ll leave the post up for posterity but this deal no longer applies. 🙁 Sorry gang. 

Happy new year, dear readers! 2016 started for me with a whirrr and a bang and a wahoo! and other noises indicative that your cozy holiday break is OVER, friend. Get up and get moving, we’ve got class/meet-ups/projects/job applications/interviews to knock out.

One of my resolutions was to finally get signed up for a free Treehouse membership via Pierce County Library System (which has a reciprocal relationship with King County Library System and other library systems in the greater Seattle area). And this might have remained a hypothetical “I should get to that… soon” if not for one of my new 301 students, who was like, “or you could do it now!” (Thanks Ron and Yun Joo!)

It’s simple to do, and Treehouse has some great tutorials for beginning and more experienced programmers seeking to expand your skills. If you live in the Greater Seattle Area, please take advantage of this!

Sign up for Treehouse with Pierce County Library partnership

Here’s how to do it…

Step 1: Get you a Library Card

You already have a library card with your local library, yes? If not, go do that. Then, navigate over to the Pierce County sign-up page and fill in your information. For “local branch” select any of them, you won’t be needing it for the e-learning resources. For “Reciprocal Borrowing Agreement” select “King County Library System” or whichever one applies. Submit the form and wait for a welcome email with card number.

(Edit: I didn’t receive a card number yet, but a reference librarian tells me: “Normally you’ll receive your temporary card number immediately and then receive a follow-up welcome email, but I’ve just verified with our IT folks that we’re experiencing some technical issues.” So, persevere!)

Step 2: Register on Treehouse

Once you have your Pierce County Library card number and PIN number (last 4 digits of your phone number), head over to the Treehouse Pierce County registration page and sign up for a new account. You’ll need to use an email address you haven’t already used with Treehouse, and you can sign up for a new one if needed with gmail or any free email service. I’m hoping that I’ll be able to transfer my existing Treehouse progress from my old account to the new one, and I’ll update when I find out if this is possible (but I’m expecting I’ll need to start from scratch).

Step 3: Be Classy

You’re now eligible to start taking classes or working on any of the Treehouse developer tracks that you choose! Here are some goodies:

  • Object-Oriented JavaScript with Andrew Chalkley
  • ActiveRecord Basics (for Rails) with Hampton Catlin
  • Harnessing the Power of VIM — I haven’t taken this one yet, but it’s on my list.
  • Learn Java Track — ditto to above (I did complete the Rails developer track)

With Treehouse, you get a public profile to show off what you’ve learned. Share yours in the comments when you successfully get registered!

Step 4: High-Five a Librarian

You probably want to hug them right now, but opt for an expression of gratitude that respects their personal space instead. Like maybe a nice note on Twitter about how awesome this partnership is that they can re-tweet, or go pay that long outstanding library fine you’ve been putting off.

——————————————————–

Happy studying, and spread the word! Got any favorite Treehouse courses? Link ’em in the comments!

*Title of this article from Tree House, by Shel Silverstein

2015 Year in Review

2015 was a banner year! It was a year focused on beginnings and new adventures: some carefully planned, some spontaneous, some scary, some sad, all worthwhile. I’m so excited to see where this year’s foundation takes us next year and all the years to come.

– In January, I quit my job, effectively pausing a decade-long non-profit fundraising career, to learn how to code. Since then, I’ve run the gamut of classes with Code Fellows, culminating with an 8-week intensive course in advanced web development in Ruby on Rails. I’m currently working with Code Fellows as a Teaching Assistant while looking for full-time opportunities as a software developer.

CFRoR2015

Code Fellows Ruby on Rails graduate class, October 2015

– We bought a house! I love our home in the heart of south Seattle’s Hillman City neighborhood. Living in a small space has forced me to focus on the things I own and what’s really valuable / brings me joy (yes I read that Kon Mari book). This was also the year I discovered Buy Nothing, which has made the process of giving away things I’m not using to people who want/need them much more enjoyable. We made some major (but un-fun) investments in things like securing the foundation. Next year I look forward to more aesthetic changes and improvements to make the house even more livable and enjoyable for us and our visitors.

Holiday spirit has arrived (yes it is wearing a lampshade hat and ready to party)

A photo posted by @marythought on

– I married my favorite person and we celebrated a joyous day with family and friends. Weddings are expensive, a headache, and come with a lot of familiar baggage, but I wouldn’t change mine for anything. The whole weekend was one of the best of my life. I especially loved how well Josh’s family and mine meshed together (a rare and wonderful thing).

11377149_10155528292160526_5453675706797037705_n

Married!

– We spent three weeks traveling around Greece and Turkey on our honeymoon, chronicled here.

20150605_161002

20150620_052756

– Starts and stops in growing our family — after experiencing an ectopic pregnancy this fall, we were thrilled to be expecting again soon after and sadly lost the pregnancy around 8 weeks, after seeing a viable pregnancy with heartbeat at 6. This experience has opened me up to a fellowship of “it happened to me too,” and radicalized me on women’s reproductive rights issues. The decisions to pursue or terminate a pregnancy should be between a woman and her doctor, period. I believed it before and believe it even more strongly now, having experienced some of the conversations and experiences that some politicians would like to legislate.

– My first Twitterbot, focused on the women who served as code-crackers at Bletchley Park during WW2, just passed 100 followers! I’ve heard from the children and grandchildren of veterans with pictures and more information about their relatives. In learning how to code in python, I accidentally created something that enables people to share their stories– I love this, and it’s helped me focus my programming goals on the desire to engage with work that’s both fun for me and valuable to a broader community.

twitterscreenshot

– I kept this blog alive for a year! Happy birthday, blog. I wasn’t sure how programming-focused I could keep the posts while still maintaining a readership and personal interest, but those have turned out to be some of my favorite posts. (I do appreciate that you let me blog about things like my honeymoon though, and I plan to keep doing that!) Some personal blog highlights:

My biggest goal for 2016 is to find sustainable work as a developer — so here’s a link to my resume, if you can help. Cheers and happy new year to you and yours!

reindeer games

Screen Shot 2015-12-26 at 10.52.12 PM

Happy December, readers! Christmas has come and gone and you’re probably over it already. I, on the other hand, am determined to keep making progress on the Advent of Code challenge, which has served as a happy distraction and learning opportunity this month. When I haven’t been teaching, applying for jobs, getting prodded by doctors (long story), and trying to land my first contract gig, I’ve been helping Santa and his team deliver the goods.

In the process, I learned about (and/or got more practice using):

  • object-oriented programming (OOP)
  • string manipulation & regular expression matching
  • MD5 hash conversion
  • bitwise logic operators
  • arrays and hashes
  • functional programming
  • algorithmic efficiency (Big O notation)
  • and more!

Over time, I built out my repo to include testing (for easier code refactoring) and input files (for cleaner code), as well as a README detailing my approach to each problem. I know it sounds silly–and did not impress my career counselor–but this was truly a great professional learning exercise, and I’m enjoying the opportunity to see how other people solved the problems and how to optimize my own solutions. In some cases, my approach works, but takes a long time to run. In other solutions, my approach works in theory but takes too long to return a solution. I’m still tinkering and will read up on the problems I didn’t solve before I put it away until next year.

One of my favorite exercises was Day 14, Reindeer Games, in which a set of reindeer are racing, and the objective to to find how far the winning reindeer has travelled after a given number of seconds. Each reindeer travels at a set speed (x kms/second) for y seconds, and then needs to rest for z seconds. To solve this challenge I took an OOP approach and considered “what are the Nouns involved here?”

  • We have Reindeer, each flying on a track, organized by a race. Reindeer have a name, a distance they travel every second, a fly-time and a rest-time.
  • Each reindeer flies on a Track, which belongs to one reindeer. The track knows whether its reindeer is flying or resting at any given point, how long it has been in that state, and what index it’s at on the track (how far it’s gone). The track knows how to advance a reindeer once per second depending on the reindeer’s state.
  • Organizing all this we have a third class, Race, which registers the reindeer as racers and has a “run_race” method that advances each reindeer for a given number of seconds. At the end of the race, it checks each reindeer’s track position to see who has travelled the farthest, and returns a distance.

This is my favorite type of programming to do, as I enjoy thinking through the “who knows about / controls what” in a given problem set. My solution isn’t necessarily the most efficient (though I have no real reason to believe that it’s inefficient, besides having to carve out an array with ~5,000 entries for each reindeer to mark the “track” on which they travel), but it’s straightforward enough that a non-programmer should be able to look at it and basically understand what’s going on.

Well, see for yourself:

Continue reading

Older posts Newer posts

© 2017 Mary Dickson Diaz

Theme by Anders NorenUp ↑