A major educational institution needed to migrate from their legacy system to Moodle, with 50,000+ users and complex course structures.
Hi, I'm Biniam Yimer
Full Stack Developer & System Integration Specialist
Professional Journey
IT Manager
Addis Ababa Science and Technology University
2019 - Present
- Managing IT infrastructure and systems
- Implementing and maintaining LMS (Moodle)
- Server administration and security
Full Stack Developer
Freelance
2015 - Present
- Developing custom web applications
- Mobile app development (Android & Flutter)
- ERP implementation and customization
System Administrator
Various Organizations
2012 - 2019
- Network administration and security
- Server maintenance and optimization
- Technical support and training
Featured Projects
Explore some of my recent work and technical innovations
Professional Skills
Development & Programming
Django & Python
Web Development & Automation
PHP
Backend Development
Android Development
Published Apps on PlayStore
C# Development
Desktop Applications
Enterprise Systems
Moodle LMS
Implementation Specialist
Odoo ERP
System Integration
WordPress
CMS Development
System & Server Administration
Amazon AWS
Cloud Expert
Digital Ocean
Server Administration
IT Management
Infrastructure & Systems
Code Showcase
Examples of my coding style and technical expertise across different languages and frameworks.
from django.db import models
from django.contrib.auth.models import User
from django.utils.text import slugify
class Category(models.Model):
name = models.CharField(max_length=100)
slug = models.SlugField(unique=True, blank=True)
description = models.TextField(blank=True)
def save(self, *args, **kwargs):
if not self.slug:
self.slug = slugify(self.name)
super().save(*args, **kwargs)
def __str__(self):
return self.name
class Meta:
verbose_name_plural = "Categories"
class Course(models.Model):
title = models.CharField(max_length=200)
slug = models.SlugField(unique=True)
description = models.TextField()
category = models.ForeignKey(
Category,
on_delete=models.CASCADE,
related_name='courses'
)
instructor = models.ForeignKey(
User,
on_delete=models.CASCADE,
related_name='courses'
)
created_at = models.DateTimeField(auto_now_add=True)
updated_at = models.DateTimeField(auto_now=True)
is_published = models.BooleanField(default=False)
// Modern JavaScript API client with async/await
class ApiClient {
constructor(baseUrl) {
this.baseUrl = baseUrl;
this.token = localStorage.getItem('auth_token');
}
async request(endpoint, options = {}) {
const url = `${this.baseUrl}${endpoint}`;
const headers = {
'Content-Type': 'application/json',
...options.headers
};
if (this.token) {
headers.Authorization = `Bearer ${this.token}`;
}
try {
const response = await fetch(url, {
...options,
headers
});
// Handle different response types
const contentType = response.headers.get('content-type');
if (contentType && contentType.includes('application/json')) {
const data = await response.json();
// Handle API errors
if (!response.ok) {
throw new Error(data.message || 'API request failed');
}
return data;
}
} catch (error) {
console.error('API request failed:', error);
throw error;
}
}
}
/**
* Custom Moodle local plugin to enhance user dashboard
*
* @package local_dashboardplus
* @copyright 2023 Biniam Yimer
* @license http://www.gnu.org/copyleft/gpl.html GNU GPL v3 or later
*/
defined('MOODLE_INTERNAL') || die();
/**
* Extends core dashboard with additional functionality
*
* @param global_navigation $navigation The navigation node to extend
*/
function local_dashboardplus_extend_navigation(global_navigation $navigation) {
global $USER, $DB, $CFG;
// Only add custom links for logged-in users
if (!isloggedin() || isguestuser()) {
return;
}
// Get custom user preferences
$preferences = get_user_preferences('dashboardplus_settings', null, $USER->id);
$settings = $preferences ? json_decode($preferences, true) : [];
// Add custom dashboard items based on user role
$context = context_system::instance();
$isAdmin = has_capability('moodle/site:config', $context);
$isTeacher = has_capability('moodle/course:manageactivities', $context);
Tech Tutorial Videos

Node.js, Express, MongoDB & Express-Handlebars Tutorial
Learn how to build complete web applications with Node.js, Express, MongoDB & Express-Handlebars

Creating a Portfolio Website with HTML, CSS & JavaScript
Step-by-step guide to building your own professional portfolio website from scratch

Computer Hardware & Software Tutorials
Full playlist of tech tutorials covering both hardware and software topics
Success Stories
Challenge
Solution
Implemented a custom migration strategy with zero-downtime deployment and automated data validation.
Results
- 99.9% successful migration
- 40% improvement in system performance
- 50% reduction in support tickets