The Road So Far Pt II

Almost exactly a year ago, I first started writing about my pivot to working full-time as a web developer (aka The Road So Far Pt I). tldr; after dancing around the edges of embracing this career (in every possible way, for my whole professional life leading up to that point), it had become clear I wanted and needed to commit. I find that reflection is the only way to take stock of progress, and a year seems like a good time to look back.
Continue reading The Road So Far Pt II

Async patterns: Callbacks

So what is a callback function?

A callback function, also known as a higher-order function, is a function that is passed to another function (let’s call this other function “otherFunction”) as a parameter, and the callback function is called (or executed) inside the otherFunction. A callback function is essentially a pattern (an established solution to a common problem), and therefore, the use of a callback function is also known as a callback pattern. (Source)

Continue reading Async patterns: Callbacks

What is asynchronous JavaScript?

When people talk about asynchrony in JavaScript, what do they mean? First, a real-world example of an asynchronous process (summarized here, and originally here).

Imagine you walk into a coffee shop to get a latte. If they’re busy, perhaps you wait in line. When it’s your turn, you place your order with the cashier, and pay for the drink. The cashier writes your order — maybe even your name — on a coffee cup, and places it behind the empty (not yet fulfilled) cup of the person who ordered before you. Perhaps the shop is quite busy and there are ten cups ahead of yours. That queue of yet-unfilled coffee cups allows for the separation of the cashier (processing and queuing orders) and the barista (fulfilling orders based on the information supplied by the cashier). This queuing process results in increased efficiency and output. (The original source expands on the metaphor and is quite interesting). This is an example of asynchronous, non-blocking behavior.

Continue reading What is asynchronous JavaScript?

Intro to web accessibility

Through presenting at bootcamps, I’ve so far had the chance to expose over 100 devs- and engineers-in-training to web accessibility —- what are we really talking about when we say ‘web accessibility’, who does it affect, and what are some very initial considerations to take into account? This is a short blog recap, including the deck.

Update (7.29.2016): Slide deck updated.

Continue reading Intro to web accessibility

Data Structure: Trees and Depth-First Tree Traversals in JavaScript

What is a tree?

Trees are a commonly-used data structure in web development. You interact with a very common example of a tree every time you use your browser, likely without knowing it — the Document Object Model (DOM).

DOM tree
Source: w3schools

Continue reading Data Structure: Trees and Depth-First Tree Traversals in JavaScript

Resources: Getting started & beyond

When self-teaching, almost all of us start at the same point. Where do I start? How do I “pick a language”? What do I focus on? I know I did.

I recently started listening to the JavaScript Air podcast, and even more recently went back to listen to some of the earliest episodes. In episode 001, “Learning and Developing JavaScript”, Ashley G. Williams (@ag_dubs) makes a comment that caught my attention:

Continue reading Resources: Getting started & beyond

Quicksort

Quicksort is a sorting algorithm, used to place the elements of an array into an order. That order is based on comparison —  the things being sorted must have a “less than” / “greater than” relationship. (Source).

Continue reading Quicksort

Devume

I recently test-drove the ‘Devume‘ project from the wonderful and talented Justin Seiter, and wanted to briefly highlight the project.

Devume is the hackable JSON resume.
Fork it, tweak it, deploy it!

Devume is a starter repo for a fully JSON-based resume, using Webpack for code bundling and Handlebars for templating. In just a few minutes, you can spin up and host your own resume.

Continue reading Devume

Recursion

Oh, recursion.

There are two types of people, those who understand recursion and those who understand that there are two types of people in the world… (r/ProgrammerHumor)

But really. There seem to be people who can very naturally digest the concept of recursion, and those whose brains absolutely reject it. I happened to be one of the latter. In this post, we’ll go over recursion generally, and then work through a diagrammed problem example.

Continue reading Recursion

The Perks (+ Downsides) of Being a Generalist

On the one hand, I take pride in my being a generalist. My interests are too many and too varied to possibly limit myself to only a few. When I was younger I was a state-qualified tennis player, got straight-As, dabbled in debate and theater tech, edited my high school paper, played volleyball and was on swim teams. In the past few years I have been interested in journalism, teaching, print design, web design, web development (of all sorts: wordpress + php, ruby/rails, javascript), branding, email marketing, Chinese, knitting, crochet, yoga, German, running, guitar, weightlifting… Having such a grand spectrum of interests means you’re never bored.

It also probably means you’re not really good at something.

I enjoy being a jack of all trades– having knowledge of and being good at many things. But it plagues me to not be great at something. But with so much out there, how do you ever choose? How do you specialize? I’m fascinated by people who are so drawn into one topic that they are a literal expert.

This year, for my “new year’s resolution,” I decided to try to start paring down, starting with all volunteer projects. This sounds counterintuitive, I know. But signing myself up for all sorts of things and spreading myself thin only made things worse. It got to the point where I was trying to do so much for so many different people, that I couldn’t deliver. And in my opinion, that’s not good enough. So I’m trying to take some time to just figure things out.

For work, I currently manage website projects. Some of the projects I’m working on are so complex, that I felt I had to learn everything about everything. I should know more ruby, put it on the list. I should know more about data science and R script, put it on the list. I should

I was falling into the same trap. So many things that I felt I should learn, that I became paralyzed. So worried at not being good enough that I could barely function on anything. I’d jump from thing to thing, not really getting a whole lot done. I am a champion at jumping from intro tutorial to intro tutorial.

So back to square one, how to pare down? Identify and foster the things I’m genuinely curious about and interested in, for the right reasons.

  1. Be more mindful about work. Continue to do the best job that I possibly can, while maintaining a little more emotional distance from it. Fretfulness and anxiety doesn’t breed effectiveness. Give it everything, constantly solicit constructive feedback, adapt… but forget the rest. Don’t let it take over. Maintain balance.
  2. WordPress. I don’t need to know every programming language in the world. I got into web through a design route. I enjoy being able to actually implement. I eventually want to be able to confidently freelance on a small scale. Right now, I’m only confident about making static sites. Of all content management systems, I have the most knowledge of and support around WordPress. Forget everything else, and just mess around with WordPress, with no expectations at first. Be curious. Enjoy it.
  3. Stick with language learning. Deep in my heart, I miss interacting with a second language. I invested so much time into learning Chinese, and I enjoy it so much. Why did I let it drop? Because I was scared to not be able to maintain it after college. It terrified me to lose it. So I didn’t even try. So, I’m going to try to have no expectations for how good my Chinese should be. Instead of being afraid to talk to people with my broken language and instead drill character writing for hours (something I’m very comfortable with)– forget the writing. Why bother? The point is to be able to talk to other people. Be fearless with spoken language. Fail more, and care less about being perfect.
  4. Listen to my body. In all ways, I roller coaster. Running from thing to thing, when I think I’ll never be good enough at something. I love yoga. Do yoga whenever. I hate running in the winter. So run in the summer and don’t feel bad about the winter. I love weightlifting but I hate bro culture. So go when the gym is emptiest. Strategize to avoid the factors that make me likely to give up, or fail.

No matter what, whether I remain wholly a generalist or end up specializing in something, I just want to be at peace. I want to feel like all of the effort I put forth is getting me somewhere, instead of just another rotation around the hamster wheel.