Blog
Posts written here and imported from the Telegram channel
normno.ru → normno.com
На этом все...
Sovereignty is flourishing...
I decided to try running AuroraOS, and it just recently became possible on macOS. I liked it! The installation went smoothly, and everything came together quickly. Next, we'll try KMP.
There was a problem—a solution emerged
Another weekend—a new product that might prove useful not just to me. I won't go on and on; I'll just talk about the problem and how I solved it. The Problem: Banking apps aren't good enough at…
Even More AI in Developers' Lives
I've seen a lot of posts about KotlinLLM on JetBrains' official YouTube channel for quite some time now, but I just couldn't seem to find any information about it quickly—and today I found out that, as it turns out, KotlinLLM has been posted on…
TG WG Flowseal
If you're familiar with these three words, then you're already an expert on the modern internet, but I've come up with something else... Flowseal has already created a super-convenient proxy client for Windows, macOS, and Linux that can be deployed…
Hey everyone, hi there! I made a VK reader
For a long time, I’d been planning to develop a VK page archive reader—one I’d created before deleting my account two years ago. It was already possible to read conversations in the archive via index.html, but there was no pagination…
Смотрите
как могу
This is a test post from the website
Yeah, I didn't write this post on Telegram—I wrote it on the normno.ru website. Now my posts are synced with the site, so it doesn't matter where I read them. Too bad I don't have anything to write about(((
https://normno.ru/
Using just my phone—without a computer—I created a new portfolio website featuring my projects, publications, and music from my Spotify. Many elements can be edited from the admin panel. To do this…
I finally got around to working on my favorite side project—RutubeDownloader, which I use regularly
I managed to integrate the iOS target into the project and successfully run the app on the simulator via Xcode. Here's the commit with all the changes I had to make. There are some minor platform-specific quirks…
Google has already made Compose the primary tool for UI development on Android and plans to gradually phase out support for
The Compose Stability Analyzer plugin, created by Android development legend Jaewoong Eum, can be extremely helpful in this regard for monitoring UI stability.
In Material3 version 1.5.0, presets for animations were added that can be enabled in Theme.kt
MaterialTheme( colorScheme = colorScheme, typography = Typography, motionScheme = MotionScheme.expressive(), content = content, ) Then, in animationSpec, we specify a preset from MaterialTheme based on...
My YouTube Recommendations at 4 a.m.
Git in Minecraft seems like an absolute must-have for builders working on large-scale projects. It immediately reminds me of how, during my first years of college, I used to save copies of my coursework as I worked on it so I wouldn't lose my drafts…
I've been dreaming of seeing this for so long
No, I haven't disappeared—I'm still just as passionate about Kotlin and KMP development. Now we're going to try our hand at macOS and iOS. Plus, on
So, the Apple presentation is over
The new iPhone Air—now that's truly AMAZING
Three of my favorite things (the Drum & Bass music genre, programming, and beautiful IDEs) have come together in a single open-source project called
This project has a web app: strudel.cc and a code repository: codeberg.org/uzu/strudel I don't watch vertical videos—this is just a good example
Google, are you serious?
Over the past week, the default Android apps have changed significantly in terms of fonts, sizes, and the positioning of elements. Here’s what I just noticed on the clock... Most likely, this is due to the new Te element…
Also at this conference, they discussed how Sber managed to integrate Braille into a device with a flat screen, that is, into a
https://braille-trainer.vercel.app/ The project was developed by the Android team
The first Android meetup is taking place (a recording will be available here) at Sber. At the event, I learned that Kaspersky uses Decompose for n
UPDATE: They chose Decompose because it offers more flexibility in managing the Android lifecycle.
I felt like adding a little beauty
I've seen twice now how apps create gradients by inserting videos instead of using a software implementation. I decided to fulfill a long-held desire and learn how to create such gradients. There's one person in the world who can...
A little off-topic
This morning, Windows decided to update to 24H2 (26100.4652), and for the first time in my life, my activation tool stopped working. So be careful. UPDATE: All the well-known activation tools have fixed the issue.
There's this awesome tool in Compose—Hot Reload—that's always been available to web developers
Thanks to this feature, you can change the UI in the code without restarting the app and immediately (after pressing Ctrl + S) see the changes in the running app. This has been available on Android for a long time, but now it's also available on…
It hadn't even been a year...
I am officially releasing the first version of my small app for downloading videos from RuTube for Windows and Android. Thanks to YouTube’s “block” and to everyone who started uploading terabytes of content to R…
What is this, then? Could it actually be something useful for regular users?
I think CodeFest was a 200% success.
The activities and staff were the highlights of the 2GIS booth. VK had the most original booth, featuring discussion tables on various topics. During the discussions, you could order coffee, snacks, or even…
Photo from Telegram
Yesterday, I managed to find three presentations related to mobile development
I hope I'll be able to find something else today
So, here's my first IT conference this summer
Thanks to @start_eltex, I was able to attend the anniversary CodeFest, featuring 9 halls where presentations on all topics are held simultaneously from 10 a.m. to 5 p.m., along with plenty of activities from major companies offering merchandise,…
It's the first day of KotlinConf'25
I probably won't be posting anything from this conference, but now I know that JetBrains' IDE includes my favorite color theme, Solarized.
And just like that, Google I/O 2025 is over
Now, throughout the coming year, we'll be exploring and discussing what was unveiled today: the new Material 3 Expressive in Android 16—more beauty. You can already check it out in Android 16 QPR1 Beta 1. More in…
A very hot start to May
Google and JetBrains have decided to flood us with updates and stable releases for the technologies we all use so actively... “Only the lazy haven’t written about” the release of the stable version of Compose Multi…
Photo from Telegram
Starting on April 21, the “netizens” community and I began to notice a decline in the performance of Zapret and other tools across the country
After spending the night reading the documentation and selecting "strategies" for DPI encryption, I managed to come up with a great configuration to get YouTube and Discord working again. To make it easier for you, I forked the main repo…
Now I'll be able to test the APIs for the latest versions of Android
Maybe it'll come in handy someday
I love running and tracking all my workouts with the Mi Band. The band is linked to the Zepp app, and after Strava was blocked in Russia, syncing stopped working, so I had to manually upload each workout…
From time to time, I transfer my files from my computer to an external storage device, and unfortunately, when I transfer .gitign projects in the usual way,
You can run the following Bash command: `find /path/to/search -type d -name "build" -path "*/app/build" -exec rm -rf {}`; this will ensure that the large build files are deleted from your projects. You could have done it more…
Good day!
I have a school project that I'd like to develop into something usable for regular users. It involves embedding data into files—in my case, embedding text into an image—called…
There's been a plugin for KMP Preview in Android Studio for a long time now, and no matter how many times I've built a UI with Compose, it's never worked.
UPDATE: My KMP plugin generates previews faster than the one built into Android Studio for Android—let's set aside the fact that the built-in preview has more features.
Let's take a brief break from development and dive back into the world of neural networks
This time, I'll explain how to use the new Gemini 2.0 Flash with its photo editor (For more on the update and its features, see the article by rozetked). To take advantage of the new features as of this publication…
Base URL, or the domain you need to access to use the API (https://example.com). I'm sure many of you are familiar with it
In build.gradle.kts, add "debug" and set "buildConfig" to true. android { ... buildTypes { debug { buildConfigField("String", "BASE_URL", ""https://test.example.com/"") } release { ... buildConfig…
Just a picture showing the evolution of the mascots across the different versions, which didn't fit within the character limits of the post above
This isn't a roadmap or a set of recommendations for learning Android mobile development. I just want to share some sources of information
Aside from my university course, I started out with the YouTube channel NecoRu, run by a wonderful Russian-speaking creator from Spain. He doesn't post videos as often these days, but back then, thanks to him, I learned the basics of r…
About once every 3 months, I completely delete the "caches" folder in .gradle
I want to try disabling caching in all my projects by setting `org.gradle.caching=false` and see how much the `.gradle/caches` folder fills up.
The official Kotlin channel recommends caching builds so that the build process is faster after restarting the project
I don't really understand what this is about, since it seems to me that Gradle already caches everything anyway, and the comments under the Kotlin post fully confirm this.
Alpha versions of the updated CameraX have been released since October 2024. Now, in Compose, you no longer need to work with the camera via A
Creating a basic viewfinder Creating autofocus and focus-on-press Implementing face detection (video in the pin) Working with the viewfinder for foldable devices (couldn't find it) That's how we used to have to do it…
The developers of Koin (a library for integrating dependencies) released a plugin for vi from beta two days ago
A little about the channel: Yes, posts are few and far between, but that doesn't mean I've been programming less or that there's nothing new or interesting going on. I just don't know how to present the information so that it isn't too niche…
Let's continue with the topic of language models...
A Chinese model from DeepSeek has suddenly become very popular. At first glance, it’s the spitting image of ChatGPT—nothing more, nothing less. According to the comparison charts, the accuracy of its responses is almost on par with ChatGPT-o1. It feels like…
I recently discovered by chance that Google has lifted the strict geo-block on Gemini, and now it can be used without any problems in Russia
P.S. No language model is yet capable of writing Kotlin code for Android, not even for the simplest tasks.
Today marks the 10th anniversary of the Android Studio IDE. Thanks to it, I learned that development environments can actually be user-friendly, after which
I've had a chance to try out a whole host of versions with different names, starting with "Dolphin" in 2022. It's great to see that in the latest versions, Google and JetBrains have decided to start fixing bugs instead of just adding them.
There are, after all, limits on requests...
0–1 in favor of Max's bot
I just went to GitHub and saw a new Copilot widget from GitHub on the homepage, next to the recent activity feed. It looks like
This is probably a useful tool for people who aren't very familiar with the GitHub interface. It reminds me a bit of the Max bot from GosUsługi, except this one actually works and will be helpful.
Thanks to the recent one-hour outage of the Russian internet, I discovered a really cool tool called Uptime Kuma
I deployed a web app on my server in Russia using a container; in half an hour, I added some websites that I found interesting (and some that I didn't) and set up notifications to a Telegram bot in case of "incidents." Finally, I won't have to…
Exactly one year ago, I went to a coworking space, opened Android Studio, and off I went...
July doesn't count. I was away from the internet and civilization.
✨
Hi, first subscriber!
So I tried my first hackathon and realized that going it alone against teams of 4–6 people and trying to do everything at once is a VERY BAD first experience. Analyzing my mistakes… On the first day, I just wasted…
Kotlin 2.1.0 was released a few hours ago, and I decided to revisit a long-awaited K2 feature: "explicit backing fields."
Just before launching, you need to: Update Kotlin to version 2.0.0 or higher. Enable K2 in the IDE under "Settings -> Languages & Frameworks -> Kotlin": Check the "Enable K2 Kotlin Mode" box and allow its use…
How beautiful!
It's funny to run into familiar faces from the mobile development world on websites where you wouldn't expect to find them.
I'm currently trying to understand how the XML navigator works, and I keep running into errors. While searching for a fix for one of these errors, I stumbled upon the author of a popular blog on mobile development…
By the way, I passed the test and even made it to the interview, but I didn't get the job. No big deal—I'll keep trying)
Check this out! It's CI on GitHub. I decided to give it a try on my Kotlin projects. It builds the project and runs the tests. Awesome!
By the way, this is my test assignment)))
Another night spent developing an Android app, and you have no idea how much I'm loving this process.
Yeah, not everything turns out perfectly, but what an amazing experience it all is.
❤️
I suddenly remembered this channel. I want to share how I solved my problem and happily report that I managed to solve it very
I've known for a long time about the "race condition" problem in programming, where processes in threads don't execute in the order the programmer expects, and now I've finally run into it head-on. Here's what happened and how we fixed it…
GitHub is already sending me to bed on its own
I'd like to run this channel in a special way, but that makes me lose the desire to post anything at all.
For example, today I built a simple test site on KMP. And I also did something I'd been thinking about for a long time: a site featuring all my GitHub projects, along with links to the sources for various articles and videos—it had everything…
We're continuing to struggle—I mean, learn—the ins and outs of Compose. Here, we'll look at different ways to use the TextField element
I'd like to start by sharing—or bragging about—my daily Android development work and posting all the steps I've taken in
For the most part, I study and recreate other people’s projects using YouTube videos or articles. In every repository (unless it’s my own project), there are closed issues that contain a link to the original source…
Hi, everyone. This channel is all about my life as a developer. Hopefully, a developer for mobile platforms—or cross-platform in general.
All information about the channel's creator can be found in the channel description. Welcome!