Josh Goldberg
TODO

My Plans for 2023

Mar 23, 202330 minute read

How I'm going to make 2023 awesome.

I posted my 2022 In Review blog post one week into January 2023: two and a half months ago. 2023 has already been a wild and wacky year for me, which enabled procrastinating on solidifying details on my plans for the year. But I’ve learned it’s important -especially when you’re independent like me and have no job or manager- to set medium- and long-term goals for yourself. This post is 40% a reference for anybody curious about what a full time open source maintainer’s life is like… and 60% a form of self-motivation to actually do the things.

So, finally, here are my goals for 2023. I want to try the OKR format but have only gotten through Objectives - which are laced throughout the blog post. The objectives all take effect in the month of March - as both in 2023 and 2022 I spent January wrapping up the previous year, and February mostly out for personal items.

Each of the following sections is a key area I’m going to invest my time in for 2023, in decreasing order of time spent.

Open Source

Objective: Be a known leader in the TypeScript static analysis ecosystem.

Objective: Foster gradual improvement in the TypeScript static analysis ecosystem.

I’m a full time open source maintainer. This is my full time occupation and the most important part of my professional life. I’m going to continue to spend the majority of my time maintaining the open source libraries I’m responsible for, as well as contributing to other libraries I use in my day-to-day.

typescript-eslint

Objective: Continue maintenance of typescript-eslint as it increases in community engagement.

Objective: Prepare typescript-eslint@v7 with significant performance improvements.

I’m one of the core maintainers of typescript-eslint, the tooling that allows ESLint and Prettier to work on TypeScript code. Much of 2022 felt like project onboarding: getting used to the project, going through old issues, iterating on the public docs website’s contents, fundraising, and -of course- continuously triaging issues and reviewing pull requests. The last few months of maintenance have felt more leadership-y as we’ve worked on the v6 milestone.

Speaking of which, the v6 contains a lot of quality-of-life improvements for the experience of using typescript-eslint. v6 is in beta now; please try it out! 💜

The next big area we’d like to improve is performance. With help from the TypeScript team, we’re investigating using different TypeScript APIs so that we can improve type checking speed and support project references. If v6 focused on quality-of-life, then v7 will focus on performance. ⚡️

Additionally, now that we have more maintainers and maintainer budget than ever before, we can perform much more community outreach and developer advocacy. We recently opened up our Discord to the community and created a Mastodon account. To keep that momentum going this year, I’d like to:

Lastly, as the project grows and more people ask to get involved, we’re going to need to formalize some of the managerial aspects. What are our tiers of committers/maintainers? What are the minimum expectations for each tier? How does each tier get paid? All questions I hope we have answered this year.

template-typescript-node-package

Objective: Make the best starter template for single-package TypeScript Node repositories.

Like many developers, I’ve found that setting up a new repository largely entails copy and pasting configuration files from my most recent repository and making as few tweaks as possible. That process has gotten more difficult for me over the years as I’ve added more and more tooling to my repositories. I made this template repository in October 2022 because I wanted to get a good starting template from scratch. Then I quickly realized how useful this could be for everybody else facing the same issue.

The template is starting to gain traction now (people are reporting using it! over 100 GitHub stars ⭐️!). Amazing! It’s now a priority of mine for 2023: I’m going to keep adding all the goodness you could possibly want in a (non-monorepo) general TypeScript package. Then I’m going to use it in all my relevant open source packages.

TypeScript

Objective: Send at least two pull requests to TypeScript every month.

Contributing to TypeScript is awesome. It’s a fascinating project, improving it benefits web developers everywhere, and it benefits your street cred something wonderful. I’m not on the TypeScript team but like to contribute to it for fun. I tell people I contribute to TypeScript, but then will sometimes go a couple months without finding the time to contribute.

This year, I’m going to try to find the time to contribute regularly. Hopefully.

Open Contributions Project

Objective: Create a high quality set of resources to advocate for contributing to open source.

Free and open software must be open source and freely available for a progressing tech industry. However, the model by which that software is created and maintained today is deeply flawed. Maintainers such as myself are expected to work on free software used by companies that do not then appropriately -if at all- compensate us for our work.

I believe part of solving this issue should be getting more companies to sponsor open source. Many companies -especially those without high visibility in developer communities- have no budget for sponsoring their open source dependencies. Oftentimes many or all of the employees in those companies -especially the financial decisionmakers- aren’t familiar with open source or why they should sponsor it.

I’d like to create a set of resources tailored towards convincing various groups of people to contribute to open source. Those groups can include: developers, developers managers, financiers, marketers, and so on. Contributing can be coding, proofreading, outright funding with money, and so on.

My Other, Smaller Packages

Objective: Create a small suite of well-managed open source repositories in my areas of interest.

I don’t exclusively work on my larger visibility projects: I also have a collection of smaller utilities I’ve wanted to create over the years. These utilities serve several purposes:

The plan for these is:

In particular, I want to put more work into emojisplosion and konamimojisplosion. They’re adorable projects that I think a lot more people would use and appreciate if I bolstered their demos and docs.

Community Engagement

Objective: Be a top-of-mind community member for TypeScript and general web development, and foster others to do the same.

It’s invaluable both for open source maintainers and book authors to be engaged with the community. We get user feedback and project exposure by being a known name people interact with. Plus, I enjoy it!

This year I’d like to continue my growth as a member of the developer community. I don’t like the term “thought leader”, but whatever equivalent is halfway to that… Let’s go with it.

Conferences

Objective: Be a regular high-quality speaker at conferences for TypeScript and general web development.

2022 was when I became a comfortable conference speaker: I got into a good rhythm of applying to conferences, delivering talks, and networking at them. I feel like I’ve gotten good at it and roughly know what I’m doing.

For 2023, though, I want to be great. I want to really take advantage of the networking at conferences and social media afterwards.

I’m also always working on improving the talks I give at these conferences. My general area of growth for them recently has been in storytelling and presentational skills:

Blogging

Reliably create high quality blogs post in my managed blogs.

I have a few blogs under my purview:

I didn’t post very frequently to any of them in 2022. Which is a pity: there’s a lot of stuff I want to post!

For 2023, I’d like to maintain two consistency goals:

Personal Branding

Present an approachable, informative, professional persona online.

I haven’t changed the design of my personal site in years. Which is unfortunate because I’ve added a lot of content to the site and now the design is starting to show its age. I’d like to make a snazzy personal site the way a lot of other frontend tech people do.

In fact, I’d even gone through a partial design exercise with a designer friend of mine over a year ago… But I haven’t taken action on the designs since. Sigh.

This year, I promise!

PhillyJS

Goal: make a great online presence for PhillyJS.

I joined the organizer crew for PhillyJS, Philadelphia’s JavaScript meetup, as the marketing coordinator. That means I’m meant to manage documentation and runbooks, social media presence, and the website. All of which I’m real eager to work on.

My first tasks were to set up the internal Notion and run through a logo design process. I completed the first and got through most of the latter, then ran out of steam and haven’t had time to make the final logo assets for the past month. Which is a shame - I really need to get on this.

My plan for marketing PhillyJS is:

*I’m hoping we can make laptop stickers of all the different logo options…

Education Content

Objective: Be a recognized community resource for open source and TypeScript

Learning TypeScript Videos

Objective: Create free high-quality video content for TypeScript fundamentals.

My Learning TypeScript book was published by O’Reilly last year. The next logical step would have been to create free companion videos on YouTube or other platforms to help spread the concepts and serve as lead-ins for the book. My personal life was too chaotic to commit to such a large project…

…but I have the time now! Hooray!

The current plan is to create free companion videos for each of the major topics discussed in each of the Learning TypeScript book chapters. Those videos will be freely available on YouTube and tied into the Learning TypeScript site.

More on this later!

Twitch Streaming

Objective: Be a regular active streamer for open source and TypeScript development.

I started regularly streaming my open source contributions on my Twitch channel The streams don’t typically get very active chats, but I understand how the tech all works (itself an accomplishment with OBS!) and have a regular cadence

To be honest, though, I’m not much of a Twitch viewer myself. Realtime / video content is hard for me to focus during, so even though there’s a lot of good stuff there, I’ve mostly avoided it. I’m going to make an effort to watch more and learn

Otherwise I’ve got no major changes planned for this year, just getting better at what I’m already doing:

I might later come up with key results around viewership or channel activity. TBD.

Personal

Objective: Achieve high sustainability and low stress in my personal and professional lives.

Although the second half of 2022 and first couple months of 2023 were great for me professionally, personally they were off-and-on a little terrible. Two close family members I was helping take care of passed away. At times it felt like I was just treading water, barely keeping up with GitHub notifications or conference emails.

But this year I want to be better: healthier, organized, and not constantly stressed about the amount of things I want to do.

Goal: Health

Objective: Be healthy (instead of overworking myself).

I have a tendency to be self-critical drive myself to the point of burnout. Think frequent late nights (or skipping sleep entirely), eating constant junk food, and burning out spectacularly on projects I’ve convinced myself I “need” to finish. It’s not good for my quality of work and is certainly not good for my long-term health.

I’ve slowly gotten better at forcing myself to engage in correct behaviors (part of being an adult, maybe?). This year I really want to be regimented in making sure I don’t fall back into bad habits:

Body image is something I’ve always struggled with. I do better with it both when I’m physically in better shape and when I’m less stressed. Maybe this year in 2023 I’ll finally be happy with how I look!

Goal: Personal Accountability

Objective: Have confidence in the amount of work I’ve accomplished.

One of the side effects of my being self-critical is that, absent of proof, I tend to undervalue the magnitude of work I accomplish in any time period. That tendency is particularly dangerous now that I’m my own manager. I set up a tracking Notion database & board for tasks, and plan on setting up a reports database with one-click templates to summarize my weeks and months.

I hope keeping track of all these things will help me achieve a level of personal satisfaction I haven’t felt in… ever.

Out of Scope

Speaking of personal satisfaction, one of the battles I’m happy to have won with myself this year is deciding on what not to take on. If you know you won’t have time for something, it’s best to admit it early on. Don’t keep a sad glimmer of hope to be continuously crushed until you eventually give up.

Sorted in order of the ones I was most likely to tackle this year, first…

TypeStat

Converts JavaScript to TypeScript and TypeScript to better TypeScript. I have high hopes for this library: in addition to being very cool tech internally, TypeStat solves a super common need in industry and open source alike. It brings me great visibility and is the most visible TypeScript area thing I’ve created on my own (almost 1k stars!).

But, TypeStat is a difficult project to work on. There are so many edge case and potential bugs in code changes, and many different preferences users have demonstrated.

When I do eventually have time to work on it, I’d like to:

I’ll still act as a maintainer for the project this year, of course. I’ll still triage issues and review & merge pull requests. But beyond onboarding it to my template-typescript-node-package I don’t plan on working on major features or overhauls.

My end goal for the library is to make it reliably good enough that people use it as the first step in converting a project from JavaScript to TypeScript.

Budgie

A unified syntax that compiles into your favorite OOP languages. 🦜 I think it’s a fascinating project that demonstrates some really interesting shared characteristics of programming languages. But I haven’t worked on it since 2019.

Eventually, I’d love to:

…but even if I did have time to work on those three non-trivial items (I don’t), I certainly wouldn’t additionally have the time to put them to use in any meaningful way. My dream of writing my own full programming language will remain unfinished another year longer.

EightBittr

My bare-bones, highly modular game engine tailored to 2D 8-bit games. 👾 It’s what powers my cute little ChooseYourFramework.dev site. Last year I polished EightBittr’s docs, added example projects using the engine, and wrote guided walkthroughs leading towards those examples.

But I haven’t finished my other pipe dreams for the project:

…but, again, even if I did have the time to work on those three non-trivial items (I don’t), I again certainly wouldn’t additionally have the time to put them to use in any meaningful way. FullScreenPokemon will remain unfinished another year longer.

Philadelphia TypeScript Meetup

I really like TypeScript, and a really like meetups. It would be awesome to have a TypeScript-focused meetup in Philadelphia, now that I live here.

…except, PhillyJS just started back up a few months ago, and I’ve never run a meetup before. It’s going to be a while before I’m ready to take on something like this.

A Perfect CSS Framework

The tools we use to build design systems on the web are in a state of long-term turmoil, and have been for quite some time. The industry is split between CSS and equivalent syntaxes (these days, i.e. Sass), CSS abstractions (Tailwind), raw CSS-in-JS (traditional Emotion / styled-components), and component-style builders (e.g. Chakra, styled-system). They all have benefits and drawbacks. My needs boil down to three areas:

There are plenty of options out there that do some of those three areas, but I haven’t had the time to investigate them thoroughly.

If I were to completely abandon all my TypeScript/typescript-eslint work but remain in the developer tooling space, this would probably be what I’d work on. Maybe. Who knows.

But I don’t have time for this, and thus will wait for someone else to do it!

Closing Thoughts

I think 2023 is going to be very good for me. Instead of radically changing everything, I’m planning on incrementally improving all my existing activities. We’ll see how it goes!

If you read this far - thank you, and I have no idea why. Let me know!