Monday, January 20, 2025

New top story on Hacker News: Show HN: Personalized Duolingo (Kind of) for Vocabulary Building

Show HN: Personalized Duolingo (Kind of) for Vocabulary Building
3 by arbayi | 0 comments on Hacker News.
Hi! Wanted to share the project I really wanted to have. TLDR; this app lets you create your own list of words and you get a Duolingo-like experience (kind of, still needs a lot of features) practicing those words in their context. My English is not the best but not the worst either. But I realized I can't boost it up after a certain level! In my belief, in order to truly learn a language, you need to be exposed to that language often. Vocabulary is the key factor here if you really want to improve in any language. My experience is that when I read a book to improve my English vocabulary, I encounter words that I don't know so often and my reading gets disturbed. I go look for the meaning, come back, put it in context, re-read it, etc. It didn't work for me. So I tried listening to audiobooks - I listen to the book and read along, and whenever I encounter a word, I write it down. I get these 50 words in 2-3 pages and I ask ChatGPT to give me their meanings. I read them, take the book, and now read it myself. That helps for sure, but still after a while I lose those words because I never encounter them again. Well then, in order to not forget those words, I need some kind of exercise, right? A flashcard app maybe? Well, I still need to go out there, ask ChatGPT to create questions, put them in a flashcard app, etc. It's still time-consuming and this is supposed to be fun! I need to be exposed to English in my daily life. I just need to save the words somewhere and whenever I want, I need to be able to practice them in a fun way, in Duolingo style maybe? So then I realized would it be better to store words in their own context? I mean, say I read Harry Potter and have a list of words I encountered in it, say I watch Breaking Bad and have a list of words I encountered watching it. I believe seeing those words together and practicing together makes it easier to remember them. But I shouldn't be the one adding the meaning of the word and the one to generate exercises, right? It all should be automated. The exercise part will be handled by LLM for sure, but for the meaning of the word, I can fetch from a dictionary? But I really don't like the dictionary definitions and one word can have multiple meanings in their own context. So then I need to use LLM for this task too and have the word's meaning in its own context. You create a list for your context, you add words, meanings get added automatically, and I see the word added in a different color (coloring is also a method used to remember words). It all takes seconds. And whenever I want to practice these lists, I can use learn mode to learn and test my knowledge in quiz mode. So I basically built this app ((thanks to Claude 3.5 Sonnet)). I want it to be like Duolingo, but of course I still have a way ahead to go, but wanted to share it in hopes of getting contributors. You can read more in the repository. I would love to get your thoughts on this.

Thursday, January 16, 2025

New top story on Hacker News: GitHub Linux ARM64 hosted runners now available for free in public repositories

GitHub Linux ARM64 hosted runners now available for free in public repositories
29 by Aissen | 3 comments on Hacker News.


New top story on Hacker News: Show HN: DBOS TypeScript – Lightweight Durable Execution Built on Postgres

Show HN: DBOS TypeScript – Lightweight Durable Execution Built on Postgres
17 by KraftyOne | 17 comments on Hacker News.
Hi HN - Peter from DBOS here with my co-founder Qian (qianl_cs) Today we want to share our TypeScript library for lightweight durable execution. We’ve been working on it since last year and recently released v2.0 with a ton of new features and major API overhaul. https://ift.tt/AW9qfHF Durable execution means persisting the execution state of your program while it runs, so if it is ever interrupted or crashes, it automatically resumes from where it left off. Durable execution is useful for a lot of things: - Orchestrating long-running or business-critical workflows so they seamlessly recover from any failure. - Running reliable background jobs with no timeouts. - Processing incoming events (e.g. from Kafka) exactly once - Running a fault-tolerant distributed task queue - Running a reliable cron scheduler - Operating an AI agent, or anything that connects to an unreliable or non-deterministic API. What’s unique about DBOS’s take on durable execution (compared to, say, Temporal) is that it’s implemented in a lightweight library that’s totally backed by Postgres. All you have to do to use DBOS is “npm install” it and annotate your program with decorators. The decorators store your program’s execution state in Postgres as it runs and recover it if it crashes. There are no other dependencies you have to manage, no separate workflow server–just your program and Postgres. One big advantage of this approach is that you can add DBOS to ANY TypeScript application–it’s just a library. For example, you can use DBOS to add reliable background jobs or cron scheduling or queues to your Next.js app with no external dependencies except Postgres. Also, because it’s all in Postgres, you get all the tooling you’re familiar with: backups, GUIs, CLI tools–it all just works. Want to try DBOS out? Initialize a starter app with: npx @dbos-inc/create -t dbos-node-starter Then build and start your app with: npm install npm run build npm run start Also check out the docs: https://docs.dbos.dev/ We'd love to hear what you think! We’ll be in the comments for the rest of the day to answer any questions you may have.