This page is in progress…forever. It’s currently an evolving personal history/timeline and an FAQ.
Reading this list is a good recap of my life, and you can click into a specific section or scroll through it all!
Career Timeline (so far)
I have grand ideas for making this section a cool timeline-kind-of-thing, but you know, content first!
2000-ish / age 11-ish – First exposure to HTML via the game “Horseland”
I grew up on a farm in southwestern Pennsylvania outside of Pittsburgh. Although we had llamas on our farm, I was a horse-loving kid. I played an online game called Horseland (which sadly no longer exists). On a family trip to Barnes and Noble one time, my mom bought me “HTML for Dummies” and I learned to customize some colors on my Horseland profile.
I don’t think I touched any code after that, until…
2009 / age 20 – Had an idea for a video game in art school
I went to college for art. I started at the University of Colorado at Boulder and focused in printmaking from 2007-2009. My work was oriented around a strange spiritual satire and, even though I never played video games other than the Sims, I was sure the path for this project was to become a video game.
At CU Boulder, I would have had to start a new major to take any coding classes and, more importantly, the life I had in Boulder was not conducive to school work (recreational drugs, skiing). My parents were extremely supportive, and I transferred to a tiny art school in Boston, called SMFA, that had a self-directed curriculum and a partnership with a regular university. I took an elective class, “Intro to Video Game Development in Python,” and built a version of the game using a framework called Pygame.
Of course, I needed a website for the project. With my earnings from my job as a computer lab monitor, I paid a fellow student’s boyfriend $10/hr to tutor me and help me build the website. Ten plus years later, that website still works! Hooray for the web! You can look the site here, but I’m beware you, it’s weird stuff. There is a link to the Python game on that site, but I am not telling you where it is. I also took a class in Flash, taught myself some ActionScript, and created bizarre interactive animations of the game characters that, I think, will not run because Flash is no longer supported.
Now that I know so much more about programming, someday I hope to really make this game!
2011 / age 22 – Rebuilt a WordPress Theme in an internship
At the art school in Boston, I took some classes with Steve Lambert, who encouraged me to learn WordPress development. I did an informal internship with him for one semester where I rebuilt the WPFolio WordPress theme, a theme for artists’ portfolios.
I’m happy to say that I did rebuild the theme and learned skills that enabled me to operate a successful freelance business for the next seven years. I’m sad to say that I never really finished the WPFolio project to the point that it could be on the theme repository, and I did not maintain it. The theme had a sizeable user base and filled a nice niche, but I dropped the ball on that one.
2015 / age 26 – Failed FizzBuzz in an interview and wrote about the experience
Coming soon! In the mean time, see this post.
2017 / age 28 – Learned computer science for an algorithms interview
Coming soon! In the mean time, see this post.
2018 / age 29 – Said good-bye to freelancing, hello to PMC!
Coming soon! In the mean time, see this post.
2019 / age 30 – Spoke at a lot of conferences, figuring out my thing.
Coming soon! In the meantime, see this post.
Other notes:
- Major progress on Larva, the design system at PMC.
- Had a mental breakdown in August – I over-did it on the conference speaking and travel.
- Ran the NYC marathon!!! This was a big deal.
- Read books about race, and started the process of learning to recognize oppressive systems.
2020 / age 31 – I thought my thing wasn’t my thing…then realized it most definitely is my thing.
Like many people, I went through a racial reckoning in mid-2020 following the murder of George Floyd. Things in my life I previously found meaningful seemed selfish and benign, and for a good six months, I dropped my tech side projects and focused on local activism, and doing the internal work of unlearning the lies of white supremacy.
Thanks to weekly therapy sessions and resources and community from What’s Up Pittsburgh, I came full circle in 2020, and began to revisit my thing with a much more developed understanding of the world. “Is CSS a programming language?” is definitely a meaningful question, and with a bit of tweaking and ego-checking, this topic can be the foundation of very important work. I started to write a book.
More about 2020 here.
2021 / age 32 – Piecing together a career change.
This year started as the year of math, as in mathematics, and monsters, yes these monsters, then morphed into writing a book, and following a period of burnout and discontent, evolved into my applications for Ph.D. programs where I wrote about a vision for computing education accessible to people who are incarcerated. And…I got married! What a year!
2022 / age 33 – 2 more weddings and moving to Atlanta for a PhD!
Career change is…real! I will start a Ph.D. in Human-Centered Computing at Georgia Tech in August 2022. I will be working with DataWorks and Betsy DiSalvo in the learning sciences focus. At least to start, I will be working on a training curriculum for the data workers that equips them with computing skills that apply to positions beyond DataWorks.
Believe it or not, spreadsheets and CSS have a lot in common, and I’m really excited to figure out the words to talk about it. The vision I described in my Ph.D. applications, to create computing education accessible to people who are incarcerated, still stands. It will take some time to get those pieces in place, but that’s still one of my long-term visions.
I’m still doing the internal work of unlearning the lies about the lies about the lies about the lies of capitalism and white supremacy. Yes, it’s very confusing, and it’s forever.
Finally, this year I am very committed to learning the Nepali language (my husband is from Nepal, so there is added benefit to this endeavor besides the general benefits of language learning).
Will add more about the 2 weddings at some point.
Fun and Informative F.A.Q.
Full disclosure: some of these are not frequently asked questions and are either things I want you to know, or are just silly.
(date unknown): Some granola with yogurt, dried cranberries, and peanut butter.
Feb 12, 21: Yogurt with nuts, blueberries, and some honey.
Dec 9, 21: It’s called “satu” and is like a Nepalese protein shake: ground dried grains, nuts, and fruits, mixed with milk.
Jan 29, 22: Just coffee so far. Will have breakfast as part of lunch.
May 4, 22: Raisin bran and ground flax seed (wow, ground flax seed…do you know what I mean?)
July 22, 22: A small piece of pesto breakfast pizza at a hotel in Jersey City.
Check out my Now page!
Larva was my nickname in high school. I drove my parents’ minivan around town, and my friends called it “The Larvan”. Through a chance set of events, “Larva” was proposed as the name of the design system I started at my job. My team seemed to like it, and I couldn’t think of an alternative, so now Larva is also the name of the design system behind the front-end of some high-traffic WordPress websites.
Thanks to Bruno for asking this question in an email.
Why stop freelancing? I wanted to be invested in a team and the long-term improvement of a codebase vs. working as an outsider, from project to project. I also wanted to improve my technical knowledge through work on larger codebases with more formalized processes so that I could later consult with teams on these topics. I definitely think it was the right decision because I am well-equipped to return to independent work, and I have a lot more knowledge, confidence, and credibility. I also saved a lot of money, and that will give me a lot of freedom later on.
Was it the right choice? Absolutely, but I never had long-term plans to stay with this job or any full-time job. I had freelanced for about seven years and I wanted to have a new experience, and now I’ve been able to save up and prepare for a new direction (I am currently applying to graduate school for a Ph.D.) It’s a really cool experience to work on a team and learn from/teach other developers. I recommend it, but I also realize it’s not what I want to do in the long term.
I will say though, as I work on my future direction, the work I did outside of my job is what matters most e.g. meetups, open-source, and conferences. So, while my job has been important for personal and technical growth, it’s not the source of my credentials for my future direction.
The process of writing the book led me to apply to graduate school. I realized that even though I sort of answered some of my questions (what is a “real” programming language? well, it’s what people think is a programming language), I have a lot more questions and this is a bigger undertaking for me. Maybe my book will be my dissertation, generally about how exclusion from computing and gatekeeping is a symptom of historical systems of inequity. In that case, it will hopefully be released in 5-6 years.
If you ever see me in real life, ask and I’ll give you one! If you aren’t going to see me in real life, you can buy one here, and I’ll mail it to you.
Statement of Purpose/draft of Chapter 1 of my future book
I was 11 when I first encountered programming through an online game called Horseland, “A fun game where you can own, ride and show horses”. It was 2000, and although my family’s farm in Pennsylvania raised llamas, I was obsessed with horses. On Horseland, I wanted to change my profile from pink, to my favorite color, royal blue. According to the website, I could customize the profile design with something called HTML. On a trip to Barnes & Noble with my mom, I used my allowance money to buy an early version of HTML for Dummies. After some trial and error, I changed my stable’s background color, changed the font color to white, and changed the font family to Comic Sans MS with inline styling. After that, I didn’t touch a line of code for almost a decade.
In 2009, as an undergraduate art student at a tiny art school in Boston (SMFA), I found myself again with the need to learn programming. I had recently transferred after completing my first two years of college at the University of Colorado at Boulder (CU). As a studio art major at CU, I created a cast of characters through my printmaking courses, and I was committed to figuring out how to make them interact in a video game format. There were no coding classes I could take at CU that would count towards my degree requirements. This frustration and mental health challenges prompted me to transfer to a school closer to my family with more freedom. At SMFA, the curriculum was exceptionally flexible and I could access elective courses through a partnership with Tufts University. There, I took the only computer science course of my life: an elective Intro to Video Game Development in Python class. I built the game I envisioned, but now it needed a website so I could share it. Using my earnings from my job as a computer lab monitor, I paid a classmate’s boyfriend $11/hr to tutor me in CSS, jQuery, and PHP. I built the website, and found the flexibility of web languages much preferred to Python.
One of my instructors noticed my interest in web development and hired me for an internship to rebuild WPFolio, a WordPress theme for artist portfolios, that he maintained. “You can make money with WordPress,” he said. “You can work as a freelancer and call your own shots.” For the next six years, that’s exactly what I did. After a year-long contract with a startup building interfaces for a Django webapp, I shifted my focus to client work and built a successful freelance web development and tutoring business. I described my services with the metaphor of “fishing”: I could fish for you (build you a website), teach you to fish (tutor you), or we could fish together, (a mix of tutoring and development). During this period, I privately tutored dozens of adults, independently organized online courses, taught web development at coding bootcamps, and taught as an adjunct instructor. When I lived in New York City, I designed the coding curriculum for Pratt Institute of Design’s UI/UX certification program, and I was embedded in the local WordPress and front-end developer communities. I regularly attended, organized, and presented at meetups and conferences. I wrote about all of this on my blog, where I passionately shared my knowledge with the larger online community of web developers from whom I had learned so much.
In 2015, I had the first of two job interviews whose aftermath became my motivation for research. The first interview was for a position titled “Interaction Designer/UX Engineer”. I applied through a referral, and following a heartening conversational part of the interview, the interviewer indicated we were to move on to the live coding portion. The first question, “Are you familiar with FizzBuzz?” Confused, I responded, “No, sorry, I’m not.” The interviewer explained the problem: “Print a number from 1 to 100. For every fifth number print ‘fizz’, for every 10th number print ‘buzz’… (and so on)”. Even more confused, I responded, “To be honest, my JavaScript knowledge is mostly developed to do with UI interactions. I don’t really understand the point of the question. Is this something I would be asked to do at the job?” Face flushed and heart thumping, I tried to talk through how I might code the solution but was unsuccessful.
After the interview, I looked up this “fizzbuzz” and was again unprepared for waves of shame and embarrassment I felt as I read through the results. Fizzbuzz is three things: a game played by elementary school students to learn division, an algorithm question used to teach control structures in introductory CS courses, and a question used in programming interviews to filter out “fake” programmers. I felt duped; this job post was for “Interaction Designer/UX Engineer”…why was there a computer science question in this interview? I wrote code all day and was paid well for it, but I never considered the work I did to be computer science. It didn’t take long for the initial shame and embarrassment to turn to anger and incredulity. Why didn’t the job post say they were looking for someone who knows computer science?
I decided to share my story with other front-end developers at a meetup in New York City, where I lived at the time. During my presentation, the many nodding heads told me I was not alone. Other people, too, had experienced promising starts to interviews only to be duped with an out-of-the-blue computer science question that seemed to have little to do with the work required by the position. Encouraged, I decided to write up my story for a popular web development publication, CSS-Tricks, and I titled it: “Tales of a Non-Unicorn: A Story About the Trouble with Job Titles and Descriptions”.
At first, the response to the article was supportive and empathetic, similar to that of the meetup. Within half a day, however, the nature of the comments shifted to seemingly harsh criticisms and hateful remarks. It didn’t take long to realize the article had been posted under a different title on to online programming forums like Hacker News and Reddit’s r/programming, and for the next 48 hours, was a viral sensation, troves of gatekeepers asserting their power to exclude. Following this experience, I became even more disidentified with programming and computer science. Despite making my living through programming and teaching people to program, I latched onto an alternative identity. Given this experience, it was clear that the code I wrote wasn’t programming or computer science, it was something else.
It wasn’t until three years later, as I studied algorithms for the second of these formative interviews, that I began to question what, exactly, I did if it wasn’t programming or computer science. Why, according to both my past self and these gatekeepers, didn’t my work in WordPress and front-end development count as “real” programming? As I learned the fundamentals of algorithms and data structures for the first time, I realized that I already knew many of these concepts, I just didn’t know they had specific names. Did this really deem my skills something else, besides programming, just because I didn’t learn these things in a CS degree? What is a “real” programming language, anyway, and why do the languages I write seem not to count? And what is an algorithm? As far as I could tell, these algorithms seemed like code that did a specific thing and therefore had a specific name. Why was my code not an algorithm? The answers I found to my search into these questions only increased my suspicion that something else was going on.
I decided to do what I do when I really want to understand something: commit to writing or speaking about it. What I learned during my research for what would become a renowned conference talk and series of blog posts is this: I am a programmer, and CSS is a programming language; I am a computer scientist, and CSS is computer science. The promotion of exclusive and complicated definitions of programming and computer science serve to uphold existing structures, and the effect of these exclusive definitions is gatekeeping.
I delivered the first iteration of my conference talk at CSS Conf Europe in 2018. As I refined my content for a second year of speaking in 2019, I proposed the talk to general software conferences. It was accepted and lauded by general programming audiences in addition to my front-end web development communities. In the talk, I asked and answered: Is CSS a programming language? If it is, can one write algorithms in CSS? I demonstrated the answer, a resounding “yes”, to both questions through the application of software engineering and computer science concepts to CSS, a language readily discounted as not “real” programming. To compliment the talk, I authored canonical posts on my blog that received many thousands of views: CSS is a Domain-Specific, Declarative Programming Language, where I explain the foundations of programming language theory to a general audience, Is CSS Turing Complete?, where I walk through programming the Turing-complete cellular automaton Rule 110 in HTML and CSS. In Writing CSS Algorithms, I demonstrate how the same process used for algorithm whiteboarding interviews can be used to program layouts in CSS. Through these efforts, I grew to embrace my own identity as a programmer and encouraged others in my communities to do the same. At general software conferences, my talk prompted the maintainers of exclusive programming culture to consider the impacts of their gatekeeping.
Through social media activity about my work, I learned of Dr. Felienne Hermans’ research. I saw parallels between her research into spreadsheets and mine into CSS, both of us pushing exclusive definitions of programming to extend to languages often discounted as “not real”. Dr. Hermans and I met when I visited the Netherlands, and we designed a survey to measure how developers viewed programming languages in comparison to each other: What do developers think makes one programming language “more programming” or “less programming” than another? We conducted this survey at an industry conference later in the year [8], and agreed to author a paper about our results [10]. In our survey results, we saw cultural values of exclusivity reflected in what people think counts as programming: languages considered hard to learn and “closer to the machine” were consistently ranked among the “more programming”, while languages that were more learnable and easy to get started with in particular domains were ranked “less programming”. I started to think about a career as a researcher.
After the conference, I returned to my full-time software engineering job, but my career change to research was officially underway. I started at Penske Media Corporation as a Senior Software Engineer, where I was the sole voice for front-end code on an engineering team of about 35 people. At PMC, I applied the learnings from my conference speaking research and revolutionized the way the team authored front-end code. I architected a modular front-end framework and toolkit that would increase the company’s ability to deploy website redesigns from one or two per year to six+ per year at the time of my departure. Although I maintained my affinity for front-end work, at PMC, my technical skills extended to back-end development as well. At PMC, I was encouraged to continue my involvement with the WordPress community, and I started facilitating the weekly meetings for the WordPress Core CSS focus. I facilitated a two year initiative to improve the CSS codebase with insights gained through a custom static analysis and reporting tool.
Throughout all of this work, my interest in a career in research persisted, and I decided to act on it. I pursued conversations with researchers in computing education research and HCI, and even attended ICER in 2021 as I learned to navigate through research and research communities. I participated in a workshop from the Papaya Project on redefining equity in computing education, and I became a member of their online community, participating in a study group to further my knowledge and to explore my interests. I pursued volunteer work aligned with my interest in computing education in minoritized communities, and through that work, realized the relevance of my own story to broadening participation in computing. I learned about the NSF Fellowship and I applied in 2021, proposing to partner with a community organization I volunteered with to develop learning materials that would extend vocational training in computing to incarcerated people. I now understand more about the complexity of the path to computing and how much we don’t know about it. I see the work I am proposing in this application as a prerequisite to the work I proposed last year. We need to understand and support the pathway from the entry-level work to long term careers in computing before encouraging people to take it.
In my research exploration, I found a close intellectual match in Dr. Betsy DiSalvo and the DataWorks project at Georgia Tech, [quick summary of DW]. I accepted a position with Dr. DiSalvo in March, 2022, and started working with the DataWorks research team the summer before my first semester. I started with a literature review of workplace learning and business training that has evolved into a systematic literature review to understand what we know about work and broadening participation in computing that I intend to submit to CSCW 2023. This fall, I will design a series of workshops to conduct for the DataWorks employees about sharing their work online and becoming involved with communities of practice outside of the workplace through meetups in order to prepare them for finding their next role. This is an example of an activity that has been pivotal in my experience growing from legitimate peripheral participation to full participation in computing, and something I intend to study to understand how we can support others in this pathway.
During the height of my conference speaking, I was on a mission to share with front-end communities what I learned: CSS is a programming language. We are programmers even though many people tell us otherwise. Now that I’ve learned more about the world and the ways of research through my exploration and volunteer work, I realize that I was not only convincing the public that CSS is a programming language, I was legitimizing work in computer science that is not considered computer science. There are millions of people already participating in computer science, like me in the beginning of my career, but because their participation is outside of the traditional, undergraduate CS path, their computational work is considered illegitimate. How can we redefine computing so that people who are already participating in these peripheral areas are, instead, welcomed into computer science and presented with pathways to learn more?
The more I learn, the more I see how little we know about supporting the pathway my industry peers and I took into computing: the pathway that begins with entry-level work, not a computer science degree. In my doctoral work, I aim to systematically study this pathway and to create both research and action agendas that will be the foundation of my career in research. Following my PhD, I intend to obtain a faculty position to continue my work. There, I will be both an inspiration to younger people in less traditional majors who express interest in computing, and a force for change within CS departments, working to evolve the culture of CS programs to broaden their understanding of what counts as “real” computer science.