-
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…
-
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…
-
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…
-
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…
-
GUI Test Automation at End of Release
Today, I was consulting Egyptian company in Cairo. They had an objection to the CEO request to write automated GUI tests per sprint. Typically, he asked them to include that GUI test automation as a done definition per story, so the story will not be scored as done if its related automation was not totally…
-
Managing Browser Back/Forward when you use JqueryMobile
I am using JQueryMobile for building website that works on Mobile, tablet, and desktop computers. As my application is an Ajax application. I wanted to control the browser URL in order to enable browser back/forward button in my Ajax single-page application. The solution is really easy, whenever you want to change the location call location.hash…
-
Being a Javascript Expert
Recently I am focusing to be an expert in Javascript. Being an expert is not an easy task. I have to focus as much as I can. If you know how much technologies I learned and worked in lately, you will know how I am distracted. I developed iphone, android and web applications using Java,…
-
Discarding Arabic Diacritics From Text
To strip out diacritics from Arabic text, this is a little code in Python that I like a lot. import unicodedata return filter(lambda c: unicodedata.category(c) != ‘Mn’, s) Look how it is elegant and small. Just one line with Lambda expression and a check of which the letter is unicode diacritics…