Mary Dickson Diaz

Code, Life, Learning

Month: January 2015 (page 1 of 2)

the importance of project-based learning

Good morning, scholars!

Today I want to reflect on the last two weeks of self-teachiness: some wins, challenges and lessons learned.

The first big win I mean *huge* was actually leaving my job to pursue this. I’m incredibly grateful for my most recent experience at UW and everything that came before, and to some extent I’ve been working on crafting my “story” based on past exposure/experiences that have pushed me gently towards the idea of technology as a tool for social change. But, I could also go work for an org that has nothing to do with any of that, and that would be allowed. I’m feeling validated this morning by a quote from Andrew Sullivan, blogger pioneer:

I’ve now been blogging daily for fifteen years straight… That’s long enough to do any single job. In some ways, it’s as simple as that. There comes a time when you have to move on to new things, shake your world up, or recognize before you crash that burn-out does happen.

Let my narrative be one of “she picks up on things fast, she seeks out additional resources, she works well in teams, she’s service-oriented, and she works super hard and achieves results.” That I’ve already proven these things in non-profit settings is of no consequence to someone who wants to hire me to write JavaScript (though it matters to me). I am not, as I introduced myself earlier this week, “a fundraiser,” but a teacher and fast learner with a passionate desire to build stuff.

A second big win was building a Twitter bot! It’s not yet fully-automated like I had intended: because heroku re-sets daily, I have to update and re-upload my text file once a day, deleting the names that have already been tweeted. There is probably a code solution for this, I just don’t know what it is. This is a great project for any one of the “come have drinks, bring your projects!” meet-up nights on my calendar now. Plus, going through the motions of re-committing the project daily has upped my comfort level with git and heroku, both of which will come in handy later.

Which brings me to a key lesson learned: project based learning as key to staying interested, engaged, and moving forward. When I was building the bot, I couldn’t *stop* building it until I just about fell over from exhaustion. In comparison, the last two days have been just focused on working through the code academy tutorials, and I’m feeling exhausted from boredom. (37% done… ok, now how much…. 39% done ARGH….) As a side note, the MIT intro to programing MOOC seems to have a nice combination of guided learning and autonomy. Recommended!

Next week I start my first Foundations class with Code Fellows here in Seattle, and am excited to meet my classmates and start building that community. Despite feeling some online tutorial fatigue, I am super impressed with all the pre-work they’ve provided to help us maximize our in-class time.

Looking for project ideas to stay engaged? Check out these resources:

1. Dash by General Assembly – build a website, a tumblr theme, a css robot, and more

2. Martyr2’s Mega Projects Idea List – tackle these in your programing language of choice!

3. Joel on how to make an eBooks bot – this is a great first twitter bot, and *bonus* should not require daily updating since the text pulls are randomized (uses ruby)

And finally, this month Josh and I went to a local performance of Hands Up: six personal and powerful monologues by contemporary black male playwrights. The original CUNY performance is available online and it’s a must-watch. A few days after the show, I read about NY Times journalist Charles Blow’s son being stopped *at gunpoint* outside the Yale Library because he “fit the description”–three words more chilling to me now than ever before. Set aside a few hours and give this one a watch/listen.

disruptive web development education

Last night, I went to an info session hosted by General Assembly and with representatives from Code Fellows and Ada Academy. I’ve written about the latter two before (all about bootcamps), and while General Assembly is a new find for me, they also have a strong reputation and a variety of classes for learners at all levels. This is a great trio to have in our city!

The panelists mostly confirmed what I already knew: disruptive web education (that is, learning that occurs outside of a traditional university degree program) is real, it works, and it’s here to stay. For people already working as software developers and programmers, it’s frequently necessary to stay relevant.

I was especially buoyed by the Ada panelist who shared, “I was living in the Bay Area, I had just quit my job and was teaching myself Python… now I have my choice of internship options” <–MY PEOPLE~!

I created a bit of an awkward moment by asking about the similarities/differences between the CF and GA accelerator/immersion (3 month) programs. They were diplomatic but didn’t go into details. Here’s a little chart with what I can gather from web research:

School pre-reqs length cost topics job guarantee?
Ada application–women only; newbies ok 1 yr w/6 month internship free Ruby on Rails; JavaScript; html/css; git no (but everyone gets one)
GA application–newbies ok(?) 10-12 weeks $9500-$11500 web development; user experience; other topics w/no scheduled dates no
CF application–fundamentals experience required; newbies directed to foundations classes 3 months $10000 python; ruby on rails; ios; full-stack javascript; web ui yes

So it looks like the big difference is whether or not GA takes newbies for their immersion program–the trade-off being that they will not guarantee you a job after. CF does, because they can be super choosy about who they admit. A prerequisite for admission to one of their accelerator tracks is “hobbyist” level understanding (roughly 1.5 years tinkering with it, gulp) of your stack. CF and GA also offer a wide range of day-long – month-long full and part-time options. Ada does not. (Yet!)

As a take-away, I’m currently enrolled in CF’s April month-long Foundations bootcamp (which has some overlap with the Foundations I class I’m taking in February) and may seriously consider switching to GA’s web development immersion in March. I’m also planning to apply to Ada.

Other useful info I picked up:

  • If you are only going to learn one programing language, make it JavaScript. JavaScript is all the rage and knowing it will make you infinitely more employable. So, learn JavaScript.*
  • After JavaScript, Node and Angular. Know them. Use them. Love them. (This is the first I am hearing of either.)
  • This is huge: the next Ada application cycle opens SOON! February, in fact. They are not super great w/transparency about the process on their website, but they’re still new and I am confident that will change with time. Next cohort begins in May. I sense this is a pretty competitive application process. Also worth investigating: hackbright, a 10 week option based in SF.

*Thanks to Jessie for pointing out that Java and JavaScript are two different things.

I just completed the html/css Code Academy web track and will be working on a secret, non-Wordpress website soon (as well as, sigh, learning JavaScript). Stay tuuunnnned.


This week, I’m shifting gears a bit to knock out the html/css prework required for my upcoming Code Fellows Foundations I class.

The Code Academy html/css track gets the job done, but is a bit tedious. Often they ask you to “create a paragraph” “make three links” “add three pictures that link to webpages” etc. Since it’s all practice and not a real page, there’s a lot of ‘hello I am a heading’ ‘I’m a new paragraph and here’s a link’, ‘I’m a list item’, ‘me too’ and pictures of bunnies linked to BORING.

Ok so you’d like some more interesting text/pictures to use while doing your tutorials? Check these out…

ChaoticShiny: random RPG themed text generator. I’m fond of “constellations”: “These eleven dim stars form the shape of a winged man. The constellation represents a prophesized messiah.”

Random Text Generator: don’t care for LARPing? Ok fine, here is plain boring text. But at least you don’t have to write it yourself. free high-res photos for either corporate or public use. (You can also search google images for photos with creative commons license, but this is easy.)

Lorempixel: you specific a size and theme, it spits out a picture. Choose a “random” option for a picture that changes each time it loads!

Placekitten: ” ” (with kittens)

Random User Generator: I haven’t used this yet, but gives you a random profile for creating social media tools, I guess. Cool! …stop clicking through the pretty colors and get back to coding, Mary.

finishing the bot

finishing the bot
how you have to finish the bot…
how you watch the rest of the world from a window–
while you finish the bot

mapping out a .py
what you feel for twitter’s API
what you feel when errors that come through heroku go

“tweet status update failed on third try…”

I have been watching Stephen Sondheim musicals basically non-stop and this song seems most appropriate for the past few days. “Oh there’s a new lecture out…. BOT.” “I should get started on that javascript pre-work…. BOTBOTBOT.” “It’s 2:30 in the morning…. BOOOOOOOTTTT”


My bot is now deployed and fully-functioning out in The Cloud, thanks to Joel!

>>Ok I have a twitter bot and I want to run it but not from my personal computer, help

The above link tells the story of how I went from here (functioning bot, living on my laptop) to here (functioning bot, living on GitHub/running on heroku). First, you’ll need to install heroku and follow the directions to get started, here. After that, follow Joel’s directions and you’re golden.

I hope you didn’t have other things to do today.

UPDATE 6/25/15

This is part 2 of the tutorial.

Part 1: Build a Twitter Bot with Python

Part 3: Top Bot

build a twitter bot with python

This year I set out to learn how to make twitter bots, accounts that automatically interact with twitter in some way, whether through tweeting set content at regular intervals, watching for and responding to code words, or responding in a certain way when tweeted at. I learned the basics of Twitter API interaction at UW’s Community Data Science Workshop last November, and have since been inspired by other people doing cool stuff with bots.


For more great examples, check out 52bot project.

A few nights ago, as I was reading about the reunion of the women of Bletchley Park, I clicked through to the Honour Roll and found a database that looked like it might translate well into a twitterbot. Using a subset of data and some internet tutorials, a test bot took maybe an hour or two tops to set up (and I was so thrilled when it worked!). The time-consuming part has been 1) finding a way to reliably keep it tweeting; and 2) pulling and cleaning up the full dataset to fit twitter’s 140 character limit (in my test run, I just told twitter “print the first 140 characters and ignore the rest” but for the full deployment, I wanted to edit the longer bios to make them fit).

Ok, so without further ado, here’s the bot:

And here’s how I made it!: Continue reading

Bletchley Park Commemorative Badge

Bookmarked this week:

  1. Emotional reunion after 70 years for Bletchley Park veterans – I haven’t seen Imitation Game yet, but I did watch (and enjoy) Bletchley Circle. So inspiring to see the real Wrens here reunited and as sharp as ever. Click through the image above to peek at the Roll of Honour. (Also, that looks like it might make a great Twitterbot project… hmmm…)
  2. Retiring Python as a Teaching Language — James Hague makes a case for learning JavaScript first. I can commiserate with the sentiment of “but what can I doooo with Python” — I’m trying to figure out a way to get my neat-o credit card program onto this webpage in an interactive format. I started playing around with django, which I think will let me do that? But there could probably be an easier way.
  3. 10 things you need to know before applying to a code school — and if you’re in Seattle, you might want to attend “A glimpse into disruptive web development education” next Tuesday evening, with representatives from General Assembly, Code Fellows, and Ada Developers Academy, including instructors, students, and business development partners from the hiring side, discussing their respective education models.” It’s like they planned it *for me*. Do not miss!
  4. Programing doesn’t belong to men (it belongs to me) – by Julia Evans. Get it, girl.

question set 2: things get interest-ing

First, an update on the MIT Python course — y’all, my MOM is taking it too. How cool is that? Mom has a full career behind her in computer programming, technical writing and online learning, and she’s also Mensan-level puzzler, so naturally she is 1) kicking my ass and 2) taking issue with some of the courseware issues (and by extension, other people in the class).

I agree that the “discussion” aspects of the class are not great, something like 1,000+ 50,000+ people are enrolled so it’s best to take the comments with a grain of salt, and find some support that you trust. Quick aside, the guy who was like: “What is paying off credit card debt?? I do not understand this concept” — maybe has never known debt or has never known credit cards, or just didn’t understand how the question was worded? Anyway it made me chuckle.

So, this MOOC format probably doesn’t take advantage of best practices for online learning. But it’s free and exposing lots of people to something new, so I suppose you get what you pay for. I’d still recommend the class, just not as a stand-alone or a substitution for a full-on college degree (I have one already).

Ok, back to problem set 2 — paying off credit card debt. I am exceptionally proud that I completed all the programs in this set totally by myself, and for something more useful than “find ‘beeeegh.'” SO PROUD in fact that I failed to read the directions and wrote an entirely different program from the one they asked for. My friend Ian commiserates:

Continue reading

“and the greatest of these is z”

Photo credit: DuBoix from

Whaddup, Python people. My first homework assignment for MIT’s Introduction to Computer Science and Programming Using Python was due today, testing our knowledge of simple algorithms (“for” and “while” loops). Spoiler: it was hard, and I cried. Also, Python has a funny way of ranking the English alphabet.

The first two homework questions were similar to problems I have encountered before:

1. Given a string of letters, count the vowels (assume all are lowercase). Here’s one answer:

Continue reading

the state of the code

Greetings from my last day of work!

A few things have changed since I drafted The Plan, as I expected they might. First, I got a list of textbooks for the class I am taking in February, and it appears we’re learning Web Design with HTML, CSS, JavaScript and jQuery Set (front-end programming languages).

This is nice because I started the MIT online class which is intro to computer science and programming using Python, which is a (mostly?) back-end programming language. I have homework due on Monday. I was rolling right along and then in lesson 3 we hit a pretty steep learning curve, my first indication of, yikes, this might be hard.

In light of this, and the fact that I’ll be trying to juggle two similar but distinct programming languages, I may abandon the wizard book. (That, and a programmer friend was like: “The wizard book?? Dear God, woman. Abandon that immediately. Cool videos though!”)

Said programmer friend then dispensed three pieces of wisdom, which I will share here in condensed form:

1. Programming is really cool because you get to build things. It’s nice to make something, and then show someone, and say “I made that.”

2. The majority of time in programming is spent trying to correct errors, and find what’s wrong in a given code, and deal with agonizing syntax issues like a missing comma or misspelled function. If that sort of thing sounds like zero fun to you, you may want to do something else.

3. There was a third piece of wisdom, but I have forgotten it. So, I’ll replace it with this: find and talk to programmer people, get yourself some mentors (and maybe do a better job of taking notes when they are dispensing with the wisdom).

Off to turn in my key. Adventures ahead!

don’t quit your day job (unless you’re quitting your day job)

light at the end of the tunnel…


Here in my last few weeks of work I’ve experienced a lot of “what’s next for you?” conversations where I awkwardly try to explain that I’m working on a change:

I’m learning how to code
I’m exploring careers in software development
I’m going to be a data scientist… but, you know, for good

Continue reading

Older posts

© 2017 Mary Dickson Diaz

Theme by Anders NorenUp ↑