Android Offline Live OCR & Translation with ML Kit and Tesseract
Repository: https://github.com/AndreiMaksimovich/android-live-ocr-and-translation–demo In this article, I’ll walk through some technical details of the creation of an android technical demo project that showcases offline live OCR and translation. The project uses Google ML Kit Text Recognition V2 for OCR and Tesseract as a fallback (when language in not supported by ML Kit), and relies on Google ML Kit Translation for on-device translations. Technology Stack The application is built using Kotlin and XML layouts. The application integrates several open-source and Google-provided components: OCR Implementation In this demo, OCR is implemented through an abstraction layer with a factory that provides an OCR service.…
Cross-Platform Maps in React Native: Android, iOS, and Web
All source code and example project is available here: https://github.com/AndreiMaksimovich/react-native-maps-web–demo Android iOS Web Give it a try: The Problem Maps are one of the most common features found in modern applications. In React Native, the default choice for maps is react-native-maps. While it works well on iOS and Android, it doesn’t provide support for the web. In fact, none of the popular, well-established map libraries currently offer proper web build support. Notice: There is a library called teovillanueva/react-native-web-maps, but it hasn’t been well maintained recently and still offers only very limited functionality. The Goal Our objective was to build a…
Optimizing Unity WebGL: Separate Builds for Mobile Web and Desktop Web
Why Use Double Builds for Your Unity 3D Game Texture Compatibility One of the key reasons is asset compatibility. In particular, texture support differs significantly between Mobile Web (Android & iOS devices) and Desktop Web (macOS, Linux, Windows). To better understand why this matters, let’s take a closer look at the data: Desktop Browsers iOS and Android browser RGB Compressed ETC2 No Yes RGB Crunched ETC No Yes RGBA Compressed ETC2 No Yes RGBA Crunched ETC2 No Yes RGB Compressed DXT1, also known as BC1 Partial (*) No RGB Crunched DXT1, also known as BC1 Partial (*) No RGBA…
Automating Local React Native Expo EAS Builds for Android, iOS and Web
In this article I want to share a simple example setup for automating local React Native Expo builds with EAS for Android, iOS, and Web. The workflow demonstrates how to: automatically generate platform specific builds, install generated .apk file on all connected Android devices, deploy .ipa file to all connected iOS devices, and spin up a Docker container to serve the web build. The core idea of this setup is to provide simple automation for preview test builds. However, it can be easily adapted or extended to support production builds, automated distribution, and additional workflows. All scripts, configurations and docker…
Containerizing Unity WebGL/WebGPU builds: Host Your Game with Docker and Nginx
When working with Unity projects supporting WebGL/WebGPU, setting up a consistent environment for development, testing, and production can quickly become a challenge. Docker solves this problem by providing lightweight, reproducible containers that bundle your Unity Web build with everything it needs to run. Developers can spin up an identical environment on their local machine, a staging server, or in production – ensuring consistent behavior across the entire pipeline. With Docker, testing is more reliable, deployment is streamlined, and scaling becomes as simple as running more containers, and moving from a cloud provider to your own servers is as simple as…
Automating Unity Builds with CI/CD
In this article, we’ll look at Unity APIs and supporting tools that can help you create a robust CI/CD pipeline for your projects. A complete example project – including the Unity project, Jenkins configuration, Docker containerization templates, and scripts – is available here: GitHub Repository Why Automate Builds? Save Development Time Over the lifetime of a project, you’ll probably create hundreds or even thousands of builds for QA, internal testing, and release. Automating these steps saves countless hours compared to manual workflows, far outweighing the time required to build the automation system. Ensure Consistency Build pipelines eliminate human error. Instead…
iOS SwiftUI Apple Maps: Show User Location and Prevent Map Annotations from Rotating with the Map
While working on an iOS app that uses Apple Maps, I was surprised to discover that there’s no built-in option to prevent map annotations (markers) from rotating with the map, nor is there a standard way to keep the user’s location and heading visible at all times. This short blog post demonstrates a practical approach to always displaying the user’s position and showing device rotation alongside it. How It Works In this example, the ViewModel uses CLLocationManager to receive updates about the device’s location and heading. We also track changes to the map camera and store the camera’s heading angle.…