I typically do not describe myself as a developer. I am primarily a designer. I think of ways to solve problems, design products through design thinking methods that I’ve learned. But I dabble. Just as I think design is a great way to find solutions to systemic issues, development is obviously a great way to implement those design solutions. I don’t think I limit myself to building digital products, but more often than not, a product in this day and age will have some kind of digital capabilities and I’m not really against that either.
A Story
So I’ve dabbled in development. I’ve built several projects by myself or with colleagues at various scales. I remember one of the first “big” projects I did for a class at college. No member of my team knew how to properly build a website, and the course wasn’t really equipped to teach us how. We were expected to know how to build something if we wanted to, and the course was more about finding out what we wanted to build (within the scope of the course topic).
So, we did what anybody in our shoes would have done. Websites are in HTML, CSS, JS, right? So we built a fully interactive, fully static website in pure HTML, CSS and JS, without even knowing what frameworks were, without even knowing what’s ajax.
I went back to our repository and browsed the code we wrote there, and it’s ✨magnificent✨. Every file is in the root directory, there’s no .gitignore
, so there are a bunch of .DS_Store
s lying about, there are random script tags in the middle of the ui, api keys fully visible to the user in the script. I’m actually kind of impressed how well-functioning the website is, fully featured with firebase authentication, storage and data fetching, while how little we knew about web development.
Another Story
I remember the first time working with an experienced developer at my first startup. I saw that she’s making a pull request and I asked her what was the purpose, given that she was the only one working on the codebase. I don’t really remember what she told me about it, but I do remember not really understanding what she was talking about.
A few years later, I found myself in the same situation. I was assigned as the only developer for the project, and I found myself creating different branches and requesting and approving PRs myself. I was using PRs as a unit of code, just as I would a commit and a branch. While there was nobody other than me to review my code, at the company, we had an established method of git methodology, and even as I was the only developer, it was good to continue with the practice, because sooner or later, more developers would be assigned to the project and it would be easier to maintain the codebase.
However, I did up leaving the company before I could work closely with other developers on the project. So far, the only pull requests I’ve made were to myself.
My First GitHub Pull Request
I have been using Raycast as a part of my workflow for a while. Thanks to its robust extensions ecosystem, I have been able to utilize it to improve my workflow.
Anyway, I made a script for Raycast that I’m going to use for myself. Actually, I made the script when I was writing the very first article to this blog. I had a Twitter link I wanted to share, but I didn’t want to use the Twitter link. So I manually changed twitter.com
in the URL to nitter.net
and wrote it down in the article. Then I thought, ‘hey, this is actually kinda useful, I might wanna automate it’. I thought Raycast Script Commands would be a perfect fit for it, so I looked around and figured out how to write it.
It wasn’t too difficult to write, I got it down, looking at different examples to learn how to write it, in about 15 minutes. I tested it, it worked well, it was all well and good.
Then, while looking at the raycast-script-commands
repo for examples, I realized every single Script Command on the repo was just like the one I just made: someone wrote some code to automate their mundane task, thought someone else might find it useful and made a PR.
So, that’s what I did. I figured out how to create a PR. I forked the repo and made a branch and pushed it to my now forked raycast-script-commands
, and GitHub smartly asked me, ‘hey, you wanna make a PR?’
I’m glad I did because the reviewer to my PR left some great suggestions on how to improve the functionality of my script, making it easier for me as well to use the script. I made additional commits to improve the script as suggested and now the PR stands at accepted
, ready to be merged into the actual raycast-script-commands
instead of my forked repo.
I’m not sure how I feel about the Open Source as a whole yet — faker.js wink wink — but I think it’s nice that people can come together to take inspiration from each other and make something for everyone who come across it.
And looking through the directory of raycast-script-commands
, I found a script command I knew I would use it, which I promptly enabled on my machine.
So, that’s my first GitHub Pull Request — the hello world
of open source contribution. 35 lines of code half of which are comments added to a public repository of useful Raycast Script Commands. Not too impressive, but not too shabby, either.