All Posts

How to force Telegram to upload MP4 as MP4 and not GIFs

There is no official way of doing so as far as I know. Small MP4 files without audio are automatically converted into GIFs. But you can trick Telegram into doing what you want - this method seems to be working as of January 2023 on both the iOS desktop app and the official API. You might want to do that because you cannot group GIFs in an album. It works fine with JPGs and MP4s, but when you mix GIFs into that - the API suddenly throws 400 errors. You can’t create an album of GIFs alone either. Very annoying.

How to deploy an application from Github Actions to your Synology NAS

Recently I have been refreshing my various Telegram bots - I had 3 tiny go apps lying around and I have decided it’s time to put them into a single app. I was just done with all that boilerplate and it just made more sense. While doing so I thought it would be cool to finally push docker containers I was already building using Github Actions directly to my Synology - without any human interaction. The thing is I didn’t want to expose the whole Synology to the Evil Internet. So I have decided to use Tailscale which is a truly magical product. It’s built on top of WireGuard but removes all the manual fiddling/configuration process. It’s install & forget. Below is a quick-ish recipe I have decided to follow.

How to remove Linkedin connection (kinda in) in bulk

tldr: it’s not so straightforward and can’t be done that quickly, but you can streamline the process, so it’s not a huge PITA. My LinkedIn profile literally become LinkedInLunatics subreddit. How did that happen? Oh, I know how, years ago, I just accepted almost every invite from almost every person. Fast forward 9 years later, I got a linked feed with a bunch of coaching BS, crypto boys fanatics, and people just building their audience. I decided it’s time to revisit some of those old contacts.

Cleaning up side projects

Over the years, I have accumulated various ongoing/past side projects where I tinkered with mostly unstructured stuff. I decided it was time to let them go. My initial learnings were great, but I realized it’s impossible to keep up with everything while having a full-time job. Maintenance cost - domains, servers/storage, and mostly - time - was not worth the return.

Gaming on Apple M1

Is it possible? Yes. Does it make sense? Probably no. Under the Apple M1 chip, you have two options: Crossover or Parallels. The first one is supposed to be more performant. The latter allows you to install Windows 11 ARM (get it via Windows Insider Preview program), which is supposed to cover more software and runs DirectX12.

Problems with inexperienced teams and Ruby

I have been coding in Ruby for over ten years, and I have had a chance to see some real-life codebases created by in-house teams, contracts, and software houses of all skills. Inexperienced folks that don’t have guardrails in the form of mentors can create stuff I have never dreamed of. In my nightmares, that is.

Moddable by default

I have a huge sentiment for Quake 3; that’s no shock, given I’m still keeping quake.net.pl running. The significant factor of its popularity was that it was moddable and OSP, CPMA, and many more had their communities of gamers, mappers, and content creators.

How to encode videos on Synology NAS

If you’re trying to get FFmpeg onto your NAS - try no more. There is a more user-friendly alternative - an open-source video transcoder called HandBreak. Amazingly you can run it as a docker container. Here is how I run it:

From Crystal to Elixir

I babysit a few of my pet projects, including moviestowatch site that used to query IMDB for ratings & reviews and compare both (used to, after IMDB redesigned their page and everything broke). I wrote it 4 years ago in Crystal based on simple kemal web framework. As you can imagine, a four-year-old app written in a language that wasn’t even stable at that point is next to impossible to maintain. I took this as an opportunity to rewrite it using Elixir and Phoenix framework. Just for the sake of the learning experience.

Logging on Nomad with Loki and Grafana Cloud

This blog post is an excellent point of reference on how you can approach the logging aggregation problem while on Nomad. As I’m using Consul, I followed a slightly different approach. I have decided to deploy promtail as a global service on each node and scrape the /var/nomad/alloc/*logs/* directory. Additionally, I slurp systemd-journal to debug potential system services issues as well. I’m not fully convinced that this is the right way. Still, it seems to do the job - even if the given service doesn’t exist on the particular host that promtail is running on - nothing terrible happens - allocation id directory won’t exist on that host, so we will never scrape anything. The most significant upside here is that scrapings logs from new/existing services require adding a service tag - no need to configure extra sidecar service for each job. So it’s a really continent solution.