Mary Dickson Diaz

Code, Life, Learning

Author: mary (page 2 of 11)

report from railsconf

This past week I was fortunate to attend my first major conference as a software developer, under the RailsConf 2016 Opportunity Scholars & Guides program. Look at these cuties!


Here’s me with my awesome guide Jason:


And some sticker swag:20160508_110123

Continue reading

“we didn’t think about it”

Oh boy, readers, you are in for a treat. Today I found myself thinking simultaneously 1. “gosh I haven’t blogged in a while” and 2. “wow I’ve been doing a lot of yelling on the internet.”

So let’s talk about some praise-worthy and “what were they thinking” situations and why I’ve started being more mouthy. (And by “yelling” I mean giving people politely phrased but tough and mostly unsolicited feedback.)

Exhibit A:

Text box saying: NICE GUYS "Yep, that's right. We're just straight up nice guys. Developers your mom would want you to work with."

I got a LinkedIn recruiting message asking me to check out this website, which I did and I found the bullet point above. To confirm my hypothesis that no women were involved in this design decision, I did a search on their own site and LinkedIn and found 0 women out of 16 current or former employees. I responded saying that I wasn’t interested, and that if they planned to pursue female developers (which I hoped they would!) they might consider changing this language. I wasn’t sure what kind of response I would get but I expected to be told that they meant “guys” generically and I should lighten up, and I braced for impact.

Instead of talking down to me, the person thanked me for the feedback and said that he’d have his team look into changing it right away. By the end of the day, their website looked like this:


Kerning issues aside, isn’t that much better? I don’t want to give the guy too many accolades for doing the right thing, but I was surprised and impressed with his solutions-oriented, non-defensive reaction. I was like, yo, this is a business problem for you, and he was like: wow, you’re right, and thank you for telling me.

RIDING HIGH ON A WAVE OF SUCCESS AND POWER, I decided to fix some other parts of the internet.


Exhibit B:

The email LinkedIn sent me was titled “15 Questions every Rails developer should ask himself.”

BE IT SO NOTED: This email came to me. I did not go out looking for examples of sexism in tech channels on the internet. It arrived to my personal email account demanding attention from me and who knows how many other of the 60,000 members of the Ruby on Rails LinkedIn community (some of whom, I wager, are not men).

SUBMITTED FOR ADDITIONAL CONSIDERATION: The last time I responded to someone’s use of “guys” for a multi-gendered group (the group in question was actually entirely female) by suggesting that “all” would be a more inclusive language choice, I got a 4 page essay private messaged to me about how I hurt this person’s feelings by correcting him in public, and how he works so hard to help women and setbacks like this make him not even want to try, and on and on and on. He did not understand why his public comment might warrant a non-confrontational, polite, public response from me. People, it seems, would much prefer that you call them out on their💩 in private.

But I was high on power and also I can’t keep my mouth shut, so I prepared for the storm 💩🌂:

A blog post titled "15 questions every Rails developer should ask himself"

This response is fine. I would prefer he correct the actual article in front of us, but I’m willing to give the benefit of the doubt that LinkedIn makes that difficult. I’m also impressed with the Rails community for not piling on, though this was quite recent and time will tell.

Exhibit C:

The last and latest comes from our friends over at Hired, who — for those keeping score — rejected me and my friends from their job seeking site after we put a few hours of effort into building a profile, and then sent a “we’re sorry” email that concluded “and could we ask you to recommend us to your more experienced friends?” thus no longer serving as a “we’re sorry” email at all.

Hired is a RailsConf sponsor, where I am thrilled to be heading next week as an official Rails Scholar. RailsConf is planned and organized by some truly lovely people and I have been enjoying connecting with the scholars, a diverse group of fellow newbies to the Rails community.

Which is why it was so disappointing that in user stories highlighted on their RailsConf promotional page, Hired included only three women and less than 10 people of color, all requiring a deep page scroll to uncover. In fact the first 16 profiles are all white men.

I wasn’t the only person who noticed the sea of white male faces, either:

A tweet exchange

Can I get that in a block quote?

“We didn’t think about it” is always a disappointing excuse for glaring lack of diversity. – @HayleyCAnderson

As it was in the beginning, is now and ever shall be, world without end, forever and ever, amen.

For the record, their eventual response:

…is one step above “Sorry u were offended,” a step below think about it and don’t say anything at all, and miles below “thank you for bringing this to our attention, we’ll take immediate action to rectify the situation” (and then do it) like my friend in Exhibit A.

Closing Statement:

So much of what I’ve shared in this blog post, and other incidents I’m not sharing, is carelessness — a case of not thinking, of limited perspective, of not getting feedback from the right people before hitting “send.” A lack of knowledge of how far your message will travel and who it might inadvertently knock over on its journey.

I have started vocally, publicly (if the offense is public let the correction be public, says I, so we can all learn), pointing this out to people — and so far I haven’t gotten buried for it. The ability to do so comes from a place of privilege (I am, after all, white, well-connected, and financially secure enough to speak up without concern of losing my job) but also of confidence —

I’m starting to identify more as a developer everyday, and so the injuries feel more personal.

You tracked this mud in my house. You’d better believe I’m gonna say something.

Internet! What mouthy battles are you fighting this month? Share ’em so we can cheer you on!

<3 Mary

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!

the gig is up

wocintech stock - 42

photo via #WOCinTech Chat

I landed my first coding gig!!

Long-time readers know that my job search started out with a bang back in November, marinated a bit over the winter holidays, and then resumed in full force these past few months.

Throughout it all, I had some heartbreaking near-misses and some real low points of thinking, “this will never happen for me.” My instructor helped connect me to a potential contract project that didn’t quite get off the ground but led me to develop a cool app anyway. I flirted with some near-coding opportunities like writing code school curriculum and Salesforce development before narrowing my criteria for what I’m looking for. I met other kind and well-meaning people who made a bunch of introductions, and followed those rabbit trails where they led.

And thanks to one of those introductions (which happened not as a result of going to meetups, though I did that too, but rather the practice of “find and follow cool people on Twitter” which I have been doing for YEARS), I met the team at ReadyPulse, a Bay Area/Redmond-based startup where I start Tuesday as a Ruby on Rails development engineer in test.

I’m so excited that I’ll get to continue to work in Rails, expand my knowledge of software testing, work closely with the client support team to understand and troubleshoot issues, and work with a small development team to ensure new features behave as expected with full test coverage. And at a market rate!! (Add to the heartbreaks: the company that wanted to pay me $35k a year to join them as a junior developer, and the company that rejected me from their job seeking site.)

As is not unusual in this biz, I’m starting out on contract for three months, with potential to convert to a salaried position (and possibly move from testing into feature development at that point) if we both agree it’s a good fit.

Some highlights from the interview process:

  • After being e-introduced, the VP of Engineering invited me to come to the office and after some chit-chat he had me do a whiteboard exercise where I built a simple Rails application. This was actually my first whiteboard experience outside of the Code Fellows practice environment, and it went really well. My interviewer was patient, supportive, helped when I got stuck, and didn’t ding me too badly for some minor syntax errors. After I got home, I built the actual app and sent him a link to a Pull Request so he could see 1) I know how to use GitHub and isolate my code changes in readable fashion and 2) that I paid attention to what we talked about and had the follow-through to create a functioning app.
  • He replied that the app looked good, and did I have any tests for it? So I added tests.
  • I did a second whiteboard exercise with the CTO that was similarly positive and even a little bit fun. At one point I was doing the talk/think out loud thing and I told him I couldn’t remember if Ruby hash supported the “shift” function and he was like, “oh, you can look it up on your phone if you want.” And I was like, “SERIOUSLY?” And he was like, “yeah, real programmers use Google. Go for it.”
  • When my interviewer was discussing the position with me, which involves writing tests and quality assurance for two versions of their software, I asked him “how’s your technical debt” LIKE A TOTAL BOSS and he was like “oh, good question,” and his response led me to a deeper understanding of the situation and excitement to take on the challenge. It is a giant milestone to know enough to ask good questions.

There’s still a lot of unknowns in the future, but I consider this a big step towards the career I want to build as a developer. I’m grateful to Code Fellows for my training, to my partner Josh for supporting our family during this transition, and to friends new and old who cheered for me along the way! I’m gonna keep building my network and do my best to help other new coders find opportunities to get into industry quickly — there’s no better way to keep learning than on the job.

I had one of these to celebrate and I invite you to join me!

Root beer float


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.


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


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.


Pebbles, perhaps a precursor to the Mars Curiosity rover?


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.


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


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


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, 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


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,, and hope that they will also go check out, or vice versa. Awkward.

The WordPress API allows me to import blog posts from and render them as a tab on 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


“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


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.)


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 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.


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.

« Older posts Newer posts »

© 2023 Mary Dickson Diaz

Theme by Anders NorenUp ↑