What the most interesting part when you learn how to build an application? For me, this is when I can store my data on the database. Although it has some difficult concepts, you’ll feel proud when you can implement them.

In the last part, you learn how to navigate from the home screen into student form. But, you still not persistent your record, so you cannot access your data again.

In this part, you will learn how to do that. You will learn how to use Room database persistence. And finally, you also will learn some concepts about RxJava.


Now, you will start your journey to create a navigation graph using Jetpack Navigation Component.

In this chapter, you will use one activity multiple fragments architecture with help of the Navigation Component. It makes the handling screen processes easier.

Without further talks, let’s start !!


For each chapter, I will provide three links:

zip , diff, repo

Let’s add the navigation dependency first. Open build.gradle for the app-level and add

If you want to master a language, or a framework, build something on top of it!

In this series, you will end up building a simple student attendance application using Kotlin.

You also learn how to use the jetpack features such as navigation, camerax, room. And you also learn how to use MVVM and the repository pattern in android.

I have some assumption about you:

Let’s get started


Your previous webview application is already great. But, sometimes you need to use another approach to handle that.

For example, if you want to use webview inside a fragment, not directly on activity.

In this last part, you will implement two webview, each will open different pages. And you can swipe right / left between them. You will utilize ViewPager2 and the TabLayout, fix the vertical scrolling problem when using ViewPager2, and the back pressing problem.

ViewPager2, what is it

When you need to do slides between views, or fragments, you can use ViewPager2. ViewPager2 is a successor of ViewPager with several advantages that…

Imagine that you have a website and need to create an android application and you don’t need to consume extra time or money to build it. You can use WebView to handle that.

The primary use of WebView is to display a web. The web term here is not the only remote website that is already deployed on the internet. But also the custom HTML/CSS/javascript that you own in your local.

In this tutorial, I will teach you how to use the WebView feature on the Android Studio using Kotlin language, and add some tips and tricks on it. …

Image from unsplash.com



When work with user permission, sometimes we need to hide some field for particular user not other. In Django, you can use approaches that I will mention here in this article.

The objectives of this article are:

Lets dive into the problem definition or the user story.

1. Problem Definition

User Story

A teacher can create a quiz, write description, and questions for that quiz.

But, Don’t display the questions into student that not registered into that quiz. Only teacher who create the quiz, and registered user can see the questions of the quiz.

Plus: the quiz will…


In this tutorial, I will show you how to implement google recaptcha v3 into your django app.

I also already create a simple django app, and what we will do here only to integrate the google recaptcha v3 in some views.

Let’s get started.

Clone App

Clone https://github.com/ihfazhillah/django-recaptchav3-example , then optionally create a virtualenv. Install the dependency.

FYI, the repo has 2 branches. master and final. Just start with master branch, and you can get the final result in the final branch.

Step 1: Register Google Recaptcha and Choose v3

Go to https://g.co/recaptcha/v3 , then create a new site.

Berawal dari sebuah ide, scraping website bermodalkan sebuah template. Template ini adalah spesifikasi bentuk data yang akan di dapatkan.

Output dari program adalah data yang telah kamu spesifikasikan.

Misalkan ada template seperti berikut:

{ "name": { "expression": "//p[@class='name']/text()", "type": "xpath", "getter": "getall" } }

dan akan mengembalikan data dengan bentuk kurang lebih :

{ "name": ["Ihfazh", "sakinah", "fukaihah"] }

Beberapa keuntungan menggunakan konsep seperti ini:

>> Originally published at blog.ihfazh.com on December 2, 2018. Please read the original tutorial for proper formatting.

Hi folks, in this article we will create 3 custom widgets for django apps. The widget in the django term is a field html display in the form. For instance, CharField this default widget is TextInput that render <input type='text' ..../>. FileField the default widget is FileInput that render <input type='file' .../>.

We will create a toggle widget, 2 select that use select2 component, and the last is a file input using dropzone. We will walk step by step from the easy one…

Hello everyone, in this article i will focus on the deployment part of my last article and make some modification in order to work properly.

Have you already solve the puzzle? I have created a repository for my script. You can check it here. Analyze it and extends it. You can do it :).

Lets talk about deployment…

For this project, i want to deploy my script in the free plan. I have tried several SaaS, but i select the heroku one. No credit card required, and its enough for my purpose.

Create an account there, and download the heroku…

Muhammad Ihfazhillah

Teacher, freelancer software developer. Mainly code using python for scraping and web development.

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