Khloe Leclair's Avatar

Khloe Leclair

@khloeleclair.dev

She/Her. Programmer. I do JavaScript and play Final Fantasy XIV. I don't social media much. https://github.com/KhloeLeclair/

28
Followers
31
Following
45
Posts
03.10.2023
Joined
Posts Following

Latest posts by Khloe Leclair @khloeleclair.dev

Now begins the third restart of Chord. However, it's different this time:

Chord currently functions! That means this new restart is to rewrite Chord in Chord. It's an exciting time.

19.01.2026 18:25 ๐Ÿ‘ 1 ๐Ÿ” 0 ๐Ÿ’ฌ 1 ๐Ÿ“Œ 0

It's years later, and Discord still hasn't implemented basic per-chatter dynamic audio. Some of my friends are so loud and some are so quiet and some get a lot louder in some situations.

And we've had the technology to fix this for decades. They should really use it.

12.01.2026 21:51 ๐Ÿ‘ 1 ๐Ÿ” 0 ๐Ÿ’ฌ 0 ๐Ÿ“Œ 0

There's a lot more I could go over too, but I'm also impressed how much of C#'s semantics I can make work on Java with little effort. I'm really curious how the community is going to react when I finally release this. Well, I hope. Either way, it's been a great learning experience.

#java #csharp

08.01.2026 21:26 ๐Ÿ‘ 3 ๐Ÿ” 1 ๐Ÿ’ฌ 0 ๐Ÿ“Œ 0

Delegates are interesting too. I've made the decision to treat all delegates as Java FunctionalInterfaces. And I'm just straight up not supporting multicast delegates.

Events get special treatment by the compiler, and have a custom backing type in my runtime library for adding/removing listeners.

08.01.2026 21:26 ๐Ÿ‘ 2 ๐Ÿ” 0 ๐Ÿ’ฌ 1 ๐Ÿ“Œ 0

There's little things that are weirdly unsupported by Java too. Unsigned numbers, for example. There's no uint in Java, not like C#. So I'm having to track fake primitives effectively, and emit special logic for comparisons, division, etc.

Worth the effort, I hope. It's interesting at least.

08.01.2026 21:26 ๐Ÿ‘ 2 ๐Ÿ” 0 ๐Ÿ’ฌ 1 ๐Ÿ“Œ 0

Another big issue with generics is primitives. For now, you can't do List<int> on Java, it has to be List<Integer>. But with our types like uint, you'd need List<[Unsigned] Integer> and that rapidly gets silly. So I've also added special boxed<> syntax that lets you write it like: List<boxed<uint>>

08.01.2026 21:26 ๐Ÿ‘ 2 ๐Ÿ” 0 ๐Ÿ’ฌ 1 ๐Ÿ“Œ 0

Probably the biggest change is that Java erases generic type information at runtime, while .NET keeps it. This means we can't do things like new T(), typeof(T), etc. For that, I've implemented a <reified T> type parameter modifier that injects type tokens for when you absolutely need them.

08.01.2026 21:26 ๐Ÿ‘ 2 ๐Ÿ” 0 ๐Ÿ’ฌ 1 ๐Ÿ“Œ 0

Then, there's enums. You know how C#-style enums are effectively their backing type at runtime? Java-style enums don't work that way. So my language supports both. Use "enum" for C#-style and get primitives at runtime for performance. Use "enum class" for Java-style with attached fields.

08.01.2026 21:26 ๐Ÿ‘ 2 ๐Ÿ” 0 ๐Ÿ’ฌ 1 ๐Ÿ“Œ 0

While it's based on C#, I've had to make a number of changes to the language because the JVM works differently than the .NET runtime. For example, there's no unsafe, fixed, and pointer stuff. JVM doesn't have it. Likewise, I'm not supporting struct right now, which is a huge thing in C#. JVM says no

08.01.2026 21:26 ๐Ÿ‘ 2 ๐Ÿ” 0 ๐Ÿ’ฌ 1 ๐Ÿ“Œ 0

The new major version is based on Roslyn. Since Roslyn is licensed MIT, I can basically port huge parts of it to Java. Things like its node structure and how it handles binding.

The final version is going to be written in itself, once I get the Java copy working. That will be the released version.

08.01.2026 21:26 ๐Ÿ‘ 2 ๐Ÿ” 0 ๐Ÿ’ฌ 1 ๐Ÿ“Œ 0

It's been a couple months since then, and the first major version of the compiler was basically me piling things together in a shape that made sense to me at the time. It was using ANTLR for parsing, and it actually worked!

But it was very brittle as well, and taped together.

08.01.2026 21:26 ๐Ÿ‘ 2 ๐Ÿ” 0 ๐Ÿ’ฌ 1 ๐Ÿ“Œ 0

This all started out of Minecraft modding, and getting fed up with little things that are missing from Java like null conditional and coalescing operators, and a friend got the idea in my head of making C# run on the JVM.

08.01.2026 21:26 ๐Ÿ‘ 2 ๐Ÿ” 0 ๐Ÿ’ฌ 1 ๐Ÿ“Œ 0

I've been working on a new programming language project recently called Chord that is best described as "C# for Java".

It's been quite fun and I've learned a lot about how compilers work. I've also restarted the project twice now. I'm quite pleased with how it's coming together. #java #csharp

08.01.2026 21:26 ๐Ÿ‘ 3 ๐Ÿ” 1 ๐Ÿ’ฌ 4 ๐Ÿ“Œ 1
A meme of a man looking at an analog clock and saying "Good heavens would you look at the time". However, the man's head was replaced with Final Fantasy XIV producer and director Yoshi-P, and the hours on the clock were each replaced with the word "DDOS".

A meme of a man looking at an analog clock and saying "Good heavens would you look at the time". However, the man's head was replaced with Final Fantasy XIV producer and director Yoshi-P, and the hours on the clock were each replaced with the word "DDOS".

#FFXIV

24.12.2025 16:13 ๐Ÿ‘ 4 ๐Ÿ” 3 ๐Ÿ’ฌ 0 ๐Ÿ“Œ 0
A meme of a man looking at an analog clock and saying "Good heavens would you look at the time". However, the man's head was replaced with Final Fantasy XIV producer and director Yoshi-P, and the hours on the clock were each replaced with the word "DDOS".

A meme of a man looking at an analog clock and saying "Good heavens would you look at the time". However, the man's head was replaced with Final Fantasy XIV producer and director Yoshi-P, and the hours on the clock were each replaced with the word "DDOS".

#FFXIV

24.12.2025 16:13 ๐Ÿ‘ 4 ๐Ÿ” 3 ๐Ÿ’ฌ 0 ๐Ÿ“Œ 0
An edited version of a movie poster for "The Hunchback of Notre Dame". Instead, it says "The Hatchback of Notre Dame" and Quasimodo in the poster was replaced with a hatchback car from Cars 2.

An edited version of a movie poster for "The Hunchback of Notre Dame". Instead, it says "The Hatchback of Notre Dame" and Quasimodo in the poster was replaced with a hatchback car from Cars 2.

I was chatting about Disney movies with a friend and they made a typo that I further misread and I just had to make this dumb meme as a response.

20.12.2025 05:30 ๐Ÿ‘ 1 ๐Ÿ” 0 ๐Ÿ’ฌ 0 ๐Ÿ“Œ 0
A fake news article titled: 'No Way To Prevent This,' Says Only MMORPG Where This Regularly Happens. There's an image of a "Connection with the server was lost." dialog from FFXIV. It's listed as Published: December 18th, 2025. The article reads, before being cut off: When asked for comment, Square-Enix replied: "We are currently experiencing technical difficulties due to a DDoS attack. Players may experience the following issues as a result. We are looking into the way

A fake news article titled: 'No Way To Prevent This,' Says Only MMORPG Where This Regularly Happens. There's an image of a "Connection with the server was lost." dialog from FFXIV. It's listed as Published: December 18th, 2025. The article reads, before being cut off: When asked for comment, Square-Enix replied: "We are currently experiencing technical difficulties due to a DDoS attack. Players may experience the following issues as a result. We are looking into the way

#FFXIV

19.12.2025 02:28 ๐Ÿ‘ 9 ๐Ÿ” 4 ๐Ÿ’ฌ 1 ๐Ÿ“Œ 0
An image showing two side-by-side examples of drills connected to creative motors in Minecraft with the Create mod. The example on the left uses Create mod's shafts, and the example on the right uses my new custom block.

The one on the left has 600 block entities, one for each shaft. The one on the right only has 2 block entities, one for the block at the start and one for the block at the end.

An image showing two side-by-side examples of drills connected to creative motors in Minecraft with the Create mod. The example on the left uses Create mod's shafts, and the example on the right uses my new custom block. The one on the left has 600 block entities, one for each shaft. The one on the right only has 2 block entities, one for the block at the start and one for the block at the end.

I think it's functionally ready now, and I just need to figure out how expensive these should be and do some art.

Quite a savings though. Here, it's connecting something 600 blocks away with just two block entities. 598 fewer ticking entities. 598 fewer renderers, client-side. It's great.

08.10.2025 22:18 ๐Ÿ‘ 1 ๐Ÿ” 0 ๐Ÿ’ฌ 1 ๐Ÿ“Œ 0
An image of several cogs from Create mod, connected to each other by my work-in-progress flexible shaft block. The image shows how there are colored versions that don't link together, and it also has an overlay showing how only the actual blocks that the cogs are connected to have ticking block entities.

An image of several cogs from Create mod, connected to each other by my work-in-progress flexible shaft block. The image shows how there are colored versions that don't link together, and it also has an overlay showing how only the actual blocks that the cogs are connected to have ticking block entities.

I've been doing a lot of Minecraft modding lately. Create mod stuff. The server I've been playing on has been having some performance issues because there are *so many block entities*.

So I'm now working on a project that adds a (mostly) entity free replacement for shafts / gearboxes.

08.10.2025 06:17 ๐Ÿ‘ 3 ๐Ÿ” 0 ๐Ÿ’ฌ 1 ๐Ÿ“Œ 0
A screenshot of a Cash Register block design for modded Minecraft. The cash register is made of brass and is designed to look like old fashioned cash registers with a glass tube at the top containing price tags that can pop up as a rudimentary display. It has sixteen buttons on a slanted surface, and a drawer that opens below the rest of the machine.

A screenshot of a Cash Register block design for modded Minecraft. The cash register is made of brass and is designed to look like old fashioned cash registers with a glass tube at the top containing price tags that can pop up as a rudimentary display. It has sixteen buttons on a slanted surface, and a drawer that opens below the rest of the machine.

I've found myself doing Minecraft modding of late. Create mod adjacent stuff. Recently I've been unsatisfied with Create's Stock Ticker when used for shops, so I've been working on a Cash Register block.

It still needs proper textures, but I'm very happy with the model I came up with. Very antique.

28.09.2025 06:11 ๐Ÿ‘ 1 ๐Ÿ” 0 ๐Ÿ’ฌ 0 ๐Ÿ“Œ 0

RT if you also wish ill upon JK Rowling.

21.08.2025 13:43 ๐Ÿ‘ 22892 ๐Ÿ” 22222 ๐Ÿ’ฌ 273 ๐Ÿ“Œ 340
A screenshot of the pyramid in the Final Fantasy XIV content "Occult Crescent". The pyramid has the logo for Bass Pro Shops edited onto it, based on the actual Bass Pro Shops pyramid in Memphis.

A screenshot of the pyramid in the Final Fantasy XIV content "Occult Crescent". The pyramid has the logo for Bass Pro Shops edited onto it, based on the actual Bass Pro Shops pyramid in Memphis.

After doing a bit of Occult Crescent in #FFXIV, this is all I think of every time I see the pyramid in the corner of the map.

30.05.2025 16:18 ๐Ÿ‘ 1 ๐Ÿ” 0 ๐Ÿ’ฌ 0 ๐Ÿ“Œ 0

As part of the new #StardewValley mod I've been working on, I've been writing compatibility patches for a bunch of other mods to be polite. (After all, the new mod breaks a lot of existing things.)

Some of the code I've seen people write is absolutely wild. Such weird ways of doing things.

07.03.2025 03:43 ๐Ÿ‘ 1 ๐Ÿ” 0 ๐Ÿ’ฌ 0 ๐Ÿ“Œ 0
A screenshot from Stardew Valley. The game's pause menu is open, but instead of the normal 10 tabs there are 21 tabs displayed across two rows. The second row is tucked under the first row and positioned to the right by half a tab to provide a nicer visual effect.

A screenshot from Stardew Valley. The game's pause menu is open, but instead of the normal 10 tabs there are 21 tabs displayed across two rows. The second row is tucked under the first row and positioned to the right by half a tab to provide a nicer visual effect.

Tonight I've been specifically working on support for mods registering extra menu tabs, and the sort of work I need to do to fit more tabs into the menu UI and have it still look nice.

I like two staggered rows like this, though it only fits 21 tabs at most on the narrowest menus.

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

Been having fun with #StardewValley modding again. Working on a mod called Better Game Menu that should be out near the end of the month.

It looks exactly like the normal game menu, but it performs way better. No stuttering when you pause the game anymore with a big mod set.

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

I'd like to thank TikTok for giving me a better reason to hate TikTok.

Originally, I refused to use it because I absolutely detest vertical video and I feel like a lot of short form video content is just recycled from normal videos.

Now, though, I can hate it for being stupid political garbage.

21.01.2025 16:46 ๐Ÿ‘ 1 ๐Ÿ” 0 ๐Ÿ’ฌ 0 ๐Ÿ“Œ 0
28.12.2024 18:05 ๐Ÿ‘ 2444 ๐Ÿ” 1091 ๐Ÿ’ฌ 29 ๐Ÿ“Œ 4

I can't do all my work on the Deck, and I don't own a dock that lets me use all my monitors (if such a dock even exists), but it's a huge step up over anything else I've got around.

And, of course, gaming is a perk too. Such an excellent little device.

14.12.2024 19:38 ๐Ÿ‘ 0 ๐Ÿ” 0 ๐Ÿ’ฌ 0 ๐Ÿ“Œ 0

My PC has been broken for several days now because of motherboard issues (at least I hope it's only motherboard issues and not the CPU too). Holiday shipping is a curse.

Owning a @steamdeck.com has saved my sanity at this point, between docking and the excellent desktop mode.

Thank you, Valve.

14.12.2024 19:34 ๐Ÿ‘ 0 ๐Ÿ” 0 ๐Ÿ’ฌ 1 ๐Ÿ“Œ 0
A screenshot of the statistics page from the WTSync website. The screenshot has two donut charts at the top showing how the completed duties were distributed between different levels and content types.

Below that is a list of every duty, ordered by how many people completed the duty that week with details on how many people had the duty in their Wondrous Tails and how many of that subset of people completed it.

A screenshot of the statistics page from the WTSync website. The screenshot has two donut charts at the top showing how the completed duties were distributed between different levels and content types. Below that is a list of every duty, ordered by how many people completed the duty that week with details on how many people had the duty in their Wondrous Tails and how many of that subset of people completed it.

I've also added a statistics page to the website, to show which Wondrous Tails entries players are actually doing.

I didn't get a full set of data for the first week, but I'm still pretty happy with how it's turning out. Looking forward to next Tuesday for bigger data.

30.11.2024 01:34 ๐Ÿ‘ 0 ๐Ÿ” 0 ๐Ÿ’ฌ 0 ๐Ÿ“Œ 0