2025年10月13日 の Show HN
21 件Cadence – A Guitar Theory App #
The idea was to make something for the eternally "intermediate" guitarist (myself included). There are a lot of beginner apps which rely on learning songs, toolkits which give you a bunch of stuff with no explanation but not many in-between apps to actually learn and practice more generic and somewhat advanced stuff.
The app contains short lessons, recaps and most importantly challenges (visual, audio and pure theory) along with a very complete library.
The challenges are made for practicing, they will get increasingly harder and getting to the max score is supposed to be quite hard. The idea being that you have to repeat them regularly until your brain has integrated the info and it flows naturally rather than being a one time quick dopamine shot. This is partly inspired by how language learning apps work.
It has no ads, a lifetime purchase option and you can use it without an account if you don't care about multi-device sync or backing up your progress.
Android: https://play.google.com/store/apps/details?id=com.apizon.cad...
iOS: https://apps.apple.com/us/app/cadence-guitar-theory/id674701...
(This is my second and last post about this sorry for spam. My first post a few weeks ago didn't get any views and posting on a saturday might not have helped...)
Local Browser AI #
FFTN, faster than FFTW in 700 lines of C #
It turns out, that with a modern compiler, you do not need much complexity to make a really fast implementation. This implementation is for powers of 2, and optimized for arrays that do not fit in cache. I do think it would be better to use a higher-level language to implement other cases (e.g. n = 2^a * 3^b * 5^c, multiple small FFTs, higher-dimensional), so I am currently working on getting the SaC-compiler to generate this code.
I made a calculator that works over disjoint sets of intervals #
One reason for this is that standard interval arithmetic has really poor handling of division by intervals containing zero. If you compute 1 / [-1, 2] in regular interval arithmetic, you get either [-∞, +∞], or you have to say that the operation is undefined. Both solutions are virtually useless. The real answer of course is [-∞, -1] U [0.5, +∞]: i.e. a union of two disjoint intervals.
This is useful because you can confidently exclude a non empty set of the real numbers ([-1, 0.5]) from the set of possible values that you can get by dividing 1 by a number between -1 and 2.
But this definition of interval division yields a value that is not an interval. This is a problem if you want to define a closed arithmetic system, where you can build and evaluate arbitrary expression over interval values.
(This behavior extends to any non continuous function like tan() for example, which is implemented in my project - not without difficulties!)
Well the obvious solution is to define your arithmetic over disjoint unions of intervals. This is the subject of a 2017 paper called "Interval Unions" by by Schichl, H., Domes, F., Montanher, T. and Kofler, K..
This open-source project I made implements interval union arithmetic in TypeScript in the form of a simple interactive calculator, so you can try it out for yourself! The underlying TypeScript library is dependency free and implements interval union arithmetic over IEEE 754 double precision floats (JS native number type) with outward rounding. This guarantees accuracy of interval results in the presence of rounding issue inherent to floating point.
Make AI text sound human #
YPS: YAML Positioning System #
YAML is a popular data serialization format in the Ruby ecosystem. We can easily parse YAML into Ruby objects using the built-in `YAML` standard library. However, it becomes difficult to pinpoint invalid or unexpected values within a large YAML document because the parsed Ruby objects lack position information (i.e., filename, line, and column).
YPS was developed to resolve this exact problem.
YPS parses a given YAML string and adds each parsed Ruby object, except for Hash key, with its position information. You can use `#position` method to get the position info of the receiver object like below:
``` require 'yps'
yaml = YPS.load(<<~'YAML') children: - name: kanta age: 8 - name: kaede age: 3 YAML
# output # name: kanta (filename: unknown line 2 column 11) # age: 8 (filename: unknown line 3 column 10) # name: kaede (filename: unknown line 4 column 11) # age: 3 (filename: unknown line 5 column 10) yaml['children'].each do |child| child.each do |key, value| puts "#{key}: #{value} (#{value.position})" end end ```
I built an online productivity tools website #
So I built an online productivity tools website, a small collection of browser-based tools. It includes an online notepad where you can write and save notes right in your browser, a cornell notes tool available in more than 20 languages, and more coming soon like a pomodoro timer and a simple blank page for focused writing.
Everything works entirely in-browser using localStorage — no accounts, no cloud sync, no tracking. The site uses only minimal ads (anchor and vignette) to keep it free.
I built it mostly for myself to have a clean, private place to write and study, but I figured others might find it useful too. Feedback, bugs, and suggestions are all welcome.
Cashflow planner for solopreneurs confidential by design #
Struggled to find something private and easy to use to track my pet project's money flow and control balance. So I built it by myself. Based on the security best practices for crypto wallets and password managers.
Any feedback is much appreciated.
ch, a terminal tool to highlight specific words in your command output #
Terminal-First Documentation Service #
There are many document hosting services, but few prioritize interaction between developers. I think most documentation services target general readers and aren't designed to be used by developers themselves.
dodo-doc is a documentation hosting service built for myself and fellow software engineers. It supports the following functionalities that other documentation services don't have:
Strong CLI Tool I'm aiming for a documentation service that can be interactively manipulated from the terminal. You can not only upload but also search and open docs directly from the terminal. We also have experimental support for MCP.
CI Affinity Don't you want to preview documents on CI? I do. You can easily set up deploy and preview flows on GitHub Actions.
Private Use Other documentation tools may have this feature too. But it's REQUIRED for me because I write journals in git. Therefore, dodo-doc supports private documents out of the box.
It's easy to set up, so I'd love for you to give it a try. I'm looking forward to your feedback!
No-Code REST APIs (and LLM Tools/MCPs) for Postgres #
Would love some feedback from the community!
Piradio, Radio Garden on Terminal #
Credkit – Easier Loan Modeling #
Check it out on PyPI: https://pypi.org/project/credkit/
Blog post: https://jt-hill.com/introducing-credkit/
I made a matrix chat client for my 2001 BMW's stock infotainment system #
I used Compose MPP cross-compiled to a Raspberry Pi (running Raspbian) to make my own Infotainment system from scratch. It works on the 2001-vintage factory BMW display with a retractable screen that has a cassette deck behind it.
I then wrote a Matrix Chat Client for the system. The only input device (no touch screen) is a rotary knob that can be pressed. The knob events are sent via the car's IBUS serial bus, which I integrated into the Compose MPP UI state https://e39.dev/hmi/WidgetFramework/KnobListener.html
I've been working on this project since January 2021, when Compose MPP was at the Milestone 2 release.
The Matrix page has a great video of the system in action on the bench-top car-surrogate I made. The homepage, https://e39.dev/, shows an overview of the whole system, and also has writeups on the other features I made, such as the Open Street Map viewer that I also made from scratch.
A SQL integration for Notion databases #
This should be useful for power-users and companies using Notion for their knowledge management.
What it does:
- Works with Postgres, MySQL, SQL Server, and other major databases - You control the data with SQL queries (filter, join, transform however you want) - Scheduled syncs keep Notion updated automatically
Looking for early users. There's a lifetime discount for people who join the waitlist!