Megan Taylor

web developer, hack-n-slasher, freelancer, news & data junkie, bibliophile, Flyers fan, sci-fi geek and kitteh servant

post

Django Girls NYC Lightning Talk: My Journey to Becoming a Developer

Django GirlsA five-minute speech given at Django Girls NYC on March 27th about my journey to becoming a web developer.

As a child, I took apart appliances in my home to see how they worked. I learned HTML from a boy in my middle school library aide period. I built Geocities websites for the fanfiction my friends and I wrote in high school. But after I saw the required math courses for a computer science major in my college course catalog, I got my degree in journalism.

I thought I couldn’t be a developer because I was so bad at math, I had to take remedial arithmetic in elementary school.

When, as the online editor of the school paper, I helped transition the paper to a new content management system and taught myself how to build simple webpages, I didn’t think of myself as a developer.

Journalism didn’t pan out for me, and I fell back on what I thought of as my meager web skills to pay rent and feed my cats. I figured I could teach myself anything I needed to know, since there were so many resources for learning to code online.

The problem is, before you know about the subject you want to learn, you don’t know what you need to know about the subject. You also can’t distinguish the good resources from the bad.

I read blogs and worked through tutorials and took every free online class I could find. And I kept hitting the same wall, where I wouldn’t know how to solve a problem, or I was getting an error and couldn’t find the solution online, and I would quit working on that project and do something else.

I took on freelance work and used the projects as learning experiences. This was dangerous, because if I failed to finish the work, a) I wouldn’t get paid, and b) it would damage my reputation. But I got lucky, and I learned a few things – HTML, CSS, and WordPress – really well.

When I built WordPress sites for small businesses, managed a national non-profit website and built responsive HTML emails, I didn’t think of myself as a developer. These were all things I taught myself to do through trial and error, or by copying and pasting snippets of code I found online, and bashing my head against a wall until they worked. That wasn’t developing, I thought.

Thinkful Logo

In the fall of 2013, I found out about a program called Thinkful. They were offering a Front-End Web Development class online, but unlike every other online class I had taken, Thinkful taught web development through a series of actual projects designed to teach fundamental programming concepts, and provided one-on-one mentorship. It was also much less expensive than the bootcamps I had seen springing up, and wouldn’t require me to quit my job to spend time learning. I signed up.

I blew through the HTML and CSS portions of the class, and then came JavaScript. JavaScript was my boogeyman. JavaScript was why I wasn’t a real developer.

I learned more in a week with Thinkful than I had in a month when I was learning on my own. The curated curriculum combined with a mentor who works in the industry was exactly what I needed: tell me what I need to learn and help me out when I get stuck.

While learning JavaScript with Thinkful, I built a guessing game, a shopping list app, and a quiz app. My Thinkful mentor was able to provide me with guidance in solving problems and reviewed my code to show me the best practices. Then I built two API-based apps: one to find Farmers Markets in New York City, using the Google Maps API and the Data.gov API,  and one to find out the length of time of a person’s commute, and then give them just enough news stories to read during that time, using the Google Maps API to estimate transit time and the NYTimes API to grab articles.

Thinkful showed me that I actually knew more than I thought in a lot of ways, but learning it in a formal way with proper terminology really helped my confidence and abilities.

Shortly after completing the course, I got my dream job as a front-end developer at an awesome company. I’m finally a developer.

Looking back though, I was a developer from those first experiments in middle school. Maybe not a very good one, and certainly a novice, but still a developer.

I still have days when I’m sitting at my computer, hitting keys and thinking “I have no idea what I’m doing!” But I’ve gotten comfortable with that. No matter what level of programming you reach, you are always going to encounter languages and bugs and frameworks that leave you feeling like a beginner all over again. Technology changes faster than we can learn. The key is to take a deep breath and get started. I’m still pretty bad at math, though.

post

How to add an SSH key to your computer

I spent an embarrassingly long time the other day trying to remember how to add an SSH key to my computer. The problem was that everything Google came back with involved generating an SSH key, where I had one that I needed to store on my machine so that I could get access to a server. So here are the steps I would’ve liked to find the other day:

1. Type cd into the command line to get to home folder.
2. Type cd .ssh to get into ssh folder
3. Type sublime keyfilename, where sublime can be any editor and keyfilename is whatever you want to name the key file.
4. Copy and paste the key into the file and save.
5. Profit.

post

2014 Recap

In 2014…

I got my dream job!
I took a lot of pictures of my cats, but not enough.
We got a king-sized bed.
We finally went to Coney Island. Twice!
Cleo got her first professional grooming.
I quit smoking cigarettes!
My cat allergies resurfaced.
I ate a lot of really awesome food.
I cooked some really awesome food.
I started playing Ingress.
I made some amazing new friends.
I walked more than 300 miles playing Ingress.
I got to see old friends I hadn’t seen in a while.
I went to the Catskills and crushed apples for cider.
I met my nieces on my husband’s side of the family.
I spoke at a Meetup for the first time, and it was awesome!
I built some cool websites.
I went to the Brooklyn Botanical Gardens.
I saw Bloody Bloody Andrew Jackson in a park in Brooklyn.
I saw GWAR for the first time.
I celebrated 4 years of marriage to my amazing husband.
I spent some quality time with my mom, including seeing A Gentleman’s Guide to Love and Murder while she was visiting.
Cleo turned 9.
Pixel turned 1.
And lots more!

Here’s to an awesome 2015.

post

Todoist tasks to Dashclock widget Tasker task

Wow that title is hella awkward. This is a writeup of how I got my tasks in Todoist to show up in a Dashclock widget using Tasker.

Pre-reqs:

  • Be using Todoist :)
  • Have an Android phone
  • Install and have some basic knowledge of Tasker
  • Install and have some basic knowledge of Dashclock

So, there is pretty good documentation for most of this around the Internets, I’m going to try to be as detailed as possible, but this is not going to be a fool-proof step-through. More of a guideline. Kinda like the painted lines on the floor in hospitals? Anyway…

ACTIONS 1, 2 and 3

After all my poking and prodding and rewriting, my task in Tasker starts by clearing some variables that will be created later in the task. So the first action should be Variable Clear, and set the name to %Tasks (or whatever, this is going to be an array that holds the final format of all the tasks you pull from Todoist). Then make another Variable Clear action and set the name to %Item (this is going to be an individual task that will end up in the array mentioned above). Then make a third Variable Clear and set the name to %Numtask (this is going to increment with the number of tasks).

ACTION 4

For your fourth action, create an Array Clear and set the name to %TLIST. OK, we’re done with clears.

ACTION 5

The fifth task is going to actually pull you tasks from the Todoist API. I used the /API/query request.

Please review the API documents and get your query URL figured out before continuing. Mine looks like this: https://api.todoist.com/API/query?queries=[“overdue”, “yesterday”, “today”, “tomorrow”]&token=tokentokentoken. It gives me all the tasks that have not been completed that are overdue, due yesterday (for some reason on my account, overdue does not include yesterday. i have been in contact with todoist support and they haven’t figured out why, but using the yesterday query takes care of that for this use case), due today, or due tomorrow.

NOTE: The Dashclock widget will only show the first 5 tasks from the combined list of tasks. If you want to show more, you can create a separate widget for each query.

So create a HTTP Get action and set it up like this:
Server:Port

https://api.todoist.com

Path
API/query
(or whichever request you choose to use)
Attributes
queries=[“overdue”, “yesterday”, “today”, “tomorrow”]&token=tokentokentoken

I didn’t change anything else for this action.

Have I lost you yet? Great! Onward!

ACTION 6

Now I’m going to give you some JavaScript. This was the hardest part for me to figure out, because Tasker doesn’t really support true arrays. So I’m giving you the JavaScript that will parse the query response (assuming you used the same one I did, if not, you will have to edit this). You need to get this into a file on your phone somewhere.

jsonData = JSON.parse(global("HTTPD"));

var y = 0;

if (jsonData[0].data[0] !== 'undefined') {
for (i = 0; i < jsonData[0].data.length; i++) {
setGlobal('TLIST'+y, jsonData[0].data[i].content);
y++;
}
}

if (jsonData[1].data[0] !== 'undefined') {
for (i = 0; i < jsonData[1].data.length; i++) {
setGlobal('TLIST'+y, jsonData[1].data[i].content);
y++;
}
}

if (jsonData[2].data[0] !== 'undefined') {
for (i = 0; i < jsonData[2].data.length; i++) {
setGlobal('TLIST'+y, jsonData[2].data[i].content);
y++;
}
}

if (jsonData[3].data[0] !== 'undefined') {
for (i = 0; i < jsonData[3].data.length; i++) {
setGlobal('TLIST'+y, jsonData[3].data[i].content);
y++;
}
}

Create a JavaScript action (this will be number 6) and set the path to wherever you have stored this file on your phone.

ACTION 7

Create a seventh action, Variable Set. Name should be %Numtask and To should be %TLIST(#<)+1. I don't know why, but it works for me.

ACTION 8

Number eight! Create a For action. Set Variable to %Item and Items to %TLIST(0:).

ACTION 9

Your ninth action is part of a for loop that was initiated by number eight. Create a Variable Set action. Name is set to %Item. Leave To blank.

ACTION 10

For the tenth step create another Variable Set action. Name should be set to %Tasks and To should be set to %Item.

End the for loop with your next action. (Seriously, this is action number eleven, create an End For action).

ACTION 11

FINALLY. Create the Dashclock action.Set the title to %Numtask Tasks in order to display a title above your list in the widget that will say "N Tasks". Or leave it blank. Whatever. Set the body to %Tasks.

Now you have to add this task to a profile. I hope it works for you. Feel free to ask questions, suggest better flow/code or whatever.

post

This month, CSS turned 17 and JavaScript turned 18

Much has happened, both to CSS and the Web, since those days. But on its 17th birthday, I’d like to acknowledge the creators, custodians and champions of CSS in those early days. These were the days before blogging (in any mainstream sense), twitter, and other social media. Indeed, these were the days of newsgroups, the water cooler of the web for its first decade at least. And many of the most important figures in the development, and success, of CSS (and as a consequence the modern web) are little known, though they are the giants whose shoulders we all stand on.

by John Allsopp via Web Directions.

The JavaScript community is moving ahead, often with its usual dramatic “two steps forward one step back” dance, with detractors now being more vocal. JavaScript is no longer the underdog, but the establishment. Keeping that upstart “everything is possible” mentality going for as long as possible will be the challenge of the next 18 years of the language, as it heads into adulthood with a new-found confidence.

via Resin.io.

post

Stupid, Lazy Programmers?

“It may sound amazing, but you could be a better programmer if you were both lazier and more stupid.

First, you must be stupid, because if you are smart, or if you believe you are smart, you will stop doing two of the most important activities that make a programmer a good one: Learning and being critical of your own work…Second, a good programmer must also be lazy because only a lazy programmer would want to write the kinds of tools that might ultimately replace much of what the programmer does…Perhaps paradoxically, the road toward effective stupidity and laziness can be difficult and laborious, but it deserves to be traveled in order to become a better programmer.”

By Mario Fusco via Be Stupid and Lazy – Programmer 97-things.

Related:

Why Good Programmers Are Lazy and Dumb by Philipp Lenssen.

How to be Lazy, Dumb, and Successful by Jeff Atwood.