Sign in

Yonatan Kra

@yonatankra.com
290 followers 82 following 423 posts

Javascript developer, web components groupie, design systems, web performance, gamer and a scifi and fantasy author. Father of 4, hence the jokes ;) yonatankra.com

PostsRepliesMedia
Yonatan Kra @yonatankra.com · 09/09/2025
Like a mystic reading coffee cups, your tests reveal hidden truths about your code. What do they say about your design choices—and where does AI stumble? All about it in this new article: yonatankra.com/meaningful-t... #Flutter #Testing #SoftwareArchitecture #AI
yonatankra.com
Meaningful Tests: Human Hubris vs. AI - Yonatan Kra
How to reveal design flaws, human bias, and even where AI falls short.
020
Yonatan Kra @yonatankra.com · 06/09/2025
Are you writing with AI? I'm getting low scores on my text detector (meaning it's probably human-written!). Will we need a "No-AI" badge for human-made art? As an author, I enjoy to create. As a reader, the test is if I enjoyed the story or book. #wattpad #indieauthor #fantasy #authorlife #AIArt
A screenshot of a result page from an AI content detector. The top of the page reads "Your Text is Human written." Below this, there is a large, semi-circular progress bar. The bar is mostly light grey, with a small green and blue segment on the far left. In the center of the arc, it shows the text "5.83% AI GPT*," indicating the percentage of the text that was detected as AI-generated.
000
Yonatan Kra @yonatankra.com · 01/09/2025
OMG! I can't be a prouder LLM trainer. #softwaredevelopment #javascript #typescript #tdd #mcp
A close-up screenshot of a software development environment, likely from an IDE or a terminal. The main text is a developer's comment celebrating a clear architectural decision. It says, "Perfect! Clear architecture decisions. Let me delete the premature implementation and start with tests following TDD." The text is followed by a console command to remove a file, rm src/services/MCPPlaywrightClient.ts, indicating the developer is deleting the existing code to start over with a test-driven development approach.
050
Yonatan Kra @yonatankra.com · 27/08/2025
Remember a new chapter of Jack's Bane drops every day this week? Just finished drafting Saturday's chapter—and wow, the plot twist surprised even me. Catch up from the beginning: buff.ly/G0X8z6H Read it all: buff.ly/lM3QsEY #wattpad #indieauthor #fantasy #comedyfantasy #authorlife
A screenshot of a "Table of contents" or list of articles. The list shows four entries in a light grey color, and four entries below them highlighted in a light green background with a green dot next to each title. The titles are: Jack's Bane (Tue, Jul 29, 2025), Mistakes, Mentors, and Magical Mishaps (Fri, Aug 1, 2025), Of Pigs, Honor, and Missed meals (Sun, Aug 3, 2025), Mud, Fury, and the Fish (Tue, Aug 5, 2025), Web of Intentions (Fri, Aug 15, 2025), A Web Well Done (Fri, Aug 22, 2025), Barn's Bane (Tue, Aug 26, 2025), and Beauty and the Bane (about 5 hours ago).
010
Yonatan Kra @yonatankra.com · 25/08/2025
Jack and Bane are going to get a new chapter every day starting tomorrow. Free read at www.wattpad.com/story/398983... #wattpad #indieauthor #fantasy #comedyfantasy #authorlife
Anime-style fantasy illustration of two young adventurers in a chaotic battle scene. In the foreground, a dark-haired boy in a blue tunic kneels on the ground, wide-eyed and alarmed, with glowing sparks of orange magic bursting from his hand. Behind him stands a tall, muscular blond warrior in armor and a helmet, grinning confidently while gripping a large sword. Around them, enemies lie defeated on the forest floor, with a fire burning brightly in the background among tall trees. The mood is tense yet heroic, with a contrast between the sorcerer’s fear and the warrior’s bravado.
030
Yonatan Kra @yonatankra.com · 15/08/2025
New Chapter Alert! Jack & Bane are in deep silk. 🕷️ Facing eight eyes, dripping fangs… and two giant “pets.” Read free on Wattpad: buff.ly/yeswaTT #IndieAuthor #Wattpad #Fantasy #AmWritingFantasy #FantasyBooks #WriterCommunity #IndieFantasy #FantasyReaders #JacksBane
010
Yonatan Kra @yonatankra.com · 10/08/2025
Jack’s stuck to a tree. Bane’s covered in blood and mud. Too many giant spiders. Slippy the fish? Still alive—barely. Mud, Fury, and the Fish — new chapter of The Bane of Jack the Sorcerer now up. buff.ly/9oJg4Rs #IndieAuthor #Wattpad #FantasyBooks #IndieFantasy #FantasyReaders #JacksBane
A stylized, cartoon-like illustration of a dramatic fantasy scene at dusk. In the foreground, a young man with blond hair and a red cape is aggressively lunging forward with a short sword. He looks angry and determined. To his right, another young man with dark hair is on the ground, tangled in ropes, with a frightened expression. Both are surrounded by several small, pink pigs. In the background, a massive, menacing spider with glowing red eyes looms over the scene, while two other smaller, shadowy figures with glowing eyes are visible to the far left. A wooden building and a horse are visible in the background, and the sky is a vivid orange. A jar with a small, green creature inside sits on the ground between the two main characters.
120
Yonatan Kra @yonatankra.com · 03/08/2025
Three pigs. One mule. What can go wrong? Jack the Sorcerer returns in Chapter 3 — featuring heroic delusions, spiritually questionable bread, and a fish with teeth. Read the new chapter here: w.tt/4moCLxd Or start from the beginning: w.tt/4mqLXBh #FantasyComedy #Fantasy #JackTheSorcerer #wattpad
A stylized, cartoon-like illustration of a group of characters reacting to a spooky, night-time setting. In the foreground, a muscular man with spiky blond hair and a red cape looks terrified, holding up one hand in a defensive gesture while clenching a jar with a glowing, mischievous-looking creature in the other. Behind him, two wide-eyed pigs peek out from a wooden cart. To the left, a dark-haired figure with a glowing star on their chest looks on calmly, standing next to a grey horse with an equally stoic expression. The background is a dark, starlit sky with glowing red eyes and several large spiders lurking around a wooden building. The art style has a textured, slightly grainy filter over it.
000
Yonatan Kra @yonatankra.com · 01/08/2025
Jack the Sorcerer is back. Loud warriors? Check. Accidental spells? Check. Mentors with dramatic flair? Absolutely. Also: mildly cursed fish. Read Chapter 2 of The Bane of Jack the Sorcerer now! www.wattpad.com/1565110143-t... #Wattpad #FantasyFiction #WritingCommunity #IndieAuthor #ComedyFantasy
Anime-style fantasy illustration of a misty lakeside at dawn. A young sorcerer boy sits cross-legged near the water, looking annoyed, while an eccentric older wizard in patchwork robes leans in animatedly, gesturing as if lecturing. In the background, a muscular warrior stomps through the lake holding a small, angry, sharp-toothed fish. The scene is lighthearted and magical, with soft mist, fantasy lighting, and comedic character expressions.
030
Yonatan Kra @yonatankra.com · 31/07/2025
1/ Just read The State of CD 2025 by @davefarley77.bsky.social Insightful and encouraging as it gives a clear path for improvement. The study looked at nearly 100 organizations and how well they apply 14 key Continuous Delivery practices. Most are doing well culturally. Technically? Not so much.
Slide titled "The State of CD 2025." It summarizes findings from a study on nearly 100 organizations. The slide shows that most companies succeed in cultural aspects like autonomous teams, pipeline discipline, and process flow. However, many struggle with technical areas such as trunk-based development (35% adoption), test automation (42% coverage), and complete deployment pipelines (47%). It concludes that the top 10% of companies excel by investing in robust test automation, daily deployments, rollback pipelines, and observability.
172
Yonatan Kra @yonatankra.com · 24/07/2025
I'm moving to #flutter. That's it. No punch.
Saitama from One-Punch Man, drawn in black and white manga style, looking unimpressed with a speech bubble saying 'OK'.
010
Yonatan Kra @yonatankra.com · 22/07/2025
I'm not only back here, but also on stage! Happy to announce I'll be live coding a neural network on stage on July 30th. With Vanilla JavaScript. Who wants in? www.meetup.com/nwd-il/event... #javascript #neuralnetworks #AI
meetup.com
✨✨ NWD - Jul meetup !!! ✨✨, Wed, Jul 30, 2025, 6:30 PM | Meetup
🌟 Jun Meetup 🌟 🍕 18:30 - Pizza and mingling 🎗️18:45 - Main event אם אתם רוצים להשאר מעודכנים בכל מה שקורה בגב-ים - [הירשמו כאן](https://airtable.com/appy2berZ91iY5oaR
021
Yonatan Kra @yonatankra.com · 22/07/2025
Hi @bsky.app ! I'm back after a long time off the web. How are things? Here's something to open your day with
A screenshot of a Strava activity titled "Morning Run" by Yonatan Kra. The run covered a distance of 18.0 km with an elevation gain of 168 meters, completed in 1 hour and 23 minutes. A map shows the winding route taken through a residential area labeled "Modi'in-Maccabim-Re'ut," with various neighborhoods like "Haprahim," "Hanehalim," "Masua," and "Hashvatim" visible. The route itself is highlighted in orange, showing a roughly circular path with some extensions.
000
Yonatan Kra @yonatankra.com · 12/02/2025
Did you know you can close issues with commit messages? Short Version: Use `closes #13` to close issue #13 (replace 13 with your issue number) in your GitHub repository. Just commit this as the commit message and watch the magic happen. #github #ci #cd #opensource #softwaredevelopment
A screenshot of a GitHub issue timeline showing two recent actions:

1. YonatanKra closed the issue as "completed" 13 minutes ago.
2. github-project-automation moved the issue to the "Done" column in the "My App" project 13 minutes ago.
110
Yonatan Kra @yonatankra.com · 20/01/2025
Hey, Blueskiers! I know I haven't been around for some time. Sometimes, real life gets in the way of the virtual ones ;) But hey, I got to create this beauty: codepen.io/yonatankra/p... #webcomponents #browser #testing #jasminejs
codepen.io
Web Components with In Browser Testing
...
020
Yonatan Kra @yonatankra.com · 05/01/2025
Don't fall like I did! Vitest checks for substrings in rejection tests. If the error message is "found error," this passes: `await expect(() => get(a1)).rejects.toThrow("found");` However, this fails: `await expect(() => get(a1)).rejects.toThrow("found error 2");` 🤘 #vite #test #javascript
000
Yonatan Kra @yonatankra.com · 04/01/2025
Getting better at this.
A screenshot of a running app showing a completed run of 17.01 km with a pace of 4:27/km and a time of 1 hour and 15 minutes
000
Yonatan Kra @yonatankra.com · 02/01/2025
Hey Web Component ppl who meddle with design systems. I checked 3 design systems that came up first in Google search, and validation was nonexistent. When you build a form control, do you form-associate it? How do you handle validation? #webcomponents #designsystem #html #javascript
A browser developer console screenshot showing two lines of JavaScript code:

$0.validity

This line attempts to access the validity property of the selected element ($0).
The result is undefined, indicating that the selected element does not have a validity property.
$0.checkValidity()

This line attempts to call the checkValidity() method on the selected element.
An error message is displayed: "Uncaught TypeError: $0.checkValidity is not a function" indicating that the selected element does not have this method.
This suggests that the selected element is not an HTML form control element (like an input field, select, or textarea) that has built-in validation capabilities.
210
Yonatan Kra @yonatankra.com · 01/01/2025
Many React developers claim it has a massive fanbase, extensive ecosystem, and universal usability. This sounds like Trump's campaign: the third point is misleading, the ecosystem is mostly unnecessary, and a large fanbase... well... Trump won the elections, right? #JavaScript #ReactJS #TechTruths
030
Yonatan Kra @yonatankra.com · 01/01/2025
Validation tip of the day: When using the native Radio validation, remember to add a `name` attribute; otherwise, it won't work. Check it out here: codepen.io/yonatankra/p... #javascript #html #webdevelopment
codepen.io
Radio Validation
...
010
Yonatan Kra @yonatankra.com · 31/12/2024
Free game on GoG: www.gog.com/en/game/vamb... A fantasy RPG game. From first glance a nice storyline with lots of potential. Giveaway ends in around 2.5 days Enjoy 🫶 #freegames #giveaway
gog.com
Vambrace: Cold Soul
The King of Shades has cursed the great city of Icenaire. Now cast under a permanent b
000
Yonatan Kra @yonatankra.com · 28/12/2024
After a period of stagnation, I'm getting back on track. I'm even a local legend now. Next stop: 21K #running #health
A running app screenshot highlighting a 16.09 km run with a 4:35/km pace and the achievement "You're the Local Legend on Up the queen."
040
Yonatan Kra @yonatankra.com · 28/12/2024
Game giveaway on GoG! For the next two days (a bit less now), the adventure fantasy game The Dark Eye: Chains of Satinav is free. Forever yours once claimed. buff.ly/4iVTKG5 #FreeGames #FantasyGaming #Giveaway
buff.ly
The Dark Eye: Chains of Satinav
In Andergast, whose inhabitants are considered to be notoriously superstitious, King Effe
000
Yonatan Kra @yonatankra.com · 26/12/2024
The wait is over! 🎉 You can now filter your Alt Text score by time range. My score improves with newer posts—proof that I’ve grown from “bad” to much better! 🫡 Built with a sleek range-slider web component. Check your score now: bskyalt.yonatankra.com #webcomponents #javascript #a11y
252
Yonatan Kra @yonatankra.com · 25/12/2024
New Feature in the AltText Game: Search users by handle! Had a few minutes to add this feature - still using Vanilla JS with web components :) bskyalt.yonatankra.com #javascript #webcomponents #a11y
120
Yonatan Kra @yonatankra.com · 22/12/2024
A new web component in town: The Heart Component It's part of the AltTextGame, but is now also a standalone component. Play with the heart's size, fill and fill color in this CodePen. Want any more features? Feel free to file an issue or contribute #webcomponents #javascript #typescript
An interactive graphic with sliders to express feelings of love. The 'How big is your heart?' slider is positioned towards the larger end, and the 'How much do you love me?' slider is near the middle. The 'Color of your Love' is displayed as red. Below, a simple red heart icon with a white highlight reflects the red color choice.
261
Yonatan Kra @yonatankra.com · 21/12/2024
The conventional commits cheat sheet: buff.ly/49Raha8 It saves me so much time. It should save you time as well. If you are not using conventional commits, you should check it out. Here's why: buff.ly/4fAz8QW
000
Yonatan Kra @yonatankra.com · 21/12/2024
Building a web component BlueSky bot, part 1. While part 1 doesn't touch web components yet, it describes how to build an isomorphic "bot" that can run both in a Nodejs backend as well as in the browser. #javascripr #webcomponents #tdd #testing
Illustration to depict a BlueSky bot. A robotic figure with fairy wings. The robot has a blue and silver metallic body, with details suggesting internal mechanics. The wings are large, delicate, and translucent. Above the robot's head floats a glowing blue butterfly with a faint halo.
120
Yonatan Kra @yonatankra.com · 19/12/2024
Love web components? Do you believe a11y is important? A new BlueSky Web Components based app in town: a game to improve your a11y score on BlueSky! bskyalt.yonatankra.com What's your Bluesky a11y score? It's open source and there are open issues for improvement. Let me know what you think
bskyalt.yonatankra.com
BlueSky Alt text bot
231
Yonatan Kra @yonatankra.com · 18/12/2024
It's Almost ready!!! Progress report on my small side project: Finished the basic UI. It looks like... well... I designed it. Design makeover tomorrow and then I'll be able to share it with y'all. I believe it's going to benefit the whole @bsky.app network :) Do you enjoy the tests stats like I do?
A code coverage report showing 100% coverage for all tests in the find-altless-posts.ts, agent, components, app.ts, components/alt-text-meter, and alt-text-meter.ts files. The report includes statistics on statement, branch, function, and line coverage, all of which are 100%. The test suite took 395 milliseconds to run and passed all 32 tests out of 32.
010
Yonatan Kra @yonatankra.com · 17/12/2024
A 100% test covered bot. How about that? Even though it is 100% covered, the tutorial itself is only 90% ready... Would you like to know how to build a web component bluesky game? #webcomponents #bluesky #javascript
A code coverage report showing 100% coverage for all tests in the posts.ts file. The report includes statistics on statement, branch, function, and line coverage, all of which are 100%. The test suite took 97 milliseconds to run and passed all 15 tests.
040
Yonatan Kra @yonatankra.com · 16/12/2024
I didn't try it yet, but it's definitely on my list. Anyone in the crowd tested it?
000
Yonatan Kra @yonatankra.com · 15/12/2024
What a great tool to make life easier when you blog a "How To" project! Visualize your folder structure with ease: buff.ly/3ZCsx2r Enjoy 😀
buff.ly
tree.nathanfriend.com
An online tree-like utility for generating ASCII folder structure diagrams. Written in TypeScript and React.
000
Yonatan Kra @yonatankra.com · 15/12/2024
Just revamped my @bsky.app bot and got inspired to craft a guide on: 1. Building a BlueSky bot with the bluesky SDK 2. Structuring your code to bypass tight coupling with Facades. If this post hits over 25 likes, I'll share a full thread on it! #coding #javascript #typescript
020
Yonatan Kra @yonatankra.com · 14/12/2024
The 3 practical tips you can apply to make your code better. This article covers 3 important testing principles and is based on a true story: buff.ly/49FI5XH BTW - it's not just for WC and not just for frontend. It's an evergreen testing tip ;) #javascript #testing #coding #cleancode
buff.ly
3 Practical Tips for Everlasting Tests
In many cases, when I review code or mentor others, I am asked what and how to test a certain functionality. This last week, the debate was hot regarding a new piece of code I was reviewing.
030
Yonatan Kra @yonatankra.com · 11/12/2024
A very interesting demo of working with two genAI on a #nextjs project. Windsurf Cascade vs. Cursor Composer Agent: Build a Site from an Image -lesson on @egghead.io buff.ly/3Zv7wXq
buff.ly
Windsurf Cascade vs. Cursor Composer Agent: Build a Site from an Image
expert led courses for front-end web developers and teams that want to level up through straightforward and concise lessons on the most useful tools available.
020
Yonatan Kra @yonatankra.com · 11/12/2024
Just finished writing a children's story. It'll be published as a #VanillaJS #webcomponents app using the Vivid #DesignSystem For backend I'll be using @remult.dev It will take a while because I have an hour here and there, but I'll report on my progress. Buzzwords are fun to put together ;)
130
Yonatan Kra @yonatankra.com · 09/12/2024
🛠️ Debugging Node.js like a pro? Learn how to use Chrome DevTools for streamlined debugging in this free @eggheadio lesson! 🚀 📺 Watch now: buff.ly/49zr9SP #NodeJS #WebDev #ChromeDevTools #JavaScript #egghead
buff.ly
Debug a NodeJS App in Chrome Dev Tools
In this lesson we will learn how to see your node server's code in chrome dev tools and also to add debug points to debug your nodejs app easily.
040
Yonatan Kra @yonatankra.com · 08/12/2024
Another month, another small step forward. Grateful for the continued support of readers. #writerslife #kindledirectpublishing
An email from Amazon Accounts Payable notifying the recipient, Yonatan Kra, about a royalty payment for Kindle Direct Publishing (KDP) sales in the US Kindle Store. The email provides details about the payment number, date, and a link to the Payment Report.
020
Yonatan Kra @yonatankra.com · 08/12/2024
What's your strategy for generating passive income? Are you developing a product, investing in dividends or the S&P 500, or actively meddling with stocks or bitcoin? I'd love to hear your insights and learn from those experienced in this long-neglected field of mine. #PassiveIncome #InvestSmart
111
Yonatan Kra @yonatankra.com · 07/12/2024
#a11y tip: Avoid using the title attribute. The HTML spec advises against it since titles are inaccessible to mobile, tablet, keyboard, and assistive tech users. This article explores when you can and (mostly) when you shouldn't use the title. buff.ly/41iF4uj
Relying on the title attribute is currently discouraged as many user agents do not expose the attribute in an accessible manner as required by this specification (e.g., requiring a pointing device such as a mouse to cause a tooltip to appear, which excludes keyboard-only users and touch-only users, such as anyone with a modern phone or tablet).
010
Yonatan Kra @yonatankra.com · 07/12/2024
Are you a fan of #AI in gaming? One of the earliest games featuring enjoyable AI for me was Majesty 2. It remains captivating with its humor, challenges, and superb soundtrack (buff.ly/41smrnI). Have you played it? What's your opinion? Which game AI do you prefer? #GamingCommunity
A golden, stylized logo for the video game Majesty 2, featuring the game's title in elegant script. Below the title, a miniature fantasy castle sits in the palm of a giant hand, surrounded by lush greenery and bathed in a warm, ethereal glow.
120
Yonatan Kra @yonatankra.com · 06/12/2024
Private members in JavaScript classes use a # prefix, allowing for minimal interface exposure in web components and aligning with the YAGNI principle. I'm using them a lot in my Design System Web Components. Are you using # members? WDYT?
buff.ly
Private class properties in Javascript
In this lesson we will learn about how to define real private properties in javascript classes.
660
Yonatan Kra @yonatankra.com · 06/12/2024
#Testing Tip: Vitest Fake Timers If you have a timer in your app, you'd should use runAllTimers or advanceTimersByTime to skip that time. If you have an async timer: await new Promise(res => setTimeout(res, 1000)); don't forget to use runAllTimersAsync or advanceTimersByTimeAsync #javascript #vitest
A stopwatch with a lightning bolt inside, symbolizing the speed and efficiency of Vitest Fake Timers. The main header says: VITEST FAKE TIMERS. The sub-header says: SKIP TIME, ACCELARATE TESTS.
020
Yonatan Kra @yonatankra.com · 05/12/2024
Accidentally commit a secret token to a GitHub repo? What if someone did it two years ago? Are security tools crowding your task manager? Here's a simple method to alter a string in your Git history. buff.ly/4igaaZD #git #github #softwaredevelopment #cybersecurity
buff.ly
How to Remove a Secret Token from Your Git History - Yonatan Kra
Learn how to safely remove exposed authentication tokens from your Git repository's entire history using BFG, a powerful cleanup tool. Understand the security
000
Yonatan Kra @yonatankra.com · 05/12/2024
1/ 🧵 What is the Coupling Pitfall? It's when your tests are tightly linked to implementation details, making your codebase fragile. Changes to the code often break tests unnecessarily, leading to frustration. Let's explore this and how to avoid it! 👇 #javascript #testing #cleancode
This image shows a user comment on a dark-themed interface. The comment reads:
"yes, it wasn't tested, cause at the beginning I built it in a different way, our component extended fast's component so I didn't have to check it."
The profile image is a generic placeholder (a black circle within a white square), and the timestamp indicates the comment was made "2 hours ago."
140
Yonatan Kra @yonatankra.com · 04/12/2024
Talisman cards with shuffle, spread, and fan functionality. Done inside a #nuxt app, with a tweaked version of buff.ly/41hEfBV as a web component. It was created for my son's Bar Mitzvah. User data was stored in the SVG itself so that users could edit the card later. #UI #JavaScript #webcomponents
010
Yonatan Kra @yonatankra.com · 04/12/2024
Kent Beck explains the main reason for the cost of software. Small changes don't cost much. Big changes cost a lot. Big changes are a result of coupling. Hence, the main reason for software costs is coupling. Do you agree? What do you think? buff.ly/4igflZI #softwaredevelopment #javascript
buff.ly
What makes software so expensive - Kent Beck
#softwaredevelopment #coupling #softwarearchitecture #softwaredevelopmenttips In this video Kent Beck the creator of extreme programming, speaks on the reaso...
000
Yonatan Kra @yonatankra.com · 03/12/2024
One more for the coveted 200. I decided it was time to go over the list of followers and follow back people with interesting content. It's a nice habit to do once a week. Looking forward to enriching my @bsky.app experience 🫶 If you have interesting content, shout out!
110
Yonatan Kra @yonatankra.com · 03/12/2024
Curious about what happens when your function runs in the browser? This Egghead lesson explores the Critical Rendering Path (CRP) using Chrome DevTools. Learn how the browser paints content and optimization tips for faster performance!⚡ buff.ly/41fcJVK #webdev #chromedevtools #javascript
buff.ly
See the Critical Rendering Path in the browser
The Critical Rendering Path is what happens from the moment your javascript is running to the moment something changes on screen. In this lesson, we wil...
010