aNNiMON
banner
annimon.bsky.social
aNNiMON
@annimon.bsky.social
Java developer from Ukraine.
Specialties: backend, image processing, programming languages
My projects: https://projects.annimon.com/
After playing around with the network tunnel, I accidentally routed all my traffic through a closed port, which resulted in me losing my SSH connection. This is how I regained control
blog.annimon.com/server-access/
How I almost lost access to the Oracle Cloud server | aNNi::Writes
After playing around with the network tunnel, I accidentally routed all my traffic through a closed port, which resulted in me losing my SSH connection. This is how I regained control
blog.annimon.com
December 7, 2025 at 2:03 PM
I was using mdBook for documentation, but then I heard about Zensical and decided to try it out. It's nice, but my favorite feature is the ability to display different images for the dark and light themes! Docs: projects.annimon.com/projects/effy/
November 15, 2025 at 7:35 PM
effy 0.4.0 (pre-release)
github.com/aNNiMON/effy...

This release brings new Trim parameter that allows to trim media by duration or start/end time.
November 5, 2025 at 9:03 PM
Trim parameter. Currently, without the validation
October 31, 2025 at 1:15 PM
effy 0.3.0 (pre-release)
github.com/aNNiMON/effy...

- Added hardware acceleration parameter. Supports nvidia and intel qsv
- URL input support
- 'Render as' dialog redesign with hints
October 21, 2025 at 7:15 PM
I've finished a core rework in effy 0.2.0

I decided to change the structure to have more control over custom parameter types, such as Select, Toggle, NumericInput etc. This allows dynamically change options if needed.

In this release, I also started implementing modal dialogs and.. it's so painful
October 9, 2025 at 8:25 PM
It's been a month since I started self-hosting karakeep.app, a read-it-later application that helps organizing my reading list.

It has nested lists, a good search, AI tagging and summarizer (you can adjust prompts), notes, a separate reading view, API and mobile client (quite buggy atm).
October 5, 2025 at 9:01 PM
Here's the progress I've made on my first TUI app. It's an FFmpeg helper called eFFy. I must admit, It's really hard to design a Rust app after thinking in Java abstractions for so many years. On the other hand, it's interesting to break through own habits
September 15, 2025 at 8:09 PM
effybot v1.3 has been released
github.com/aNNiMON/effy...

- Added Audio Compressor
- Added Audio Spectrum output to help quickly determine the status of the audio before and after applying filters

Previously, I added the /clip command, but I don't like it, so it won't be included in this release
August 30, 2025 at 8:36 PM
I was surprised to discover that Picasa (killedbygoogle.com btw) had corrupted part of my unprocessed photo library.
I probably used it to fix the GPS location long time ago, and it removed some other EXIF information. Luckily, I had backups, so everything can be fixed.👌
August 16, 2025 at 10:45 AM
Timelive plugin v1.1.0 for Obsidian has been released
github.com/aNNiMON/obsi...

- Preview popover fixes
- Improved README
- Use narrower month interval for calendar line when applicable. If time span is too short to show the years, it will switch to show years+months instead
July 12, 2025 at 1:41 PM
Image Processing series with interactive JavaScript examples. Topics include basic pixel and channel manipulation, color models, scaling, and histogram. Also implemented image filters such as negate, contrast, saturation, gamma, blur, emboss, etc.
blog.annimon.com/image-proces...
June 30, 2025 at 6:34 PM
Working on image processing series with JavaScript examples and home assignments
3 out of 10 are published for now
blog.annimon.com/image-proces...
Image Processing 1. Introduction | aNNi::Writes
Introduction to color encoding, RGB components, and how to manipulate pixels in JavaScript faster
blog.annimon.com
June 10, 2025 at 11:22 AM
Here we go! Decided to include time spans into the initial release of #Obsidian Timelive plugin.

Also, submitted my plugin to a community plugins list: github.com/obsidianmd/o... 🙏
April 6, 2025 at 11:55 AM
My new blog post about the #WezTerm project selector.
It helps me to quickly switch between workspaces with predefined panes, commands, environment variables, etc.
blog.annimon.com/wezterm-proj...
WezTerm projects selector | aNNi::Writes
Using the lua configuration and the powerful multiplexer in WezTerm, we can set up project-specific workspaces in just a few clicks
blog.annimon.com
April 4, 2025 at 2:29 PM
Switched back to Deno. It has some type inconsistency, which require declaring an extra type MomentCallable:
// @ts-ignore: deno lack of type
const moment: MomentCallable = globalThis.moment;
But overall Deno is much easier to configure and faster. According to GitHub CI: 39s on Node vs 18s on Deno.
Switch to Deno · aNNiMON/obsidian-timelive@5c5dca2
github.com
March 2, 2025 at 12:00 PM
I've created an Obsidian plugin to build a timeline.
github.com/aNNiMON/obsi...
The idea came suddenly and ate me up. I spent the last two weeks learning the Obsidian API, trying out Deno (although I switched to node today), and figuring out how to build a dynamic timeline in HTML. Will release soon
March 1, 2025 at 8:39 PM
I decided to translate my biggest article about #Java Stream API. Also added description about gather operator from Java 22, Collectors.teeing from Java 12 and about peek optimization.
Check it out: blog.annimon.com/stream-api/
Complete guide to Java Stream API in pictures and examples | aNNi::Writes
In this article I provide a description of streams, collectors and spliterators. Also provide visual demonstrations of how operators work, a lot of examples and self-checking tasks
blog.annimon.com
February 16, 2025 at 9:25 PM
exifgeo 0.2 released
github.com/annimon-tuto...

- Show progress
- Sort photos in a cluster by date
- Add -nt option to the skip thumbnail extraction
February 5, 2025 at 9:11 PM
Got some time to organize my Obsidian notes.
The picture would be better if I found how to ignore some common tags here. But it's still a feature request: forum.obsidian.md/t/exclude-a-...
February 1, 2025 at 5:17 PM
And here's what I got with Zola
blog.annimon.com
January 28, 2025 at 4:29 PM
That's how I found Zola – a modern static site generator written in Rust.
No dependencies are needed, just a small binary is enough.

Everything what I need is here:
- Various syntax highlight languages
- Light/dark mode
- Different locales
- Cool themes
- Extendable templates
- RSS support
January 26, 2025 at 8:01 PM
You know what? I got tired of this shit. I used to have a few blog posts on this "platform" back in 2016. It was so-so then, but I decided to give Medium a chance. Years passed and things got worse. It's time to say goodbye to Medium and move on.
January 22, 2025 at 3:08 PM
If you're using Obsidian and want to create a shortcut to open your vault, here's how to do that.

Create a shortcut, type URL:
obsidian://open?vault=your_vault_name_or_id
and a shortcut name. Then pin it to the Start Menu.

Docs: help.obsidian.md/Extending+Ob...
January 19, 2025 at 12:50 PM