HTTPS with CloudFlare + Caddy = ❤️

There are dozens of reverse proxies and thousands of ways to configure them. Unlike many, Caddy is very easy to configure and use, it's very efficient and production-ready. It has sensible defaults and does everything for you out of the box.

Cloudflare is one of the biggest CDN(Content Delivery Network), widely used to speed up page loading, enable edge caching and mitigate attacks. It also provides HTTPS certificates for your website, for free, even on the free plan.

Read moreHTTPS with CloudFlare + Caddy = ❤️

Bye Ubuntu, hello Pop!_OS

A month ago, I switched from Ubuntu to Pop Os, which wasn't an easy decision.
I've been using Linux as the desktop OS for the last 15 years, ten years of these - with Ubuntu, since 8.06. I always appreciated Ubuntu because it just works, unlike other rivals. It was stable and reliable OS I can rely on. Canonical invested a lot to the UI and UX, namely in Unity, as to me it's a game-changer and productivity booster.

But as Ubuntu developers and maintainers have chosen a different path. Long story short - the system becames very unstable and buggy, with poor user experience, Unity has been deprecated. Snaps are either broken or partially working. That made me look around in search of better desktop Linux, and after considering and trying a few options, I stopped at Pop!_OS.

Read moreBye Ubuntu, hello Pop!_OS

Ubuntu 20.04 on Lenovo t480s

Recently I've upgraded my setup and got Lenovo T480s with all max configuration(Intel i7-8650U) and additional 32Gb RAM

TL;DR: everything works really well on Ubuntu 20.04, 40Gb is just enough to run modern web applications. But in 2020 it's probably worth to consider modern models of computers and next generation CPU. Conclusion: while performance is good the design was upsetting

In this post I'll share some observations after a week of use for work. As a reminder I'm a backend and Android developer mostly focusing on JVM stack

What is GOOD

Read moreUbuntu 20.04 on Lenovo t480s

Discrimination by OS

It's hard to be in minority. I wonder how many people even thought that there is a discrimination by OS?

People who born before 1990 might remember that message from the beginning of millennium "this website requires Internet Explorer" to run. That time minority (macos, linux, bsd, solaris) had to run a virtual machine with Windows just to access some websites. No kidding.

Nobody liked it, people felt oppressed and that caused a very strong emotional feedback for Microsoft. Having no other options we managed to use internet and Windows-only focused hardware. As a Linux user I remember those conversations with macos users - we all were in the same boat. We were "pricks".

Read moreDiscrimination by OS

Pi-Hole and DNS-over-HTTPS using docker-compose

I'm glad that people started to think about the privacy more than ever

In this post I'll share my experience of configuring pi-hole and Cloudflare DNS-over-HTTPS on Raspberry Pi using docker-compose. Before we dig into the configuration a few words what it's all about

UPD: Post has been updated with newest version of pi-hole

Read morePi-Hole and DNS-over-HTTPS using docker-compose

Installing docker-machine on Raspberry PI

One of the nicest things about docker is reproducibility and containerisation. It is possible to run multiple applications which requires different environment on the same computer and make them live happily altogether. Although Raspberry Pi has ARMv7 instructions set, we still can run docker on it - we just need different images. One would be surprised there are some official images available on docker hub.

The configuration can be very simple - literally two commands in terminal, thanks to widely available devops tools such as docker-machine and ansible. Having this setup there won't be need to login to the RPi and perform any manual configuration per service anymore. Instead, services can be configured and deployed right from your computer.

If you don't have your Rasbperry configured yet refer to previous article for the initial setup.

Read moreInstalling docker-machine on Raspberry PI

Setting up Raspberry Pi without Monitor

In this post we will setup and configure Rasbian for your RPi to be instantly available via local network and without screen on the linux or mac system. Those steps should be appliable to any Raspberry PI version

To start with we need a few things:

  • Raspberry PI itself
  • 8Gb+ SD Card, class 10 at least
  • Ethernet cable to connect RPi to the router
  • Downloaded Raspbian Lite zipped image

Read moreSetting up Raspberry Pi without Monitor

Project Update: PronounceMe – implementation details

I have several post about the PronounceMe project experiments - automatic video and voice generator for English learners. If you missed previous posts please review #pronounceMe for more information about the project, ideas behind and some statistics. In this post I'd focus on the technical implementation with some diagrams and noticeable code snippets.

Read moreProject Update: PronounceMe – implementation details

Flashback: links2 browser in modern web

Some of us still remember natty command line browser called links2. Personally I used it quite a lot when system broke again after minor update of linux kernel or rebuild of gentoo. Nowadays most of linux updates happen smoothly and don't require us to serarch for fix in text terminal without running X server. But it was very different 10 years ago

Let's see how modern website look like in links!

Read moreFlashback: links2 browser in modern web

Nexmo Voice API demo: voicemail app

This article features voicemail service built using Nexmo Voice APIs and Spring Boot

As a business owner it's not always easy to handle huge volume of calls 24/7. On another hand each customer is important and it deserve to be served well.

To kick off development you can checkout demo repository

What to expect in this tutorial

In this tutorial we build simple voice mail forwarder where callers asked to leave a voice message which will be sent to the email using Nexmo Voice API as an attachment.
Example of result:

Read moreNexmo Voice API demo: voicemail app