Tweek.so : A nifty tool to manage your weekly todos

After raving about Weektodo and using it regularly, I didn’t really think I needed to switch to another app for getting my weekly to-dos in order. But when I came across tweek.so, I was convinced to reconsider my tool of choice.

Tweek.so is a minimal weekly planner and a to-do list app. Organizing your to-do list for each day of the week is such a simple concept to understand and execute. You have good visibility of what’s planned for the next week and also helps you quickly move the tasks around in case your priorities change.

Tweek.so offers a simple and clean user interface with handy tools to set reminders to tasks, add notes with basic formatting such as bullet points, quotes, bold text, hyperlinks etc. You can choose to add colors to certain notes denote important tasks.

Once the tasks are on the calender, you can click to edit them, or drag to another day to organize your work better. As your day progresses you could mark the items as complete. Unfinished tasks are moved to the next day so that you don’t forget about them. The app shows the entire week at a glance and also has another list called “Someday” for things that are on the horizon and not important right now. You can move things from the “Someday” list when the time is right.

You may ask, if all these features are pretty much the same as WeekToDo, then why do I need tweek.so? While WeekToDo maintains all data local to the computer, it helps if things are synced so that you can edit things from multiple devices without losing your work. Tweek.so allows that by signing in and syncing between devices. Another point is, while tweek.so has just one list called “Someday”, WeekTodo has a customizable number of lists so that you could group your tasks under headings like “Ideas”, “Projects” etc. WeekToDo does have an advantage in this aspect. But the best feature which works for me and drives the point home for tweek.so, is the fact that it just works in a mobile browser while WeekToDo is not yet designed for small screens. It does work in a desktop browser and has an appimage for linux os, but using tweek.so on a mobile is much more convinient so that tasks are added, edited or moved around on the go without the need to be tethered to a computer.

There you have it. With some more convinient features, tweek.so has managed to have that edge over WeekToDo. I have already jumped ship and started to use and advocate tweek.so for all my simple daily to do list and weekly planning. You should give it a try too!

Tinkering my Arch Linux i3 installation to perfection

Throughout my Linux distro hopping journey, I have steered clear of Arch Linux primarily fueled by my fear that it is something very difficult to learn and is best reserved for advanced users. But then I thought to myself, I have been a Linux user for so long that I can no longer tag myself as a novice or even as an intermediate user. I know that my curiosity will lead me to something new that I would want to try and I know where to find help if I run into issues. Worst case I can always fall back and continue with distros that I am already familiar with.

When I installed Manjaro Mate on my Raspberry pi, I was already making myself familiar with Arch and its nuances. When I dabbled with Manjaro i3 on my laptop, I made myself more comfortable with using i3 as a window manager as against a full-blown DE such as Gnome or Mate. That lead me to consider Arch installation as a minimal system and work my way up to install and configure an i3 desktop on it. If what I end up with, can become my daily driver, I may leave PopOS!’s Cosmic desktop behind for a while.

The official site for Arch Linux was my place to go and get familiar with the steps I needed for the setup. As a disclaimer, all that I try here was done on a VM. So when it comes to installing Arch on my laptop, I know I might still have some issues which I can only deal with when the time comes.

This guide is the place to start. I downloaded the latest 64-bit Arch iso and booted into my virtual machine. The arch iso, barely 800Mb, boots into a barebones terminal with no ui. This is unlike any other distros I have used. But again the idea is a have a minimally functional system and then build your own system with only the components and applications which you want. This makes the setup very lean and purpose-built. I decided to build myself a developer machine with setup and tools to develop, build and run applications in java, python, kotlin, etc. That is where this blog will ultimately lead to.

The barebones setup involves a lot of steps which require connecting to the internet, creating partitions, installing Linux core packages, etc. Arch includes a super useful installation script called “archinstall” which takes away the complexity of manual steps and really simplifies the installation. I opted to use this. Here is a useful guide for using the “archinstall” automated script. I followed all the prompts on the script, choosing to select i3 as the desktop and other sensible defaults for locale, timezone etc. At one point it asks for list of packages to install during the setup. This was a good time to pull in some essential packages before I could start with the config changes that wanted to do for i3. I chose to install the following

firefox pcmanfm file-roller zip unzip

This is really the bare minimum I need to kick off my i3 customization.

I continued with the installation. The script takes care of creating partitions and installing the core system. The download is roughly 550 MB and the installed size is a little over 1.2 GB. Installation took some time though but once done I just rebooted the system.

Upon fresh login, you can really see i3 in its raw configuration. Nothing really looks pretty and that’s where I have written scripts to automate most of it. Actually, I have spent enough time tweaking on a previously installed i3 system. So I could cut things short by copying those config files over and replacing everything in the fresh install. I have done and redone these steps several times to finally have config files that I am happy with. All those scripts are uploaded onto my dropbox account for use.

I launched Firefox, logged into my dropbox account, and downloaded the install scripts that I need. The way I have organized the scripts for the initial setup, dev setup, and some multimedia setup.

Initial setup – This script really takes care of creating appropriate directories under the home folder, copying some wallpaper files and fonts for eye candy. Then it installs the following packages

feh - for setting up wallpaper for arch

alacritty - this is terminal program which I prefer over the default

lxappearcance - for setting up gtk and icon themes

rofi - lightweight text based application launcher. I chose this over synapse after some deliberation.

arc-gtk-theme - for a beautiful dark theme

papirus-icon-theme - for awesome icons

The script also downloads and installs Visual Studio Code which is excellent for coding as well as basic text editing. By the time the script is done. It copies over my custom configs for alacritty, i3 and i3status and sets up rofi for use.

Here are some snapshots of how the system looks after a quick script run.

i3 config changes include tweaks for the main i3 file with some keybindings as below

$mod+d - To launch rofi instead of dmenu

$mod+q - To close window. Removed the Shift key binding for ease of use

$mod+Enter - To launch alacritty instead of default terminal

Print - To take screenshots using scrot

Some more key bindings for logout, shutdown of the system, volume control etc.

Alacritty and Picom config changes to make the windows look more sleek and set some transperancy for windows that are out of focus. This gives a very modern look to an otherwise drab desktop.

So much for eye candy and now I can move on to setting up my dev tools of my choice. This is in the dev setup script

Dev setup – I am looking to install git, python3, java, gradle, maven, kotlin etc. git and python3 can be installed using pacman. But for others I am relying on the use of sdkman which will help me manage the installation of different versions of various tools I need to install. After this, all I need is an IDE such as the IntelliJ Idea Community edition and I would be good to go.

Checking all the things that were installed
Ram usage barely 300MB on initial login

This is where I am stopping at my attempt at creating an Arch-based developer machine with i3 as the windows manager and some other essential packages. This is still a very lean setup. On boot, the RAM usage is barely 300MB which is impressive. In this age of resource-hungry distros which are bloated with several processes running in the background, most of which an average user may not even need, this lean setup is an awesome feat. Of course, the list of software one needs is a personal choice and so from here on I can choose to curate only the software that I really need. I can think of a UI client for git or even a file diff program like Meld. Other choices could be installing programs for multimedia creation and consumption – vlc, mpv , audacious, audacoty, gimp etc or even productivity suite LibreOffice and a pdf reader.

Once the base system is ready you could always add more stuff by being mindful of programs you really need and maybe regularly purging out packages you don’t need.

That’s it, folks. That is how I have been trying to create a perfect Arch Linux i3 installation with software and packages tailored to my needs for a developer’s machine.

Streaming Local Music from Raspberry Pi to Google Nest Mini

My experience of listening to audio files on my Raspberry Pi has been sub-par thus far. Either I have to rely on the HDMI audio out and listen to music via my in-build monitor speakers or pair my Bluetooth headphones. For some reason neither works for me. Audio output quality via monitor speakers is poor and the Bluetooth connection is also jittery making it an unpleasant experience.

I was looking for some workaround for this problem when it struck me that the Raspberry Pi must also be able to cast the music to my Google Nest mini and if somehow I can get that working, I will be able to solve the audio problem on both fronts – good quality sound and better connectivity. I found my answer in the form of a Python3 package called “catt”. catt stands for “Cast All The Things” and is a nifty Python library that allows the rendering of local files to Chromecast devices. Installing catt is just a simple command “pip install catt”. This installs catt for Python3. Once installed casting a local mp3 was even more straightforward. Just “catt cast ./localmusic.mp3” found my Nest Mini and started casting the audio to it.

The github page for catt gives enough primer to start using this utility. It has commands to scan for Chromecast devices, start/stop the casting, increase/decrease the volume, skip to next etc. “catt -h” lists out the help and describes what each option can do.

But I had something else on my mind. I wanted to build a small utility that will allow me to stream music from my local ~/Music folder and then also be able to control the catt behavior by issuing commands via a menu drive cli utility. Sure enough, I got started with that and ended up coding two scripts. One to control the menu items which allow starting/stopping of tracks, control volume, show play status etc. And another script to run the “catt cast” command to the Nest mini for playing the music. Here are the scripts and the whole thing in action.

#! /usr/bin/sh

loopplay=false
if [ $# -gt 0 ];then
	loopplay=true
fi	

musicfiles=`ls -1 ~/Music/*.mp3 2>/dev/null | wc -l `
if [ $musicfiles -eq 0 ]; then
	read -p "No music files to play. Hit enter to quit"
	exit
fi

count=1
while [ $count -le $musicfiles ]
do
	catt cast "`ls -1 ~/Music/*.mp3 | head -$count | tail -1`"
	count=`expr $count + 1`
	if [ $count -gt $musicfiles ] && [ $loopplay == true ]
	then
		count=1
	fi
done

Above script is responsible to cast the audio to Nest Mini and and capability to loop through the list of music files if required. The script to control catt behavior once the music is playing is below.

#! /usr/bin/sh

function display_menu(){
	echo CATT-UI
	echo "--------------------"
	echo 1. Play Music files
	echo 2. Play Music files in loop
	echo 3. Volume Up
	echo 4. Volume Down
	echo 5. Play next
	echo 6. Toggle Play
	echo 7. Track info 
	echo 0. Quit
}

while [ 1 ]
do
	clear
	display_menu
	read -p "Enter choice : " choice
	case $choice in
		0)	catt stop
			kill -9 `ps -ef | grep playmusic | grep -v grep | awk '{print $2}'` 2>/dev/null
			clear
			exit 0;;
		1) 	mate-terminal -e ~/.local/bin/playmusic;;
		2) 	mate-terminal -e ~/.local/bin/playmusic loop;;
		3) 	catt volumeup;;
		4) 	catt volumedown;;
		5) 	catt skip;;
		6) 	catt play_toggle;;	
		7) 	catt status
			read -p "Hit Enter to continue...";;
		*) 	echo "Not coded yet";;
	esac
done

This surely is a fun way to control the Google Nest Mini from my Raspberry Pi. Helped me achieve better audio quality and better connectivity.

Setting up Java Development on Raspberry Pi

The idea of using the Pi as a machine for java development really excited me. With 8GB ram and quad core arm 64 bit processor and Manjaro Mate as the operating system, it was more than capable of running necessary apps for Java development. I was willing to see how far I can go with this. At minimum I was looking at installing JDK 11, maven, an IDE like IntelliJ and try to run some sample code.

I turned to the trusted sdkman. Installing sdkman was a breeze and few quick commands helped me install java and maven as well.

curl -s "https://get.sdkman.io" | bash
source "$HOME/.sdkman/bin/sdkman-init.sh"
sdk install java 11.0.16-zulu
sdk install mvn 3.8.6

Time to check if everything is installed correctly

[koolksp@koolksp-rpi ~]$ java -version
openjdk version "11.0.16" 2022-07-19 LTS
OpenJDK Runtime Environment Zulu11.58+15-CA (build 11.0.16+8-LTS)
OpenJDK 64-Bit Server VM Zulu11.58+15-CA (build 11.0.16+8-LTS, mixed mode)
[koolksp@koolksp-rpi ~]$ mvn -version
Apache Maven 3.8.6 (84538c9988a25aec085021c365c560670ad80f63)
Maven home: /home/koolksp/.sdkman/candidates/maven/current
Java version: 11.0.16, vendor: Azul Systems, Inc., runtime: /home/koolksp/.sdkman/candidates/java/11.0.16-zulu
Default locale: en_US, platform encoding: UTF-8
OS name: "linux", version: "5.15.56-1-manjaro-arm-rpi", arch: "aarch64", family: "unix"
[koolksp@koolksp-rpi ~]$

For the IDE, IntelliJ IDEA version for linux is a downloadable .tar.gz file. Simply extracting it and running the idea.sh script brings up the IDE. I had to tweak a few system variables and set the PATH for things to work. But once done I had no issue starting the IDE. I quickly created a maven project, added some sample code and went ahead with maven build to create a jar file. Running the code within IntelliJ shows output as expected. Of course it is not blazing fast. Pi does have its limitations, but the fact that it can indeed do all this is a feat. The small single board computer does pack a punch. It will be fun to have some small project developed and tested on the Pi. I plan to extend my dev setup to include spring boot and maybe a tomcat server, just to see how far I can push this tiny beast.

Getting Hands-on With Pacman

Though Manjaro has a graphic utility for adding/removing software, it does ship with pacman which is the the package manager from upstream Arch Linux. On Ubuntu based systems, I was already familiar with apt-get command with its straight forward options, but pacman was little different in terms of the flags it uses to install/update packages. It would take me some time before getting used to it. And while I was still getting a hang of it I knew I would be making ample mistakes on the cli and probably mess something up. There was definitely a better way to handle this elegantly and an opportunity to use my nifty Unix scripting skills.

The official Pacman wiki is detailed enough to understand and use the different options. To use this seamlessly I thought it would be good to write a Unix script as a wrapper over these commands, which will make sure that I just provide the choice of my actions and name of the package for it to work. The script will take care of calling the right commands using sudo ( if required ). This takes away the need to figure out which flags to pass to pacman.

I added options to search for packages, install/remove package, list/remove redundant packages, upgrade system, clear cache etc. Selected menu item simply delegates to the appropriate pacman command, making it a stress-free, seamless execution. Here is the entire script.

#! /usr/bin/sh

while [ true ]
do
        clear
        echo "PACMAN Helper"
        echo "-------------"
        echo "1. Search package"
        echo "2. Install package"
	echo "3. Remove package"
        echo "4. List unused packages"
        echo "5. Remove unused packages"
	echo "6. Update and Upgrade system"
	echo "7. Clean cache"
        echo "0. Exit"
        echo
        read -p "Enter choice: " choice
		echo 

        case $choice in
                0)      clear
			exit
                        ;;
                1)      read -p "Enter package name: " pkg
			(pacman -Qs $pkg; pacman -Ss $pkg) | cat | less
                        ;;
                2)      read -p "Enter package name: " pkg
                        sudo pacman -Syu $pkg
                        ;;
                3)      read -p "Enter package name: " pkg
                        sudo pacman -R $pkg
			read -p "Press any key to continue..." continue
                        ;;
		4)	if [ `pacman -Qdt | wc -l` -gt 0 ];then
				echo -e "Listing unused packages...\n"
				pacman -Qdt
			else
				echo "No unused packages found"
			fi
			read -p "Press any key to continue..." continue
			;;
		5)	if [ `pacman -Qdt | wc -l` -gt 0 ];then
				sudo pacman -Rs $(pacman -Qdtq)
			else
				echo "No unused packages found"
			fi
			read -p "Press any key to continue..." continue
			;;
		6)	sudo pacman -Syu
			read -p "Press any key to continue..." continue
			;;
		7) 	sudo pacman -Sc
			read -p "Press any key to continue..." continue
			;;
                *)      echo "Invalid choice"
                        ;;
        esac
done

Created a ~/.local/bin folder and saved this file as “pacmanhelper”. File permission 744 makes sure no one else is able to change or execute this file. I updated the .bashrc to include this in the PATH.

Here are some screenshots of the script in action.

Pi Land Adventure 3 – Pop OS

The Pi journey continues with Pop OS. I could quickly get started by flashing the latest pi image onto the micro SD card and booting it right away. The official image is a hefty 2.2GB and does take its time to written on the SD card.

First boot was a familiar experience, since I have been using Pop OS as my daily driver for almost a year. And so I was very curious about its ARM spin. The welcome screen asks you to enter the user details, set up a password, allows some quick selection of themes, dock positions etc and you are ready to go. Pop OS has the cosmos desktop with its window tiling feature which is a breeze to use. One thing I noticed though, that the dock does not auto hide which is annoying and wastes valuable screen real estate.

The RAM usage hovers at 1.7 GB which is definitely on the heavy side and the fresh install of the image takes 7.6 GB disk space. WiFi and Bluetooth connectivity is also not an issue.

The list of applications isn’t that exhaustive, the only good thing being that it came with full Libre Office suite. Even Firefox had to be installed as a snap and not native application. It did not have a audio player either. Things weren’t looking as bright. And the biggest gripe I soon discovered was Pop OS’s inability to update/upgrade or install any more software. Repeated attempts to install unmet dependencies and then continue to install applications like gimp, vlc etc failed.

I just felt like stopping here. What good is this OS if it wont allow to install applications esp when preinstalled list does not fully serves its purpose. I understand Pop OS for Raspberry pi is still nascent and may have a long road ahead. Maybe I will revisit this once it is more mature or at least functions better.

Seems the one Raspberry pi image that I was most excited about has fallen way short of my expectations. Partly because I have come to really like Pop OS as my Linux distro of choice for laptop, maybe it is not yet ready for the pi. I do not think I will hang around beyond this point anymore. Time to flash that micro SD card with something else.

Pi Land Adventure 2 – Manjaro Mate

The next pit stop in the Pi land journey is the Manjaro Mate ARM version which I downloaded from here and flashed onto the micro SD card using Etcher. The Manjaro Mate arm image for Raspberry Pi is 923MB. Flashing it to the micro SD card is super easy and flawless with Etcher. Once flashed, just pop that card into the pi and you are good to go.

Upon first boot, Manjaro greets with the Calamares installer which asks for user setup information and sets up other configurations for WiFi, timezone, keyboard settings etc. The setup is quick and painless. It took me just 2 mins and after a reboot I was on the Manjaro Mate desktop. The RAM usage hovered just over 780MB which is impressive. And the complete install took less then 5GB disk space.

First impressions of the Manjaro Mate desktop were really good. It feels more polished and well put together than Ubuntu Mate. The default dark theme works for me and I don’t feel the need to tweak it. No issues when connecting to my WiFi network.

The next I checked was the list of installed applications. I find this list is minimally curated. It has Firefox for internet browsing, Audacious for music and mpv for video file playback but that’s it. No photo editor like Gimp or even the Libre Office suite. Although it is not a deal breaker, I would have loved to have these installed by default. I guess these are left out to keep the install image size manageable. Media playback is flawless. Audacious does its job well when playing different audio formats. No complaints about mpv either. YouTube also works well. No lag or buffering was noticed. Bluetooth connection was not an issue but I did face some lag when listening to music via Bluetooth. Will have to check if this is a persistent issue.

Manjaro Mate doesn’t have a app launcher. So I went ahead and installed Synapse using the pacman cli. pacman is quick and simple for application installs, system updates and upgrades. I was able to upgrade the OS and find and install Gimp. All via simple cli commands using pacman. Though there is a UI to add/remove software, using pacman is simple enough and just works. I am more used to using apt-get but using pacman is just a small learning curve.

Here are some screenshots for the quick changes that I made to Manjaro post install.

I think I am getting the hang of things quickly here and find the Manjaro Mate usage even better than Ubuntu Mate. It is less resource hungry, feels more polished, has easy access to new software and in general just works. I don’t have to worry about the system being out of date or upgrades that fail. I will eventually have to curate my own list of software which are more suited to my daily needs, should I decide to stick with Manjaro Mate.

This has been a fun pit stop. Let me spend some more time with this before I move on to exploring Pop OS. The way I see it, Manjaro Mate is winning over Ubuntu Mate by a good deal and its showdown with Pop OS will be interesting to see.

Pi Land Adventure 1 – Ubuntu Mate

Ubuntu Mate is the first pitstop on this journey into Pi Land. Getting hold of the raspberry image from the website is straight forward. It is a 1.9 GB image which can be flashed onto the SD card using Etcher. Etcher has become my go to tool to flash any OS images onto pen drives or now even sd cards. The SD card in question is a SanDisk 64 GB class 10 card. I plan to keep flashing this for further test runs. Flashing the image and then verifying it does take some time but I let that be. A hasty move of skipping the verification messed up the sd card and it would not boot on my pi. Lession learnt.

Once the sd card is flashed correctly, just slide it into the Raspberry Pi and let it boot into the setup screen. It asked for user details, location, wifi etc as it continued the setup. My only complaint was that it took too long to configure the hardware. On one hand its familiarity is helpful, but then for an arm device, the configuration and setup should not really take that long. After it was done it landed on the familiar Mate desktop. I was already feeling at home.

At idle, Ubuntu Mate for RPi used about 1 GB of the 8 GB ram available, which later crept up to 1.8 GB as I started using more applications. The OS took 7GB space on the available 59GB sd card. This is leaves reasonable space for user files and additioanl software installation.

I started looking around and checking the preinstalled apps. Mate does not dissapoint in this aspect. It has sensible defaults with Firefox, Libre Office, Rhythmbox and video player. Having a full office suite is a great plus. I could not find GIMP installed and also would have liked VLC instead of the default audio/video players. But that is a personal choice.

For multimedia support, I could take Youtube for a spin and also play some sample mp3 and mp4 files. Everything was smooth. Playback over bluetooth also worked without any hiccups. Audio playback via HDMI output was a pleasant surprise., which means I could also play audio via my monitor speakers. No need to always have a bluetooth device connected to the Pi.

Appearance wise, I cannot complain about Ubuntu Mate. It’s dark themes with accent colors are comfortable to work with. I made a few changes to the themes, set a different background image and was happy with the defaults provided. I really need not go theme hunting to make this desktop look any better. I could work with what I saw.

Software installation is also very easy using Mate’s Software Boutique. All the familiar apps are available for download and install. I tried to install and use Gimp just to get a feel of it. I will have to work on a curated list of softwares once I settle down on the correct OS for my pi. For now just testing ease of finding and installing new software was good enough for me.

Now is the time for the verdict. The first pitstop has been welcoming and I find the Ubuntu Mate for Raspberry Pi perfectly usable. It certainly feels that the 8GB pi with 4 CPUs is more than capable of running the operating system and has the potential to become a daily driver. This ofcourse is subject to how much of daily computing tasks it can carry on its shoulders. For this test run, I haven’t been pushing it. But once I decide on which OS to use and which softwares the keep, I am sure the Pi will keep its promise.

I plan to move on to the others on the list. For now Ubuntu Mate is a strong contender unless Manjaro or Pop OS! toss it out the window.

Venturing into Pi land

For some time I wanted to get my hands on the Raspberry pi and tinker with this credit-card-sized, single-board computer for its capabilities and evaluate its potential for being a Linux daily driver. It would be fun to have such a small form factor, yet powerful enough to have up to 8GB ram and a dual HDMI display. I knew I would buy one soon and start playing with it.

The only issue I could not foresee was how hard these tiny computers were to come by. Various factors have led to a dearth of Raspberry Pis in the market. Several online retailers were listing these as “Sold Out”, with very little information on how soon they could be re-stocked. The seconds market was also rife with insanely jacked prices. I decided to wait until something was available again, rather than spending a fortune on a used pi.

After keeping track of purchase kits online, I finally found the one I wanted. I didn’t waste another minute and ordered it right away. Soon enough, I got my hands on the Raspberry Pi 4 with 8 GB ram, with a starter kit that had all the bells and whistles like the 128GB SD card, power adapter with on-off switch, HDMI cables, and an aluminum case which was passively cooled. Unboxing the package and assembling it all together was a breeze.

Just connect it to a display, keyboard, and mouse and you are good to go. The SD card that came with the kit was preinstalled with NOOBS and I followed the instructions to install 64-bit Raspberry Pi OS in a short time. I played around with the OS and quickly realized that though it is optimized for the Rpi, it is not the most visually appealing. In fact, the interface really feels outdated. I spent some time trying to look around and checking different software that the OS had to offer. There was no visible lag on the 8GB model and I was comfortable using it for a while.

It was soon obvious that the UI was not as polished as some other Rpi OSes out there and so I started looking at some of the popular ones which I could take for a spin. I have cornered down Ubuntu Mate, Manjaro, and POP OS as potential candidates for installation on my Raspberry Pi. I can see myself writing another blog that would be a showdown of these three operating systems and which one can I eventually settle for as a daily driver.

More on that later. Another blog will soon follow. For now, I find myself in Pi land and can certainly see myself hopping around for exciting stuff to do on my new Pi.

The Ultimate Ebook Reader

None of us are new to eBooks. When it comes to preferring digital over paper, there are so many formats to dabble with, each one having its own purpose and working best on its dedicated device e.g. azw3 or mobi work only with kindle devices, epub work with several android apps, cbz format is for comic readers and pdf format for most of the documents and e-signing needs. So it makes sense not to be tied to a particular device type though they have their pros. E.g. reading novels on an e-ink device is much easier on the eye than your tablet screen.

I own a Kindle Paperwhite and have definitely enjoyed reading novels on it, but it falls severely short when it comes to reading pdfs or even some comic books. Who would like to read a grayscale comic strip and not be able to marvel its colorful art. Likewise when reading technical books, I have a habit of marking, highlighting imp stuff so that it is easy to get back to notes that matter. How do I do anything remotely similar on a Kindle!

So I set out to find an answer in a tablet which will bring the best of all worlds and yet serve as a distraction free device to continue with e-reading. And I found one in the latest Amazon Fire Tablet HD 10 Plus. I got it at an unbelievably discounted price and could not resist the purchase. It comes with Fire OS which is a locked down version of Android and has several of the Amazon apps pre-installed. It is obvious that this device is for someone who is deeply invested in the Amazon ecosystem. It comes with the Kindle app which would be good for mobi as well as pdf files, but I had to find ways to make it more useful for my e-reading needs.

A quick Youtube search helped me get information on how to install Google services on the fire tablet and get rid of unnecessary Amazon apps which I wouldn’t be using anyway. The instructions were simple enough and when followed to the cue, I had with me a tablet free of most pre-installed stuff and with Google Play installed. That was the clean slate I was looking for.

Next steps were to install stuff that I think would make this tablet an ultimate eBook reader. I went ahead and downloaded the following apps:

  1. PocketBook – This all-in-one reader is my go-to app now. It supports pdf, mobi, epub, cbz, docx. This is where I can read my technical documents as well as ebooks and comics.
  2. Sketch on PDF – This is for pdf annotations and marking important things on the document. It has a variety of tools to highlight, underline or doodle over the pdf content. Basic stylus works great with the Fire tablet and makes pdf annotation very convenient. Changes can be exported to new pdf file or you can choose to overwrite original file. Either way works for me.
  3. CX File Explorer – An upgrade over the default file manager, this has additional functionality for ftp file transfers and Dropbox integration.
  4. Simplenote – For quick notes using markdown. I can also publish the notes and makes them accessible via public urls. I also use Keep to have sync of notes between my phone and the fire tablet.
  5. Brave browser – Another upgrade over the default Silk browser. Brave does a good job of blocking ads and give a very good online browsing experience.
  6. Pocket – For stuff that I read online, I can add that to Pocket for reading later. Pocket is a good place to organize my bookmarked content. An excellent feature that I like is Pocket can read out webpages. So it makes it convenient to listen to something while casually browsing it as well. Good for technical blogs.
  7. Musicolet – And finally something to play music in the background while I read all the stuff. I have some tracks for ambient sound, music for focus and study etc which I can play in loop and get into my zone for reading.

With these apps in my arsenal, I am all set to ride off into the world of e-reading. Since Fire OS is essentially a toned down android tablet with no Google apps, I am blissfully happy to use it without Gmail or even Youtube which makes it easy to stay focused and not get distracted by pop-ups and notifications or even the temptation to go on watching videos mindlessly. I don’t use it for games and haven’t installed any of the video streaming apps, since that is not what I intend to use this device for. I simply go offline, put on some soothing music and continue with my reading on what I consider an ultimate ebook reader after making all the tweaks and installs for my specific needs.