Yeah I want to exclude myself from writing the content (just reviewing and fixing / amending) so that I can “do” the track as we build it, giving you more or less fresh eyes each time!
That said, happy to help with exercises-from-scratch if we need them!
I’m quite good at it, so (ab)use me when you need me!
Porting is probably best for 80% and only kotlin-unique features need new exercises. Recently @SneakyMallard has made really nice additions to the JS syllabus and together we came up with refined set of tests, goals, and story, so I am certain that with some community effort we’ll be fine.
As we get more exercises merged, it will be a bit inconvenient that only the track maintainer (DJ in this case) can see the syllabus on the Exercism website.
@iHiD, is there any easy way to relax this a bit? I don’t know how any of these would work out, without a painful website rewrite (that you don’t want to do!):
recent authors on this track?
active maintainers on any track?
individuals who ping you and ask nicely?
individuals who ping you with a cash bribe?
If a bunch of people are contributing to just the syllabus, we don’t want to intrude on the current sole-maintainer status.
The culprit is JVM. On Kotlin/JVM, each char is a utf16 codepoint (token), not an actual character. That means does work, but will be two chars, namely \uD83D and \uDE31. Unfortunately grapheme support is not built-in in Java and therefore not in Kotlin.
So that means that chars are, indeed, always 2 bytes (as expected), and unlike other languages iteration over a string’s chars will, like using a for loop to index over a string in JavaScript, grab the individual codepoints, instead of, as you may expect, the full grapheme.
Note that in JavaScript, it’s not that much better:
Thanks for that explanation! It makes some sense now.
This destroyed my hopes that I could recycle the documents I wrote for Julia. That was confusing in its own way, but (I have to say) a more elegant and thorough implementation overall. It shows the perils of needing Java interop, I suppose - like any sort of backwards compatibility, it imposes design constraints.
Why do I have to reboot Win11 systems so often? At least partly because the file-locking mechanism (still in use!) was designed for DOS 1.0 - which assumed the files were on 360kB floppy disks, not the 2TB NVMe drives I now use as standard.
Please excuse me if I sound a bit sour…
Conversely, I’m now 69 and trying hard to show I’m not yet (entirely) obsolete!