<?xml version="1.0" encoding="UTF-8"?><rss version="2.0"><channel><title>Goldblog</title><description>A blog about open source, static analysis, and web dev.</description><link>https://joshuakgoldberg.com/</link><language>en-us</language><item><title>2022 In Review</title><link>https://joshuakgoldberg.com/blog/2022-in-review/</link><guid isPermaLink="true">https://joshuakgoldberg.com/blog/2022-in-review/</guid><description>Looking back at a pivotal year in my open source career.</description><pubDate>Sat, 07 Jan 2023 00:00:00 GMT</pubDate></item><item><title>2023 Conferences In Review</title><link>https://joshuakgoldberg.com/blog/2023-conferences-in-review/</link><guid isPermaLink="true">https://joshuakgoldberg.com/blog/2023-conferences-in-review/</guid><description>Recapping the fantastic in-person conferences I attended in 2023.</description><pubDate>Mon, 29 Jan 2024 00:00:00 GMT</pubDate></item><item><title>2023 In Review</title><link>https://joshuakgoldberg.com/blog/2023-in-review/</link><guid isPermaLink="true">https://joshuakgoldberg.com/blog/2023-in-review/</guid><description>Looking back at my second year as a full-time independent open source maintainer.</description><pubDate>Wed, 31 Jan 2024 00:00:00 GMT</pubDate></item><item><title>Binary Arithmetic in the TypeScript Type System</title><link>https://joshuakgoldberg.com/blog/binary-arithmetic/</link><guid isPermaLink="true">https://joshuakgoldberg.com/blog/binary-arithmetic/</guid><description>Just for fun, what if we represented binary values purely within TypeScript&apos;s logical type system?</description><pubDate>Fri, 11 Oct 2019 00:00:00 GMT</pubDate></item><item><title>Compassionate Onboardings as Developer Documentation</title><link>https://joshuakgoldberg.com/blog/compassionate-onboardings/</link><guid isPermaLink="true">https://joshuakgoldberg.com/blog/compassionate-onboardings/</guid><description>How to use the energy of new employees to keep documentation up-to-date and useful.</description><pubDate>Thu, 11 Jun 2020 00:00:00 GMT</pubDate></item><item><title>2024 In Review</title><link>https://joshuakgoldberg.com/blog/2024-in-review/</link><guid isPermaLink="true">https://joshuakgoldberg.com/blog/2024-in-review/</guid><description>Looking back at the accomplishments and goals from my third year as a full-time independent open source maintainer.</description><pubDate>Mon, 03 Feb 2025 00:00:00 GMT</pubDate></item><item><title>2025 In Review</title><link>https://joshuakgoldberg.com/blog/2025-in-review/</link><guid isPermaLink="true">https://joshuakgoldberg.com/blog/2025-in-review/</guid><description>Looking back at the accomplishments and goals from my fourth and final year as a full-time independent open source maintainer.</description><pubDate>Sun, 08 Mar 2026 00:00:00 GMT</pubDate></item><item><title>Configuring ESLint, Prettier, and TypeScript Together</title><link>https://joshuakgoldberg.com/blog/configuring-eslint-prettier-and-typescript-together/</link><guid isPermaLink="true">https://joshuakgoldberg.com/blog/configuring-eslint-prettier-and-typescript-together/</guid><description>How I recommend getting your formatter, linter, and type checker to play together nicely.</description><pubDate>Mon, 01 May 2023 00:00:00 GMT</pubDate></item><item><title>Configuring ESLint, Prettier, and TypeScript Together: FAQs</title><link>https://joshuakgoldberg.com/blog/configuring-eslint-prettier-and-typescript-together-faqs/</link><guid isPermaLink="true">https://joshuakgoldberg.com/blog/configuring-eslint-prettier-and-typescript-together-faqs/</guid><description>How I recommend getting your formatter, linter, and type checker to play together nicely.</description><pubDate>Mon, 01 May 2023 00:00:00 GMT</pubDate></item><item><title>Configuring Markdownlint Alongside Prettier</title><link>https://joshuakgoldberg.com/blog/configuring-markdownlint-alongside-prettier/</link><guid isPermaLink="true">https://joshuakgoldberg.com/blog/configuring-markdownlint-alongside-prettier/</guid><description>Using the common markdown linter and disabling any rules that would intersect with dedicated formatters such as Prettier.</description><pubDate>Wed, 25 Jan 2023 00:00:00 GMT</pubDate></item><item><title>2024 Finances In Review</title><link>https://joshuakgoldberg.com/blog/2024-finances-in-review/</link><guid isPermaLink="true">https://joshuakgoldberg.com/blog/2024-finances-in-review/</guid><description>Breaking down the income streams and totals from my third year as a full-time independent open source maintainer.</description><pubDate>Mon, 27 Jan 2025 00:00:00 GMT</pubDate></item><item><title>Contributing to a create-typescript-app Repository</title><link>https://joshuakgoldberg.com/blog/contributing-to-a-create-typescript-app-repository/</link><guid isPermaLink="true">https://joshuakgoldberg.com/blog/contributing-to-a-create-typescript-app-repository/</guid><description>A thorough guide through contributing to create-typescript-app or any repository scaffolded using it.</description><pubDate>Fri, 20 Oct 2023 00:00:00 GMT</pubDate></item><item><title>Contributing to a create-typescript-app Repository: FAQs</title><link>https://joshuakgoldberg.com/blog/contributing-to-a-create-typescript-app-repository-faqs/</link><guid isPermaLink="true">https://joshuakgoldberg.com/blog/contributing-to-a-create-typescript-app-repository-faqs/</guid><description>FAQs for contributing to my create-typescript-app project or any repository scaffolded using it.</description><pubDate>Fri, 20 Oct 2023 00:00:00 GMT</pubDate></item><item><title>Definitely Formatted</title><link>https://joshuakgoldberg.com/blog/definitelyformatted/</link><guid isPermaLink="true">https://joshuakgoldberg.com/blog/definitelyformatted/</guid><description>How we migrated the massive DefinitelyTyped repository from using a linter for formatting to the dprint formatter.</description><pubDate>Tue, 30 Apr 2024 00:00:00 GMT</pubDate></item><item><title>Don&apos;t Write Bad Code</title><link>https://joshuakgoldberg.com/blog/dont-write-bad-code/</link><guid isPermaLink="true">https://joshuakgoldberg.com/blog/dont-write-bad-code/</guid><description>A mantra for constantly learning to keep myself writing at my best.</description><pubDate>Thu, 19 Aug 2021 00:00:00 GMT</pubDate></item><item><title>TypeScript Contribution Diary: Filtering Out Types From JavaScript-Only Import Suggestions</title><link>https://joshuakgoldberg.com/blog/filter-out-types-from-js-only-import-suggestions/</link><guid isPermaLink="true">https://joshuakgoldberg.com/blog/filter-out-types-from-js-only-import-suggestions/</guid><description>Removing type-land entries from import completions that can&apos;t be used in value-only-land.</description><pubDate>Mon, 20 Nov 2023 00:00:00 GMT</pubDate></item><item><title>Full Time Open Source</title><link>https://joshuakgoldberg.com/blog/full-time-open-source/</link><guid isPermaLink="true">https://joshuakgoldberg.com/blog/full-time-open-source/</guid><description>I&apos;m quitting my job to become a full time open source maintainer</description><pubDate>Sat, 22 Jan 2022 00:00:00 GMT</pubDate></item><item><title>I&apos;m Moving Blogs!</title><link>https://joshuakgoldberg.com/blog/hello-world/</link><guid isPermaLink="true">https://joshuakgoldberg.com/blog/hello-world/</guid><description>Medium can eat it. I&apos;m going open source with Gatsby!</description><pubDate>Fri, 13 Sep 2019 00:00:00 GMT</pubDate></item><item><title>Hacking TypeScript&apos;s async/await __awaiter for jQuery 2&apos;s &quot;Promises&quot;</title><link>https://joshuakgoldberg.com/blog/hacking-typescript-async-await-awaiter-for-jquery-2-promises/</link><guid isPermaLink="true">https://joshuakgoldberg.com/blog/hacking-typescript-async-await-awaiter-for-jquery-2-promises/</guid><description>Manipulating the details of TypeScript&apos;s emitted code to wrestle jQuery 2&apos;s older asynchronous constructs to work with modern `async`/`await`.</description><pubDate>Sun, 02 Jul 2017 00:00:00 GMT</pubDate></item><item><title>How I Apply to Conferences</title><link>https://joshuakgoldberg.com/blog/how-i-apply-to-conferences/</link><guid isPermaLink="true">https://joshuakgoldberg.com/blog/how-i-apply-to-conferences/</guid><description>From a hundred conference applications and thirty speaking roles, this is my process for submitting talks.</description><pubDate>Thu, 17 Nov 2022 00:00:00 GMT</pubDate></item><item><title>How lazily instantiated classes reduced my game engines&apos; reset times by half</title><link>https://joshuakgoldberg.com/blog/how-lazily-instantiated-classes-reduced-my-game-engines-reset-times-by-half/</link><guid isPermaLink="true">https://joshuakgoldberg.com/blog/how-lazily-instantiated-classes-reduced-my-game-engines-reset-times-by-half/</guid><description>Using lazily instantiated, dynamic classes instead of hand-written functions to reduce unnecessary work during loads.</description><pubDate>Mon, 09 Oct 2017 00:00:00 GMT</pubDate></item><item><title>How I Apply to Conferences: FAQs</title><link>https://joshuakgoldberg.com/blog/how-i-apply-to-conferences-faqs/</link><guid isPermaLink="true">https://joshuakgoldberg.com/blog/how-i-apply-to-conferences-faqs/</guid><description>Common questions and answers for my How I Apply To Conferences article.</description><pubDate>Thu, 17 Nov 2022 00:00:00 GMT</pubDate></item><item><title>How to show RequireJS progress with NProgress</title><link>https://joshuakgoldberg.com/blog/how-to-show-requirejs-progress-with-nprogress/</link><guid isPermaLink="true">https://joshuakgoldberg.com/blog/how-to-show-requirejs-progress-with-nprogress/</guid><description>Using the popular NProgress library to visualize load progress on sites built on the AMD RequireJS loader</description><pubDate>Wed, 28 Dec 2016 00:00:00 GMT</pubDate></item><item><title>How I Attend a Conference</title><link>https://joshuakgoldberg.com/blog/how-i-attend-a-conference/</link><guid isPermaLink="true">https://joshuakgoldberg.com/blog/how-i-attend-a-conference/</guid><description>From attending a few dozen conferences and co-organizing one of my own, this is how I make the most of in-person event.</description><pubDate>Tue, 01 Oct 2024 00:00:00 GMT</pubDate></item><item><title>Hybrid Linters: The Best of Both Worlds</title><link>https://joshuakgoldberg.com/blog/hybrid-linters-the-best-of-both-worlds/</link><guid isPermaLink="true">https://joshuakgoldberg.com/blog/hybrid-linters-the-best-of-both-worlds/</guid><description>Native speed for parsing and type checking is wonderful. I also want the huge benefits of writing lint rules in an ecosystem&apos;s primary language. Here&apos;s how I think we can have both.</description><pubDate>Thu, 20 Mar 2025 00:00:00 GMT</pubDate></item><item><title>If I Wrote a Linter, Part 2: Developer Experience</title><link>https://joshuakgoldberg.com/blog/if-i-wrote-a-linter-part-2-developer-experience/</link><guid isPermaLink="true">https://joshuakgoldberg.com/blog/if-i-wrote-a-linter-part-2-developer-experience/</guid><description>This is how I would tailor the developer experience for a modern linter from scratch: focusing on end-to-end type safety, self-apparent configs, and native workspaces.</description><pubDate>Fri, 09 May 2025 00:00:00 GMT</pubDate></item><item><title>In Defense of 100% Unit Test Coverage</title><link>https://joshuakgoldberg.com/blog/in-defense-of-100-unit-test-coverage/</link><guid isPermaLink="true">https://joshuakgoldberg.com/blog/in-defense-of-100-unit-test-coverage/</guid><description>Or: How to suddenly anger everybody, everywhere!</description><pubDate>Thu, 15 Mar 2018 00:00:00 GMT</pubDate></item><item><title>If I Wrote a Linter, Part 1: Architecture</title><link>https://joshuakgoldberg.com/blog/if-i-wrote-a-linter-part-1-architecture/</link><guid isPermaLink="true">https://joshuakgoldberg.com/blog/if-i-wrote-a-linter-part-1-architecture/</guid><description>This is how I would architect a modern linter from scratch: focusing on built-in TypeScript support, a straightforward rule development experience, and deduplicating tooling.</description><pubDate>Sun, 04 May 2025 00:00:00 GMT</pubDate></item><item><title>If I Wrote a Linter, Part 3: Ecosystem</title><link>https://joshuakgoldberg.com/blog/if-i-wrote-a-linter-part-3-ecosystem/</link><guid isPermaLink="true">https://joshuakgoldberg.com/blog/if-i-wrote-a-linter-part-3-ecosystem/</guid><description>This is how I would steer a new ecosystem around a modern linter from scratch: emphasizing shared terminology, a plugin registry, and one-way compatibility layers.</description><pubDate>Fri, 16 May 2025 00:00:00 GMT</pubDate></item><item><title>If I Wrote a Linter, Part 4: Summary</title><link>https://joshuakgoldberg.com/blog/if-i-wrote-a-linter-part-4-summary/</link><guid isPermaLink="true">https://joshuakgoldberg.com/blog/if-i-wrote-a-linter-part-4-summary/</guid><description>Summarizing the last three posts of ideas for a new linter, along with next steps for its Flint prototype.</description><pubDate>Tue, 10 Jun 2025 10:02:00 GMT</pubDate></item><item><title>Investigating Internet Explorer Exclusive Bugs in JavaScript</title><link>https://joshuakgoldberg.com/blog/investigating-internet-explorer-exclusive-bugs-in-javascript/</link><guid isPermaLink="true">https://joshuakgoldberg.com/blog/investigating-internet-explorer-exclusive-bugs-in-javascript/</guid><description>IE users are users too!</description><pubDate>Fri, 12 Oct 2018 00:00:00 GMT</pubDate></item><item><title>My Plans for 2024</title><link>https://joshuakgoldberg.com/blog/my-plans-for-2024/</link><guid isPermaLink="true">https://joshuakgoldberg.com/blog/my-plans-for-2024/</guid><description>How I&apos;m going to make my 2024 beautiful.</description><pubDate>Thu, 15 Feb 2024 00:00:00 GMT</pubDate></item><item><title>My Plans for 2023</title><link>https://joshuakgoldberg.com/blog/my-plans-for-2023/</link><guid isPermaLink="true">https://joshuakgoldberg.com/blog/my-plans-for-2023/</guid><description>How I&apos;m going to make 2023 awesome.</description><pubDate>Thu, 23 Mar 2023 00:00:00 GMT</pubDate></item><item><title>Switching a Jest Project from Babel to SWC</title><link>https://joshuakgoldberg.com/blog/jest-babel-to-swc/</link><guid isPermaLink="true">https://joshuakgoldberg.com/blog/jest-babel-to-swc/</guid><description>Speeding up and simplifying the transpiler configuration for a Jest project with Speedy Web Compiler (SWC).</description><pubDate>Mon, 21 Feb 2022 00:00:00 GMT</pubDate></item><item><title>Nature, Individuality, and Developer Empowerment</title><link>https://joshuakgoldberg.com/blog/nature-individuality-empowerment/</link><guid isPermaLink="true">https://joshuakgoldberg.com/blog/nature-individuality-empowerment/</guid><description>Applying learnings about how humans perceive forces of nature to how we understand code and organizations.</description><pubDate>Tue, 18 Jan 2022 00:00:00 GMT</pubDate></item><item><title>My Plans for 2025</title><link>https://joshuakgoldberg.com/blog/my-plans-for-2025/</link><guid isPermaLink="true">https://joshuakgoldberg.com/blog/my-plans-for-2025/</guid><description>How I&apos;m going to make my 2025 impactful.</description><pubDate>Mon, 10 Feb 2025 00:00:00 GMT</pubDate></item><item><title>Please Stop Sending Me Nested Dependency Security Reports</title><link>https://joshuakgoldberg.com/blog/please-stop-sending-me-nested-dependency-security-reports/</link><guid isPermaLink="true">https://joshuakgoldberg.com/blog/please-stop-sending-me-nested-dependency-security-reports/</guid><description>Security is important. Overusing report mechanisms for non-actionable noise is counterproductive.</description><pubDate>Mon, 04 Mar 2024 00:00:00 GMT</pubDate></item><item><title>No Unattainable Intelligence</title><link>https://joshuakgoldberg.com/blog/no-unattainable-intelligence/</link><guid isPermaLink="true">https://joshuakgoldberg.com/blog/no-unattainable-intelligence/</guid><description>In trying to make ourselves relatable, we reinforce the negative perception of intelligence gaps.</description><pubDate>Wed, 28 Sep 2022 00:00:00 GMT</pubDate></item><item><title>Why Open Source Pull Requests Can Take A While</title><link>https://joshuakgoldberg.com/blog/open-source-pull-request-timing/</link><guid isPermaLink="true">https://joshuakgoldberg.com/blog/open-source-pull-request-timing/</guid><description>Maintenance and development costs run both ways. Open source contributors and maintainers alike have to balance their finite energy and time resources within many constraints.</description><pubDate>Mon, 07 Mar 2022 00:00:00 GMT</pubDate></item><item><title>Rust-Based JavaScript Linters: Fast, But No Typed Linting Right Now</title><link>https://joshuakgoldberg.com/blog/rust-based-javascript-linters-fast-but-no-typed-linting-right-now/</link><guid isPermaLink="true">https://joshuakgoldberg.com/blog/rust-based-javascript-linters-fast-but-no-typed-linting-right-now/</guid><description>Explaining why the speed gains from Rust linters aren&apos;t comparable to the full feature set of typescript-eslint.</description><pubDate>Wed, 10 Jan 2024 00:00:00 GMT</pubDate></item><item><title>Seven Reasons Why Conversational AI is Dangerous</title><link>https://joshuakgoldberg.com/blog/seven-reasons-why-conversational-ai-is-dangerous/</link><guid isPermaLink="true">https://joshuakgoldberg.com/blog/seven-reasons-why-conversational-ai-is-dangerous/</guid><description>While AI systems such as OpenAI and ChatGPT can be helpful in certain situations, there are also significant risks associated with their use.</description><pubDate>Sat, 01 Apr 2023 00:00:00 GMT</pubDate></item><item><title>Six Months of Full Time Open Source</title><link>https://joshuakgoldberg.com/blog/six-months-of-full-time-open-source/</link><guid isPermaLink="true">https://joshuakgoldberg.com/blog/six-months-of-full-time-open-source/</guid><description>What it&apos;s like to quit your job and try to work on open source tooling full time.</description><pubDate>Wed, 07 Sep 2022 00:00:00 GMT</pubDate></item><item><title>So You&apos;ve Got A Gap In Code Coverage</title><link>https://joshuakgoldberg.com/blog/so-youve-got-a-gap-in-code-coverage/</link><guid isPermaLink="true">https://joshuakgoldberg.com/blog/so-youve-got-a-gap-in-code-coverage/</guid><description>This is my standard explainer for pull request reviews where changed lines aren&apos;t covered by unit tests.</description><pubDate>Wed, 05 Mar 2025 00:00:00 GMT</pubDate></item><item><title>Speeding Up Centered Part 2: Hidden Embedded Images</title><link>https://joshuakgoldberg.com/blog/speeding-up-centered-part-2-hidden-embedded-images/</link><guid isPermaLink="true">https://joshuakgoldberg.com/blog/speeding-up-centered-part-2-hidden-embedded-images/</guid><description>Finding and removing giant unused assets hidden in marketing page to speed up that page&apos;s performance.</description><pubDate>Mon, 07 Aug 2023 10:00:00 GMT</pubDate></item><item><title>Speeding Up Centered Part 3: Barrel Exports</title><link>https://joshuakgoldberg.com/blog/speeding-up-centered-part-3-barrel-exports/</link><guid isPermaLink="true">https://joshuakgoldberg.com/blog/speeding-up-centered-part-3-barrel-exports/</guid><description>Automating changes to module imports to overcome the build system not correctly tree shaking barrel exports.</description><pubDate>Mon, 07 Aug 2023 10:01:00 GMT</pubDate></item><item><title>Speeding Up Centered Part 4: Unused Code Bloat</title><link>https://joshuakgoldberg.com/blog/speeding-up-centered-part-4-unused-code-bloat/</link><guid isPermaLink="true">https://joshuakgoldberg.com/blog/speeding-up-centered-part-4-unused-code-bloat/</guid><description>Using Knip to automatically detect unused files and dependencies in the Centered repository.</description><pubDate>Mon, 21 Aug 2023 10:01:00 GMT</pubDate></item><item><title>Speeding Up Centered Part 1: 81 &lt;iframe&gt; Embeds</title><link>https://joshuakgoldberg.com/blog/speeding-up-centered-part-1-81-iframe-embeds/</link><guid isPermaLink="true">https://joshuakgoldberg.com/blog/speeding-up-centered-part-1-81-iframe-embeds/</guid><description>Improving a page&apos;s performance by over-eager loading most of its embedded content.</description><pubDate>Wed, 19 Jul 2023 00:00:00 GMT</pubDate></item><item><title>Speeding Up Centered Part 5: Emoji Processing</title><link>https://joshuakgoldberg.com/blog/speeding-up-centered-part-5-emoji-processing/</link><guid isPermaLink="true">https://joshuakgoldberg.com/blog/speeding-up-centered-part-5-emoji-processing/</guid><description>Finding and eliminating thousands of calls to recreate a giant regular expression in a popular open source emoji plugin.</description><pubDate>Wed, 20 Sep 2023 10:00:00 GMT</pubDate></item><item><title>2025 Finances In Review</title><link>https://joshuakgoldberg.com/blog/2025-finances-in-review/</link><guid isPermaLink="true">https://joshuakgoldberg.com/blog/2025-finances-in-review/</guid><description>Breaking down the income streams and totals from my fourth and final year as a full-time independent open source maintainer.</description><pubDate>Thu, 12 Feb 2026 00:00:00 GMT</pubDate></item><item><title>Split Out Unrelated Changes</title><link>https://joshuakgoldberg.com/blog/split-out-unrelated-changes/</link><guid isPermaLink="true">https://joshuakgoldberg.com/blog/split-out-unrelated-changes/</guid><description>This is a general explainer for pull request reviews where I think unrelated changes should be split into a separate PR.</description><pubDate>Mon, 13 Jan 2025 00:00:00 GMT</pubDate></item><item><title>Standards Compliant Rickrolling</title><link>https://joshuakgoldberg.com/blog/standards-compliant-rickrolling/</link><guid isPermaLink="true">https://joshuakgoldberg.com/blog/standards-compliant-rickrolling/</guid><description>How to create an effective rickroll site with the Vimeo Player SDK despite modern web browser autoplay restrictions.</description><pubDate>Fri, 01 Apr 2022 00:00:00 GMT</pubDate></item><item><title>The Cost of a Lint Rule</title><link>https://joshuakgoldberg.com/blog/the-cost-of-a-lint-rule/</link><guid isPermaLink="true">https://joshuakgoldberg.com/blog/the-cost-of-a-lint-rule/</guid><description>Explaining why deep work can be so difficult in open source.</description><pubDate>Wed, 17 Apr 2024 00:00:00 GMT</pubDate></item><item><title>Try...Catch As Little As Possible</title><link>https://joshuakgoldberg.com/blog/try-catch-as-little-as-possible/</link><guid isPermaLink="true">https://joshuakgoldberg.com/blog/try-catch-as-little-as-possible/</guid><description>This is a general explainer for pull request reviews where a try...catch statement is used more than I think it needs to be.</description><pubDate>Wed, 27 Nov 2024 00:00:00 GMT</pubDate></item><item><title>Thoughts as a TSLint Maintainer</title><link>https://joshuakgoldberg.com/blog/tslint-maintenance/</link><guid isPermaLink="true">https://joshuakgoldberg.com/blog/tslint-maintenance/</guid><description>Maintaining TSLint was a wonderful mixed bag of shenanigans. Let&apos;s talk about it.</description><pubDate>Tue, 19 Nov 2019 00:00:00 GMT</pubDate></item><item><title>The Blurry Line Between Formatting and Style</title><link>https://joshuakgoldberg.com/blog/the-blurry-line-between-formatting-and-style/</link><guid isPermaLink="true">https://joshuakgoldberg.com/blog/the-blurry-line-between-formatting-and-style/</guid><description>Why separating responsibilities between your formatter and linter isn&apos;t always clear-cut.</description><pubDate>Mon, 19 Jun 2023 00:00:00 GMT</pubDate></item><item><title>TSLint to ESLint Part 2: tslint-to-eslint-config</title><link>https://joshuakgoldberg.com/blog/tslint-to-eslint-config/</link><guid isPermaLink="true">https://joshuakgoldberg.com/blog/tslint-to-eslint-config/</guid><description>Now that TSLint is being deprecated, let&apos;s look at how tslint-to-eslint-config converts your TSLint configuration to ESLint.</description><pubDate>Tue, 19 Nov 2019 00:00:00 GMT</pubDate></item><item><title>TSLint to ESLint Part 1: Historical Context</title><link>https://joshuakgoldberg.com/blog/tslint-to-eslint-history/</link><guid isPermaLink="true">https://joshuakgoldberg.com/blog/tslint-to-eslint-history/</guid><description>Now that TSLint is being deprecated, let&apos;s look at the history of JavaScript and TypeScript linting.</description><pubDate>Tue, 19 Nov 2019 00:00:00 GMT</pubDate></item><item><title>TypeScript Contribution Diary: Tuple Types Indexed by a Type Parameter</title><link>https://joshuakgoldberg.com/blog/tuple-types-indexed-by-type-parameter/</link><guid isPermaLink="true">https://joshuakgoldberg.com/blog/tuple-types-indexed-by-type-parameter/</guid><description>Fixing a slight bug in how TypeScript resolves type elements of tuple types indexed by type parameters.</description><pubDate>Thu, 30 Mar 2023 00:00:00 GMT</pubDate></item><item><title>Type Parameters in the &quot;Add Missing Function&quot; Codefix</title><link>https://joshuakgoldberg.com/blog/type-parameters-missing-function-codefix/</link><guid isPermaLink="true">https://joshuakgoldberg.com/blog/type-parameters-missing-function-codefix/</guid><description>Corrects the missing function codefix to add type parameters when the function needs to be generic.</description><pubDate>Tue, 09 Aug 2022 00:00:00 GMT</pubDate></item><item><title>Team Construction Pitfalls</title><link>https://joshuakgoldberg.com/blog/team-construction-pitfalls/</link><guid isPermaLink="true">https://joshuakgoldberg.com/blog/team-construction-pitfalls/</guid><description>How misbalanced or poorly positioned teams restrict their developers in both the short and long term.</description><pubDate>Sat, 23 Jan 2021 00:00:00 GMT</pubDate></item><item><title>TypeScript Contribution Diary: Allowing Code in Constructors Before `super()`</title><link>https://joshuakgoldberg.com/blog/typescript-contribution-diary-code-before-super/</link><guid isPermaLink="true">https://joshuakgoldberg.com/blog/typescript-contribution-diary-code-before-super/</guid><description>Allowing derived classes with properties to include code before `super()` call that doesn&apos;t touch `this`. A grand pull request three years in the making -- with cake!</description><pubDate>Mon, 07 Mar 2022 00:00:00 GMT</pubDate></item><item><title>TypeScript Contribution Diary: Pretty Error Counts</title><link>https://joshuakgoldberg.com/blog/typescript-contribution-diary-pretty-error-counts/</link><guid isPermaLink="true">https://joshuakgoldberg.com/blog/typescript-contribution-diary-pretty-error-counts/</guid><description>How I helped add an &apos;errors summary&apos; to TypeScript&apos;s command-line --pretty --watch mode.</description><pubDate>Fri, 06 Apr 2018 00:00:00 GMT</pubDate></item><item><title>Type System Game Engines</title><link>https://joshuakgoldberg.com/blog/type-system-game-engines/</link><guid isPermaLink="true">https://joshuakgoldberg.com/blog/type-system-game-engines/</guid><description>Just for fun, what if we crafted a board game purely within TypeScript&apos;s logical type system?</description><pubDate>Mon, 05 Oct 2020 00:00:00 GMT</pubDate></item><item><title>TypeScript Contribution Diary: Allowing Code in Constructors Before `super()` (Technical Overview)</title><link>https://joshuakgoldberg.com/blog/typescript-contribution-diary-code-before-super-technical-overview/</link><guid isPermaLink="true">https://joshuakgoldberg.com/blog/typescript-contribution-diary-code-before-super-technical-overview/</guid><description>More technical descriptions around allowing derived classes with properties to include code before `super()` call that doesn&apos;t touch `this`.</description><pubDate>Mon, 07 Mar 2022 00:00:00 GMT</pubDate></item><item><title>TypeScript Contribution Diary: Improved Errors on Invalid Variable Names</title><link>https://joshuakgoldberg.com/blog/typescript-contribution-diary-invalid-name-errors/</link><guid isPermaLink="true">https://joshuakgoldberg.com/blog/typescript-contribution-diary-invalid-name-errors/</guid><description>Improving the first error message emitted for invalid variable identifiers.</description><pubDate>Tue, 15 Sep 2020 00:00:00 GMT</pubDate></item><item><title>TypeScript Contribution Diary: Improved Syntax Error for Enum Member Colons</title><link>https://joshuakgoldberg.com/blog/typescript-contribution-diary-enum-commas/</link><guid isPermaLink="true">https://joshuakgoldberg.com/blog/typescript-contribution-diary-enum-commas/</guid><description>A quick syntax parsing improvement for incorrectly formatted enums.</description><pubDate>Mon, 21 Oct 2019 00:00:00 GMT</pubDate></item><item><title>TypeScript Contribution Diary: Identifiers after Numeric Literals</title><link>https://joshuakgoldberg.com/blog/typescript-contribution-diary-errors-for-identifiers-after-numeric-literals/</link><guid isPermaLink="true">https://joshuakgoldberg.com/blog/typescript-contribution-diary-errors-for-identifiers-after-numeric-literals/</guid><description>How I made TypeScript&apos;s parsing of name characters after numbers conform to the ECMAScript specification just a bit more strictly.</description><pubDate>Fri, 07 Dec 2018 00:00:00 GMT</pubDate></item><item><title>TypeScript Contribution Diary: Improved errors for empty DOM interfaces</title><link>https://joshuakgoldberg.com/blog/typescript-contribution-diary-empty-dom-interfaces/</link><guid isPermaLink="true">https://joshuakgoldberg.com/blog/typescript-contribution-diary-empty-dom-interfaces/</guid><description>Glorious hardcoding of a better error message if someone forgets to include the &apos;dom&apos; lib option.</description><pubDate>Tue, 22 Jun 2021 00:00:00 GMT</pubDate></item><item><title>TypeScript Contribution Diary: Trailing Type Parameters</title><link>https://joshuakgoldberg.com/blog/typescript-contribution-diary-trailing-type-parameters/</link><guid isPermaLink="true">https://joshuakgoldberg.com/blog/typescript-contribution-diary-trailing-type-parameters/</guid><description>How I contributed a change to TypeScript that allowed trailing commas in type parameter/argument lists.</description><pubDate>Sat, 17 Feb 2018 00:00:00 GMT</pubDate></item><item><title>useEffect Pet Peeve: Side Effects, Not Initialization</title><link>https://joshuakgoldberg.com/blog/use-effect-pet-peeve/</link><guid isPermaLink="true">https://joshuakgoldberg.com/blog/use-effect-pet-peeve/</guid><description>Explaining why using useEffect to initialize values is dangerous.</description><pubDate>Wed, 08 Sep 2021 00:00:00 GMT</pubDate></item><item><title>TypeScript Contribution Diary: // @ts-expect-error</title><link>https://joshuakgoldberg.com/blog/typescript-contribution-diary-ts-expect-error/</link><guid isPermaLink="true">https://joshuakgoldberg.com/blog/typescript-contribution-diary-ts-expect-error/</guid><description>Adding a new comment directive to the TypeScript compiler.</description><pubDate>Sun, 12 Jul 2020 00:00:00 GMT</pubDate></item><item><title>Why I&apos;m Migrating from X to Bluesky</title><link>https://joshuakgoldberg.com/blog/why-im-migrating-from-x-to-bluesky/</link><guid isPermaLink="true">https://joshuakgoldberg.com/blog/why-im-migrating-from-x-to-bluesky/</guid><description>Twitter has been a core part of my web development career for over a decade. But Twitter&apos;s been replaced by the vastly inferior X. Here&apos;s why I&apos;m finally ready to commit to Bluesky.</description><pubDate>Mon, 18 Nov 2024 00:00:00 GMT</pubDate></item><item><title>You Probably Don&apos;t Need `eslint-config-prettier` or `eslint-plugin-prettier`</title><link>https://joshuakgoldberg.com/blog/you-probably-dont-need-eslint-config-prettier-or-eslint-plugin-prettier/</link><guid isPermaLink="true">https://joshuakgoldberg.com/blog/you-probably-dont-need-eslint-config-prettier-or-eslint-plugin-prettier/</guid><description>Explaining two popular Prettier integrations for ESLint, and why I avoid both of them.</description><pubDate>Tue, 23 Jan 2024 00:00:00 GMT</pubDate></item><item><title>Why Typed Linting Needs TypeScript Today</title><link>https://joshuakgoldberg.com/blog/why-typed-linting-needs-typescript-today/</link><guid isPermaLink="true">https://joshuakgoldberg.com/blog/why-typed-linting-needs-typescript-today/</guid><description>Typed linting is powerful but requires a full type checker to function well. Today, that means TypeScript. This is why we haven&apos;t found a suitable replacement yet.</description><pubDate>Mon, 23 Sep 2024 00:00:00 GMT</pubDate></item></channel></rss>