Enindu Alahapperuma
Software Engineer
Sri Lanka
I'm a back-end engineer, system administrator, and website security expert.
I am a back-end engineer, system administrator, and website security expert from Sri Lanka. With years of experience, I focus on creating and managing reliable, secure, and efficient systems. Below, you can learn more about my professional background, skills, and the services I provide.
I'm Enindu Alahapperuma, a freelance software engineer from Sri Lanka with over 7 years of experience in back-end engineering. I specialize in back-end development, system administration, and website security. My journey began with a passion for Linux and open-source software, which led me into system administration. Over time, I transitioned into back-end development, focusing on creating and managing reliable, secure, and efficient systems.
My interest in back-end engineering and system administration started with Ubuntu 5.04 nearly a decade ago. From the moment I installed it, I knew Linux was the right fit for me. Today, I use Arch Linux as my preferred distribution. After my initial experience with Ubuntu, I explored many major Linux distributions, including Debian, Fedora, Mint, openSUSE, Manjaro, Zorin, elementary, NixOS, Kali, Gentoo, and some lesser-known ones like Puppy, Tiny Core, CrunchBang, Void, ArchBang, and Damn Small. I also tried BSD distributions like OpenBSD, GhostBSD, and FreeBSD. Despite using many UNIX-like distributions, I ultimately settled on Arch Linux.
My experience with various Linux distributions has given me a deep understanding of different Linux communities, philosophies, build systems, GUIs, CLIs, kernels, and tools. This knowledge has strengthened my abilities as a system administrator and security expert. With this expertise, I transitioned into web development and eventually became a back-end engineer. Today, I specialize in network programming, protocols, encryption, databases, servers, cloud computing, and website security.
While I consider myself a web developer, I am not a full-stack developer or a DevOps engineer. I believe the concept of a full-stack developer is flawed, especially in web development. A full-stack developer is expected to be skilled in both front-end and back-end development, but this can lead to a lack of depth in either area. Similarly, DevOps is a unique discipline that combines development and operations practices to enhance the software development lifecycle, focusing more on the application lifecycle rather than server management.
Before becoming a professional back-end engineer, I started my career as a web developer. My curiosity and analytical nature drove me deeper into web development, similar to my journey with Linux. During this time, I experimented with various frameworks, tools, and CMSs, and even created my own CSS and PHP frameworks. This hands-on experience helped me gain significant knowledge quickly, leading me to pursue back-end development as my career.
I chose back-end development not just for financial reasons, but because I am genuinely fascinated by how systems work. I am more interested in server-side operations than front-end development. Although I have some experience with front-end frameworks like React and Vue, my focus is on how web browsers communicate with servers, how servers process requests, and how responses are sent back to browsers.
As a back-end engineer, I primarily work with Apache, nginx, and PHP. I often integrate cloud computing technologies to optimize the applications I build. While I focus on back-end engineering, I also work as a freelance web developer, using Laravel as my framework of choice. I prefer Laravel over CMS platforms like WordPress or Drupal because it offers a good balance of performance and best practices.
For network programming, I prefer Go. Unlike PHP, which runs within Apache or nginx, Go operates at a lower level. I also use Go to create CLI programs, which you can find on my GitHub profile. Go is a simple yet powerful language, especially suited for network programming, with a comprehensive standard library and a concurrency model ideal for performance-critical applications.
In addition to PHP and Go, I have experience with Node.js. While JavaScript is not my preferred language, I appreciate Node.js for its non-blocking nature, making it a great choice for I/O programming.
Although my main job is back-end engineering, my true passion is system administration, which is where my career started. I am an experienced Linux system administrator with a deep understanding of various build systems and tools. My back-end skills complement my daily work with LAMP (Linux, Apache, MySQL/MariaDB, PHP) stacks. I handle operating systems, networks, firewalls, and servers, taking care of their installation, maintenance, monitoring, and troubleshooting.
My expertise is primarily in Linux, but I also have hands-on experience with BSD and Windows, though I don't consider myself an expert in those systems. I've worked with many Linux distributions like Debian and NixOS, and different init systems used in Arch Linux and Void. My experience includes various toolsets, such as Ubuntu and Kali, and environments ranging from GUIs like KDE and GNOME to CLIs. I'm proficient with different package managers, including pacman and dnf. This experience has given me expertise in operating system management, including daily tasks, monitoring, analysis, and user management. Additionally, I manage SSH, VNC, and RDP servers.
Throughout my career, I've managed numerous HTTP servers and mail servers like SMTP, IMAP, and POP3, which has honed my skills as a system administrator in the web hosting domain. Managing HTTP servers requires a solid understanding of DNS, TLS, proxies, cron jobs, version control, and log analysis. My expertise in web development, back-end development, and network programming has made me a true expert in system administration within this field.
In addition to managing HTTP and mail servers, I also create and maintain low-level TCP, UDP, and UNIX servers through network programming. My expertise as a system administrator spans various types of servers, and I enjoy exploring low-level networking concepts in my free time. I have a deep understanding of how these protocols work and how clients should interact with them. Additionally, I have some knowledge of banking servers, including their protocols and standards.
Besides back-end engineering and general system administration, I also have expertise in cloud computing. Early in my career, I used cloud services to enhance my web applications. As I gained more experience and leveraged my system administration skills, I became proficient in cloud computing system administration. I primarily work with Amazon Web Services (AWS) due to its stability and reliability, but I also have hands-on experience with DigitalOcean and Google Cloud. Today, I offer comprehensive system administration services on any cloud platform. However, it's important to clarify that my services are distinct from DevOps, as I focus solely on system administration rather than DevOps practices.
My experience in web development, back-end engineering, and system administration has honed my skills in website security. I stay alert to potential threats and ensure security at every stage of development and system management. This vigilance has made me proficient in website security, allowing me to manage security at the operating system, network, and application levels.
To maintain strong security, I follow best practices such as patching vulnerabilities, updating to the latest versions, managing TLS certificates, and using tools like port, network, and website scanners to identify vulnerabilities. I understand that no system is completely secure, so I remain proactive and vigilant. With my extensive experience, I strive to maintain the highest level of security.
I offer my services as a freelancer in web development and system administration. If you need assistance with your project or think my expertise can meet your needs, please contact me at [email protected]. For more information, including pricing and detailed service descriptions, visit the Services page.
This is the 4th version of my website. The first two versions were built using a custom static site generator written in Go. For various reasons, I migrated to Laravel in the 3rd version. In this 4th version, I've updated the Laravel framework to its latest version and made several front-end improvements to enhance the user experience.
In this version, the website uses plain HTML, Halfmoon as the CSS framework, and Laravel as the PHP framework. Although the website doesn't need a database for its operations, Laravel uses SQLite for its database needs. The website is hosted on an AWS EC2 instance and served through an Apache HTTP server. Cloudflare is integrated as a reverse proxy server to enhance security and performance. DNS management from the origin to the proxy is handled through AWS Route 53, while proxy to client DNS management is handled via Cloudflare.
You can find the source code for this website on my GitHub profile, licensed under the MIT license. You are welcome to use, share, and modify the code as per the license terms. Visit this link to access the source code. If you have any issues or suggestions for improvements, please open an issue or submit a pull request. Your contributions are valuable and help improve this project for everyone.