Lieke B ๐Ÿ‘ฉโ€๐Ÿ’ป's Avatar

Lieke B ๐Ÿ‘ฉโ€๐Ÿ’ป

@leekeh.com

bookseller to senior frontend dev in 3 years ๐Ÿ“š passionate about a11y ๐Ÿง‘โ€๐Ÿ’ป, better communication in tech ๐Ÿ’ฌ and using the web for good ๐ŸŒฑ Currently working for design system Vitamin Play @ Decathlon ( โ€ แ—ข โ€ )~โ™ก

263
Followers
525
Following
85
Posts
03.11.2024
Joined
Posts Following

Latest posts by Lieke B ๐Ÿ‘ฉโ€๐Ÿ’ป @leekeh.com

How I felt reading an article about the HTML <output> element today, but it is for sure not the first time this has happened.

19.10.2025 12:11 ๐Ÿ‘ 1 ๐Ÿ” 0 ๐Ÿ’ฌ 0 ๐Ÿ“Œ 0

blog post: you need to use this HTML feature yesterday!! IT's so semantic and beautiful!! Get rid of all you custom code!!
end of the post: Actually, there is no support in Firefox or Safari YET, you need to use polyfills, screen-reader support is limited, BUT just give it time ๐Ÿ™

19.10.2025 12:10 ๐Ÿ‘ 2 ๐Ÿ” 0 ๐Ÿ’ฌ 1 ๐Ÿ“Œ 0

People treating LinkedIn like Facebook make me feel like they need to incorporate work into everything they do.

02.06.2025 18:29 ๐Ÿ‘ 4 ๐Ÿ” 0 ๐Ÿ’ฌ 0 ๐Ÿ“Œ 0

This helped me paint a better mental picture, although it still makes more sense to me to maintain an awareness of the separation of the server and client
Exposing API routes in frameworks like SvelteKit or Next feels closely-knit enough + nowadays there are a lot of ways to generate types for API's

03.05.2025 20:15 ๐Ÿ‘ 1 ๐Ÿ” 0 ๐Ÿ’ฌ 0 ๐Ÿ“Œ 0
Preview
Patterns.dev Learn JavaScript design and performance patterns for building more powerful web applications.

patterns.dev is such a well-written source.

25.04.2025 15:25 ๐Ÿ‘ 2 ๐Ÿ” 0 ๐Ÿ’ฌ 0 ๐Ÿ“Œ 0

why trouble thyself with CSS-in-JS when you could have a little walk-in-the-wilderness. a little peace-in-your-heart. why waste thy hours comparing runtime environments when you could be spending time running in the environment

22.04.2025 17:06 ๐Ÿ‘ 58 ๐Ÿ” 9 ๐Ÿ’ฌ 4 ๐Ÿ“Œ 0
A screenshot of Telegram message privacy settings. 

Full text:
Who can send me messages?
- Everybody (selected)
- My content and Premium users (locked)
- Charge for Messages (locked)

You can restrict messages from users who are not in your contracts and don't have Premium.

What is Telegram Premium? (link)

Popup:
Premium required 
Subscribe to Telegram Premium to select this option.
Unlock (button)

A screenshot of Telegram message privacy settings. Full text: Who can send me messages? - Everybody (selected) - My content and Premium users (locked) - Charge for Messages (locked) You can restrict messages from users who are not in your contracts and don't have Premium. What is Telegram Premium? (link) Popup: Premium required Subscribe to Telegram Premium to select this option. Unlock (button)

I'm deleting my Telegram account. Too much spam, and having to pay to block incoming messages from non-contacts is hostile UI and frankly against what I thought the app stood for.

22.04.2025 16:19 ๐Ÿ‘ 3 ๐Ÿ” 0 ๐Ÿ’ฌ 0 ๐Ÿ“Œ 0
A yellowed, black and white picture of a dog surrounded by an arctic landscape. It is captioned "Deep in thought".

A yellowed, black and white picture of a dog surrounded by an arctic landscape. It is captioned "Deep in thought".

When browsing public domain, I somehow always run into this picture from the Amundsen south pole expedition.

23.03.2025 09:43 ๐Ÿ‘ 3 ๐Ÿ” 0 ๐Ÿ’ฌ 0 ๐Ÿ“Œ 0

Playing Sims 2 music while cooking gives an elite feeling I didn't know I needed

16.03.2025 18:34 ๐Ÿ‘ 1 ๐Ÿ” 0 ๐Ÿ’ฌ 0 ๐Ÿ“Œ 0

Had a similar issue with passed bindable state, I was recommended to do this:
setContext("value", ()=>yourState);
So instead of passing the state, you pass a function that returns it. Somehow makes a difference.

05.03.2025 12:23 ๐Ÿ‘ 0 ๐Ÿ” 0 ๐Ÿ’ฌ 0 ๐Ÿ“Œ 0

There are so many cool characters in Unicode

04.03.2025 14:15 ๐Ÿ‘ 1 ๐Ÿ” 0 ๐Ÿ’ฌ 0 ๐Ÿ“Œ 0
Preview
Public Work by Cosmos Public Work is a visual search engine for public domain content. Explore 100,000+ copyright-free images from The MET, New York Public Library, and other sources

I love exploring public.work for some aesthetic public domain images or just for the vibes tbh

23.02.2025 16:54 ๐Ÿ‘ 1 ๐Ÿ” 0 ๐Ÿ’ฌ 0 ๐Ÿ“Œ 0

How have I never heard of <hgroup> before?

23.02.2025 14:00 ๐Ÿ‘ 1 ๐Ÿ” 0 ๐Ÿ’ฌ 0 ๐Ÿ“Œ 0

Another day of trying to convince people to not use xstate

14.02.2025 16:09 ๐Ÿ‘ 2 ๐Ÿ” 0 ๐Ÿ’ฌ 1 ๐Ÿ“Œ 0

My side project keeps getting bigger in scope, but I'm trying to enjoy the ride. If it ends up going nowhere at least I learned something.

12.02.2025 21:12 ๐Ÿ‘ 2 ๐Ÿ” 0 ๐Ÿ’ฌ 0 ๐Ÿ“Œ 0
Screenshot from the Obsidian roadmap, showing that the "Dynamic views" feature is currently active, i.e. in development. Subtitle of the feature: "Create dynamic tables using data stored in note properties."

Screenshot from the Obsidian roadmap, showing that the "Dynamic views" feature is currently active, i.e. in development. Subtitle of the feature: "Create dynamic tables using data stored in note properties."

This is the main thing keeping me on Notion, so exciting to see it's getting there ๐Ÿคฉ

11.02.2025 18:17 ๐Ÿ‘ 1 ๐Ÿ” 0 ๐Ÿ’ฌ 0 ๐Ÿ“Œ 0

One of these days I'm going to move all of my personal administration to @obsidian.md

11.02.2025 18:09 ๐Ÿ‘ 2 ๐Ÿ” 0 ๐Ÿ’ฌ 1 ๐Ÿ“Œ 0
euphoric photo of dolphins jumping under a rainbow

euphoric photo of dolphins jumping under a rainbow

this is how it feels to reach 30 MILLION users!!!

29.01.2025 04:20 ๐Ÿ‘ 212653 ๐Ÿ” 16125 ๐Ÿ’ฌ 4102 ๐Ÿ“Œ 1679

Alright, somehow I cannot wrap around to how it can infer rest but not key1 and key2, but that's probable a me-problem ๐Ÿ˜… The examples you pass are helpful, I guess I just wish it would not be needed to do double bookkeeping.
Thanks anyway for guiding me and I hope you are doing well! ๐Ÿซถ

17.01.2025 17:09 ๐Ÿ‘ 2 ๐Ÿ” 0 ๐Ÿ’ฌ 0 ๐Ÿ“Œ 0

But at the same time the type does resolve properly, the result is typed as string. Anyway maybe my mind is just stubborn on this one ยฏ\_(ใƒ„)_/ยฏ

16.01.2025 18:59 ๐Ÿ‘ 0 ๐Ÿ” 0 ๐Ÿ’ฌ 1 ๐Ÿ“Œ 0

And why would it not know key1, but it would know the restprops?

16.01.2025 15:22 ๐Ÿ‘ 1 ๐Ÿ” 0 ๐Ÿ’ฌ 1 ๐Ÿ“Œ 0

but if I write key1: key1 as T['key1']` in the return statement, it will resolve it to string. What exactly is the difference?

16.01.2025 15:21 ๐Ÿ‘ 1 ๐Ÿ” 0 ๐Ÿ’ฌ 1 ๐Ÿ“Œ 0

The internet needs more of this

16.01.2025 15:18 ๐Ÿ‘ 1 ๐Ÿ” 0 ๐Ÿ’ฌ 1 ๐Ÿ“Œ 0

Ahah thanks ๐Ÿซถ It just seems like such a basic thing, blows my mind ๐Ÿ™ƒ

16.01.2025 15:04 ๐Ÿ‘ 1 ๐Ÿ” 0 ๐Ÿ’ฌ 0 ๐Ÿ“Œ 0
TS Playground - An online editor for exploring TypeScript and JavaScript The Playground lets you write TypeScript or JavaScript online in a safe and sharable way.

Here's an interactive repro: www.typescriptlang.org/play/#code/G...

16.01.2025 14:58 ๐Ÿ‘ 0 ๐Ÿ” 0 ๐Ÿ’ฌ 0 ๐Ÿ“Œ 0
Screenshot of typescript code. The code reads:

function destructure<T extends Record<string, unknown>>(props: T) {
  const { key1, key2, ...restProps } = props;

  return {
    key1,
    key2,
    ...restProps,
  };
}

const test = destructure({ key1: "value1", key2: "value2", key3: "value3" });
typeof test.key1; //unknown
typeof test.key2; //unknown
typeof test.key3; //string

In normal language, this means that when the destructure function is called, the restprops will be correctly typed, but the picked keys will receive the unknown property.

Screenshot of typescript code. The code reads: function destructure<T extends Record<string, unknown>>(props: T) { const { key1, key2, ...restProps } = props; return { key1, key2, ...restProps, }; } const test = destructure({ key1: "value1", key2: "value2", key3: "value3" }); typeof test.key1; //unknown typeof test.key2; //unknown typeof test.key3; //string In normal language, this means that when the destructure function is called, the restprops will be correctly typed, but the picked keys will receive the unknown property.

Am losing my mind here.... Can typescript not correctly infer types of keys that were destructured from an object, if the object was passed as a generic type? But the remainder of the object is still correctly typed??

Anyone has an elegant way to work with this?

16.01.2025 14:49 ๐Ÿ‘ 2 ๐Ÿ” 0 ๐Ÿ’ฌ 3 ๐Ÿ“Œ 0
I wake up in the morning.
I sit at my computer.
The internet screams at me that the world is on fire.
I am overwhelmed by the deluge of bad news and faceplant in front of the computer.

I wake up in the morning. I sit at my computer. The internet screams at me that the world is on fire. I am overwhelmed by the deluge of bad news and faceplant in front of the computer.

I would like this comic I drew in 2017 to stop being relevant pleeeaaaaase

14.01.2025 17:21 ๐Ÿ‘ 30939 ๐Ÿ” 6468 ๐Ÿ’ฌ 65 ๐Ÿ“Œ 302

Ads and popups everywhere, it's difficult to figure out what's going on.
A PDF viewer that plays video adds every time you open it.
A free app pushing the premium version.
When you search for a specific app in the Play store the first result will be a promoted app that you didn't search for.

22.12.2024 13:35 ๐Ÿ‘ 1 ๐Ÿ” 0 ๐Ÿ’ฌ 0 ๐Ÿ“Œ 0

interacting with apps and websites with my parents makes me realise how hostile the web is ๐Ÿซ 

22.12.2024 13:33 ๐Ÿ‘ 3 ๐Ÿ” 0 ๐Ÿ’ฌ 1 ๐Ÿ“Œ 0