Unactive track that launched, (Batch Track)

Hi, I’m Murat Kirazkaya,

More than a year ago I had a dream to publish the Batch language on this site, because it’s a language that is extremely under-resourced and almost impossible to die, because it’s one of the main parts of the Windows operating system. I spent a lot of effort, it’s really more difficult to prepare 20 exercises in this extremely limited language than in popular languages. To integrate CI/CD, Erik and I thought about it, we looked for the right way, documentation was prepared, testing infrastructure was set up, unit tests were written and other things I can’t even think of, all this took about one year.

And I see that there are people in the Batch community who are solving, if not new maintainers who are creating new exercises. This is actually motivating, but creating new exercises is a time consuming process and I am a person who works full time while studying at university. I don’t want to close the Batch track, but not being able to look at it regularly makes me feel very bad, so I wanted to get your opinion, what do you think I should do?

1 Like

You should not feel bad, that would be the first step. You started the ball rolling, right? You spent a lot of effort to get it to where it was. Let someone else carry the torch for a while, get involved when you can.

This is one of the perks of volunteering. You got skin in the game, sure, but you are not the only player.

Also, why would you think that you are able to close the Bash track? And if you could, you can choose to simply not.

In the last few years I’ve been helping with Exercism, I haven’t seen any evidence that would imply a track is required to have a certain number of exercises. Until this last year or so, a lot of the smaller tracks had exercise counts in the low 20s. For launching a track, it’s recommended to have 20 exercises so there’s more of a range available for students, but after that? I haven’t seen anything to suggest anybody would think less of a track for only having 21 exercises.

As far as having trouble with the language fitting with the problem specifications, a lot of tracks have had to forego implementing exercises that weren’t a good fit. When we built out the SQLite track, it became pretty clear that some exercises were impractical. However, the difficulty in adapting an exercise can be useful in showing the limitations of a language. For Vim script, Grains was problematic since the language could only express integers up to 2^63 - 1. After some discussion, doing mathematical operations with strings representing integers provided a way to solve the exercise. So the exercise isn’t quite the usual approach to Grains, but that’s useful for the student to work around the language limitations. Solving Space Age in Cairo is another example since Cairo doesn’t support floating point math so students need to work around that to approximate that using integers.

I’d recommend looking over Maintainers | Exercism's Docs, but maintainers aren’t responsible for creating exercises. Generally speaking, new exercise contributions come from the community at large, which may include other Exercism volunteers like myself. You help facilitate the contributions, but you don’t need to make them yourself (unless you want to).

Exercism doesn’t close tracks for the most part. The only one in recent memory was ClojureScript which overlapped greatly with Clojure language-wise and also shared maintainers. It sounds like you might be looking for additional volunteer maintainers to help share the load though. That’s perfectly understandable.

Thanks for your help. I was unsure about this, but I’m glad it’s not a problem. :heart:

1 Like

I understand what a maintainer is now. I still think I can call myself a maintainer. It’s not just about creating new exercises. I’m happy to be part of Exercism. It takes a lot of effort to finish all the exercises in this language, which has 21 exercises with the latest addition. I’m starting to see it as not less. Thanks for sharing your thoughts. :heart:

You don’t need to add exercises above what you already have. It’s fine to have a low number, as long as it is greater or equal to about 20 exercises. While new exercises are nice, you thus don’t need to add them.

1 Like

When I joined Exercism, the V track had 29 exercises. It became the first track I completed, and the first track I contributed to, either though I had never used V before Exercism.

2 Likes

How would you compare C/Go/D/V/Zig ?

If I was to start a large project with one of these languages, I would choose D.

C

Correctly handling error cases and cleaning up (freeing memory, releasing locks) feels tedious and mistake-prone.

Go

The error handling still feels distracting, compared to the language families of Python/ML/C#.

V

Writing V is fun. I quickly grew to like the way Option and Result work.

I encountered a few compiler bugs, these were quickly fixed. (I had similar experiences with Scala around 2007.)

Zig

I would have liked to be able to stack-allocate variable sized arrays, like “C” alloca() or assembler sub sp, sp, x2

In assembly tracks, the interface for rail-fence-cipher might be

void encode(char *buffer, const char *msg, unsigned rails);

In Zig we would also pass in an allocator, and the return type would allow reporting of allocation errors.

D

My usage so far has been fairly superficial, none of my code has used metaprogramming. So far, everything seems general and powerful.

For Exercism, we should select a testing library that gives more helpful messages, instead of

assert(f() == 42);
source.d(123): unittest failure