-
Privacy Matters: Why I Switched from Gmail to Zoho Mail
In a world where personal data is constantly mined, I realized that even my inbox isn’t as private as it should be. Gmail and services like it scan emails to fuel their ad systems — something I wasn’t comfortable with anymore. 🔐 My solution? I created a new email using Zoho Mail — a privacy-respecting,…
-
Presentations as source code
Creating presentations doesn’t have to mean wrestling with clunky, proprietary software. By treating presentation development like source code, I discovered a streamlined, flexible workflow using Markdown (MD) files, Visual Studio Code, and MARP to generate sleek HTML slides—all while maintaining full control over styling with custom CSS. Why Markdown? Markdown’s simplicity allows for fast content structuring with headings, lists, and code blocks. By…
-
Nextcloud: Private Cloud
In today’s digital world, cloud storage and synchronization services are essential for managing files, calendars, and contacts across multiple devices. While public cloud services like Google Drive, iCloud, and Dropbox are popular, using a private cloud such as Nextcloud offers significant advantages in terms of privacy, security, and control. Key Advantages of a Private Cloud…
-
Syncthing: Syncing Between Android, Windows, iOS
For years, I struggled with clunky cloud services and complex sync tools until I discovered Syncthing—a blazing-fast, open-source file synchronization solution that works directly between devices with no central server required. After using it to sync files between my Android phone and Windows PC, I’m convinced this is the future of personal data synchronization. What…
-
GitLab
I recently made the switch from Bitbucket to GitLab, and I wanted to share my experience.1. Open Source: GitLab is fully open source2. User-Friendly Surprise: Moving my code repositories felt like a breeze. GitLab’s interface is not just pretty; it’s genuinely user-friendly. The import functionality was actually fully automated. It could not be easier.DIY Freedom:…
-
VSCode and VsCodium
Although VSCode is open source, Microsoft while building the binary executable adds proprietary code that collect information about the users even if they opted not to. The community created VsCodium as a fully open source alternative without these Microsoft propitiatory code. It has exactly the same features and uses same extensions. I am using it…
-
Replacing Google Email, Contacts and Calendar
Because we got used to major service providers such as Google, or Microsoft, we think of these services, email/Contacts/Calendar as one integrated service, but once you move away from them, you will find things a little bit more difficult. The point is to find a service that provides you mobile and desktop access to them…
-
Removing Google Drive and Docs
Simply I reverted back to use my Flash drive as a backup mechanism. I removed Google Drive application and stopped using Google Docs. I already has Office, so no real need to use the cloud. Later on, I went to the Drive website and removed all my documents and also all documents that was shared…
-
Moving away from Google Photos
Recently I became more aware of security issues and worry about how free google services are not really free. They are collecting my info and sell it to advertisers. Almost all websites and mobile apps that has ads, those ads are served by Google. Although you may hate these too much ads, that web site…
-
Android Performance Story
I am developing a personal finance application and it uses SQLite to store all of its data. I had slowness in the application where I calculate balance for all accounts. The first thing that came to my mind is that the DB access is slow and I have to research if I should add indexes to the…
-
Using UUID as a Primary Key
I am developing a personal finance application on mobile and web. Data should be synced two ways between the mobile app and the web application. The data schema is: Currency table with currency name and conversion rate Account table with name and a foreign key to its currency Transactions table with an amount, withdraw account related, deposit account related,…
-
JHipster Pros and Cons
Jhipster is a web application scaffold that generates backend and frontend code for CRUD applications. You describe entities in JDL format among other options and Jhipster generates backend server and frontend UI for you. Here are some of the advantages: Fast application code scaffold. In a short time, an application is generated. Many options exist on…
-
Refactoring and Git Developer Story
I refactored a critical long class that has very long member functions. My main intention was to: Extract many smaller member functions to enhance class modifiability. By breaking the long member functions into smaller ones, it will be much easier to understand what the class is really doing. By having many smaller member functions, we…
-
Lesson Learned: Code Regression
Giving advice is not very effective most of the time. Sharing real experiences and trouble and how it is handled is more effective. The best is whoever learns from others mistakes. So I am sharing here a story where I and my team introduced a bug and it was leaked to the production environment. I…
-
Refactoring Tools
I used IntelliJ to do some package renaming refactoring. I was confident that it was safe to do so, however, other parts of the code had changed when they should not have. Later on, I discovered the problem and fixed it. I used to avoid find/replace tools or grepping because it is dangerous as you can…
-
Technical Codebase Visibility
In the last post, I wrote about the problems that happen because of the lack of technical codebase management. First, you can not do anything without knowing your status right now as well as where you are heading. Putting your goals in mind, then you are fully equipped to do the right things and monitor…
-
Lack of Technical Management
I worked on many projects and found a repeating anti-pattern that is happening to the codebase, which is the lack of technical management. Here, I am sharing my thoughts about it. The problem definition: The team has no understanding of the size of the product and its complexity. There is a lack of metrics and…
-
Personal Maps in a Kick of Meeting
I was in a KOM (Kick-off meeting) for a new Agile coaching project with some organization in Egypt. In my first day, first meeting, I planned a simple Agenda as following: Know about the team Know about the product Know about the project And build a list of problems and objectives for the project So…
-
Organizing Application Classes into Packages
In Java language, we have encapsulation at many levels. First, is the class, as it may has private data members and methods. It has the benefits of hiding complexity and provides a layer of abstraction. Second is the package. It provides access rights to sibling classes inside it. Classes defined without being public are private…
-
Why Velocity is a Broken Performance Metric?
In Scrum, we have two main metrics to measure Sprints. The first one is the Velocity, which is defined as the total story points of completely developed and tested User Stories. The second measure is Burned Effort, which is the total number of hours spent by the team throughout the Sprint. We use Burn Down…