diff --git a/_posts/2019-02-26-introduction.md b/_posts/2019-02-26-introduction.md
index bc87dd0b9ac60915488b6eb57b1a4893a50ff3d4..35b90896f41aead5620ddaeddfa7a12b34feca66 100644
--- a/_posts/2019-02-26-introduction.md
+++ b/_posts/2019-02-26-introduction.md
@@ -13,18 +13,18 @@ di tim kami ada:
 <!--more-->
 
 __Fata Nugraha__ dan __Ragil Al Badrun Pasaribu__  
-![fata](/assets/images/fata-edit.jpeg)
-![ragil](/assets/images/ragil-edit.jpeg)
+![fata](/assets/images/2019-02-26-introduction/fata-edit.jpeg)
+![ragil](/assets/images/2019-02-26-introduction/ragil-edit.jpeg)
 
 __Tirta Abimanyu Purnomo__ dan __Usama__  
-![abi](/assets/images/abi-edit.jpeg)
-![usama](/assets/images/usama-edit.jpeg)
+![abi](/assets/images/2019-02-26-introduction/abi-edit.jpeg)
+![usama](/assets/images/2019-02-26-introduction/usama-edit.jpeg)
 
 dan...
 
 __Yogi Lesmana__  
-![yogi](/assets/images/yogi-edit.jpeg)  
-*Foto-foto di atas diambil saat _study tour_ tentang kapal.
+![yogi](/assets/images/2019-02-26-introduction/yogi-edit.jpeg)  
+\*Foto-foto di atas diambil saat _study tour_ tentang kapal.
 
 Dalam satu semester ini, tim kami akan mengembangkan suatu sistem untuk
 memanajemen *log* yang merupakan proyek dari Badan Pengkajian dan Penerapan
@@ -35,7 +35,7 @@ yang berada di *data center* BPPT dan mengelola log tersebut agar pengguna dapat
 mendapat laporan tentang serangan yang sedang terjadi, mencari informasi yang
 terkait dengan log serangan, dan menganalisa suatu serangan.
 
-![Mockup](/assets/images/mockup.jpeg)  
+![Mockup](/assets/images/2019-02-26-introduction/mockup.jpeg)  
 Gambar 1: Mockup Dashboard
 
 Salah satu tantangan yang saat ini berusaha kami pecahkan adalah masalah
diff --git a/_posts/2019-02-27-agile&tdd.md b/_posts/2019-02-27-agile&tdd.md
index 7f74cd0e2997c5faa32c80f1216ced91c1786131..0fda71b5f5102f3b8757eb643a12a3d88695a7e8 100644
--- a/_posts/2019-02-27-agile&tdd.md
+++ b/_posts/2019-02-27-agile&tdd.md
@@ -11,11 +11,11 @@ Halo, di post kali ini saya akan menjelaskan tentang _workflow_ tim kami dengan
 
 Di Agile, semua pekerjaan yang akan dilakukan dibagi-bagi kedalam **Product Backlog Item** (PBI). Contoh: Fitur Login/Logout
 
-![pbi](/assets/images/pbi.jpg)
+![pbi](/assets/images/2019-02-27-agile&tdd/pbi.jpg)
 
 Lalu akan dipilih PBI apa yang akan dikerjakan pada rentang 2 minggu dari sekarang. Rentang 2 minggu tersebut disebut dengan **sprint**
 
-![sprint](/assets/images/pbisprint.jpg)
+![sprint](/assets/images/2019-02-27-agile&tdd/pbisprint.jpg)
 
 Sebelum memulai sprint, PBI yang dipilih dipecah lagi menjadi unit pekerjaan terkecil yang disebut **task**. Contoh: Membuat test fungsi login.
 
@@ -23,11 +23,11 @@ Task-task tersebut akan diassign ke anggota tim setiap **Daily Stand Up**. Daily
 
 Setiap daily stand up, task-task yang sudah selesai ditandai menjadi done dan anggota tersebut bisa mengerjakan task yang lain.
 
-![tasks](/assets/images/tasks.jpg)
+![tasks](/assets/images/2019-02-27-agile&tdd/tasks.jpg)
 
 Jika menggunakan project management tools seperti jira, dapat dilihat grafik jumlah task yang sudah selesai dikerjakan selama sprint berjalan. Disebut juga dengan **Burndown Chart**.
 
-![burndown](/assets/images/burndownchart.png)
+![burndown](/assets/images/2019-02-27-agile&tdd/burndownchart.png)
 
 Setelah sprint selesai, dilakukan Sprint Retrospective untuk meninjau apakah ada kekurangan atau kelebihan kerja tim pada satu sprint sebelumnya.
 
@@ -39,4 +39,4 @@ Untuk fitur backend, kami menggunakan library **unittest** bawaan Django. Untuk
 
 Selama test belum _pass_, setiap commit message harus diawali dengan tag \[RED\]. Baru setelah semua test berhasil dipenuhi, commit message diawali dengan tag \[GREEN\].
 
-![tddcycle](/assets/images/tddcycle.png)
+![tddcycle](/assets/images/2019-02-27-agile&tdd/tddcycle.png)
diff --git a/_posts/2019-02-27-deployment.md b/_posts/2019-02-27-deployment.md
index 3c8428c8110fa5b273f433dfcb12a0eef7955488..ba4ebd31904757018c2ffa4dba033ae6ab2bc972 100644
--- a/_posts/2019-02-27-deployment.md
+++ b/_posts/2019-02-27-deployment.md
@@ -93,7 +93,7 @@ backend:deploy:staging:
       - .gitlab-ci.yml
 ```
 
-![Paralel Pipeline](/assets/images/paralel-pipeline.png)
+![Paralel Pipeline](/assets/images/2019-02-27-deployment/paralel-pipeline.png)
 
 Karena kami menggunakan strategi __monorepo__, GitLab CI/CD di versi terbaru
 menyediakan fitur  yang cukup membantu dengan subtag `changes` dari tag `only`
diff --git a/_posts/2019-02-28-go-testing.md b/_posts/2019-02-28-go-testing.md
index db04d48b03ecf47fab14f4a7eb66032e80b3244f..a393cfc9304128c3aa50f55b635ff23e1e3ca543 100644
--- a/_posts/2019-02-28-go-testing.md
+++ b/_posts/2019-02-28-go-testing.md
@@ -12,7 +12,7 @@ yang kami dapatkan saat mencoba membuat API menggunakan Go.
 <!--more-->
 
 Ternyata testing di dalam Go tidak semudah yang saya bayangkan.
-![](/assets/images/pikachu.jpeg)
+![](/assets/images/2019-02-28-go-testing/pikachu.jpeg)
 
 Karena selama ini saya dimanjakan dengan mudahnya mock function di bahasa yang
 bisa melakukan dynamic loading seperti `python` dan `Java`, ternyata melakukan
@@ -29,11 +29,11 @@ menjadi masalah.
 Pada saat pertama kali saya membaca ini, saya memikirkan hal yang sama dengan
 apa yang dinyatakan oleh orang ini
 
-![](/assets/images/comment-1.png)
+![](/assets/images/2019-02-28-go-testing/comment-1.png)
 
 Tetapi saat saya membaca komentar ini, saya cukup setuju juga.
 
-![](/assets/images/comment-2.png)
+![](/assets/images/2019-02-28-go-testing/comment-2.png)
 **fair enough**
 
 Kode yang didesain dengan bagus, selain memudahkan untuk testing, memudahkan kita
diff --git a/_posts/2019-02-28-gpt.md b/_posts/2019-02-28-gpt.md
index 40024650dedca58801f74f3701e02f6ffb9e9778..5fbbf171cea95677294ed9c2eb681271dc8a3f1d 100644
--- a/_posts/2019-02-28-gpt.md
+++ b/_posts/2019-02-28-gpt.md
@@ -40,9 +40,9 @@ Berikut akan saya jelaskan secara singkat perintah beserta keterangannya:
 
 **branch** - perintah ini dapat digunakan untuk membuat cabang baru, menghapus cabang spesifik, dan melist semua cabang lokal
 
-Perintah-perintah yang lainnya dapat dilihat selengkapnya di [sini] (https://about.gitlab.com/images/press/git-cheat-sheet.pdf)
+Perintah-perintah yang lainnya dapat dilihat selengkapnya di [sini](https://about.gitlab.com/images/press/git-cheat-sheet.pdf)
 
-![](/assets/images/git.png)
+![](/assets/images/2019-02-28-gpt/git.png)
 
 **Persona**
 
@@ -58,7 +58,7 @@ Menurut Nielsen, terdapat 4 buah perspektif berbeda dari persona, yaitu:
 
 **Fictional** - muncul bukan dari riset pengguna, melainkan dari pengalaman tim desain UX.
 
-![](/assets/images/persona.jfif)
+![](/assets/images/2019-02-28-gpt/persona.jfif)
 
 **TDD**
 
@@ -71,6 +71,6 @@ Inti dari TDD adalah Red-Green-Refactor.
 
 **Refactor** - Inti dari fase ini adalah mengubah kode menjadi lebih baik
 
-![](/assets/images/tdd.png)
+![](/assets/images/2019-02-28-gpt/tdd.png)
 
 Sekian cerita saya untuk minggu ini. Terima kasih telah membaca.
\ No newline at end of file
diff --git a/_posts/2019-03-20-agile.md b/_posts/2019-03-20-agile.md
index 7e3856096742c5c90f9c2ee83e48c3f3631eda48..ca4ada26c3e40dcdfce54253b71b85138364e958 100644
--- a/_posts/2019-03-20-agile.md
+++ b/_posts/2019-03-20-agile.md
@@ -15,7 +15,7 @@ Awalnya rencana kami dalam menyelesaikan _project_ ini menggunaka **go** dan **r
 
 Setelah menyelesaikan _Sprint 1_ kami melakukan _Sprint Retrospective_
 
-![ ](/assets/images/usama_sprint_retro.png)
+![ ](/assets/images/2019-03-20-agile/usama_sprint_retro.png)
 
 Di _Sprint Retrospective_ yang pertama masih biasa-biasa saja, mungkin karena fitur kami diterima oleh _Product Owner_ dan _Scrum Master_ akan memberikan satu **teh kotak** kepada anggota yang paling produktif pada _Daily Scrum_ setelah ini. Setelah melakukan _cycle_ yang kedua barulah _Sprint Retrospective_ berbeda dari yang pertama, mungkin karena fitur kami tidak jadi (berbeda dengan _Sprint Review 1_). _Sprint Retrospective_ ini juga banyak menghasilkan _feedback_ negatif kemudian Pak Adin menyuruh kita untuk mencari _Silver lining_ dari _Sprint_ yang telah kita lakukan, akhirnya kami-pun menemukan beberapa.
 
@@ -24,6 +24,6 @@ Di _Sprint Retrospective_ yang pertama masih biasa-biasa saja, mungkin karena fi
 
 Ngoding bareng ini sudah bisa saya rasakan dampaknya, karena banyak _tasks_ yang selesai dari sebelumnya. Hal ini dikarenakan saat ngoding bareng kami berkomitmen untuk bekerja.
 
-![_Scrum Board_ terakhir kami, sudah ada WIP yang pindah ke DONE karena ngoding bareng](/assets/images/usama_latest_scrum_board.jpg)
+![_Scrum Board_ terakhir kami, sudah ada WIP yang pindah ke DONE karena ngoding bareng](/assets/images/2019-03-20-agile/usama_latest_scrum_board.jpg)
 
 Terima kasih sudah membaca.
\ No newline at end of file
diff --git a/_posts/2019-03-20-tdd.md b/_posts/2019-03-20-tdd.md
index e6ee35df0190d46f175e2cff4247647c57325457..b6134880c6a687ab1aef60e422744eb713f65eca 100644
--- a/_posts/2019-03-20-tdd.md
+++ b/_posts/2019-03-20-tdd.md
@@ -9,7 +9,7 @@ Pengalaman melakukan TDD (Test Driven Development) selama pengerjaan _project_.
 
 <!--more-->
 
-![http://www.agilenutshell.com/test_driven_development](/assets/images/usama_tdd.png)
+![http://www.agilenutshell.com/test_driven_development](/assets/images/2019-03-20-tdd/usama_tdd.png)
 
 Saya mendapat tugas untuk membuat model dari fitur _users_. Awalnya saya kebingungan untuk membuat _test_ yang akan dilakukan, karena saya berpikir jika menggunakan test untuk _count_ atau _create_ bukan merupakan TDD karena saya menguji fungsi yang sudah dibuat oleh **django**. Setelah berkonsultasi dengan Pak Adin saya diberi sebuah pencerahan. TDD bisa dilakukan dengan menentukan atribut apa yang akan ada di model seperti `.name`, `.username`, dll.
 
diff --git a/_posts/2019-04-01-django-tdd.md b/_posts/2019-04-01-django-tdd.md
new file mode 100644
index 0000000000000000000000000000000000000000..0398c15e5c6b86a51d30502c81a87741d9e1355e
--- /dev/null
+++ b/_posts/2019-04-01-django-tdd.md
@@ -0,0 +1,56 @@
+---
+layout: post
+title: TDD with Django
+date: 2019-04-01 14.01.23 +0700
+author: ragil
+---
+
+Untuk melakukan TDD (Test Driven Development), kita harus mengetahui bagaimana cara membuat test
+dengan baik dan benar dalam _framework_ yang digunakan. Dalam blog ini akan dijelaskan secara 
+singkat bagaimana cara membuat test menggunakan framework Django.
+
+<!--more-->
+
+Untuk membuat test, maka pertama-tama kita harus membuat class yang meng-inherit class `django.test.TestCase`.
+
+```python
+from django.test import TestCase
+from myapp.models import Human
+
+class HumanTest(TestCase):
+    pass
+```
+Lalu di dalam class buat tiap fungsi untuk melakukan test. Contoh kita ingin melakukan mengecek nama 
+dari object Human yang dibuat.
+
+```python
+from django.test import TestCase
+from myapp.models import Human
+
+class HumanTest(TestCase):
+
+    def testHumanName(self):
+        human = Human.objects.create(name="Fata")
+        self.assertEqual(human.get_name(), "Fata")
+```
+Di atas kita melakukan pengecekan dengan `self.assertEqual()`. Tidak hanya `assertEqual()` Python juga
+menyediakan seperti `assertIn` dan sebagainya, silahkan di-explore sendiri :D
+
+Kadang kala kita membutuhkan object yang dipakai di berbagai fungsi test. Kita bisa saja membuat object
+di tiap fungsi test, tetapi ini akan sangat melelahkan. Karenanya, kita dapat memanfaatkan fungsi
+`setUp()` untuk itu.
+
+```python
+from django.test import TestCase
+from myapp.models import Human
+
+class HumanTest(TestCase):
+
+    def setUp(self):
+        self.human = human = Human.objects.create(name="Fata")
+
+    def testHumanName(self):        
+        self.assertEqual(self.human.get_name(), "Fata")
+```
+
+Sekian tutorial singkat test dengan Django :D
diff --git a/assets/images/abi-edit.jpeg b/assets/images/2019-02-26-introduction/abi-edit.jpeg
similarity index 100%
rename from assets/images/abi-edit.jpeg
rename to assets/images/2019-02-26-introduction/abi-edit.jpeg
diff --git a/assets/images/fata-edit.jpeg b/assets/images/2019-02-26-introduction/fata-edit.jpeg
similarity index 100%
rename from assets/images/fata-edit.jpeg
rename to assets/images/2019-02-26-introduction/fata-edit.jpeg
diff --git a/assets/images/mockup.jpeg b/assets/images/2019-02-26-introduction/mockup.jpeg
similarity index 100%
rename from assets/images/mockup.jpeg
rename to assets/images/2019-02-26-introduction/mockup.jpeg
diff --git a/assets/images/ragil-edit.jpeg b/assets/images/2019-02-26-introduction/ragil-edit.jpeg
similarity index 100%
rename from assets/images/ragil-edit.jpeg
rename to assets/images/2019-02-26-introduction/ragil-edit.jpeg
diff --git a/assets/images/usama-edit.jpeg b/assets/images/2019-02-26-introduction/usama-edit.jpeg
similarity index 100%
rename from assets/images/usama-edit.jpeg
rename to assets/images/2019-02-26-introduction/usama-edit.jpeg
diff --git a/assets/images/yogi-edit.jpeg b/assets/images/2019-02-26-introduction/yogi-edit.jpeg
similarity index 100%
rename from assets/images/yogi-edit.jpeg
rename to assets/images/2019-02-26-introduction/yogi-edit.jpeg
diff --git a/assets/images/burndownchart.png b/assets/images/2019-02-27-agile&tdd/burndownchart.png
similarity index 100%
rename from assets/images/burndownchart.png
rename to assets/images/2019-02-27-agile&tdd/burndownchart.png
diff --git a/assets/images/pbi.jpg b/assets/images/2019-02-27-agile&tdd/pbi.jpg
similarity index 100%
rename from assets/images/pbi.jpg
rename to assets/images/2019-02-27-agile&tdd/pbi.jpg
diff --git a/assets/images/pbisprint.jpg b/assets/images/2019-02-27-agile&tdd/pbisprint.jpg
similarity index 100%
rename from assets/images/pbisprint.jpg
rename to assets/images/2019-02-27-agile&tdd/pbisprint.jpg
diff --git a/assets/images/tasks.jpg b/assets/images/2019-02-27-agile&tdd/tasks.jpg
similarity index 100%
rename from assets/images/tasks.jpg
rename to assets/images/2019-02-27-agile&tdd/tasks.jpg
diff --git a/assets/images/tddcycle.png b/assets/images/2019-02-27-agile&tdd/tddcycle.png
similarity index 100%
rename from assets/images/tddcycle.png
rename to assets/images/2019-02-27-agile&tdd/tddcycle.png
diff --git a/assets/images/paralel-pipeline.png b/assets/images/2019-02-27-deployment/paralel-pipeline.png
similarity index 100%
rename from assets/images/paralel-pipeline.png
rename to assets/images/2019-02-27-deployment/paralel-pipeline.png
diff --git a/assets/images/comment-1.png b/assets/images/2019-02-28-go-testing/comment-1.png
similarity index 100%
rename from assets/images/comment-1.png
rename to assets/images/2019-02-28-go-testing/comment-1.png
diff --git a/assets/images/comment-2.png b/assets/images/2019-02-28-go-testing/comment-2.png
similarity index 100%
rename from assets/images/comment-2.png
rename to assets/images/2019-02-28-go-testing/comment-2.png
diff --git a/assets/images/pikachu.jpeg b/assets/images/2019-02-28-go-testing/pikachu.jpeg
similarity index 100%
rename from assets/images/pikachu.jpeg
rename to assets/images/2019-02-28-go-testing/pikachu.jpeg
diff --git a/assets/images/git.png b/assets/images/2019-02-28-gpt/git.png
similarity index 100%
rename from assets/images/git.png
rename to assets/images/2019-02-28-gpt/git.png
diff --git a/assets/images/persona.jfif b/assets/images/2019-02-28-gpt/persona.jfif
similarity index 100%
rename from assets/images/persona.jfif
rename to assets/images/2019-02-28-gpt/persona.jfif
diff --git a/assets/images/tdd.png b/assets/images/2019-02-28-gpt/tdd.png
similarity index 100%
rename from assets/images/tdd.png
rename to assets/images/2019-02-28-gpt/tdd.png
diff --git a/assets/images/usama_latest_scrum_board.jpg b/assets/images/2019-03-20-agile/usama_latest_scrum_board.jpg
similarity index 100%
rename from assets/images/usama_latest_scrum_board.jpg
rename to assets/images/2019-03-20-agile/usama_latest_scrum_board.jpg
diff --git a/assets/images/usama_sprint_retro.png b/assets/images/2019-03-20-agile/usama_sprint_retro.png
similarity index 100%
rename from assets/images/usama_sprint_retro.png
rename to assets/images/2019-03-20-agile/usama_sprint_retro.png
diff --git a/assets/images/usama_tdd.png b/assets/images/2019-03-20-tdd/usama_tdd.png
similarity index 100%
rename from assets/images/usama_tdd.png
rename to assets/images/2019-03-20-tdd/usama_tdd.png
diff --git a/assets/images/scrumboard.jpg b/assets/images/scrumboard.jpg
deleted file mode 100644
index 41d054d7fba74e3d8e53dc1e68f296f8450e3282..0000000000000000000000000000000000000000
Binary files a/assets/images/scrumboard.jpg and /dev/null differ
diff --git a/assets/images/stackoverflow-comments.png b/assets/images/stackoverflow-comments.png
deleted file mode 100644
index 49d1e847ac561c823c12e27474028f7cbfcc4689..0000000000000000000000000000000000000000
Binary files a/assets/images/stackoverflow-comments.png and /dev/null differ