Photo by Carlos Muza on Unsplash

In this blog, I’ll be talking about Django’s way of database migrations and data seeding. I’ll try to explain both as briefly as I can and focus more on the examples. Well then, let’s get started!

Database Migrations

Migrations are Django’s way of propagating changes you make to your models (adding a field, deleting a model, etc.) into your database schema. They’re designed to be mostly automatic, but you’ll need to know when to make migrations, when to run them, and the common problems you might run into.

The two main commands we’ll probably use in Django in migrating will probably be:

If you’ve ever developed a software that’s going to be distributed or used by multiple users, at some point you’d likely need to think about the performance and the security of the software. There is a concept in software engineering that specifically deals with the problems stated before, which is testing. But testing is just the big picture. You can check out my article on testing.

Testing is just the big picture and there are many types of tests including unit tests, integration tests, system tests and more. To address the problem above, we can use on what is called…


When developing a software, you might want to make sure that your software runs reliably on any computing environment. In the process of creating a software, chances are, you might move your software to another computing environment. It could be from your own PC to a test environment, test to staging environment, staging to a production environment, or even from a physical machine into a virtual machine in cloud.

The problem is that not all environments are identical. Solomon Hykes, the founder and CTO of Docker says “You’re going to test using Python 2.7, and then it’s going to run…

Photo by Fotis Fotopoulos on Unsplash

In your software engineering career, it is you will likely come across software testing. Software testing is basically making test cases before we go into the development (coding) process of the software. It acts as a code guardian for the code we make so that bugs don’t appear whenever you or other developers touch back or make integrations with the code you’ve made before. You can check more about testing in this article I made.

That’s enough about testing in general. Now, lets go more in depth. There are techniques used in testing. In this article, I will be covering…

Flutter is all about widgets. All those widgets nested within each other will result in a widget tree. For a simple UI, you might still be able to re-read and understand the code even when you come back to it after days or weeks. But how about complex UIs? Complex UIs usually consist of a lot of widgets and what does that mean? A higher chance that the code will become less readable, harder to maintain, and become less efficient.

As the number of widgets we use gradually increase, the more complex the widget tree becomes and the harder it…

Photo by Luis Villasmil on Unsplash

As developers, we create applications to help the society do things easier by digitizing what we do everyday. For example, we help people do transactions by digitizing money so that they do not have to do the hassle of going to the ATM to do the transaction. But we can’t just go straight into designing and interpret everything by ourselves. We need the help of other people, especially who will be the end-users once we’ve delivered our application. This theory is called User Centered Design.

User Centered Design

“User-centered design (UCD) is an iterative design process in which designers focus on the users…

Photo by Chris Ried on Unsplash

Some Introduction

Rarely do big projects are done individually. They usually are developed by a team of developers which have their own assigned tasks in contributing to the project. Not every developer codes in the same way. One might like to do one thing, and another might do another thing. Therefore, there needs to be a universal “style” of programming as a guidance for all developers so that each and every developer have the same style of programming.

Clean Code

This is where the style of clean code comes in. Clean code is code that’s easy to read, understand, and maintain. Clean code helps…



Test-driven development (TDD) is a software development process relying on software requirements being converted to test cases before software is fully developed, and tracking all software development by repeatedly testing the software against all test cases.


TDD is the reverse of the traditional development then testing approach. So, instead of writing code for development first, we first create test cases based on the requirements of the product then code until it passes all the test cases made. This will result in a cleaner and less prone to breaking code for the long run.

Why TDD?

Here are the benefits we…

Photo by Marvin Meyer on Unsplash

Most of the time, working in teams to deliver a working product is the way to go, especially to a customer. The traditional way of waiting for an individual to finish their code and then passing to another individual is bothersome and time inefficient. More than that, a way to track what has been done or changed by the previous individual is not an easy thing to do. Therefore, a more modern way of working in teams is needed to solve the problem. This is where Git comes in handy, as it is the most used version controller.


Git is…

How do you think popular e-commerce websites handle millions of users in a fast and reliable manner? And most importantly, with no errors.

High Availability is what a good website has. It is a term used to describe a system that works perfectly in a long-term period. In it’s applications, a web does not rely only on one web server as it will overload and overwork the server thus resulting in a degradation of it’s performance. Multiple web servers is the way to go to maintain it’s high availability.

Now, how do we achieve this so called high availability?

A load balancer sits in front of your server distributing millions of user requests across a number of web servers. They improve the overall performance of applications by decreasing the burden on servers associated…

Computer Science Student at Universitas Indonesia

Get the Medium app

A button that says 'Download on the App Store', and if clicked it will lead you to the iOS App store
A button that says 'Get it on, Google Play', and if clicked it will lead you to the Google Play store