Sign in

Remco Haszing

@remcohaszing.nl
942 followers 255 following 1.4K posts

Open source software developer, cat servant, coffee to code converter, metalhead 🤘 remcohaszing.nl github.com/remcohaszing

PostsRepliesMedia
Remco Haszing @remcohaszing.nl · 27/09/2026
Well that’s inconclusive 😅
Activity close to automation signals.

Mixed activity

Activity patterns show a mix of organic and automated signals.

Analyzed from the last 80 public GitHub events
110
Remco Haszing @remcohaszing.nl · 11/09/2026
Cat playing with a feather
031
Remco Haszing @remcohaszing.nl · 06/09/2026
I published a TypeScript content mapper for CSS modules. This gives you type-safety and definitions when importing CSS in TypeScript. github.com/remcohaszing...
On the right is a pane of CSS code. On the left is a pane of TypeScript code that imports the CSS as a module. The hover info of the imported CSS class shows the CSS block. There’s also an unknown class name, which has a red squiggly underline.
6808
Remco Haszing @remcohaszing.nl · 31/08/2026
This is what it looks like if you define invalid overrides for the "ol" / "ul" components. For an invalid "li" override, every list item would be marked as an error.
The first entries of the lists have a red squiggly underline. The components are defined as:

const components = {
    ol: null,
    ul: null,
} as const

export function useMDXComponents() {
    return components
}
000
Remco Haszing @remcohaszing.nl · 31/08/2026
How do people feel about showing 2 LSP definitions for 1 character? I really like how definitions are working out for headers, strong, etc. But in case of markdown lists, the <ul> is defined by the same token that creates the <li>
A markdown list where the first definition info is show for the first dash. Two definitions are shown: "ul" and "li"

The markdown content is:

- Pokéball
- Great ball
- Ultra ball

1. Bulbasaur
2. Ivysaur
3. Venusaur
4. Charmander
5. Charmeleon
6. Charizard
7. Squirtle
8. Wartortle
9.  Blastoise
10. Caterpie
11. Metapod
12. Butterfree
120
Remco Haszing @remcohaszing.nl · 29/08/2026
I’m now seeing type definitions, hover info, type errors, etc, for h1-h6 headers in MDX that are overridden in mdx-components.tsx This uses the TypeScript content mapper Atom span maps. I believe Volar was never even be able to do this. But also, I never tried that. I might have overlooked it.
VSCode showing a JSX definition for a level 2 markdown heading inside MDX and a type error for a level 4 markdown heading based on an mdx-components fole on the right.
1150
Remco Haszing @remcohaszing.nl · 25/08/2026
Ok fine, I added @react-router/fs-routes support!
Typed hover information for the props of a React Router route inside an MDX file.

This also shows the @react-router/fs-routes preset is specified in the mdx-content-wrapper options.
000
Remco Haszing @remcohaszing.nl · 25/08/2026
I added props inference for @nextjs.org in mdx-content-mapper. Also type information is inferred from mdx-components.tsx (or any providerImportSource of your choice). I could also infer types for known exports, but maybe that’s taking it too far?
Hover information in an MDX file that shows type information about the props of the Next.js page it renders.Hover information in an MDX file that shows the inferred type of the <Button> component from mdx-components.tsx.
130
Remco Haszing @remcohaszing.nl · 22/08/2026
Oops, I accidentally added type checking for code blocks in regular markdown files in addition to MDX. Ah well…
Markdown code with a TypeScript code block. The TypeScript code shows a highlighted type error and some hover information.

## Code Example

The following code has a type error!

```ts
/**
 * This is a code example.
 */
export function getNumber(): number {
  return 'This is not a number'
}




getNumber()
```
1594
Remco Haszing @remcohaszing.nl · 17/08/2026
Also works for YAML anchors by the way
Hover information for a YAML anchor that shows the TypeScript shape.
160
Remco Haszing @remcohaszing.nl · 17/08/2026
My editor using mdx-content-mapper is now showing TypeScript info for frontmatter and code blocks.
An MDX file with two JavaScript code blocks. One is hovered and shows information about the code. The other highlights a type error.An MDX file with YAML frontmatter data and a variable named frontmatter. Hover information for the frontmatter variable shows the TypeScript type of the frontmatter data.
1275
Remco Haszing @remcohaszing.nl · 15/08/2026
They sure are
The tsgo command highlighting type errors inside of MDX files.
030
Remco Haszing @remcohaszing.nl · 07/08/2026
I just had a cat run installed for Pura. I’m really happy with it, but also mixed feelings because it was supposed to be for Impa too.
Cat sitting on top of a table, looking from a balcony in a cat run
030
Remco Haszing @remcohaszing.nl · 18/07/2026
After a week long struggle for her life, Impa has passed away.
A black cat standing on a scratch pole
7130
Remco Haszing @remcohaszing.nl · 10/06/2026
Well… I am 😅 A lot of them
120
Remco Haszing @remcohaszing.nl · 22/05/2026
Depite all recent supply chain attacks, this has been the biggest threat to my projects lately. I can’t leave my laptop unattended for 5 seconds anymore 😹
A cat sitting on a laptop
720516
Remco Haszing @remcohaszing.nl · 19/05/2026
I installed a new script into ~/.local/bin/bun Hopefully this will fool some malicious scripts into thinking they ran succesfully.
#!/usr/bin/env bash

echo 'Attempted to run bun'
070
Remco Haszing @remcohaszing.nl · 08/05/2026
One of my cats has found a new favourite spot
A cat sitting on top of a laptop.
3260
Remco Haszing @remcohaszing.nl · 27/04/2026
I brought my cats a new friend from Legoland
2 cats checking out a Lego cat
080
Remco Haszing @remcohaszing.nl · 18/04/2026
Sometimes my cat likes to lie doen pretty much on my face
A black cat sleeping on Remco’s face
240
Remco Haszing @remcohaszing.nl · 02/04/2026
This distinction between malware and vulnerabilities in the GitHub security tab is new, isn’t it? It’s a good distinction.
The GitHub security and quality side menu, listing: Dependabot, Malware, Vulnerabilities, Code scanning, Secret scanning, Security policy, and Advisories.
130
Remco Haszing @remcohaszing.nl · 13/03/2026
Too late
2 black cats and an octocat in the shadows
010
Remco Haszing @remcohaszing.nl · 27/02/2026
This set is pretty cool ⚔️
Link and Princess Zelda fighting Ganon in a castle that’s falling apart.
000
Remco Haszing @remcohaszing.nl · 07/01/2026
We got a lot of snow as well
A black cat sitting in front of the window with a snow covered tree outside.
230
Remco Haszing @remcohaszing.nl · 16/12/2025
“I guess my cat is using this” is the purrfect reason to skip an activity
Cat on an office chair behind a desk
010
Remco Haszing @remcohaszing.nl · 10/12/2025
What do you think this HTML means? It might not be what you expect.
<svg><foreignObject><br></br></foreignObject></svg>
110
Remco Haszing @remcohaszing.nl · 04/12/2025
A while ago I reported a security advisory for a project I maintain. Does that mean the advisory is going to be there forever? Can I close it at some point? The vulnerability is fixed. That counter on the GitHub Security tab is annoying.
The GitHub repository tabs showing: Code, Issues, Pull requests, Actions, Security (1), Insights, Settings.
010
Remco Haszing @remcohaszing.nl · 03/12/2025
Haha awesome. I got some free swag for making contributions to @vscode.dev.
Remco holding an Octocat pluche, some stickers and wearing a VSCode hat. There’s also a black cat.
2250
Remco Haszing @remcohaszing.nl · 08/11/2025
In the logs I see no indication that trusted publishing is being used. However, I do see that provenance is published. You use a third party tool that hides details. github.com/remcohaszing...
Run npm publish *.tgz
npm warn Unknown user config "always-auth". This will stop working in the next major version of npm.
npm notice
npm notice 📦  estree-util-value-to-estree@3.5.0
npm notice Tarball Contents
npm notice 1.1kB LICENSE.md
npm notice 9.5kB README.md
npm notice 1.2kB dist/estree-util-value-to-estree.d.ts
npm notice 538B dist/estree-util-value-to-estree.d.ts.map
npm notice 22.5kB dist/estree-util-value-to-estree.js
npm notice 17.3kB dist/estree-util-value-to-estree.js.map
npm notice 1.4kB package.json
npm notice 22.2kB src/estree-util-value-to-estree.ts
npm notice Tarball Details
npm notice name: estree-util-value-to-estree
npm notice version: 3.5.0
npm notice filename: estree-util-value-to-estree-3.5.0.tgz
npm notice package size: 16.1 kB
npm notice unpacked size: 75.8 kB
npm notice shasum: cd70cf37e7f78eae3e110d66a3436ce0d18a8f80
npm notice integrity: sha512-aMV56R27Gv3Qm[...]lWP9tKk6ghRZQ==
npm notice total files: 8
npm notice
npm notice SECURITY NOTICE: Breaking changes starting October 13, 2025. New tokens will be limited to a maximum lifetime of 90 days, and TOTP setup will be disabled. Classic tokens will be revoked in November. Update your CI/CD workflows to avoid disruption. Learn more: https://gh.io/npm-token-changes
npm notice Publishing to https://registry.npmjs.org/ with tag latest and default access
npm notice publish Signed provenance statement with source and build information from GitHub Actions
npm notice publish Provenance statement published to transparency log: https://search.sigstore.dev/?logIndex=637432527
+ estree-util-value-to-estree@3.5.0
100
Remco Haszing @remcohaszing.nl · 08/11/2025
GitHub Actions is the publisher. This is visible in the npm website search results as well as the `npm search` command: www.npmjs.com/search?q=est...
A screenshot of the search result linked in the post. It shows estree-util-value-to-estree is published by GitHub Actions
100
Remco Haszing @remcohaszing.nl · 10/09/2025
What would it look like if we allow MDX in props? That means it’s no longer JavaScript. What if we then use curly brackets to allow expressions? That deviates further from JSX. It also conflicts with JavaScript object notation.
<div
  children={
    <span>
      **strong text**
    </span>
  }
/>

{/* If we allowed this… */}
<div
  children={
   {
      <span>
        **strong text**
      </span>
    }
  }
/>

{/* … this would no longer work */}
<div children={{ color: 'red' }} />

{/* So this would be the alternative */}
<div children={{{ color: 'red' }}} />
110
Remco Haszing @remcohaszing.nl · 10/09/2025
MDX needs to balance JavaScript and markdown syntax. Every choice has pros and cons. At the AST level, MDX elements may have mdast content as children. Its props are ESTree, same as for example expression statements. This offers a nice way to escape MDX syntax.
{
  <div>
    I’m a **software developer**
  </div>
}
110
Remco Haszing @remcohaszing.nl · 28/08/2025
I believe that’s a macOS thing. Here’s the same on my Linux machine.
$ cat test.mjs                                
const startTime = performance.now()
process.title = 'node (example)'
const endTime = performance.now()

console.log((endTime - startTime).toFixed(2), 'ms')
$ node test.mjs      
0.01 ms
280
Remco Haszing @remcohaszing.nl · 01/08/2025
It’s really cool to be working on variable font sizes, improved line wrapping, and RTL support in Monaco editor / @vscode.dev. Also fun to learn about RTL and learn how it fits in this mostly LTR world.
Monaco editor showing the intro text of Lord of the Rings in both English and Hebrew. A word is made bigger and blue. A whole is made bigger and green. The Hebrew text is aligned to the right.
121
Remco Haszing @remcohaszing.nl · 25/07/2025
It’s the same, except I use Linux.
Visual Studio Code version information. Using VSCode 1.102.2.
110
Remco Haszing @remcohaszing.nl · 25/07/2025
Nope
Visual Studio Code with the Copilot side bar. There’s no X-button.
210
Remco Haszing @remcohaszing.nl · 05/06/2025
We just got a new box
A cat sitting in a My Nintendo box which has a picture of Super Mario.
0984
Remco Haszing @remcohaszing.nl · 22/05/2025
I’m a bit confused about this RSC detail. This component renders fine, but the server responds with an internal server error. Does this means the components marked with 'use client' are allowed to use the DOM, but not the module?
'use client'

import { useEffect } from 'react'

console.log('module', document)

export function Test() {
  console.log('render', document)

  useEffect(() => {
    console.log('useEffect', document)
  }, [])

  return `Test ${document}`
}GET http://localhost:3000/test 500 (Internal Server Error)
module #document (http://localhost:3000/test)
render #document (http://localhost:3000/test)
render #document (http://localhost:3000/test)
useEffect #document (http://localhost:3000/test)
320
Remco Haszing @remcohaszing.nl · 11/05/2025
And then there’s toHast
The band Rammstein wearing masks in de clip from their song “Du Hast”
010
Remco Haszing @remcohaszing.nl · 25/04/2025
This is true, but it is possible to generate invalid DOM structured dynamically. So it may be possible to nest a <form> inside a <p> tag when using frameworks, or simply by using document.createElement().
Chrome developer tools elements inspector showing the following HTML structure:

<p>
  paragraph
  <form>form</form>
  paragraph
</p>
010
Remco Haszing @remcohaszing.nl · 28/02/2025
In case you’re wondering, this did the trick!
The issue you are seeing is a known bug that often occurs when a user account that mentioned you in a thread has been flagged for potentially violating our Terms of Service. When this happens, the content is hidden from view, including the notification, to protect the privacy of the user account and prevent further violations. Our engineering team is aware of this issue, and they are actively working to address it. We apologize for any confusion or frustration this may have caused
 
In the meantime, there is a workaround you can try. You can mark all notifications as read using our Notifications API. To do so, please run the following command, replacing $TOKEN with your personal access token. Note that the token needs to have notifications scope checked.
 
curl -X PUT -H "Accept: application/vnd.github.v3+json" -H "Authorization: token $TOKEN" https://api.github.com/notifications
 
Or if you're using GitHub CLI:
 
gh api --method PUT -H "Accept: application/vnd.github.v3+json" /notifications 
 
Please note that this workaround will not remove the repository from the list of repositories you have received notifications for, which appears on the left panel of the notifications page. Unfortunately, it is currently not possible to edit that list. That said, over time, the ones currently displayed will move down the list and eventually won't be visible.
010
Remco Haszing @remcohaszing.nl · 19/02/2025
I usually have two panes open in VSCode. So I can watch the code and preview side-by-side.
The readme of estree-util-value-to-estree rendered on the left as plain text, on the right as a preview.
110
Remco Haszing @remcohaszing.nl · 30/12/2024
I managed to finish it this year 😀
The Lego Rivendell set from Lord of the Rings
050
Remco Haszing @remcohaszing.nl · 19/12/2024
My OSS contributions have dwindled this year, but I’ll be more active again next year! Cool to see MDX is now recognized as a language! #GitHubUnwrapped
040
Remco Haszing @remcohaszing.nl · 01/12/2024
That must be my cats’ long lost sibling!
2 black cats
010
Remco Haszing @remcohaszing.nl · 12/11/2024
There’s no such thing as enough cats
2 black cats and a stuffed doll Tux
110
Remco Haszing @remcohaszing.nl · 09/11/2024
Of course we’re always serious about our feline overlords
Black cat with eyes wide open, clinging to my leg using her nails
110
Remco Haszing @remcohaszing.nl · 04/11/2024
I like certain things esthetically (but not everything). It’s also nice that it’s closer to JS. Also it’s nice that the type information is somewhat preserved in the compiled output. But TS syntax has some advantages too. For example to annotate typedefs with JSDoc tags and non-null assertions.
/**
 * Greet a person.
 *
 * @param {string} name
 *   Whom to greet
 * @returns {undefined}
 */
export function hello(name) {
  console.log('Hello', name)
}/**
 * Greet a person.
 *
 * @param name
 *   Whom to greet
 */
export function hello(name: string): undefined {
  console.log('Hello', name)
}
000
Remco Haszing @remcohaszing.nl · 03/11/2024
Prr
Two black cats sleeping
071
Remco Haszing @remcohaszing.nl · 01/11/2024
Works great on GitHub, but not as nice on GitLab. They require the format below, which works, but doesn’t look as nice as a handle. Also the link they generate works, but maybe it should redirect to the link using the handle? bsky.app/profile/did:...
GitLab input field for Bluesky IDs
000