Skip to content
Merged
Show file tree
Hide file tree
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
5 changes: 5 additions & 0 deletions _data/metadata.json
Original file line number Diff line number Diff line change
Expand Up @@ -5,6 +5,11 @@
"city": "Mumbai (मुंबई)",
"country": "India"
},
"freelance": {
"status": "available",
"availability": "20 hours per week",
"next_available_date": "January 3, 2026"
},
"author": {
"name": "Josh Erb",
"email": "[email protected]",
Expand Down
2 changes: 2 additions & 0 deletions _includes/assets/css/base.css
Original file line number Diff line number Diff line change
Expand Up @@ -405,6 +405,8 @@ th {
pre,
blockquote,
table,
ul,
ol,
p {
margin-bottom: 2.5rem;
}
Expand Down
10 changes: 10 additions & 0 deletions _includes/freelance.njk
Original file line number Diff line number Diff line change
@@ -0,0 +1,10 @@
---
layout: base.njk
section: freelance
permalink: /freelance/index.html
---
<hr />

{{ content | safe }}

<hr />
2 changes: 2 additions & 0 deletions bin/dictionary-supplement.txt
Original file line number Diff line number Diff line change
@@ -1,3 +1,5 @@
Ulaanbaatar
Pringles
microplastics
Tamil-Brahmi
BCE
Expand Down
5 changes: 5 additions & 0 deletions bin/technical-dictionary.txt
Original file line number Diff line number Diff line change
@@ -1,3 +1,8 @@
endif
performant
frontend
mapbox
[email protected]
[a-z\-0-9]*\.png
booksBeingRead
mailto
Expand Down
46 changes: 46 additions & 0 deletions pages/freelance.md
Original file line number Diff line number Diff line change
@@ -0,0 +1,46 @@
---
layout: freelance.njk
title: freelance.
date: 2025-01-01 08:00:00
tags:
- nav
navtitle: freelance
---

## Availability
{% if metadata.freelance.status == 'available' %}
I am currently available for **{{ metadata.freelance.availability }}** of freelance work. You can reach me directly [via email](mailto:{{ metadata.author.email }}) with potential opportunities.
{% else %}
I'm not currently available for freelance work. My next availability is in **{{ metadata.freelance.next_available_date }}**. Don't hesitate to [reach out](mailto:{{ metadata.author.email }}) if that timeline would be compatible with the work you have in mind.
{% endif %}

## Software Engineering

I have +10 years experience working in software in various roles: data analyst, data scientist, support engineer, and software engineer. A more detailed history of my experience can be found in the [work section](/work) of this site.

I do my fastest work in Node.js. But I have also enjoyed working in Python & Go. I have a strong background in scaling backend apps & improving systems built on AWS.

My frontend experience is less prominent but still worth mentioning. I have [strong opinions](/notes/2024/rules-for-this-website/) on keeping static websites performant. I have been proud of contributions made to various web apps and libraries over the years (e.g. [Static Images API Playground](https://docs.mapbox.com/playground/static/) & [@mapbox/quilt](https://github.com/mapbox/quilt)).

Finally, I miss working with maps. I am very likely to jump at any opportunities that include working with maps.

## Writing

Regardless of my availability, I am always interested in writing projects. More specifically, I strongly encourage you to reach out if you'd like to work with me on any of the following:
- Essays ([examples](/writing))
- Book Reviews ([examples](/shelf))
- Travel Writing ([examples](/tags/travel))

I also enjoy writing technical documentation. However, I consider it more of a piece with Software Engineering and will approach any projects from that perspective.

## Inquiries

If you are interested in working with me in any of the above capacities, please feel free to reach out directly via **[{{ metadata.author.email }}](mailto:{{ metadata.author.email }})**.

For non-writing projects, I like to keep the process for new work as straightforward as possible:
1. After an initial e-mail, I will reach to discuss your project in greater detail.
1. Based on our conversation, I will share my preferred rate and ideal timeline.
1. If we agree on terms, we sign a written agreement.
1. Work can start as soon as a contract is finalized.

For writing projects, I understand that every publication has its own set of expectations and editorial workflows. I will do my best to accommodate yours if we agree to work together.
2 changes: 1 addition & 1 deletion pages/writing.md
Original file line number Diff line number Diff line change
Expand Up @@ -7,4 +7,4 @@ tags:
navtitle: writing
---

> In 2024 I started to focus on publishing my writing outside of this blog. This page records the small bits of success I've had so far.
In 2024 I started to focus on publishing my writing outside of this blog. This page records the small bits of success I've had so far.
24 changes: 24 additions & 0 deletions posts/2025/free-agency.md
Original file line number Diff line number Diff line change
@@ -0,0 +1,24 @@
---
layout: post.njk
title: Keyboard for Hire
summary: A brief announcement and some thoughts about work
date: 2025-11-17 13:05:00+5:30
tags:
- post
- life
- business
- brief
permalink: /notes/{{ page.date | dateYear }}/{{ title | slugify }}/index.html
---

In 2019, I had the opportunity to see Ted Chiang speak at the vaunted Politics & Prose during the book tour for [_Exhalation_](https://en.wikipedia.org/wiki/Exhalation:_Stories). I waited patiently in line for him to sign my copy and then asked him with a shaky voice if he would continue to freelance as a technical writer given the increased recognition of his work. He gave me a wry smile and said, "For now." Then he signed my book and asked me if I knew anything about [Gene Wolfe](https://en.wikipedia.org/wiki/Gene_Wolfe) & his contributions to the Pringles™ slicing machine.

If you've followed this blog at all in the last year and a half, you'll likely know that in 2024, my wife was hired for her dream job and became a U.S. Foreign Service Officer. This job requires our family to move to a different part of the world every 2-3 years. This a classic Faustian bargain, simultaneously a dream come true and an impassable obstacle for my own employment. If a potential employer asks me where I'll be in 5 years, I quite literally cannot give an answer. I might be in Lima. I might be Ulaanbaatar. When we found out our first post would be in India, my employer at the time didn't want to deal with the headache of the time difference and we parted ways amicably the week before the move.

For the first year of this new circumstance, I focused entirely on my writing and publishing. I haven't been idle, and achieved [some small success](/writing), but I've also learned that the publishing industry moves slowly and paying opportunities are few and far between. So I've had to accept the reality that it's unlikely I will be able to make much money from this work. Certainly not enough to save up for my son's future, or a house, or to keep the family afloat in the event of any [unforeseen setbacks](https://archive.ph/NyaJ4).

So here's where things stand: I'm still quite serious about the writing. I am proud of the two small pieces I have managed to publish and I am hopeful and confident that I will be able to publish more things in the months and years ahead. However, I have reached a point where pragmatism must supersede idealism. I need to be able to hone my writing and place pieces, but I also need to be able to earn money and tuck some away for the future.

Consequently, I have made the decision to take on freelance software work. My hope is that this will provide me with some needed flexibility around my working hours & commitments. I'm winding down an initial contract, which went well, and I'll soon be available for more. Details on my skills, preferences, and availability will be regularly updated on the new [freelance](/freelance) page of this website.

If you or your employer need something I can provide, I'm only [an email away](mailto:{{ metadata.author.email }}).