We have recovered and are back in business. I started the new year very well. It's been a good and productive week.
Since I spend a lot of time in Thrissur, i.e., three to four weeks in a quarter, I wanted a multi-monitor system I could use anywhere. So I did. It's been very useful. This week, I blogged about those portable monitors I use.
We went to Vadanapally Beach this week. This is our second visit to this beach. I like it because it's mostly empty and clean. It's not swimmer-friendly, but we just want to watch and hear the ocean. I took a panoramic view picture this time, uploaded it to Commons, and linked it on OSM.
It's good to see the vandalism of boards in Bengaluru triggered so many people on social-media/TV in the same month when a temple is being inaugurated on the biggest site of vandalism in the history of Independent India. In fact, Vandals became PM and HM at one point. What does this say to future vandals?
You can read this blog using RSS Feed. But if you are the person who loves getting emails, then you can join my readers by signing up.
WordPress Tip: You can add ?order=asc to the URL in the WordPress category or tag the listing page to get the posts in ascending order of time. By default, WordPress lists the latest first, a.k .a. descending order of time. ↩
I missed my multi-monitor setup while traveling or working from a third-party office. I missed my second monitor, which I mainly use for reading, as reading is more than 50% of my job. Traditionally, monitors have been bulky and difficult to travel with, but not anymore.
Currently, I have two portable monitors. I travel with one of them based on the situation and the kind of work I will do. I have them set up to work wireless as well as with wire. I will probably write another blog post about the setup; let's go through the hardware for now.
I got one with high-quality PC housing; it's hardy. It looks like a proper product. It supports two tilt angle options: 30 and 50 degrees. You can also buy a barebone one if you want.
Hardware resolution is 1024×600 and is configurable through software up to 1920×1080. 60 Hz
Capacitive Touch Screen LCD needs OS-level configuration if you want to use it as a touch screen.
It's meant for Raspberry Pi and other hardware projects but can be used as a monitor with any OS. Plug and play like any HDMI monitor.
Standard HDMI port
Special VGA port. It needs a unique converter. It needs to be bought separately.
Powered by DC 5V using USB, low-power
3.5 mm Audio output jack
It comes with an HDMI cable, an HDMI to Micro HDMI Adapter, and a micro USB cable for powering.
Costs INR 5200
Use cases
The second screen on a short travel
Outdoor usage or car usage with the phone along with Chromecast, Miracast, or Deskreen
Experiments or Lab usage with Pi and other small devices
HDMI input and 5V, MicroUSB Power
WaveShare Monitor
My travel monitor setup is complete now. I can have a second screen for my laptop or a bigger screen for my phone anywhere. It has been beneficial and has increased my productivity on the go. If you can get only one, then get ViewSonic VA1655. It's worth the money and a great companion for your laptop and phone on the go.
You can read this blog using RSS Feed. But if you are the person who loves getting emails, then you can join my readers by signing up.
The year 2023 was life-changing in a good way. We have Uma in our life, and though we were expecting it to happen, it was much more sudden and was a pleasant surprise. As of now, the year 2024 seems like a continuation of 2023. But before we enter 2024, here are the highlights of 2023.
Footprints of Anju, Thej and Uma. Uma's first visit to beach.
We are doing very well. We continue to live in twocities. Now, I am actively making plans in Thrissur.
I have been healthy except this last week. I donated blood thrice this year; the fourth falls on Jan 2nd. I will continue in 2024. I can reach four donations in 2024. Contact me if you want to join me.
Appa has been healthy, and he is doing well. We were supposed to travel together but we couldn't. I hope to change that in 2024.
Echo is getting old. You can see grey hairs on him now. You can also feel it when he climbs the stairs. Otherwise, he is healthy. Pathu is an adult now. She is doing very well.
Only a little travel or reading happened in 2023. We have been busy with life. Hopefully, 2024 will be more relaxed. I can read more.
It's been a good year at Peppo. We met all the deadlines and were able to launch things as expected.
I continued with weekly updates on this blog. It's a whole category now. I feel good writing and also reading others' updates. It's an exciting and very productive format for logging life changes. The year 2023 has been great for blogging. I have written 90+ in this year. I plan to cross 100 in 2024. I have also uninstalled Twitter and Instagram on my phone. My interaction with them also has reduced. I don't see myself being super active on them again.
In 2023, we completed six years of the Nagarathna Memorial Grant (NMG). We are going to be entering our seventh year in 2024. Wait for the announcements.
The mapping of CCTV cameras in Bangalore is progressing at a good pace. Now, there is a community around it. I did very little IDVC data collection. I want to do more in 2024.
We had paused Date Nights as we became busy in the second half of 2023. We plan to start again.
I continue to contribute to DataMeet, BuzzWomen, and IITM BS program.
The world has not changed much. It is going from bad to worse. But you keep fighting as a person to make it a better place in all possible ways.
Be generous, smile a lot, and keep the good fight going. That's the motto for the year 2024. A very happy new year to you all. I wish you the very best.
You can read this blog using RSS Feed. But if you are the person who loves getting emails, then you can join my readers by signing up.
Now that I live in two cities. I am trying to explore Thrissur. I know very little about this town. I plan to explore more in 2024, especially all the FOSS-related activities.
WikiConference Kerala, Thrissur, 2023
I could attend the Kerala Wiki Conference and birthday celebrations at Thrissur on Saturday. It was fun, and I was able to grasp most things. My Malayalam is not great, but I could understand most of it with English slides and context, though I couldn't speak. The one project that interested me a lot was the herbarium project by the biology department of St Thomas College.
All three of us had a bout of viral fever and are recovering now. I took this week off to rest and return in the new year with total energy. Echo and Pathu have been doing well, unlike us.
Sometimes, I think about how it must have been to live in the Natzi era without opposing them. I think about it mainly in the Indian context. How can one live in India today without fighting casteism, communal politics, and unfair/inhuman laws? Then, I am reminded of the cost of speaking the truth to power. Just this week, co-founder of CircleCI Paul Biggar was fired from the company he started for the blog post he wrote about the genocide of Palestine people. It's the same in India and the US. They are the two biggest democracies in the world. And to say the least, it's sad. There is hope too.
You can read this blog using RSS Feed. But if you are the person who loves getting emails, then you can join my readers by signing up.
We pushed all the year-end deployments before we hit the holiday season. I am very proud of the Peppo team and their work. It's been a good year.
Near Erode, we took a break.
Near Erode, we took a break.
Near Erode, we took a break.
I wrote a blog post about why I need to smile more. Visibly.
I have been following BuzzWomen for a decade now. I am helping them here and there. I am amazed every day at the work they do.
I watched Tagaru Palya finally. It's a very watchable movie.
I did a couple more IDVC surveys before the year ended. I will publish the year-end report early in 2024. The number of data points is low for 2023. I plan to do more in 2024.Â
We reached Thrissur today. We will be here till the new year starts. We left Bengaluru a little late today, around 3:30 AM. The drive was tiring as the traffic was much more than any other day, and it was car traffic. I usually leave early, around 2 AM, and I see a lot of truck traffic. I don't mind truck traffic; they are much more decent as it's their day job, and I want to go with it without fuss. On the other side, holiday car traffic is very unruly and has lousy road manners. Driving along with them is no fun. We also took a couple of additional breaks for baby care and to avoid crowded traffic.
You can read this blog using RSS Feed. But if you are the person who loves getting emails, then you can join my readers by signing up.
On most days, Uma wakes up before me at around 6:15 AM. Her usual thing is to play by herself, making loud baby sounds. When I wake up, the first thing I see is her, smiling directly at me with wide eyes. That smile is infectious and makes me happy regardless of what in life happened the previous day and what will happen that day. It is a great way of beginning the day, visibly smiling at people you meet.
Where does our ability to smile go when we grow up?
Where does our ability to smile go when we grow up?
Where does our ability to smile go when we grow up?
I am a happy person. When I meet people, I am generally happy. But I rarely show it on my face. Now, I have realized that a smile, in general, is infectious and spreads happiness regardless of your or other person's state of mind. At least, in most cases, it's true. It goes with my other logic of "being nice" to people by default, regardless of the situation. A smile adds to it. Something I learned today.
You can read this blog using RSS Feed. But if you are the person who loves getting emails, then you can join my readers by signing up.
Don’t grow up old, everyone wants to become an adult soon, enjoy life ,stay independent,take more responsibilites etc etc.
But in this process, you miss out a lot of things,the excitement to grow old faster kills you, and you will only realize this when you look behind and regret saying, i should have done this at that point of time in my life, but you cannot do it now,and now do nothing but,regretting.
Don’t let the kid inside you miss out the fun,enjoy every moment in life to the fullest,enjoy by living the present moment.
Do what you’re supposed to do at that point of time in your life.
What ever is supposed to happen,happens at the right time,irrespective of what and how many times you think about it.
We met a bunch of friends this week. We spent unreasonable amount of time with them, talking, eating, and making coffee. I am so happy to have such beautiful and caring friends. When I turn 70 and look back, I will be very proud of the friends that I have earned, especially the ones I made after turning 30.
She never stops until she learns a new skill—she is such an inspiration to adults.
Thank you, Shrinivasan, for being kind and generous. I eagerly wait to read all the weekly notes. It makes me feel connected. Reading weekly notes has become a cherished ritual, second only to the joy of meeting friends in person for coffee and casual chat.
At Peppo, we did some excellent big releases this week. There are a couple more releases before we start the holiday season.
I do recognize people have issues with Nepotism, and it is a problem. But to think only Bollywood or the movie industry has that issue is ignorant and careless. Even our stories have a lot of Nepotism. Rama's claim to Ayodhya is not based on merit but on him being the first son of Dasharatha ( basically the same as the divine right of kings). Mahabharatha is similar. If you read it, it's full of Nepotism. The care for merit, as people would want to believe, is zero. I don't know how people ignore it.
Maintaining a blog is like managing a garden; the most prominent work is to get rid of link rots. I went through some old posts this week and replaced the image hosting. Previously, I had embedded images from Flickr, Zooomr, OpenPhoto, TwitPic, Photobucket, Twitter, etc. Most of these services are already shut down or on the verge of shutting down—one of the disadvantages of being an early adopter. So I had to find the photos in the archive painfully, then upload them here and replace them in the posts.
You can read this blog using RSS Feed. But if you are the person who loves getting emails, then you can join my readers by signing up.
A significant part of working from Home/Remote is calls or meetings with your team. Whether through good old telephone, hangouts, or any million available services, the quality of the call depends on how good your microphones are. I have been making significant investments to improve that part of the meetings.
I usually use a Sennheiser PC 8 Over-Ear USB VOIP Headphone with a Mic. It's made for calls. It's comfortable to wear, the sound is clear, and the microphone is fantastic. The microphone handle is foldable; hence, it's portable. It also works with phones. I have used the same pair for over two years and am still using the same pair. For the price, Rs. 1500, it's a bargain and a must-have. The only thing is you have a wire.
I also have Sony Wh-Ch510 Bluetooth Wireless headphones, which I use for non-work-related tasks. Sometimes, I have used it to make calls on the phone. It's not bad at all. It's also fold-able and very portable. The price, Rs. 2300 is also reasonable. The only thing is you have to wear it.
Sony WH-150 Bluetooth HeadsetSennheiser PC 8 USB Headset
Much later, I wanted to do calls where I could walk and talk but wanted to avoid wearing a headset or in-ear earphones. Walking around in my home office makes it much better since I stand and work. I also didn't want to be isolated as we have a baby at home. So I wanted something that has excellent microphones, good sound quality, is portable, and sits in a place.
Anker PowerConf S3 FeaturesAnker PowerConf S3
Then, I came across Anker PowerConf S3. It's a speaker-phone by Anker. I had heard the reviews of it, and it seemed an expensive investment, but then the features were so good that I had to get it.
It has six microphones. It can hear from all sides. So sitting, standing, and walking around all possible while talking. It has a built-in custom DSP algorithm to reduce the background noise so that the other side can hear better.
It is a full duplex device, which means the speakerphone can transmit the voice of both parties simultaneously.
It has a decent 3-watt speaker, great for calls and voice. Okay for music
It has Bluetooth 5, supports wireless audio, and is stable.
It has USB-C if you prefer wired audio.
Plug and play: I have tried it on Linux and Android. It works like a charm without issues on both USB-C and Bluetooth channels.
It has an enormous 6,700mAh battery that supports 24 hours of cal.
It's charged via USB-C, but it can also charge while being used when connected through USB-C.
It can also work as a power bank (USB-A port, 5V/2.1A output), so you can carry this instead of a separate power bank on the road.
The best part is it has touch buttons on the top with a light indicator. It supports mute, call, and play buttons and volume increase and decrease buttons. Since it's hardware-controlled, it works with all kinds of conference services.
It has a 3.5 mm audio output jack to connect to analog audio external speakers. If you prefer that.
It comes with a travel carry case and is very portable. I have carried it everywhere in my backpack.
Though I have yet to use it, it has AnkerWork App to configure various speaker-phone aspects and upgrade firmware.
I have been using it for months now. I am pleased about this product. It's on the expensive side. It costs around INR 10K but is an excellent long-term investment, especially because it's versatile and will be used for all kinds of purposes at home and away.
You can read this blog using RSS Feed. But if you are the person who loves getting emails, then you can join my readers by signing up.
As i started configuring emacs from scratch, I have chosen to use the default package manager (use-package)
When i tried to refresh & upgrade packages, I noticed that it blocks the emacs UI until the operation is finished.
I wanted to move this work to the background without blocking the UI. When browsing melpa,
I found a package named async which provides a couple of functions
to do write async code.
1
2
3
4
5
6
7
8
(defunasync-upgrade-packages ()
"Update packages to latest version without blocking Emacs." (interactive)
(message"Upgrading packages in the background 🚀")
(async-start (lambda ()
(package-refresh-contents)
(package-upgrade-all))
(lambda (result)(messageresult))))
The above code snippet does a decent job, But i have to learn how to handle errors
in async way, As the (package-refresh-contents) throws an error if failed to fetch packages.
Thanks to the user (save-lisp-and-die) in the xmpp lisp room, who helped me with understanding the async package.
Nextcloud is a popular self-hosted solution for file sync and share as well as cloud apps such as document editing, chat and talk, calendar, photo gallery etc. This guide will walk you through setting up Nextcloud AIO using Docker Compose.
This blog post would not be possible without immense help from Sahil Dhiman a.k.a. sahilister
There are various ways in which the installation could be done, in our setup here are the pre-requisites.
A server with docker-compose installed
An existing setup of nginx reverse proxy
A domain name pointing to your server.
Step 1 : The docker-compose file for nextcloud AIO
The original compose.yml file is present in nextcloud AIO's git repo here . By taking a reference of that file, we have own compose.yml here.
services:
nextcloud-aio-mastercontainer:
image: nextcloud/all-in-one:latest
init: true
restart: always
container_name: nextcloud-aio-mastercontainer # This line is not allowed to be changed as otherwise AIO will not work correctly
volumes:
- nextcloud_aio_mastercontainer:/mnt/docker-aio-config # This line is not allowed to be changed as otherwise the built-in backup solution will not work
- /var/run/docker.sock:/var/run/docker.sock:ro # May be changed on macOS, Windows or docker rootless. See the applicable documentation. If adjusting, don't forget to also set 'WATCHTOWER_DOCKER_SOCKET_PATH'!
ports:
- 8080:8080
environment: # Is needed when using any of the options below
# - AIO_DISABLE_BACKUP_SECTION=false # Setting this to true allows to hide the backup section in the AIO interface. See https://github.com/nextcloud/all-in-one#how-to-disable-the-backup-section
- APACHE_PORT=32323 # Is needed when running behind a web server or reverse proxy (like Apache, Nginx, Cloudflare Tunnel and else). See https://github.com/nextcloud/all-in-one/blob/main/reverse-proxy.md
- APACHE_IP_BINDING=127.0.0.1 # Should be set when running behind a web server or reverse proxy (like Apache, Nginx, Cloudflare Tunnel and else) that is running on the same host. See https://github.com/nextcloud/all-in-one/blob/main/reverse-proxy.md
# - BORG_RETENTION_POLICY=--keep-within=7d --keep-weekly=4 --keep-monthly=6 # Allows to adjust borgs retention policy. See https://github.com/nextcloud/all-in-one#how-to-adjust-borgs-retention-policy
# - COLLABORA_SECCOMP_DISABLED=false # Setting this to true allows to disable Collabora's Seccomp feature. See https://github.com/nextcloud/all-in-one#how-to-disable-collaboras-seccomp-feature
- NEXTCLOUD_DATADIR=/opt/docker/cloud.raju.dev/nextcloud # Allows to set the host directory for Nextcloud's datadir. ⚠️⚠️⚠️ Warning: do not set or adjust this value after the initial Nextcloud installation is done! See https://github.com/nextcloud/all-in-one#how-to-change-the-default-location-of-nextclouds-datadir
# - NEXTCLOUD_MOUNT=/mnt/ # Allows the Nextcloud container to access the chosen directory on the host. See https://github.com/nextcloud/all-in-one#how-to-allow-the-nextcloud-container-to-access-directories-on-the-host
# - NEXTCLOUD_UPLOAD_LIMIT=10G # Can be adjusted if you need more. See https://github.com/nextcloud/all-in-one#how-to-adjust-the-upload-limit-for-nextcloud
# - NEXTCLOUD_MAX_TIME=3600 # Can be adjusted if you need more. See https://github.com/nextcloud/all-in-one#how-to-adjust-the-max-execution-time-for-nextcloud
# - NEXTCLOUD_MEMORY_LIMIT=512M # Can be adjusted if you need more. See https://github.com/nextcloud/all-in-one#how-to-adjust-the-php-memory-limit-for-nextcloud
# - NEXTCLOUD_TRUSTED_CACERTS_DIR=/path/to/my/cacerts # CA certificates in this directory will be trusted by the OS of the nexcloud container (Useful e.g. for LDAPS) See See https://github.com/nextcloud/all-in-one#how-to-trust-user-defined-certification-authorities-ca
# - NEXTCLOUD_STARTUP_APPS=deck twofactor_totp tasks calendar contacts notes # Allows to modify the Nextcloud apps that are installed on starting AIO the first time. See https://github.com/nextcloud/all-in-one#how-to-change-the-nextcloud-apps-that-are-installed-on-the-first-startup
# - NEXTCLOUD_ADDITIONAL_APKS=imagemagick # This allows to add additional packages to the Nextcloud container permanently. Default is imagemagick but can be overwritten by modifying this value. See https://github.com/nextcloud/all-in-one#how-to-add-os-packages-permanently-to-the-nextcloud-container
# - NEXTCLOUD_ADDITIONAL_PHP_EXTENSIONS=imagick # This allows to add additional php extensions to the Nextcloud container permanently. Default is imagick but can be overwritten by modifying this value. See https://github.com/nextcloud/all-in-one#how-to-add-php-extensions-permanently-to-the-nextcloud-container
# - NEXTCLOUD_ENABLE_DRI_DEVICE=true # This allows to enable the /dev/dri device in the Nextcloud container. ⚠️⚠️⚠️ Warning: this only works if the '/dev/dri' device is present on the host! If it should not exist on your host, don't set this to true as otherwise the Nextcloud container will fail to start! See https://github.com/nextcloud/all-in-one#how-to-enable-hardware-transcoding-for-nextcloud
# - NEXTCLOUD_KEEP_DISABLED_APPS=false # Setting this to true will keep Nextcloud apps that are disabled in the AIO interface and not uninstall them if they should be installed. See https://github.com/nextcloud/all-in-one#how-to-keep-disabled-apps
# - TALK_PORT=3478 # This allows to adjust the port that the talk container is using. See https://github.com/nextcloud/all-in-one#how-to-adjust-the-talk-port
# - WATCHTOWER_DOCKER_SOCKET_PATH=/var/run/docker.sock # Needs to be specified if the docker socket on the host is not located in the default '/var/run/docker.sock'. Otherwise mastercontainer updates will fail. For macos it needs to be '/var/run/docker.sock'
# networks: # Is needed when you want to create the nextcloud-aio network with ipv6-support using this file, see the network config at the bottom of the file
# - nextcloud-aio # Is needed when you want to create the nextcloud-aio network with ipv6-support using this file, see the network config at the bottom of the file
# - SKIP_DOMAIN_VALIDATION=true
# # Uncomment the following line when using SELinux
# security_opt: ["label:disable"]
volumes: # If you want to store the data on a different drive, see https://github.com/nextcloud/all-in-one#how-to-store-the-filesinstallation-on-a-separate-drive
nextcloud_aio_mastercontainer:
name: nextcloud_aio_mastercontainer # This line is not allowed to be changed as otherwise the built-in backup solution will not work
I have not removed many of the commented options in the compose file, for a possibility of me using them in the future.
If you want a smaller cleaner compose with the extra options, you can refer to
I am using a separate directory to store nextcloud data. As per nextcloud documentation you should be using a separate partition if you want to use this feature, however I did not have that option on my server, so I used a separate directory instead.
Also we use a custom port on which nextcloud listens for operations, we have set it up as 32323 above, but you can use any in the permissible port range. The 8080 port is used the setup the AIO management interface. Both 8080 and the APACHE_PORT do not need to be open on the host machine, as we will be using reverse proxy setup with nginx to direct requests.
once you have your preferred compose.yml file, you can start the containers using
$ docker-compose -f compose.yml up -d
Creating network "clouddev_default" with the default driver
Creating volume "nextcloud_aio_mastercontainer" with default driver
Creating nextcloud-aio-mastercontainer ... done
once your container's are running, we can do the nginx setup.
Step 2: Configuring nginx reverse proxy for our domain on host.
A reference nginx configuration for nextcloud AIO is given in the nextcloud git repository here . You can modify the configuration file according to your needs and setup.
Here is configuration that we are using
map $http_upgrade $connection_upgrade {
default upgrade;
'' close;
}
server {
listen 80;
#listen [::]:80; # comment to disable IPv6
if ($scheme = "http") {
return 301 https://$host$request_uri;
}
listen 443 ssl http2; # for nginx versions below v1.25.1
#listen [::]:443 ssl http2; # for nginx versions below v1.25.1 - comment to disable IPv6
# listen 443 ssl; # for nginx v1.25.1+
# listen [::]:443 ssl; # for nginx v1.25.1+ - keep comment to disable IPv6
# http2 on; # uncomment to enable HTTP/2 - supported on nginx v1.25.1+
# http3 on; # uncomment to enable HTTP/3 / QUIC - supported on nginx v1.25.0+
# quic_retry on; # uncomment to enable HTTP/3 / QUIC - supported on nginx v1.25.0+
# add_header Alt-Svc 'h3=":443"; ma=86400'; # uncomment to enable HTTP/3 / QUIC - supported on nginx v1.25.0+
# listen 443 quic reuseport; # uncomment to enable HTTP/3 / QUIC - supported on nginx v1.25.0+ - please remove "reuseport" if there is already another quic listener on port 443 with enabled reuseport
# listen [::]:443 quic reuseport; # uncomment to enable HTTP/3 / QUIC - supported on nginx v1.25.0+ - please remove "reuseport" if there is already another quic listener on port 443 with enabled reuseport - keep comment to disable IPv6
server_name cloud.example.com;
location / {
proxy_pass http://127.0.0.1:32323$request_uri;
proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for;
proxy_set_header X-Forwarded-Port $server_port;
proxy_set_header X-Forwarded-Scheme $scheme;
proxy_set_header X-Forwarded-Proto $scheme;
proxy_set_header X-Real-IP $remote_addr;
proxy_set_header Accept-Encoding "";
proxy_set_header Host $host;
client_body_buffer_size 512k;
proxy_read_timeout 86400s;
client_max_body_size 0;
# Websocket
proxy_http_version 1.1;
proxy_set_header Upgrade $http_upgrade;
proxy_set_header Connection $connection_upgrade;
}
ssl_certificate /etc/letsencrypt/live/cloud.example.com/fullchain.pem; # managed by Certbot
ssl_certificate_key /etc/letsencrypt/live/cloud.example.com/privkey.pem; # managed by Certbot
ssl_session_timeout 1d;
ssl_session_cache shared:MozSSL:10m; # about 40000 sessions
ssl_session_tickets off;
ssl_protocols TLSv1.2 TLSv1.3;
ssl_ciphers ECDHE-ECDSA-AES128-GCM-SHA256:ECDHE-RSA-AES128-GCM-SHA256:ECDHE-ECDSA-AES256-GCM-SHA384:ECDHE-RSA-AES256-GCM-SHA384:ECDHE-ECDSA-CHACHA20-POLY1305:ECDHE-RSA-CHACHA20-POLY1305:DHE-RSA-AES128-GCM-SHA256:DHE-RSA-AES256-GCM-SHA384:DHE-RSA-CHACHA20-POLY1305;
ssl_prefer_server_ciphers on;
# Optional settings:
# OCSP stapling
# ssl_stapling on;
# ssl_stapling_verify on;
# ssl_trusted_certificate /etc/letsencrypt/live/<your-nc-domain>/chain.pem;
# replace with the IP address of your resolver
# resolver 127.0.0.1; # needed for oscp stapling: e.g. use 94.140.15.15 for adguard / 1.1.1.1 for cloudflared or 8.8.8.8 for google - you can use the same nameserver as listed in your /etc/resolv.conf file
}
Please note that you need to have valid SSL certificates for your domain for this configuration to work. Steps on getting valid SSL certificates for your domain are beyond the scope of this article. You can give a web search on getting SSL certificates with letsencrypt and you will get several resources on that, or may write a blog post on it separately in the future.
once your configuration for nginx is done, you can test the nginx configuration using
$ sudo nginx -t
nginx: the configuration file /etc/nginx/nginx.conf syntax is ok
nginx: configuration file /etc/nginx/nginx.conf test is successful
and then reload nginx with
$ sudo nginx -s reload
Step 3: Setup of Nextcloud AIO from the browser.
To setup nextcloud AIO, we need to access it using the web browser on URL of our domain.tld:8080, however we do not want to open the 8080 port publicly to do this, so to complete the setup, here is a neat hack from sahilister
ssh -L 8080:127.0.0.1:8080 username:<server-ip>
you can bind the 8080 port of your server to the 8080 of your localhost using Unix socket forwarding over SSH.
The port forwarding only last for the duration of your SSH session, if the SSH session breaks, your port forwarding will to.
So, once you have the port forwarded, you can open the nextcloud AIO instance in your web browser at 127.0.0.1:8080
you will get this error because you are trying to access a page on localhost over HTTPS. You can click on advanced and then continue to proceed to the next page. Your data is encrypted over SSH for this session as we are binding the port over SSH.
Depending on your choice of browser, the above page might look different.
once you have proceeded, the nextcloud AIO interface will open and will look something like this.
nextcloud AIO initial screen with capsicums as password
It will show an auto generated passphrase, you need to save this passphrase and make sure to not loose it. For the purposes of security, I have masked the passwords with capsicums.
once you have noted down your password, you can proceed to the Nextcloud AIO login, enter your password and then login.
After login you will be greeted with a screen like this.
now you can put the domain that you want to use in the Submit domain field. Once the domain check is done, you will proceed to the next step and see another screen like this
here you can select any optional containers for the features that you might want.
IMPORTANT: Please make sure to also change the time zone at the bottom of the page according to the time zone you wish to operate in.
The timezone setup is also important because the data base will get initialized according to the set time zone. This could result in wrong initialization of database and you ending up in a startup loop for nextcloud. I faced this issue and could only resolve it after getting help from sahilister .
Once you are done changing the timezone, and selecting any additional features you want, you can click on Download and start the containers
It will take some time for this process to finish, take a break and look at the farthest object in your room and take a sip of water. Once you are done, and the process has finished you will see a page similar to the following one.
wait patiently for everything to turn green.
once all the containers have started properly, you can open the nextcloud login interface on your configured domain, the initial login details are auto generated as you can see from the above screenshot. Again you will see a password that you need to note down or save to enter the nextcloud interface. Capsicums will not work as passwords. I have masked the auto generated passwords using capsicums.
Now you can click on Open your Nextcloud button or go to your configured domain to access the login screen.
You can use the login details from the previous step to login to the administrator account of your Nextcloud instance.
There you have it, your very own cloud!
Additional Notes:
How to properly reset Nextcloud setup?
While following the above steps, or while following steps from some other tutorial, you may have made a mistake, and want to start everything again from scratch. The instructions for it are present in the Nextcloud documentation here . Here is the TLDR for a docker-compose setup. These steps will delete all data, do not use these steps on an existing nextcloud setup unless you know what you are doing.
Stop your master container.
docker-compose -f compose.yml down -v
The above command will also remove the volume associated with the master container
Stop all the child containers that has been started by the master container.
This is a simple Pomodoro timer which i wrote some time ago in elisp while using doom emacs!
The code is based on systemcrafters pomodoro example. I have customized it a bit more to support pause & resume! 😁
1
2
3
4
5
6
7
8
9
10
11
12
;; Based on https://systemcrafters.cc/emacs-shorts/pomodoro-timer/(defunmy/pomodoro-timer ()
"A simple pomodoro timer set for 30 min. If timer is running, Calling this function will pause/resume it" (interactive)
;; pause / resume if timer is running (if (not (equal (org-timer-value-string) "0:00:01 "))
(org-timer-pause-or-continue)
;; supported sound formats: https://www.gnu.org/software/emacs/manual/html_node/elisp/Sound-Output.html (setq!org-clock-sound (concatdoom-private-dir"attention.wav"))
(org-timer-set-timer30) ;; 30 minutes )
)
If you have installed Debian or any distribution with an encrypted root, the default layout has around 20-30 GB of /root partition and a separate /home partition.
This space never ran out for me, until I decided to start using Docker and Flatpaks. Some of the Docker images are big and take significantly large space. Same goes with Flatpak applications, they require big amounts of storage.
I have done some neat hacks to move the default installation path for Docker and flatpak to my /home/ partition instead of the root partition. While the Docker hack is for a different post. Here is how I did for flatpak apps.
Now some people will say that I can use flatpak's builtin directive of --user to install apps rather than moving the whole install path in a different direction. However using the --user directive is not supported when using gnome-software . It is only supported for command line installs. Changing the default path helps keep the compatibility with GUI frontends to flatpak stores.
It is an Android app store which only lists free and open source Android apps
In the world of mobile applications, the term "freedom" often takes a back seat to convenience. However, for those who value transparency, privacy, and the ability to customize their digital experience, there's a hidden gem waiting to be explored: F-Droid.
What is F-Droid?
F-Droid is not just another app store; it's a hub of freedom and open-source goodness for Android users. While mainstream app stores may prioritize commercial applications, F-Droid is a haven for those who prefer software that respects user privacy, offers complete transparency, and is built on the principles of open-source development.
Why F-Droid?
Open Source Philosophy: Every app available on F-Droid is open-source, meaning its source code is freely available to the public. This not only fosters transparency but also allows users to understand how the app works and even contribute to its development if they have the skills.
Privacy First: F-Droid focuses on privacy-centric apps, ensuring that your personal data remains in your hands. No unnecessary permissions or hidden trackers - just apps designed with your privacy in mind.
Community-Driven: F-Droid is a community-driven platform maintained by volunteers passionate about open-source software. The apps available are curated to meet strict criteria, guaranteeing quality and security.
Getting Started with F-Droid:
Screenshot of F-Droid 1.2 on Android showing the latest apps
Download the F-Droid App: Begin your journey by downloading the F-Droid app from the official website f-droid.org.
Explore the Repository: Once installed, the F-Droid app becomes your gateway to a plethora of open-source apps. Browse categories, discover new tools, and find alternatives to proprietary applications.
Install with Confidence: Installing apps from F-Droid is a breeze. With just a few taps, you can enjoy the benefits of high-quality, open-source software on your Android device.
Conclusion:
If you're someone who values freedom, privacy, and the collaborative spirit of open-source development, F-Droid is your ticket to a world of incredible Android apps. Say goodbye to unnecessary permissions, hidden data harvesting, and closed-source mysteries. Embrace F-Droid and discover a new era of mobile app exploration.
Let's say all we want to do when our laptop boots up is to input the password for unlocking the disk and be straight away taken to your wayland or X11 desktop. Well then, let's go!
Start X or wayland on tty login
We are not going to be using a display manager like gdm3 or lightdm. So, when a user logs in into tty1, normally one would run sway or startx shortly after.
We can the use the shell the automate this for tty1 alone.
# automatically login into sway if [ -z $DISPLAY ] && [ "$(tty)" = "/dev/tty1" ]; then exec sway # exec startx fi
Put this snippet at the very end of your $HOME/.zprofile or $HOME/.bash_profile. Now when you log out and log back in, you should be presented with your desktop.
Autologin into your system
Run sudo systemctl edit getty@tty1 and then add the following snippet between the indicated comment lines in the file.
In my case, there was a line that said Anything between here and the comment below will become the new contents of the file. Paste the snippet there.
[Service] ExecStart= ExecStart=-/sbin/agetty --autologin joe --noclear %I 38400 linux
Remember to replace joe with the username that you'd want to use for autologin.
GRUB timeout
This step is optional. If you dont want to see the GRUB boot screen everytime your computer boots up, open up /etc/default/grub as root and then change the value of GRUB_TIMEOUT to something less than 5. I have it set to 1.
... GRUB_TIMEOUT=1 ...
Then proceed to apply the change with
sudo update-grub
Reboot and enjoy!. If you've put 0 for the timeout, pressing the Shift key(for BIOS) or Esc key(for UEFI) when the system boots will bring up the GRUB menu.
2023 is about to end in another few months,I feel ,i should write more now!.
I just love writing now,I feel i should write more to express my thoughts,ideas,its been since few months i started to write more docs,and i just simply love it.
I feel like it helps me document stuff,check how my learning evolved over time and its progress.
At first when i started to create my portfolio i was reluctant to write much,barely one or two articles per year,i was not confident about my grammer too,now i really dont care about it,i just write my raw thoughts.There’s some level of satisfaction of writing,i encourage others also to write more.
People who read my blog might provide feedback too,correct if any mistakes.
I also encourage other people to write, if they are too shy they can try anonymous blog.
Its almost been more than a month since DebConf23 happened,and this post was in draft for very long time because i just wanted to write the best post of all my post, and finally writing about the experience of attending a FOSS conference/conference for the first time.I had graduated in early May'23, so was not sure whether i could attend DebConf.I had joined Deeproot GNU/Linux,just before DebConf as an Intern.
I was excited for this because i meeting my Debian and Free Software Community of India friends for the first time in 2 years,i hadn’t met anyone physically,was conversing with them online.
I became a Debian Maintainer in early'2023 March ,special thanks to Praveen my GURU,for advocating my Debian Maintainer process,who taught me Debian Packaging from scratch,answering my stupid questions and Nilesh for signing my keys.
I have written a separate blog post about my experience of becoming a DM.
Ahh so this is Ravish [Left] and me. Ravish is my college super senior,we were part of FOSS club called Edwin’s Lab in our college,he’s the one who introduced me to GNU/Linux. Forever indebted to ravish its because of him i’m working at DeeprootLinux,Thanks man.
It was my first time flying,I,Abhas - Founder of Deeproot Linux,Ravish boarded a cab to the Bangalore Airport, and we reached around 8:00pm,the architecture of KIAL was just amazing,i was astonished, we had huge baggage to carry for the Mostly Harmless Stall at the airport,so we had rigourous security checks at the airport.
We boarded the flight on 9th September, DebConf was about to start from 10th September [ I missed DebCamp ]
It was a surreal experience of flying for the first time,it was amazing feel.We also had our dinner (Veg Roll) on the flight.
Had the best view of city during the night time,watching’em from higher altitude was just so satisfying for eyes.
We reached Kochi Airport around 11:15pm and boarded a cab to Four Points Sheraton Hotel.
We reached Infopark Kochi around 12:30am and checked in to our hotels.I had applied for Accomodation and Food Bursary and it was approved :)
So my room was at Four Points Sheraton Kochi,6th floor, also i was wondering who my roomate was,the earlier day i had receieved a mail that Kurian Benoy was my roommate, i was curious to meet him.
The next morning was DebConf Opening Ceremony,so had to sleep because it was already 3:00am i was exploring my hotel room.
Woke up around 8:00 am and freshened up and headed to FrontDesk for Registration,we got our name with GPG key printed on our ID’s,also got the SwagBag,with some cool stickers and swags by Debian.
After the registration i met kurian benoy, my roommate for a week.
Stickers part of Debian Swag
I and ravish were waiting at the HackLab for the opening ceremony,in mean time we met urbec,part of Video Team,had some good conversation too.
DEBCONF-23 starts with opening ceremony at Anamudi(These were the hall names,other hall names were Kuthiran,Ponmudi) the DebConf organizing team were on the stage giving a Welcome Note, and then after welcoming ceremony i went to attend talks which we interesting.
The talk schedule was not very tight, because we used to gather more at the eating place to meet new people from diverse countries,having some really good conversations.
I met praveen,shruti,anupa,ravi,sahil,abhijith,nilesh,bilal,suman,kelvin,pushkar,utkarsh,joostvb,Israel Galadima… and lot more people whom i wanted to meet.
I also met Pushkar from canonical, who used to stay at Bengaluru in the same locality and that was coincidence,meeting him was great too.
First day ended good.
A picture with Pirate Praveen and Ravi.
Abhas's talk on Home automation with his amazing LED pant :)
Cheese and wine party, the party is simple to bring good stuff from other countries like cheese and wine, People from all over the world bought different stuff to the cheese and wine party,we got the chance to taste from Korean wafers and red wine.
On 13th Sep there’s a Day trip,but i hadn’t registered early, only for Bird Sanctuary the registration was open,just the day before day trip edited the wiki and added my name.
A Day trip to Thattekad Bird Sanctuary On the way to Thattekad i met /su/bin/ siby, on the bus.
Thattekad Bird Sanctuary is around 50km from the kochi,so we left around 7:00 am
We reached around 9:00 and had snacks and started walking towards the bird sanctuary.
It started with a walk around the bird sanctuary spotting for birds around,during the trek i was with Praveen,Bady,Kannan and Kelvin.
Spotting birds was difficult because it wasn’t the actual season for migrating birds,so we could spot only few.
Kelvin was explaining how he started to contribute to Open Street Map.
On our way back to the bus it started raining heavily and we were drenched completely,
The cool debian umbrella with Debian symbol on it,helped us to get back to the bus.After a hot tea and snacks we started back to kochi.
Debian and Clouds :)
The place were i stayed the most Mostly Harmless Stall (But not Harmless) with Abhas,Akshay explaining people about Liberated Hardware,and why it is important in life to use Liberated Hardware.Enjoyed Sahil’s touch typing and testing keyboards,i couldn’t take a picture with Sahil,he also volunteers at FSCI managing instances,he taught me git.fosscommunity.in update generating keys etc he’s also a Debian Developer,part of DebConf organizing committe too, also met saswata from Unmukti Tech.
It was an Amazing conference,it was my first Conference/FOSS conference enjoyed it,got to meet new people,the ecosystem of the Hacklab to hack around,seeing the community bonding even ravish wanted to contribute by packaging so taught him packaging at hacklab during free time,Also i learnt about OpenStreetMap,and now i map in and around Bangalore in my free time,a good hobby that i’m interested.Enjoyed ravi’s humourous jokes :) throughout DebConf
Enabling the rupee sign (or the euro sign for that matter) on
Hyprland is pretty simple, but not well documented from my
“research”.
To begin with, you need to use the altgr-intl layout in order to be
able to use it in the first place. This also gives you access to many
other characters as well.
To do this, add kb_variant = altgr-intl in the input
section of your hyprland.conf.
Past this, the configuration is pretty simple, you just have to add
the required options to kb_options.
You can get a list of these with
localectl list-x11-keymap-options.
In my case, I needed rupeesign:4
At the end, this is how the hyprland.conf’s input section looks:
I have recently came across this amazing website https://clig.dev/ which contains very
useful guidelines for developers who wish to create a new CLI tool.
Not just that, They also curated a list of the popular CLI libraries for
many programming languages.
I found this website very resourceful to code my first CLI tool go-ifsc
which is built in Golang.
Software Freedom Law Center, India, also known as sflc.in, organized an event to celebrate the Software Freedom Day on 30th September 2023. Me, Sahil, Contrapunctus and Suresh joined. The venue was at the SFLC India office in Delhi. The sflc.in office was on the second floor of what looked like someone’s apartment:). I also met Chirag, Orendra, Surbhi and others.
My plan was to have a stall on LibreOffice and Prav app to raise awareness about these projects. I didn’t have QR code for downloading prav app printed already, so I asked the people at sflc.in if they can get it printed for me. They were very kind and helped me in getting a color printout for me. So, I got a stall in their main room. Surbhi was having an Inkscape stall next to mine and gave me company. People came and asked about the prav project and then I realized I was still too tired to explain the idea behind the prav project and about LibreOffice (after a long Kerala trip). We got a few prav app installs during the event, which is cool.
My stall. Photo credits: Tejaswini.
Sahil had Debian stall and contrapunctus had OpenStreetMap stall. After about an hour, Revolution OS was screened for all of us to watch, along with popcorn. The documentary gave an overview of history of Free Software Movement. The office had a kitchen where fresh chai was being made and served to us. The organizers ordered a lot of good snacks for us.
Snacks and tea at the front desk. CC-BY-SA 4.0 by Ravi Dwivedi.
I came out of the movie hall to take more tea and snacks from the front desk. I saw a beautiful painting was hanging at the wall opposite to the front desk and Tejaswini (from sflc.in) revealed that she had made it. The tea was really good as it was freshly made in the kitchen.
After the movie, we played a game of pictionary. We were divided into two teams. The game goes as follows: A person from a team is selected and given a term related to freedom respecting software written on a piece of paper, but concealed from other participants. Then that person draws something on the board (no logo, no alphabets) without speaking. If the team from which the person belongs correctly guesses the term, the team gets one step ahead on the leader board. The team who reaches the finish line wins.
I recall some fun pictionaries. Like, the one in the picture below seems far from the word “Wireguard” and even then someone from the team guessed that word. Our team won in the end \o/.
Pictionary drawing nowhere close to the intended word Wireguard :), which was guessed. Photo by Ravi Dwivedi, CC-BY-SA 4.0.
Then, we posed for a group picture. At the end, SFLC.in had a delicious cake in store for us. They had some merchandise - handbags, T-shirts, etc. which we could take if we donate some amount to SFLC.in. I “bought” a handbag with “Ban Plastic, not Internet” written on it in exchange for donation. I hope that gives people around me a powerful message :) .
Group photo. Photo credits: Tejaswini.
Tasty cake. CC-BY-SA 4.0 by Ravi Dwivedi.
Merchandise by sflc.in. CC-BY-SA 4.0 by Ravi Dwivedi.
The Debian Graphical Installer,when i was introduced to Kali Linux(a Debian based distro),during my initial days of bachelor’s, the installer was so tricky to install GNU / Linux,thereby losing my data (:
Even though nowadays, Live systems have Calamares based installer,i feel the Graphical Installer is a bit annoying,so i wanted to automate the debian installer using a preseed configuration file,giving answers to debian installer in a config file making it easier and faster.
This is the wiki link for Debian Installer Preseeding https://wiki.debian.org/DebianInstaller/Preseed .
Preseeding is like a set of answers to debian-installer(d-i) questions.Preseeding can be done in 3 ways
1.Adding the preseed file to installer’s initrd.gz
2.Over webserver via DHCP
3.Loading the preseed file from a webserver over the boot options.
This blog post explains automating the debian installer by loading the preseed file from a webserver over the boot.
When Graphical Installer boot menu appears after booting through the Debian iso,select the Help entry from the menu.
After selecting the Help entry from boot menu,a boot: prompt is displayed below, enter you webserver url of the preseed file, in my case the preseed file was on my server with ip http://144.24.135.168/preseed.cfg/, and give boot: auto url=http://144.24.135.168/preseed.cfg and the auto command launchs the automated debian installer.
The default preseed file for new release will be updated here https://wiki.debian.org/DebianInstaller/Preseed#Default_preseed_files
Answers like setting username and password for Account setup,Network Configuration,Mirror Settings,Partitioning disks,setting normal user as root user Locales,Keyboard layout,Package Selection and many more
All the features in the Debian installer can be answered with the preseed file.
In the above preseed file i’ve set the debian mirrors [ line 1-3 ]with http.us.debian.org and the directory for the mirror is /debian,Account setup with password[ line 4-8 ], [ line 9 ] for ntp server to sync time with and [ line 10 ] for automatically partitioning the disk with biggest free space disk partition.
This is sample preseed file with few options and it can be customized accordingly.
For years, I’ve been the self-appointed guardian of my family’s digital treasures, diligently backing up everything on trusty 128 GB SanDisk USBs. You name it, from family photos to important documents, it was all meticulously stored on those little drives. But here’s the kicker: I wanted a cloud solution, something that could offer the same level of security and accessibility without breaking the bank.
I scoured the internet for options, but to be honest, most cloud services were way out of my budget range. Sure, they boasted top-notch security, but they lacked the flexibility and affordability I needed. I mean, come on, a budget-conscious student like me couldn’t justify shelling out big bucks for a rigid, overpriced cloud service that didn’t quite fit the bill.
It was like finding a hidden gem in a sea of overpriced clouds.
So basically, Rsync.net is a cloud storage service that stands out for its emphasis on privacy, data security, and flexibility. Essentially, it provides users with an empty UNIX filesystem accessible through various SSH tools, built on the reliable ZFS file system known for it’s fault tolerance. This platform allows users to execute a range of backup operations, including rsync, sftp, scp, borg, rclone, restic, and git-annex, making it a versatile and comprehensive solution for a wide array of backup needs.
Oh, and get this: I told them I was a broke student, and they totally hooked me up! They offered me a sweet educational discount rate of just 0.6 cents per GB, per month. Sure, I had to pay annually, but with a 250 GB minimum, it’s only 18 bucks a year. Talk about a steal! As a student, every penny counts, and this was simply awesome.
And they have a really quick support team. Most queries get resolved within minutes or max 24 hrs. When I was struggling with sluggish upload and download speeds, these legends didn’t waste a second. They set me up with test accounts all over the globe to figure out which spot had the smoothest routes to my place.
I have recently read a blog post describing some choices debian made to provide an high quality operating system, both technical & ideological aspects. I enjoyed reading it.
Personally, I like the debian social contract which prioritizes openness & users, which a lot of linux operating systems lack. We saw the consequences users/companies/projects have to face, because of the way how redhat flipped their policies regarding disclosing the source code of packages.
I have some thoughts on debian’s package policy though. Below are some sentences i am quoting from the blog post:
If Debian weren’t self-contained, it would be at the mercy of any of the tens of thousands of packages it has, and all their dependencies, being available when an urgent security fix needs to be released. This is not acceptable to Debian, and so Debian chooses to do the work of packaging all dependencies.
Technially, This is a very good choice & reflects the project’s upmost concern on security & stability.
That means, of course, that for Debian to package something can be a lot of work.
This is also true. Not just debian, But GNU/Guix, Another amazing operating system by the GNU project, has similar packaging policy.
I have packaged/updated a few debian packages in the past. It’s time taking, particularly with language ecosystems like node, ruby, Go. For example, packaging Gitlab requires a dedicated team of people, since it has hundreds of packages to maintain.
My thought is whether we can find a good balance between package security & reduction in packaging time by reducing the number of dependencies to package. I am no expert in this aspect. But, There are many experts in the debian community who could have a good idea.
A trip full of hitchhiking, beautiful places and welcoming locals.
Day 1: Arrival in Kochi
Kochi is a city in the state of Kerala, India. This year’s DebConf was to be held in Kochi from 3rd September to 17th of September, which I was planning to attend. My friend Suresh, who was planning to join, told me that 29th August 2023 will be Onam, a major festival of the state of Kerala. So, we planned a Kerala trip before the DebConf. We booked early morning flights for Kochi from Delhi and reached Kochi on 28th August.
We had booked a hostel named Zostel in Ernakulam. During check-in, they asked me to fill a form which required signing in using a Google account. I told them I don’t have a Google account and I don’t want to create one either. The people at the front desk seemed receptive, so I went ahead with telling them the problems of such a sign-in being mandatory for check-in. Anyways, they only took a photo of my passport and let me check-in without a Google account.
We stayed in a ten room dormitory, which allowed travellers of any gender. The dormitory room was air-conditioned, spacious, clean and beds were also comfortable. There were two bathrooms in the dormitory and they were clean. Plus, there was a separate dormitory room in the hostel exclusive for females. I noticed that that Zostel was not added in the OpenStreetMap and so, I added it :) . The hostel had a small canteen for tea and snacks, a common sitting area outside the dormitories, which had beds too. There was a separate silent room, suitable for people who want to work.
Dormitory room in Zostel Ernakulam, Kochi.
Beds in Zostel Ernakulam, Kochi.
We had lunch at a nearby restaurant and it was hard to find anything vegetarian for me. I bought some freshly made banana chips from the street and they were tasty. As far as I remember, I had a big glass of pineapple juice for lunch. Then I went to the Broadway market and bought some cardamom and cinnamon for home. I also went to a nearby supermarket and bought Matta brown rice for home. Then, I looked for a courier shop to send the things home but all of them were closed due to Onam festival. After returning to the Zostel, I overslept till 9 PM and in the meanwhile, Suresh planned with Saidut and Shwetank (who met us during our stay in Zostel) to go to a place in Fort Kochi for dinner. I suspected I will be disappointed by lack of vegetarian options as they were planning to have fish. I already had a restaurant in mind - Brindhavan restaurant (suggested by Anupa), which was a pure vegetarian restaurant.
To reach there, I got off at Palarivattom metro station and started looking for an auto-rickshaw to get to the restaurant. I didn’t get any for more than 5 minutes. Since that restaurant was not added to the OpenStreetMap, I didn’t even know how far that was and which direction to go to. Then, I saw a Zomato delivery person on a motorcycle and asked him where the restaurant was. It was already 10 PM and the restaurant closes at 10:30. So, I asked him whether he can drop me off. He agreed and dropped me off at that restaurant. It was 4-5 km from that metro station. I tipped him and expressed my gratefulness for the help. He refused to take the tip, but I insisted and he accepted.
I entered the restaurant and it was coming to a close, so many items were not available. I ordered some Kadhai Paneer (only item left) with naan. It tasted fine. Since the next day was Thiruvonam, I asked the restaurant about the Sadya thali menu and prices for the next day. I planned to eat Sadya thali at that restaurant, but my plans got changed later.
Onam sadya menu from Brindhavan restaurant.
Day 2: Onam celebrations
Next day, on 29th of August 2023, we had plan to leave for Wayanad. Wayanad is a hill station in Kerala and a famous tourist spot. Praveen suggested to visit Munnar as it is far closer to Kochi than Wayanad (80 km vs 250 km). But I had already visited Munnar in my previous trips, so we chose Wayanad. We had a train late night from Ernakulam Junction (at 23:30 hours) to Kozhikode, which is the nearest railway station from Wayanad. So, we checked out in the morning as we had plans to roam around in Kochi before taking the train.
Zostel was celebrating Onam on that day. To opt-in, we had to pay 400 rupees, which included a Sadya Thali and a mundu. Me and Suresh paid the amount and opted in for the celebrations. Sadya thali had Rice, Sambhar, Rasam, Avial, Banana Chips, Pineapple Pachadi, Pappadam, many types of pickels and chutneys, Pal Ada Payasam and Coconut jaggery Pasam. And, there was water too :). Those payasams were really great and I had one more round of them. Later, I had a lot of variety of payasams during the DebConf.
Sadya lined up for serving
Sadya thali served on banana leaf.
So, we hung out in the common room and put our luggage there. We played UNO and had conversations with other travellers in the hostel. I had a fun time there and I still think it is one of the best hostel experiences I had. We made good friends with Saiduth (Telangana) and Shwetank (Uttarakhand). They were already aware about the software like debian, and we had some detailed conversations about the Free Software movement. I remember explaining the difference between the terms “Open Source” and “Free Software”. I also told them about the Streetcomplete app, a beginner friendly app to edit OpenStreetMap. We had dinner at a place nearby (named Palaraam), but again, the vegetarian options were very limited! After dinner, we came back to the Zostel and me and Suresh left for Ernakulam Junction to catch our train Maveli Express (16604).
Day 3: Going to Wayanad
Maveli Express was scheduled to reach Kozhikode at 03:25 (morning). I had set alarms from 03:00 to 03:30, with the gap of 10 minutes. Every time I woke up, I turned off the alarm. Then I woke up and saw train reaching the Kozhikode station and woke up Suresh for deboarding. But then I noticed that the train is actually leaving the station, not arriving! This means we missed our stop. Now we looked at the next stops and whether we can deboard there. I was very sleepy and wanted to take a retiring room at some station before continuing our journey to Wayanad. The next stop was Quilandi and we checked online that it didn’t have a retiring room. So, we skipped this stop. We got off at the next stop named Vadakara and found out no retiring room was available. So, we asked about information regarding bus for Wayanad and they said that there is a bus to Wayanad around 07:00 hours from bus station which was a few kilometres from the railway station.
We took a bus for Kalpetta (in Wayanad) at around 07:00. The destination of the buses were written in Malayalam, which we could not read. Once again, the locals helped us to get on to the bus to Kalpetta. Vadakara is not a big city and it can be hard to find people who know good Hindi or English, unlike Kochi. Despite language issues, I had no problem there in navigation, thanks to locals. I mostly spent time sleeping during the bus journey.
A few hours later, the bus dropped us at Kalpetta. We had a booking at a hostel in Rippon village. It was 16 km from Kalpetta. On the way, we were treated with beautiful views of nature, which was present everywhere in Wayanad. The place was covered with tea gardens and our eyes were treated with beautiful scenery at every corner.
We were treated with such views during the Wayanad trip.
Rippon village was a very quiet place and I liked the calm atmosphere. This place is blessed by nature and has stunning scenery. I found English was more common than Hindi in Wayanad. Locals were very nice and helped me, even if they didn’t know my language.
A road in Rippon.
After catching some sleep at the hostel, I went out in the afternoon. I hitchhiked to reach the main road from the hostel. I bought more spices from a nearby shop and realized that I should have waited for my visit to Wayanad to buy cardamom, which I already bought from Kochi. Then, I was looking for post office to send spices home. The people at the spices shop told me that the nearby Rippon post office was closed by that time, but the post office at Meppadi was open, which was 5 km from there.
I went to Meppadi and saw the post office closes at 15:00, but I reached five minutes late. My packing was not very good and they asked me to pack it tighter. There was a shop near the post office and the people there gave me a cardboard and tapes, and helped pack my stuff for the post. By the time I went to the post office again, it was 15:30. But they accepted my parcel for post.
Day 4: Kanthanpara Falls, Zostel Wayanad and Karapuzha Dam
Kanthanpara waterfalls were 2 km from the hostel. I hitchhiked to the place from the hostel on a scooty. Entry ticket was worth Rs 40. There were good views inside and nothing much to see except the waterfalls.
Entry to Kanthanpara Falls.
Kanthanpara Falls.
We had a booking at Zostel Wayanad for this day and so we shifted there. Again, as with their Ernakulam branch, they asked me to fill a form which required signing in using Google, but when I said I don’t have a Google account they checked me in without that. There were tea gardens inside the Zostel boundaries and the property was beautiful.
A view of Zostel Wayanad.
A map of Wayanad showing tourist places.
A view from inside the Zostel Wayanad property.
Later in the evening, I went to Karapuzha Dam. I witnessed a beautiful sunset during the journey. Karapuzha dam had many activites, like ziplining, and was nice to roam around.
Chembra Peak is near to the Zostel Wayanad. So, I was planning to trek to the heart shaped lake. It was suggested by Praveen and looking online, this trek seemed worth doing. There was an issue however. The charges for trek were Rs 1770 for upto five people. So, if I go alone I will have to spend Rs 1770 for the trek. If I go with another person, we split Rs 1770 into two, and so on. The optimal way to do it is to go in a group of five (you included :D). I asked front desk at Zostel if they can connect me with people going to Chembra peak the next day, and they told me about a group of four people planning to go to Chembra peak the next day. I got lucky! All four of them were from Kerala and worked in Qatar.
Day 5: Chembra peak trek
The date was 1st September 2023. I woke up early (05:30 in the morning) for the Chembra peak trek. I had bought hiking shoes especially for trekking, which turned out to be a very good idea. The ticket counter opens at 07:00. The group of four with which I planned to trek met me around 06:00 in the Zostel. We went to the ticket counter around 06:30. We had breakfast at shops selling Maggi noodles and bread omlette near the ticket counter.
It was a hot day and the trek was difficult for an inexperienced person like me. The scenery was green and beautiful throughout.
Terrain during trekking towards the Chembra peak.
Heart-shaped lake at the Chembra peak.
Me at the heart-shaped lake.
Views from the top of the Chembra peak.
View of another peak from the heart-shaped lake.
While returning from the trek, I found out a shop selling bamboo rice, which I bought and will make bamboo rice payasam out of it at home (I have some coconut milk from Kerala too ;)). We returned to Zostel in the afternoon. I had muscle pain after the trek and it has still not completely disappeared.
At night, we took a bus from Kalpetta to Kozhikode in order to return to Kochi.
Day 6: Return to Kochi
At midnight of 2nd of September, we reached Kozhikode bus stand. Then we roamed around for something to eat. I didn’t find anything vegetarian to eat. No surprises there! Then we went to Kozhikode railway station and looked for retiring rooms, but no luck there. We waited at the station and took the next train to Kochi at 03:30 and reached Ernakulam Junction at 07:30 (half hours before train’s scheduled time!). From there, we went to Zostel Fort Kochi and stayed one night there and checked out next morning.
Day 7: Roaming around in Fort Kochi
On 3rd of September, we roamed around in Fort Kochi. We visited the usual places - St Francis Church, Dutch Palace, Jew Town, Pardesi Synagogue. I also visited some homestays and the owners were very happy to show their place even when I made it clear that I was not looking for a stay. In the evening, we went to Kakkanad to attend DebConf.
Twenty-four is a big number. More than one/fourth (or more) of my life is behind me now. At this point, I truly feel like I have become an adult; mentally and physically. Another year seem to have gone by quickly. I still vividly remember writing 23 and Counting and here I’m writing the next one so soon.
Probably the lowest I felt ever on my birthday; with loss of Abraham and on the other hand, medical issues with a dear one. Didn’t even felt like birthday was almost here. The loss of Abraham, taught me to care for people more and meet cherish everyone. I’m grateful for all the people who supported and cared for me and others during times of grief when things went numb. Thank you!
Also, for the first time ever, I went to office on my birthday. This probably would become a norm in coming years. Didn’t felt like doing anything, so just went to office. The cake, wishes and calls kept coming in throughout the day. I’m grateful for the all people around for remembering :)
This year marked my first “official” job switch where I moved from MakeMyTrip to Unmukti as a GNU/Linux Network Systems engineer (that’s a mouthful of a job role, I know) where I do anything and everything ranging from system admin, network engineering, a bit of social media, chronicling stuff on company blog and bringing up new applications as per requirement. Moving from MMT to Unmukti was a big cultural shift. From a full-blown corporate with more than 3 thousand employees to a small 5-person team. People still think I work for a startup on hearing the low head count, though Unmukti is a 13 year old organization. I get the freedom to work at my own pace and put my ideas in larger technical discussions, while also actively participating in the community, which I’m truly grateful of. I go full geek here and almost everyone here is on the same spectrum, so things technical or societal discussions just naturally flow.
The months of August-September again marked the Great Refresh. For reasons unforeseen, I have had to pack my stuff again and move, albeit to just next door for now, but that gave me the much need opportunity to sift through my belongings here. As usual, I threw a boatload of stuff which was of no use and/or just hogging space. My wardrobe cupboard finally got cleaned and sorted, with old and new clothes getting (re)discovered. The Refresh is always a pain with loads of collating stuff in carry worthy bags and hauling stuff but as usual, there’s nothing else I can do other than just pack and move.
This year also culminated our four plus years of work for organizing annual Debian conference, DebConf to India. DebConf23 happened in Kochi, Kerala from 3rd September to 17th September (including DebCamp). First concrete work to bring conference to India was done Raju Dev who made the first bid during DebConf18 in Hsinchu, Taiwan. We lost but won during the next year bid at DebConf19 Curitiba, Brazil in 2019. I joined the efforts after meeting the team online after DebConf20. Initially started with the publicity team, but we didn’t need much publicity for event, I was later asked to join sponsors/fundraising team. That turned out to be quite an experience. Then the conference itself turned to be a good experience. More on that in an upcoming DebConf23 blog post, which will come eventually.
After seeing how things work out in Debian in 2020, I had the goal to become a Debian Developer (DD) before DebConf23, which gave me almost three years to get involved and get recognized to become a DD. I was more excited to grab sahil AT debian.org, a short email with only my name and no number of characters after it. After, quite a while, I dropped the hope of become a DD because I wasn’t successful in my attempts to meaningfully package and technically contribute to the project. But people in Debian India later convinced me that I have done enough to become a Debian Developer, non uploading, purely by showing up and helping around all for the Debian conferences. I applied and got sponsored (i.e. supported) for my request by srud and Praveen. Finally, on 23rd Feb, I officially became part of Debian project as 14th (at the moment) Debian Developer from India. Got sahil AT debian.org too :) For some grace, I also became a DD before DebConf23. Becoming a DD didn’t change anything much though, I still believe, it might have helped secure me a job though.
Also, worth mentioning is my increased interest in OpenStreetMap (OSM) mapping. I heavily mapped this year and went around for mapathon-meetups too. One step towards a better OSM and more community engagement around it.
Looking back at my blog, this year around, it seems mostly dotted with Debian and one OSM post. Significant shift from the range of topics I use to write about in the past year but blogging this year wasn’t a go-to activity. Other stuff kept me busy.
Living in Gurugram has shown me many facades of life from which I was shielded or didn’t come across earlier. It made me realize all the privileges which has helped me along the way, which became apparent while living “almost” alone here and managing thing by oneself.
Hyprland is dynamic tiling Wayland compositor based on wlroots.
It is an interesting new project that caught my eye because of looking at some eye candy desktop setups on Unixporn
I have tried multiple window managers and desktop environments, but I keep falling back to i3wm because of my muscle memory fixed to its key bindings and anything else feels limiting.
However I met Vysakh at DebConf23 and he asked me to give another try to Hyprland.
Vysakh sent me an easy setup script for setting up Hyprland on Debian
using the script did not go smoothly because the during the compilation pkgconfig was getting the wrong version of wayland-protocols package.
While debian has version 1.32, the build was taking 1.24 and my builds were failing because of an older version number.
Some of my issues and there solution are also mentioned in the issue here.
Vysakh debugged the issue along with me for over 3 hours and we finally found that the issue was gnome-core used by some of the apps that I used with snaps. For some reason value of version of wayland-protocols was being supplied by the snap instead of my locally installed native package.
After removing the snap packages, the builds went fine and I had a running hyprland desktop.
And it is awesome!
probably I will switch from i3wm this time.
default hyprland desktophyprland desktop with the kitty terminal running neofetch
On 13th September 2023, Abraham Raji from Kerala, an active member of FSCI, died in a water accident during a trip in the DebConf 2023.
Abraham was a passionate Free Software evangelist and an active member of various Free Software related communities. The revamped website theme of FSCI is his labour of love.
He was also a Debian Developer and led the design team of DebConf23 and helped in organizing several other local events in recent years. The DebConf23 website, t-shirt, badge were all designed by him.
Following projects paid their respects to Abraham Raji by dedicating their latest releases to him:
I had worked with Abraham when we were migrating FSCI’s website to hugo. He was a very curious person & had attention to detail on how the new website should look. We used to ocassionally chat about nerdy stuff. The sudden news about his tragedy left me speechless & it took me some time to realize that he’s no more. His passion towards FOSS was amazing, We lost a potential individual who could positively impact FOSS in India.
– karthik
I met Abraham during FOSSMeet 2023 in NIT Calicut. He was a very calm and curious person and was also a great presenter!
– aryak
I met Abraham in mini debconf palakkad.Then after one month In villupuran(district in Tamil nadu) planned to conduct mini debconf in tamil nadu that time weekly once we have connected in jitsi meet regarding mini debconf plan. He was such a kind and responsible person. he alway gave respect to all person words. Jan,2023 he came to villupuram for mini debconf That time we discussed more about the foss and how we can spread foss in each and very corner of the society.
I recently bought an HP Chromebook from Abhas who had already flashed coreboot in it. I ran a fresh installation of Debian 12 (Bookworm) on it with KDE Plasma.
Right after installation, the Wi-Fi and bluetooth were working, but I was facing two issues:
Playing a music file or any audio file does not give any audio.
Keyboard buttons like the ones for brightness and audio adjustment were not working (alphabet keys were working).
Fixing audio
I ran the script mentioned here and that fixed the audio.
The instructions from that link are:
git clone https://github.com/WeirdTreeThing/chromebook-linux-audio
cd chromebook-linux-audio
./setup-audio
Fixing keyboard
I asked my friend Alper for help on fixing the keyboard as he has some experience with Chromebooks. Thanks a lot Alper for the help. I am documenting our steps here for helping others who are facing this issue.
Note: This works in X11. For wayland, the steps might differ.
To set system-wide keyboard configuration on Debian systems:
$ sudo dpkg-reconfigure keyboard-configuration
Choose “Chromebook” as the “Keyboard Model”.
Each DE should default to the system configuration, but might need its own configuration which would similarly be available in their GUI tools. But you can check and set it manually from the command line, for example as in this thread.
Man, you’re no longer with us, but I am touched by the number of people you have positively impacted. Almost every DebConf23 presentations by locals I saw after you, carried how you were instrumental in bringing them there. How you were a dear friend and brother.
It’s a weird turn of events, that you left us during one thing we deeply cared and worked towards making possible since the last 3 years together. Who would have known, that “Sahil, I’m going back to my apartment tonight” and casual bye post that would be the last conversation we ever had.
Things were terrible after I heard the news. I had a hard time convincing myself to come see you one last time during your funeral. That was the last time I was going to get to see you, and I kept on looking at you. You, there in front of me, all calm, gave me peace. I’ll carry that image all my life now. Your smile will always remain with me.
Now, who’ll meet and receive me on the door at almost every Debian event (just by sheer co-incidence?). Who’ll help me speak out loud about all the Debian shortcomings (and then discuss solutions, when sober :)).
It was a testament of the amount of time we had already spent together online, that when we first met during MDC Palakkad, it didn’t feel we were physically meeting for the first time. The conversations just flowed.
Now this song is associated with you due to your speech during post MiniDebConf Palakkad dinner. Hearing it reminds me of all the times we spent together chilling and talking community (which you cared deeply about). I guess, now we can’t stop caring for the community, because your energy was contagious.
Now, I can’t directly dial your number to listen - “Hey Sahil! What’s up?” from the other end, or “Tell me, tell me” on any mention of the problem. Nor would I be able to send reference usage of your Debian packaging guide in the wild. You already know how popular this guide of yours. How many people that guide has helped with getting started with packaging. Our last telegram text was me telling you about guide usage in Ravi’s DebConf23 presentation. Did I ever tell you, I too got my first start with packaging from there. I started looking up to you from there, even before we met or talked. Now, I missed telling you, I was probably your biggest fan whenever you had the mic in hand and started speaking. You always surprised me all the insights and idea you brought and would kept on impressing me for someone who was just my age but was way more mature.
Reading recent toots from Raju Dev made me realize how much I loved your writings. You wrote
‘How the Future will remember Us’, ‘Doing what’s right’ and many more. The level of depth in your thought was unparalleled. I loved reading those. That’s why I kept pestering you to write more, which you slowly stopped. Now I fully understand why though. You were busy; really busy helping people out or just working for making things better. You were doing Debian, upstream projects, web development, designs, graphics, mentoring, free software evangelism while being the go-to person for almost everyone around. Everyone depended on you, because you were too kind to turn down anyone.
Man, I still get your spelling wrong :) Did I ever tell you that? That was the reason, I used to use AR instead online.
You’ll be missed and will always be part of our conversations, because you have left a profound impact on me, our friends, Debian India and everyone around. See you! the coolest man around.