iOS:
We are working on the App Store release. In the mean time, you can
1) Go to Safari and open https://tinyurl.com/repeat-after-me-app
2) Hit Share -> Add to Home Screen (iOS)/Dock (Mac)
For those on Mac or iOS, you can open the link in Safari and Share -> Add to Dock (Mac)/Add to Home Screen (iOS) to try out the WebView. We are working on getting this in the App Store.
I have worked as an early engineer in multiple startups before, including in the Ed-Tech space, and always wanted to build something that works in a unified manner across languages.
With tailwinds in voice AI, I decided to build "Repeat After Me", which is targeted at language learners of all ages. Curated content from classics provides a guided approach to refining their language skills.
We plan to add more feedback features such as gamification and your thoughts would be very helpful in that direction.
I'd be happy to make the changes to the codebase but there's definitely scope for improvement. Putting a sleep to avoid repeated lock acquisition should have raised an eyebrow or two when it was implemented.
As mentioned, there should be a read-replica specific code that works using event listeners. Repurposing the primary's code is what causes the issue.
The following pseudocode would give a better picture on the next steps
// Register to receive WAL notifications about this transaction
RegisterForWALNotification(xid);
while (TransactionIdIsInProgress(xid)) {
// Wait for WAL record indicating transaction completion
WaitForWALEvent();
CHECK_FOR_INTERRUPTS();
// Process any incoming WAL records
ProcessIncomingWAL();
}
UnregisterForWALNotification(xid);
}
The fundamental problem is that a synchronous, lock-based approach is being used in an asynchronous, event-driven context (logical replication).
The Postgres team needs to go back to the drawing board and avoid polling altogether and more importantly have event-listener based approaches for primary and replicas separately
It's great to see ClickHouse contributing to Postgres though. Cross-pollination between two large database communities can have a multiplying effect.
Desktop: https://tinyurl.com/repeat-after-me-app
Android: https://play.google.com/store/apps/details?id=com.repeatafte...
iOS: We are working on the App Store release. In the mean time, you can 1) Go to Safari and open https://tinyurl.com/repeat-after-me-app 2) Hit Share -> Add to Home Screen (iOS)/Dock (Mac)