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.

Essentially PopOS is Ubuntu fork which doesn't have Snap Packages in its core. You can think it's like Ubuntu 19.04 when everything used to work just fine. Instead of snaps, Pop OS has most of the packages available as a classic deb or a flatpack.

Why use Pop OS?

Pop Shop App store main screen

For me, the main reason I prefer Pop OS because it just works, as it was in earlier versions of Ubuntu.
It's open-sourced and maintained by System 76, a company manufacturing high-end laptops for the power users.

Pop!OS is not very far from its parent - it has same Debian-based package system, it's compatible and based on the same apt Ubuntu repositories and follows Ubuntu releases. That all make migration smooth, virtually non-existent. You'll _hardly notice any difference with Ubuntu, especially when compared to the OpenSuse Tumbleweed or Manjaro - the ones I shortlisted.

Pop OS also features Pop!_Shop - a marketplace for the software for both deb and flatpack applications. Unlike new "Ubuntu Software Store"(which is a snap repository browser now) all software I tried from the Pop!_Shop is working.

Issues with Pop OS?

PopOS failed to mount encrypted luks partition due to the bug in installer

So far, I can't think of something serious. For the apparent reasons, Unity and Compiz-Fusion are not maintained now, so I have to tune GNOME to a decent functional level and gain the maximum productivity out of it. But this has nothing to do with PopOS

The installation didn't go well; Pop OS installer failed to recognize my luks partition, and I had to fix it manually with init 1, like in good old times!

Unfortunatelly I could not make PopOS boot with secure boot with my Lenovo T480s, so I left it disabled


Pop!_OS is a great desktop Linux and it's supperior to Ubuntu in my opinion because it's much stable and doesn't have enourmous issues with software packaged in snaps.

It's great to see that there are more competition for the desktop Linux OS outthere - it's always beneficial for the end user.

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

RPI Zero scan button

While I was finishing wireless scanner and printer server I realised that traditional document scanning approach is not so nice from UX point of view.

I really like the way office scanners in multi-functional devices work. Normally if you want to scan you just load stack of paper into and put your email address. Scanner does the rest and in minute you'll get ready-to-use pdf file in your inbox.

I was thinking about having button attached to RPI Zero which initiates scanning and document upload.

Read moreRPI Zero scan button