(Source: https://www.instagram.com/khat_santri/)
Tulisan ini saya buat ketika kedaan hati sedang sedikit campur aduk antara sedih, sendu, lemah, lesu. Dan lapar. Yang disebabkan oleh suatu hal yang tidak bisa saya tuliskan disini...
Lalu apa hubungannya dengan hari santri? tentu saja tidak ada, saya hanya ingin curhat (haha!). Baiklah, kita cukupkan saja candaan yang tak lucu ini.
.....
Karena cukup penasaran dengan makna kata santri dari segi bahasa, maka saya memutuskan untuk bertanya kepada al-mukarrom mbah google, dan sejurus kemudian saya menemukan makna dari istilah santri menurut KBBI (Kamus Besar Bahasa Indonesia):
"Santri /san·tri/ (n) (1) orang yang mendalami agama Islam; (2) orang yang beribadat dengan sungguh-sungguh; orang yang saleh;"
Jika dilihat dari pengertian-pengertian diatas, sudah hampir bisa dipastikan bahwa saya tidak termasuk didalamnya. Pertama, "orang yang mendalami agama Islam". Bagaimana mungkin bisa mendalami jika bahasa arab saja cuma tau kaifa haluka, sedangkan sumber rujukan utama untuk mendalami agama ini menggunakan bahasa arab? Maka sungguh benar apa yang pernah dikatakan oleh imam syafi'i, "Jika engkau tak sanggup untuk menahan letihnya belajar, maka kau akan merasakan pahitnya kebodohan". Dan selalu saja, penyesalan datang terlambat. Hati ini baru mau sedikit tergerak setelah mengecap kepahitan yang teramat banyak.
Lalu, apalagi untuk arti istilah yang kedua "orang yang beribadat dengan sungguh-sungguh; orang yang saleh", ini sungguh jauh jika dibandingkan dengan kegiatan saya sehari-hari yang acapkali menempatkan ibadah hanya sebagai "rutinitas" dan "selingan" semata. Maka dari itu, agaknya diri ini malu jika harus mengaku sebagai seorang santri.
Namun untungnya, Allah ﷻ masih memberikan nikmat nafas sampai detik ini, yang berarti masih terbuka lebar kesempatan untuk memperbaiki diri. Seperti yang pernah diungkapkan oleh guru saya, tak ada kata terlambat untuk belajar. Belajar menjadi lebih baik dan lebih baik lagi.
Akhirulkalam,
Selamat Hari Santri Nasional 2018
~ dari seorang santri wanna be yang fakir ilmu
PERFORMANCE
Hal pertama yang ingin saya coba dari Gravit Designer adalah performanya. Hal ini dikarenakan selama menggunakan Inkscape apabila objek yang diedit sudah mencapai jumlah tertentu, maka komputer akan mulai terasa lag.
Oleh karena itu untuk mengukur kemampuan masing-masing software saya mencoba membuat objek lingkaran dengan bentuk yang sama kemudian lingkaran tersebut saya gandakan mencapai jumlah tertentu. Dari hasil percobaan tersebut, software Gravit Designer hanya mampu menangani 768 objek lingkaran sebelum software tersebut terasa cukup berat untuk digunakan. Sedangkan pada Inkscape, masih bisa berjalan cukup lancar setidaknya sampai jumlah objek mencapai 3000an buah. Perbedaan yang cukup signifikan, setidaknya itu yang saya rasakan di mesin komputer saya (sebagai informasi, saya menggunakan Inkscape versi 0.48.4 dan Gravit Designer versi 3.4.1)
TEMPLATE
Salah satu hal yang menarik dari Gravit Designer dibandingkan Inkscape adalah banyaknya template bawaan yang disediakan secara gratis. Ini sangat memudahkan bagi kita jika ingin membuat sebuah design, tinggal load template lalu edit seperlunya, dan kita akan merasa seperti seorang design grafis profesional (haha!).
EXPORT, OPEN, AND SAVE FILE
Untuk bagian file yang disupport oleh kedua software, Inkscape agak lebih unggul dibandingkan Gravit Designer. Karena Inkscape dapat membuka ekstensi file yang cukup banyak digunakan oleh para designer grafis yaitu .ai (file Adobe Illustrator) dan .cdr (file Corel Draw), sedangkan Gravit Designer
PALLETE
Salah satu fitur yang saya suka dari inkscape adalah kita dapat membuat pallete warna kita sendiri, sehingga kita dapat mengatur preset warna yang akan kita gunakan untuk membuat desain. Kita juga bisa saling berbagi pallete warna yang telah kita buat maupun menggunakan pallete warna yang dibuat oleh orang lain secara leluasa. Kenapa harus berbagi? karena kata iklan, berbagi itu indah. Untuk melakukan custom pun relatif mudah, kita tinggal menambahkan atau mengedit file yang ada di direktori C:\Program Files (x86)\Inkscape\share\palettes lalu restart aplikasi Inkscape, maka pallete yang kita buat atau edit akan otomatis muncul.
Sayangnya fitur ini belum ditemukan pada Gravit Designer. Namun begitu, setelah berselancar beberapa saat, saya menemukan di forum Gravit Designer bahwa developer software ini akan mempertimbangkan untuk mendevelop fitur custom pallete untuk ke depannya.
Walaupun belum mempunyai fitur custom pallete, ada satu fitur yang cukup menarik dari Gravit Designer ini, yaitu kita bisa mengambil pallete dari gambar yang dimuat di workspace. Caranya pun cukup mudah, kita tinggal klik gambar yang kita kehendaki, lalu klik color pada tab bagian kanan, maka otomatis muncul pallete dari komposisi warna pada gambar yang kita klik.
EFFECT AND FILTER
Lagi-lagi, untuk bagian ini saya lebih memilih Inkscape dibanding Gravit Designer. Selain jumlah filter dan effect nya lebih banyak, kita juga bisa membuat filter buatan kita sendiri (walaupun bukan hal yang cukup mudah, karena memrlukan keahlian bahasa pemrograman tertentu). Dan lagi, ada satu effect bawaan inkscape yang saya suka, yaitu randomize color. Dengan effect ini, kita dapat membuat pewarnaan pada gambar WPAP dengan sangat cepat dan tidak memerlukan banyak tenaga.
SHORTCUT
Selain membuat custom pallete, pada Inkscape juga bisa melakukan custom shortcut. Bahkan kita bisa membuat shortcut sendiri pada fungsi yang secara default belum disediakan shortcut nya oleh Inkscape. Caranya, kita tinggal masuk ke direktori C:\Program Files (x86)\Inkscape\share\keys lalu edit file default.xml.
Lain halnya dengan Gravit Designer, saya belum menemukan fitur custom shortcut pada software ini. Bahkan ada beberapa fungsi yang menurut saya penting (seperti Union, Difference, Intersection) yang tidak memiliki shortcut. Dan hal tersebut cukup merepotkan, karena saya sudah terbiasa menggunakan shortcut untuk fungsi-fungsi tersebut.
KESIMPULAN
Jadi kesimpulannya, mana yang terbaik antara Inkscape dan Gravit Designer?
Yang terbaik adalah install kedua-duanya dan gunakan sesuai kebutuhan, sekian.

Beberapa waktu yang lalu, saya memutuskan menggunakan backend Tensorflow pada package Keras setelah sebelumnya menggunakan backend Theano. Namun saat pertama kali akan menginstall package Tensorflow, proses installasi tidak berjalan begitu mulus, muncul error di console sebagai berikut
Traceback (most recent call last):
File "C:\Users\abimahan\AppData\Local\Programs\Python\Python36\lib\site-packages\tensorflow\python\pywrap_tensorflow_internal.py", line 14, in swig_import_helper
return importlib.import_module(mname)
File "C:\Users\abimahan\AppData\Local\Programs\Python\Python36\lib\importlib\__init__.py", line 126, in import_module
return _bootstrap._gcd_import(name[level:], package, level)
File "", line 994, in _gcd_import
File "", line 971, in _find_and_load
File "", line 955, in _find_and_load_unlocked
File "", line 658, in _load_unlocked
File "", line 571, in module_from_spec
File "", line 922, in create_module
File "", line 219, in _call_with_frames_removed
ImportError: DLL load failed: A dynamic link library (DLL) initialization routine failed.
During handling of the above exception, another exception occurred:
Traceback (most recent call last):
File "C:\Users\abimahan\AppData\Local\Programs\Python\Python36\lib\site-packages\tensorflow\python\pywrap_tensorflow.py", line 58, in
from tensorflow.python.pywrap_tensorflow_internal import *
File "C:\Users\abimahan\AppData\Local\Programs\Python\Python36\lib\site-packages\tensorflow\python\pywrap_tensorflow_internal.py", line 17, in
_pywrap_tensorflow_internal = swig_import_helper()
File "C:\Users\abimahan\AppData\Local\Programs\Python\Python36\lib\site-packages\tensorflow\python\pywrap_tensorflow_internal.py", line 16, in swig_import_helper
return importlib.import_module('_pywrap_tensorflow_internal')
File "C:\Users\abimahan\AppData\Local\Programs\Python\Python36\lib\importlib\__init__.py", line 126, in import_module
return _bootstrap._gcd_import(name[level:], package, level)
ModuleNotFoundError: No module named '_pywrap_tensorflow_internal'
During handling of the above exception, another exception occurred:
Traceback (most recent call last):
File "F:\Kuliah\Tesis\Progres Tesis\Script\progress\test LSTM\_LSTM.py", line 12, in
from keras.models import Sequential
File "C:\Users\abimahan\AppData\Local\Programs\Python\Python36\lib\site-packages\keras\__init__.py", line 3, in
from . import utils
File "C:\Users\abimahan\AppData\Local\Programs\Python\Python36\lib\site-packages\keras\utils\__init__.py", line 6, in
from . import conv_utils
File "C:\Users\abimahan\AppData\Local\Programs\Python\Python36\lib\site-packages\keras\utils\conv_utils.py", line 9, in
from .. import backend as K
File "C:\Users\abimahan\AppData\Local\Programs\Python\Python36\lib\site-packages\keras\backend\__init__.py", line 84, in
from .tensorflow_backend import *
File "C:\Users\abimahan\AppData\Local\Programs\Python\Python36\lib\site-packages\keras\backend\tensorflow_backend.py", line 5, in
import tensorflow as tf
File "C:\Users\abimahan\AppData\Local\Programs\Python\Python36\lib\site-packages\tensorflow\__init__.py", line 22, in
from tensorflow.python import pywrap_tensorflow # pylint: disable=unused-import
File "C:\Users\abimahan\AppData\Local\Programs\Python\Python36\lib\site-packages\tensorflow\python\__init__.py", line 49, in
from tensorflow.python import pywrap_tensorflow
File "C:\Users\abimahan\AppData\Local\Programs\Python\Python36\lib\site-packages\tensorflow\python\pywrap_tensorflow.py", line 74, in
raise ImportError(msg)
ImportError: Traceback (most recent call last):
File "C:\Users\abimahan\AppData\Local\Programs\Python\Python36\lib\site-packages\tensorflow\python\pywrap_tensorflow_internal.py", line 14, in swig_import_helper
return importlib.import_module(mname)
File "C:\Users\abimahan\AppData\Local\Programs\Python\Python36\lib\importlib\__init__.py", line 126, in import_module
return _bootstrap._gcd_import(name[level:], package, level)
File "", line 994, in _gcd_import
File "", line 971, in _find_and_load
File "", line 955, in _find_and_load_unlocked
File "", line 658, in _load_unlocked
File "", line 571, in module_from_spec
File "", line 922, in create_module
File "", line 219, in _call_with_frames_removed
ImportError: DLL load failed: A dynamic link library (DLL) initialization routine failed.
During handling of the above exception, another exception occurred:
Traceback (most recent call last):
File "C:\Users\abimahan\AppData\Local\Programs\Python\Python36\lib\site-packages\tensorflow\python\pywrap_tensorflow.py", line 58, in
from tensorflow.python.pywrap_tensorflow_internal import *
File "C:\Users\abimahan\AppData\Local\Programs\Python\Python36\lib\site-packages\tensorflow\python\pywrap_tensorflow_internal.py", line 17, in
_pywrap_tensorflow_internal = swig_import_helper()
File "C:\Users\abimahan\AppData\Local\Programs\Python\Python36\lib\site-packages\tensorflow\python\pywrap_tensorflow_internal.py", line 16, in swig_import_helper
return importlib.import_module('_pywrap_tensorflow_internal')
File "C:\Users\abimahan\AppData\Local\Programs\Python\Python36\lib\importlib\__init__.py", line 126, in import_module
return _bootstrap._gcd_import(name[level:], package, level)
ModuleNotFoundError: No module named '_pywrap_tensorflow_internal'
Failed to load the native TensorFlow runtime.
See https://www.tensorflow.org/install/install_sources#common_installation_problems
for some common reasons and solutions. Include the entire stack trace
above this error message when asking for help.
Setelah berselancar untuk menemukan jawaban, akhirnya saya mengetahui bahwa hal tersebut hanya terjadi jika saya menggunakan Tensorflow versi 1.6 keatas. Dan yang lebih membuat prihatin adalah, error tersebut hanya terjadi pada CPU yang belum support AVX feature (harap maklum, hardware yang saya gunakan sudah agak outdated untuk keperluan Deep Learning dan kawan-kawannya). Untuk itu, saya punya dua opsi jika ingin tetap menggunakan Tensorflow sebagai backend di Keras.
SOLUSI PERTAMA
Solusi pertama yang paling masuk akal adalah dengan melakukan downgrade dari Tensorflow versi 1.6 ke versi 1.5 atau yang lebih rendah dengan mengetikkan perintah berikut pada command prompt
pip install --upgrade --ignore-installed tensorflow==1.5
SOLUSI KEDUA
Solusi yang kedua adalah dengan menginstall package Tensorflow dengan menggunakan file .whl yang dibuild sesuai dengan arsitektur komputer saya. File .whl dapat di download melalui situs https://github.com/fo40225/tensorflow-windows-wheel/tree/master/1.6.0/py36/CPU/sse2 kemudian install file tersebut. Jika belum mengetahui bagaimana cara menginstall file .whl, dapat melihat di tutorial berikut.
Oke sekian, jika ada yang ingin didiskusikan dapat meninggalkan komentar dbawah.
Salam

Pada tulisan kali ini saya akan berbagi tentang cara update package pip yang sudah outdated. Kenapa kita harus update package pip yang sudah uotdated? Tentu saja, biar sangar.
Oke tak perlu berlama-lama lagi, pada artikel ini saya akan memberikan 2 alternatif cara untuk update package pip. Cara yang pertama adalah dengan melakukan update satu per satu, dan yang kedua adalah dengan melakukan update keseluruhan secara otomatis.
CARA PERTAMA
- Pada cara yang pertama ini adalah dengan melakukan cek terhadap package pip yang outdated dengan mengetikkan perintah berkut pada command prompt
pip list --outdated
- Setelah itu, melakukan update terhadap package yang ingin kita update dengan perintah berikut
pip install [package_name] --upgrade
CARA KEDUA
Pada cara kedua ini, kita akan melakukan update secara otomatis kepada semua package pip yang outdated. Perintah yang bisa ketikkan adalah sebagai berikut
pip list --outdated --format=freeze | grep -v '^\-e' | cut -d = -f 1 | xargs -n1 pip install -U
Sedangkan untuk versi pip yang lebih lama, dapat menggunakan perintah berikut
pip freeze --local | grep -v '^\-e' | cut -d = -f 1 | xargs -n1 pip install -U
Perintah grep digunakan untuk men-skip definisi package yang dapat diedit ("-e"). Sedangkan parameter -n1 pada perintah xargs digunakan untuk mencegah gagalnya update secara keseluruhan apabila ada satu package yang gagal di update.
Sekian untuk tulisan kali ini, salam.