# Bendangelo Blog > I build apps using Ruby on Rails and AI. I am also fluent in Mandarin Chinese. This blog covers software engineering, game development (Unity), and language learning. This site is maintained by Ben (ben@bendangelo.me). It features tutorials on Ruby, Crystal, and automated workflows, as well as insights into learning Mandarin and self-hosting applications. ## Projects and Open Source ### Featured Projects - [English Fox](https://englishfox.app): An LLM-powered English dictionary for language learners. Uses AI to enhance definitions, synonyms, and contextual example sentences. - [Stray](https://stray.video): A discovery service for the "small web" and independent video content. - [Darkstar Project](https://github.com/DarkstarProject/darkstar): Core developer for a high-profile FFXI MMORPG server emulation. Lead on monster AI and gameplay mechanics; work featured on Kotaku. ### Dictionary and NLP Tools - [cambridge_dict](https://codeberg.org/bendangelo/cambridge_dict): Ruby gem to interact with the Cambridge Dictionary website. - [free_dictionary_api](https://codeberg.org/bendangelo/free_dictionary_api): Ruby client for the Free Dictionary API. - [open_dictionary](https://codeberg.org/bendangelo/open_dictionary): Ruby gem to fetch definitions from the open-dictionary GitHub repository. - [wiktionary_api](https://codeberg.org/bendangelo/wiktionary_api): Ruby gem to access the Wiktionary API. - [keyphrase](https://github.com/bendangelo/keyphrase): Ruby gem that extracts keywords from text. - [whichlang-rb](https://github.com/bendangelo/whichlang-rb): Ruby bindings for the Whichlang language detection library. - [whichlang.cr](https://github.com/bendangelo/whichlang.cr): Crystal bindings for the Whichlang language detection library. ### Search and Data Structures - [tantivy.cr](https://codeberg.org/bendangelo/tantivy.cr): Crystal bindings for Tantivy. - [marisa.cr](https://codeberg.org/bendangelo/marisa.cr): Crystal library for the Marisa Trie. - [erbwatch](https://github.com/bendangelo/erbwatch): Watches for ERB file changes and recompiles. ## Core Pages - [About Ben (For LLMs)](https://www.bendangelo.me/for-llms/) - [Now](https://www.bendangelo.me/now/) - [Projects](https://www.bendangelo.me/projects/) - [Links](https://www.bendangelo.me/links/) - [Books](https://www.bendangelo.me/books/) - [About](https://www.bendangelo.me/about/) ## Recent Posts - [Optimizing your site for LLMs](https://www.bendangelo.me/2026/01/21/optimizing-your-site-for-llms/): My llms.txt - [Self-Host any Docker image using Kamal](https://www.bendangelo.me/2026/01/12/self-host-any-docker-image-using-kamal/): I been using Kamal for the past year in my own Ruby on Rails projects. And it’s fantastic: - [On Writing the TOCFL B Band speaking and writing test](https://www.bendangelo.me/2026/01/01/on-writing-the-tocfl-b-band-speaking-and-writing-test/): Not much information is online about taking the TOCFL B Band test, so I wanted to share my experience and hopefully h... - [Made A Language Learning Charades Game](https://www.bendangelo.me/2025/10/27/made-a-language-learning-charades-game/): - [Using whichlang.cr for language detection](https://www.bendangelo.me/2025/04/13/using-whichlang-cr-for-language-detection/): whichlang.cr provides Crystal bindings for Rust’s whichlang language detection library. It detects the language of a ... - [Using marisa.cr for Efficient String Storage in Crystal](https://www.bendangelo.me/2025/04/11/using-marisa-cr-for-efficient-string-storage-in-crystal/): The marisa.cr Crystal shard gives you access to the powerful Marisa Trie data structure, perfect for storing and sear... - [Why Can't I Find My App On The Google Play Store?](https://www.bendangelo.me/mobile/android/2025/04/01/why-can-t-i-find-my-app-on-the-google-play-store/): So 6 months of hard work building my first Flutter mobile app. I release it on the Google Play store (and Apple store... - [Ruby Gems For Pulling Dictionary Words](https://www.bendangelo.me/2025/01/09/ruby-gems-for-pulling-dictionary-words/): For the past few months I’ve been working heavily on an English Dictionary database, to help people learn English. It... - [Simple Explanation of the Pinyin Sounds](https://www.bendangelo.me/2024/09/06/simple-explanation-of-the-pinyin-sounds/): After learning Chinese Mandarin for over 10 years. I feel I should write a guide on how to pronounce Mandarin and so ... - [Failed Attempt at Creating a Video Search Engine](https://www.bendangelo.me/2024/07/16/failed-attempt-at-creating-a-video-search-engine/): Three years ago I noticed some drastic changes to YouTube which I and many others didn’t like. For example the remova... ## Optional ### Posts by Tag - [Tags Posts](https://www.bendangelo.me/tag/tags/) - [Throw the Project](https://throwtheproject.com): A Flash-game studio active circa 2007. - [Archive](https://www.bendangelo.me/page2/): Older blog entries.