
Goldblog
A blog about open source, static analysis, and web dev.
New posts are shared online and posted to an RSS feed at /rss.xml .
2023
 
 Contributing to a create-typescript-app Repository: FAQs Contributing to a create-typescript-app Repository: FAQs- Oct 2015 minute read FAQs for contributing to my create-typescript-app project or any repository scaffolded using it.
 Contributing to a create-typescript-app Repository Contributing to a create-typescript-app Repository- Oct 2020 minute read A thorough guide through contributing to create-typescript-app or any repository scaffolded using it.
 Speeding Up Centered Part 5: Emoji Processing Speeding Up Centered Part 5: Emoji Processing- Sep 2015 minute read Finding and eliminating thousands of calls to recreate a giant regular expression in a popular open source emoji plugin.
 Speeding Up Centered Part 4: Unused Code Bloat Speeding Up Centered Part 4: Unused Code Bloat- Aug 2110 minute read Using Knip to automatically detect unused files and dependencies in the Centered repository.
 Speeding Up Centered Part 3: Barrel Exports Speeding Up Centered Part 3: Barrel Exports- Aug 715 minute read Automating changes to module imports to overcome the build system not correctly tree shaking barrel exports.
 Speeding Up Centered Part 2: Hidden Embedded Images Speeding Up Centered Part 2: Hidden Embedded Images- Aug 710 minute read Finding and removing giant unused assets hidden in marketing page to speed up that page's performance.
 Speeding Up Centered Part 1: 81 <iframe> Embeds Speeding Up Centered Part 1: 81 <iframe> Embeds- Jul 1915 minute read Improving a page's performance by over-eager loading most of its embedded content.
- The Blurry Line Between Formatting and StyleJun 1910 minute read Why separating responsibilities between your formatter and linter isn't always clear-cut.
 Configuring ESLint, Prettier, and TypeScript Together: FAQs Configuring ESLint, Prettier, and TypeScript Together: FAQs- May 15 minute read How I recommend getting your formatter, linter, and type checker to play together nicely.
 Configuring ESLint, Prettier, and TypeScript Together Configuring ESLint, Prettier, and TypeScript Together- May 130 minute read How I recommend getting your formatter, linter, and type checker to play together nicely.
 Seven Reasons Why Conversational AI is Dangerous Seven Reasons Why Conversational AI is Dangerous- Apr 110 minute read While AI systems such as OpenAI and ChatGPT can be helpful in certain situations, there are also significant risks associated with their use.
 TypeScript Contribution Diary: Tuple Types Indexed by a Type Parameter TypeScript Contribution Diary: Tuple Types Indexed by a Type Parameter- Mar 3010 minute read Fixing a slight bug in how TypeScript resolves type elements of tuple types indexed by type parameters.
 
 Configuring Markdownlint Alongside Prettier Configuring Markdownlint Alongside Prettier- Jan 255 minute read Using the common markdown linter and disabling any rules that would intersect with dedicated formatters such as Prettier.
 
2022
 How I Apply to Conferences: FAQs How I Apply to Conferences: FAQs- Nov 1720 minute read Common questions and answers for my How I Apply To Conferences article.
 How I Apply to Conferences How I Apply to Conferences- Nov 1715 minute read From a hundred conference applications and thirty speaking roles, this is my process for submitting talks.
 No Unattainable Intelligence No Unattainable Intelligence- Sep 285 minute read In trying to make ourselves relatable, we reinforce the negative perception of intelligence gaps.
 Six Months of Full Time Open Source Six Months of Full Time Open Source- Sep 710 minute read What it's like to quit your job and try to work on open source tooling full time.
- TypeScript Contribution Diary: Type Parameters in the "Add Missing Function" CodefixAug 925 minute read Corrects the missing function codefix to add type parameters when the function needs to be generic.
 Standards Compliant Rickrolling Standards Compliant Rickrolling- Apr 110 minute read How to create an effective rickroll site with the Vimeo Player SDK despite modern web browser autoplay restrictions.
- TypeScript Contribution Diary: Allowing Code in Constructors Before super() (Technical Overview)Mar 725 minute read More technical descriptions around allowing derived classes with properties to include code before `super()` call that doesn't touch `this`.
 TypeScript Contribution Diary: Allowing Code in Constructors Before super() TypeScript Contribution Diary: Allowing Code in Constructors Before super()- Mar 710 minute read Allowing derived classes with properties to include code before `super()` call that doesn't touch `this`. A grand pull request three years in the making -- with cake!
- Why Open Source Pull Requests Can Take A WhileMar 710 minute read 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.
- Switching a Jest Project from Babel to SWCFeb 2115 minute read Speeding up and simplifying the transpiler configuration for a Jest project with Speedy Web Compiler (SWC).
- Full Time Open SourceJan 2215 minute read I'm quitting my job to become a full time open source maintainer
 Nature, Individuality, and Developer Empowerment Nature, Individuality, and Developer Empowerment- Jan 1815 minute read Applying learnings about how humans perceive forces of nature to how we understand code and organizations.
2021
- useEffect Pet Peeve: Side Effects, Not InitializationSep 810 minute read Explaining why using useEffect to initialize values is dangerous.
- Don't Write Bad CodeAug 1915 minute read A mantra for constantly learning to keep myself writing at my best.
 TypeScript Contribution Diary: Improved errors for empty DOM interfaces TypeScript Contribution Diary: Improved errors for empty DOM interfaces- Jun 2215 minute read Glorious hardcoding of a better error message if someone forgets to include the 'dom' lib option.
 Team Construction Pitfalls Team Construction Pitfalls- Jan 2315 minute read How misbalanced or poorly positioned teams restrict their developers in both the short and long term.
2020
 Type System Game Engines Type System Game Engines- Oct 535 minute read Just for fun, what if we crafted a board game purely within TypeScript's logical type system?
 TypeScript Contribution Diary: Improved Errors on Invalid Variable Names TypeScript Contribution Diary: Improved Errors on Invalid Variable Names- Sep 1515 minute read Improving the first error message emitted for invalid variable identifiers.
- TypeScript Contribution Diary: // @ts-expect-errorJul 1225 minute read Adding a new comment directive to the TypeScript compiler.
- Compassionate Onboardings as Developer DocumentationJun 1110 minute read How to use the energy of new employees to keep documentation up-to-date and useful.
2019
- Thoughts as a TSLint MaintainerNov 1915 minute read Maintaining TSLint was a wonderful mixed bag of shenanigans. Let's talk about it.
- TSLint to ESLint Part 2: tslint-to-eslint-configNov 1915 minute read Now that TSLint is being deprecated, let's look at how tslint-to-eslint-config converts your TSLint configuration to ESLint.
- TSLint to ESLint Part 1: Historical ContextNov 1910 minute read Now that TSLint is being deprecated, let's look at the history of JavaScript and TypeScript linting.
 TypeScript Contribution Diary: Improved Syntax Error for Enum Member Colons TypeScript Contribution Diary: Improved Syntax Error for Enum Member Colons- Oct 2110 minute read A quick syntax parsing improvement for incorrectly formatted enums.
- Binary Arithmetic in the TypeScript Type SystemOct 1120 minute read Just for fun, what if we represented binary values purely within TypeScript's logical type system?
 
2018
- TypeScript Contribution Diary: Identifiers after Numeric LiteralsDec 720 minute read How I made TypeScript's parsing of name characters after numbers conform to the ECMAScript specification just a bit more strictly.
- Investigating Internet Explorer Exclusive Bugs in JavaScriptOct 1220 minute read IE users are users too!
 TypeScript Contribution Diary: Pretty Error Counts TypeScript Contribution Diary: Pretty Error Counts- Apr 615 minute read How I helped add an 'errors summary' to TypeScript's command-line --pretty --watch mode.
 In Defense of 100% Unit Test Coverage In Defense of 100% Unit Test Coverage- Mar 1520 minute read Or: How to suddenly anger everybody, everywhere!
 TypeScript Contribution Diary: Trailing Type Parameters TypeScript Contribution Diary: Trailing Type Parameters- Feb 1710 minute read How I contributed a change to TypeScript that allowed trailing commas in type parameter/argument lists.
2017
 How lazily instantiated classes reduced my game engines' reset times by half How lazily instantiated classes reduced my game engines' reset times by half- Oct 95 minute read Using lazily instantiated, dynamic classes instead of hand-written functions to reduce unnecessary work during loads.
- Hacking TypeScript's async/await __awaiter for jQuery 2's "Promises"Jul 215 minute read Manipulating the details of TypeScript's emitted code to wrestle jQuery 2's older asynchronous constructs to work with modern `async`/`await`.
2016
- How to show RequireJS progress with NProgressDec 2810 minute read Using the popular NProgress library to visualize load progress on sites built on the AMD RequireJS loader