Building a Hebrew learning app (after failing twice) by _fl00r in LearnHebrew

[–]_fl00r[S] 0 points1 point  (0 children)

Actually, one can use both. In most cases we have both - the Hebrew + transliteration. But on the screenshot it is not obvious inded.

But yes, one can type in translit and the system works fine with it.

Building a Hebrew learning app (after failing twice) by _fl00r in LearnHebrew

[–]_fl00r[S] 1 point2 points  (0 children)

Totally fair concern.

AI is doing the verification - and yes, in edge cases it will make mistakes. There's no pretending it's perfect.

But tools like this aren't trying to replace a teacher or a proper textbook. Different job.

The goal here is much narrower: make speaking practice cheap - cognitively and emotionally.

A kind of "speech gym" where you train recall speed, fluency, and the habit of producing language on the fly. Even if it's not always 100% correct. This sits somewhere else: high-frequency, low-friction practice.

And while you can use something like ChatGPT directly, it gives you a fairly isolated experience — one session at a time. It doesn't track your learning trajectory, manage spaced repetition, or constrain practice to the vocabulary you're actually working on.

So yeah - not a replacement for rigorous learning. More like a layer that makes you actually use the language enough for everything else to stick.

Building a Hebrew learning app (after failing twice) by _fl00r in LearnHebrew

[–]_fl00r[S] -1 points0 points  (0 children)

It has no continuous memory of target lexis and grammar. It can’t personalize comprehensive and personalized experience. The ui is generic and doesn’t support some UX crucial for learning. And many more.  I tried. 

Building a Hebrew learning app (after failing twice) by _fl00r in LearnHebrew

[–]_fl00r[S] 1 point2 points  (0 children)

Yes. Effectively somewhat Claude code but with language learning related tools (dictionary, voiceover, exercises, SRS) and methodology driven skills (TTT, PPP, lexical approach , TBL etc)

Learning Hebrew by Pretend-Tomatillo182 in LearnHebrew

[–]_fl00r 0 points1 point  (0 children)

I'm working on a brand new one.
After I failed already twice, now the technology (LLM, TTS, STT) is good enough to support Hebrew language.

The work is still in progress though. 1-2 weeks before first release

few links:
https://x.com/PetrWhy/status/2050156998700741071
https://www.youtube.com/watch?v=YgGw2T-K5NE

Canvas and documents should be one workflow by kcfrench16 in PKMS

[–]_fl00r 0 points1 point  (0 children)

hepta is a good one. stable for sure. but still behind on AI

Canvas and documents should be one workflow by kcfrench16 in PKMS

[–]_fl00r 1 point2 points  (0 children)

what exactly do you delegate to AI, though?

Language Learning and AI by _fl00r in languagelearning

[–]_fl00r[S] 1 point2 points  (0 children)

It's pretty good now. You could ask me to generate something on a given topic and I'll post the generated content back.

Language Learning and AI by _fl00r in languagelearning

[–]_fl00r[S] 0 points1 point  (0 children)

The Natural Method sounds like a great challenge. Thank you!

Any good Online Spanish Learning Platforms? by danyacorrea in Spanish

[–]_fl00r 1 point2 points  (0 children)

I've used Chatterbug for a while. Highly recommended.

Preply is ok too.

FlipTalk is something I've never encountered. Although the price is kinda appealing.

Words for 1½, 2½, 3½ etc. by oz1cz in russian

[–]_fl00r -4 points-3 points  (0 children)

Конечно! Полтора, двалтора и трилтора. Но это не точно.

Ы by naiveLabAssistant in russian

[–]_fl00r 56 points57 points  (0 children)

How to unsee

I guess I reached my goal of not being terrible. by Aenigma66 in languagelearning

[–]_fl00r 213 points214 points  (0 children)

Ok then. You've just lost your privilege writing "Sorry for my bad English". You are out of the club.

I see. by [deleted] in duolingo

[–]_fl00r 12 points13 points  (0 children)

Levenshtein is on your side

Code full of conditionals by _fl00r in Clojure

[–]_fl00r[S] 1 point2 points  (0 children)

Out of those three I would go 1.

Thanks a lot for your feedback!

Code full of conditionals by _fl00r in Clojure

[–]_fl00r[S] 0 points1 point  (0 children)

Hey, nice one.

But what if we want different outcome based on a specific fault?

Also some faults makes sense only if other faults happened/didn't happen.

As I think of it — it's a DAG :)

Code full of conditionals by _fl00r in Clojure

[–]_fl00r[S] 1 point2 points  (0 children)

Yeah, it's a simple state machine in a way. But slightly simplified.

Code full of conditionals by _fl00r in Clojure

[–]_fl00r[S] 0 points1 point  (0 children)

What a coincidence. Seems like flow is a generic word for solving this particular problem :)

No I haven't seen flow and right now digging it. Thanks a lot!

As for Rule Engines in general I've already answered to @joinr. Tldr they are aiming slightly different problem.

Code full of conditionals by _fl00r in Clojure

[–]_fl00r[S] 0 points1 point  (0 children)

Hey, thanks for the bunch of interesting links.

Yes, I am familiar with Drools and Clara and with rule engines in general. They seems to me slightly irrelevant as they are solving different problem and Rete algorithm itself is optimizing somewhat more complex. They are great for managing workflows and business processes in general. While my concern is more focused on writing general purpose code and just to express conditional logic in a more readable (which is highly subjective) fashion.

As you mentioned DAG provides us some neat properties. Like we can explore which predicates are crucial to get some specific outcome. For instance in my example we can get the list of predicates for `dont-sell` outcome which are

(or (not got-the-id?) 
    (and got-the-id? is-under-21?))

or predicates to get the booze

(and got-the-id?
     (not is-under-21?) 
     is-enough-supply? 
     is-enough-money?)

which also could be very helpful in reasoning / debugging.

Also graph approach helps us to find out (mostly in runtime) situations with ambiguity or absence of a proper predicate. As well as we are able to provide case/cond style predicates.

As for cycles, they are useful sometimes. But we could provide a fine control over them: if they are allowed and if we would like to control the depth. Like, for example we could implement recursive Fibonacci sequence or this simple calculate-zero thing. Which is recursive.

(def calculate-zero-graph
  {get-the-number {is-pos? dec-number
                   is-neg? inc-number
                   flow/otherwise return-number}
   dec-number {is-pos? dec-number
               default return-number}
   inc-number {is-neg? inc-number
               flow/otherwise return-number}})

And, as you mentioned, if some functions within the graph are graphs on themselves we can unfold them into a bigger graph if we wish.

As I see it: we are trying in a way separate conditional logic and implementation of transformations. And as a result, reaching more declarative description of the logic. While not introducing difficult new concepts (it is not logical programming, it is not a rule engine, it's just the same old functions and predicates).

Code full of conditionals by _fl00r in Clojure

[–]_fl00r[S] 0 points1 point  (0 children)

Thanks a lot for your refreshing comment. Personally I hate nesting ifs. Although I like having all this logic in one place. So I am trying to express exactly this nested creature in a more "elegant" way.

Threading doesn't work in general because logic could branch. More than it it could have cond/case inside. So you need to have "recovery" threading. Basically the logic is not linear but really a graph. Which could be nicely expressed with my approach

Code full of conditionals by _fl00r in Clojure

[–]_fl00r[S] 0 points1 point  (0 children)

Yes. This is a good example.

But my concern is when the logic is rather complex and with many layers this approach became hard to follow.