Blockchain, Penggunaan, Masalah yang dihadapi

Blockchain diharapkan akan digunakan dalam berbagai bidang, seperti keuangan, perdagangan, pemerintahan, kesehatan, dan lainnya. Beberapa contoh penggunaan yang diharapkan adalah:
  • Sistem pembayaran yang lebih efisien dan aman
  • Penyimpanan data yang lebih aman dan mudah diakses
  • Smart contract yang memungkinkan transaksi otomatis
  • Supply chain management yang lebih transparan
  • Sistem voting yang lebih adil dan aman
  • Pencatatan aset digital yang aman dan mudah diakses
Namun, ada juga beberapa halangan yang harus diatasi sebelum penggunaan blockchain dapat digunakan secara luas, seperti regulasi yang belum jelas dan masalah skalabilitas.

Regulasi yang belum jelas dapat menghambat perkembangan dan penggunaan blockchain karena masih ada ketidakpastian tentang bagaimana teknologi ini harus diatur. Beberapa negara belum memiliki regulasi yang jelas mengenai penggunaan mata uang digital, smart contract, atau aset digital lainnya yang dibangun di atas blockchain. Hal ini dapat menimbulkan masalah bagi perusahaan atau individu yang ingin menggunakan teknologi ini dalam bisnis mereka.

Masalah skalabilitas di blockchain terkait dengan jumlah transaksi yang dapat ditangani oleh jaringan dalam satu periode waktu tertentu. Saat ini, beberapa jaringan blockchain seperti Bitcoin dan Ethereum hanya dapat menangani sekitar 7-15 transaksi per detik. Ini sangat sedikit jika dibandingkan dengan sistem pembayaran tradisional seperti Visa yang dapat menangani hingga 65,000 transaksi per detik. Ini menyebabkan masalah ketika jaringan sibuk dan membuat transaksi menjadi lambat atau terganggu. Beberapa solusi yang dikembangkan untuk mengatasi masalah skalabilitas ini, seperti SegWit, sharding dan off-chain scaling. Namun, masalah ini masih dalam proses pengembangan dan penyelesaiannya.

-- sumber dari chatGPT --

AWS Cloud: Stop an EC2 Instance using AWS Lambda when the Budget Amount is Reached

Hi all!

Good night and happy holiday! Here I would like to share with all of you about something an interesting case study that maybe you’ve done or come across soon.

Imagine the Developer Team in your company is still doing Proof-of-Concept related to a specific project for the user, and the user is strict about the cost. The Dev Team is using EC2 Instance and the maximum budget for EC2 Instance is only $5 per day.

You —as an infrastructure engineer are tasked to create an alert when a budget amount is reached. The alert will send a notification via email, and at the same time the user wants any running EC2 Instance will automatically stop for further investigation.

For this case, we will be using several services to make the goal is reached. The diagram is below:

First, to ensure the team’s cost usage is under control and tracked easily, we are able to use AWS Budget. This service is provided by AWS and will show our maximum budget for all or specific services. We are also able to define the threshold and connect it to Amazon SNS (Simple Notification Service), so the team will be notified. For example, we defined the maximum budget as $2 per day, and the alarm was triggered when it reached 80%. This is really something interesting. We don’t necessarily check it manually, and the team is notified automatically via email (for example).

How about a task to stop the EC2 Instance at the same time? Yup, AWS Lambda Function. We are able to use that service to ensure the EC2 instance is stopped when the alarm is triggered 🙂

Let’s break it down!

First, we have to configure the notification using Amazon SNS. There are two components that we have to set up. Topic and Subscription. Topic is similar to a channel that will send a broadcast message to subscribers we defined in a subscription, for example email and AWS Lambda. Both will receive a notification when the budget amount is reached.

To create a topic, you can follow the full guide here. The thing you must pay attention to is access policy. Add an additional policy so that Amazon SNS will get permission to publish a notification when the budget is reached. Below:

  "Sid": "E.g., AWSBudgetsSNSPublishingPermissions",
  "Effect": "Allow",
  "Principal": {
    "Service": ""
  "Action": "SNS:Publish",
  "Resource": "your topic ARN",
   "Condition": {
        "StringEquals": {
          "aws:SourceAccount": "<account-id>"
        "ArnLike": {
          "aws:SourceArn": "arn:aws:budgets::<account-id>:*"

Below is an example of topic I’ve created:

For the first subscription, follow the guide here and ensure the email is confirmed.

If the Amazon SNS is configured, we move on to the AWS Budget.

From the Management Console, find an AWS Budget menu and just click create button. In this case, I’m using Customize and Cost budget type like the one below.

I’m set for the period is to daily, and the amount is $2.

For the budget scope, because in this case, the Dev team only using EC2 Instances, we can configure to filter EC2 Instances only.

We can define the specific threshold for the alert. Below the example, if the usage is reached 80% of the budgeted amount, it will send the notification.

Who will receive the notification? Put the ARN Amazon SNS that we created before in the form. Ensure it is valid.

Until this step, a team that has the email will get a notification when the budget amount is reached 80%. After this, we have to configure AWS Lambda. We have to create a function that will execute to stop the EC2 Instance when the alert is triggered.

First, create a new policy and role in IAM so the AWS Lambda will have permission to stop EC2 Instance directly. Below is the policy in a JSON format:

    "Version": "2012-10-17",
    "Statement": [
            "Sid": "VisualEditor0",
            "Effect": "Allow",
            "Action": [
            "Resource": "*"

The policy I’ve created successfully:

Below is the role I’ve created successfully:

For the function in AWS Lambda, I’m using Python 3.7 runtime and for the execution role, choose the existing role we created before. Here, my existing role name is StopEC2Instance.

Below is the example code to stop EC2 instances. Paste into editor.

This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters. Learn more about bidirectional Unicode characters
import boto3
def GetInstanceRunning():
client = boto3.client('ec2')
ec2_regions = [region['RegionName'] for region in client.describe_regions()['Regions']]
for region in ec2_regions:
ec2 = boto3.resource('ec2')
instances = ec2.instances.filter(Filters=[{'Name': 'instance-state-name', 'Values': ['running']}])
return [ for instance in instances]
def StopInstance(ids=GetInstanceRunning()):
ec2 = boto3.client('ec2')
if not ids:
print("No Instance in the state Running or pending")
print('instance {} was shutdown'.format(ids))
def lambda_handler(event, context):

Go to the Test tab and click Test. Wait for a moment, and below is the result. It shows that there is one instance is shutting down.

Go to EC2 Instance, and the instance status is stopped 🙂

But wait! The function is run successfully when we click the Test button. How about ensuring that it will run when the budget is reached?

Just add a new Trigger 🙂

Set a new trigger into Amazon SNS that we created before.

It was added successfully, and whenever the alert rings, the function will automatically run to stop EC2 Instances.

Thank you!



My Journey: #RoadToGDE Mentorship Program

Hi all!

How are you?

I hope that you all good and healthy. By end of this year, I just want to share something great experience I’ve done from September until December 2022. Yup #RoadToGDE Mentorship Program.

That is an incredible journey, I thought. As long as 7 weeks, we as a mentee got opportunities to discuss all related technical and preparation to become a GDE with the real GDE directly and supported by Google.

GDE or Google Developer Expert is a program provided by Google for whoever has an interest and expert in their expertise. Not only experts but also actively contributing to the community and caring for each other. This is the part I am interested in. Sharing is caring. You can read more here.

I would like to say thousands of thanks , through this program, I’m able to meet Imre Nagi. My mentor during this mentorship. LinkedIn, GitHub, and Twitter.

Imre Nagi currently is a Tech Lead at Gojek, Indonesia. Besides that, he is also a GDE in Cloud Platform specialization. Match with the path I currently learn. He has lots of experience in technology he expertise, and also actively contributes to the communities. So inspiring me and making me keep moving, learning, and contributing too!

As I said, I got a lot of knowledge through mentoring, and through this journal, I would like to you all learn and get value too.

The mentoring is divided into seven-part from September to December. In each part, we will get a chance to 1o1 mentoring for around one hour with our mentor. Yup, each of the mentees will exclusively get a private mentor around the world.

I remember, my first mentoring was held on September 7th, 2022. One of the interesting things about my first mentoring is to always use the time as valuable as possible. Yup. The mentoring was only one hour, and it was a rare chance! For the first one hour, mas Imre shared about the GDE Program and his experience when becoming a GDE.

He had just goes back from study, at that time still a software engineer in a startup company in Indonesia, and at that time, he looking for a chance to become a GDE through a Google Developer Manager in Indonesia. He prepared the mock application, an gratefully, He accepted to become a GDE in Data. When mas Imre tells the story, I imagine how enthusiastic and incredible that moment was.

He asked me, with what media will I apply to a GDE Program? Youtube video, podcast, or technical blog? By the way, this media is important to whoever wants to apply GDE because it will be used as proof we actively contributing to the community.

These are the media Mas Imre used to actively contribute:

That was so huge and great. I preferred to choose my personal blog at :). I showed him that, and he gave me a task to create a technical blog for the next mentoring and expected I could write at least four blogs through this mentoring.

At the mentoring, Mas Imre said, “your writing is good enough; the step-by-step you’ve written is well-prepared. But there is no unique opinion you give in. So, why other people as a reader will read your writing whether they can read it fully on the documentation directly?”

Yup. That’s the point I forgot all along when I wrote a blog or when I spoke at a live event. I’ve not mentioned my opinion, pros and cons about the tools, or something brave takeaways like the comparison between the tools. That so makes me think about it deeply.

It continued to the 2nd and 3rd mentoring held on September 22nd, 2022, and October 7th, 2022. We discussed how to write a good technical blog, something straightforward to write about the point; you’re not necessarily to write all the steps because it is already written in the documentation. If you have to write a code, paste it to GitHub or Gist GitHub and embed it on your blog. Don’t hesitate to put your opinion there. Something about your definition by your experience, pros, and cons when you use the tools or when you compare the tools with others (for example, GKE vs Kubernetes vs EKS).

In the 4th and 5th mentoring, we discussed the mock application to apply for the GDE program. The mock application is divided into several parts, each of which is explained by mas Imre carefully. First, about the bio, and then about the reason for applying, which tells about why you want to apply for a GDE? which part do you want to apply? because there are several options like Google Cloud Platform, Web Development, Mobile, etc. The ends are in-person impact I’ve done which is an activity I spoke about and content I created for at least three years long.

I always thought that GDE was a program I could use to contribute more actively to the community. But, why GDE? If you want to contribute to the community, would it be much more difficult without being a GDE? What’s the problem? What is the impact of GDE, or what can Google support so you can solve the issue? Asked by Mas Imre, and made me think along the day 🙂

Yup, the keypoint is WHY. It’s not just about the goal, but the reason also. Something like when we troubleshoot the issue. Find the root cause, and solve the problem.

On the 6th mentoring, which was held on November 22th 2022, we discussed mock interview. Actually, when we apply for GDE, there are two interviews. First interview with other GDEs, will discuss the community itself and a bit of technical knowledge. The second interview is with Googler/Noogler (Google’s employee with expertise in the category we chose).

But, in this mentorship, we just do mock interviews for the first interview, which is a community interview. There will be three parts. The first is an introduction, the second is about the community itself, and the third is about a bit of technical knowledge.

Mas Imre acted as an interviewer and asked me several questions. The result is not smooth as I want. The bad moment was when I answered the questions:

  • Why do you want to become a GDE?
  • What is the workflow, and what happens inside the infrastructure when we run kubectl apply -f deployment.yaml?
  • CRD inside of Kubernetes

Maybe at the moment, I’m too confident and not creating something like a cheat sheet. So when I get unexpected questions, I need more time to think about the question, find the answer, and translate it into English first in my head and then say it. Too long and wordy. Mas Imre said it because we, as Indonesian, use English, not the daily language. So, when we want to talk using English, we have to think about it in Indonesian first, and our brain has to translate it into English, and yes, there is a need for more time. It is normal, and we have to reduce the time to make it more smooth.

Mas Imre gave me advice like: do practically English every day in small cases; for example, when you are on the road and see a traffic sign, billboard, etc., Try to say that in English. Make you used to English. He gives me one chance to do it again at the next mentoring session.

The last mentoring was held this week, on 27th December 2022. Why was the gap between the previous mentoring one month? Because there were DevFest 2022 events held in several cities, we focused on there first, and mas Imre gave me more time to prepare the mock interview (thank you!).

The 2nd community interview was similar to the first interview, and I tried to be more fluent by creating a cheat sheet (I tried at home several times a day to achieve it :D). Mas Imre said that the second one is good enough with some advice. First, keep moving because we still learning (especially in English). He also gives me correctness in some questions to make my answer is more clear, and we take a photo 🙂

I would like to thanks to #RoadToGDE committee too. The Kits just arrived!

See you next on my journey! Thank you!

Mencoba Emulator PS3

Sambil menunggu pekerjaan ready untuk dikerjakan, saya tergerak iseng untuk memainkan game melalui emulator. Target yang dicoba adalah RPCS3 yang tersedia pada repositori distro-distro linux, juga tersedia untuk Windows dan MacOS.

Yang perlu dicatat prosesnya kurang lebih sebagai berikut:

  1. Pasang RPCS3 pada sistem Anda.
  2. Unduh firmware PS3 pada situs Playstation.
  3. Siapkan image/iso game yang akan digunakan, kalo mau berburu di internet juga bisa. Image tersebut terenkripsi.
  4. Pasang alat Libray untuk mendekrip image pada butir 3. Baca panduannya dengan baik.
  5. Idr bisa merujuk ke sini.

Catatan tambahan:

  • Jika menggunakan controller Xbox One, gunakan xpadneo agar pemetaan tombolnya sesuai.

Liputan Indonesia Linux Conference 2022 - Bagian 1

Beberapa bulan lalu saya mengajukan diri sebagai pemateri acara Indonesia Linux Conference 2022 yang awalanya akan dilaksanakan di salah satu Universitas di Ponorogo, Jawa Timur.

Namun karena sesuatu hal, akhirnya harus pindah ke tempat lain yaitu dilaksanakan di Universitas Muhammadiyah Sidoarjo (UMSIDA).

Alhamdulillah materi yang saya ajukan berjudul Aplikasi Permainan F/LOSS Untuk Pendidikan layak ditampilkan. Materi ini masuk kategori Lightning Talk dengan Durasi 10 menit.


Persiapan Materi

Untuk pembuatan materi ini, terlebih dulu saya mengumpulkan berbagai dokumentasi lama yang pernah saya ikuti, adapun isinya berupa Foto dan Video.

Kemudian foto-foto dan video tersebut saya susun menjadi presentasi berupa video menggunakan KDENLIVE. Saya membuat presentasi berupa video alasannya adalah untuk menyesuaikan durasi yang hanya 10 menit sesuai dengan kategori Lightning Talk. 

Saya buat materi 9 menit 55 detik (toleransi 5 detik), tentu saja saya pasang timer di di video yang saya buat. Nah... di sini ternyata saya salah memperkirakan toleransi waktu tersebut yang hanya 5 detik saja, mungkin seharusnya minimal 2 menit

Efeknya adalah saya hanya bisa menggunakan presentasi tersebut kurang dari 8 menit. Hal ini terjadi karena kesalahan operator yang kurang cakap ketika membuka presentasi berupa Video.

Operator mungkin mengira presentasi saya berupa berkas format PDF, karena sebelumnya juga sudah terjadi permsalahan yang hampir sama, yaitu ketika membuka file format PDF dikiranya berupa file ODP sehingga tidak bisa dijalankan secara langsung. Setelah terjadi teriakan dari berbagai orang, presentasi bisa dibuka dengan klak-klik area tertentu baru muncul tulisan Presentasi pada menu, presentasi berupa PDF akhirnya berhasil dijalankan.

Nah.... presentasi saya juga kurang lebih seperti itu kejadiannya, yang mana waktu saya terpotong 2 menit lebih. Untung saja saya tidak jadi kirim berkas presentasi berupa format SVG yang seperti biasa saya lakukan, mungkin kalau pakai SVG bisa habis setengah durasi untuk saya.

Di sini saya tidak menyalahkan siapa pun, termasuk operator yang tugasnya menjalankan presentasi, saya yakin operatornya juga sudah keluar keringat dingin ketika itu. Saya harap ini sebagai pembelajaran untuk ke depan agar kejadian serupa tidak terulang kembali, tentunya selain kejadian Meme Tragedi Salah Desktop di Acara ILC 2022

Materi presentasi lengkap dari saya bisa dilihat di Youtube, tapi tentu saja sensasi melihat di youtube dengan melihat langsung pada acara sangat berbeda karena tidak ada narasinya.


Perjalanan ke Lokasi

Saya berangkat ke Sidoarjo dari semarang dengan angkutan darat, yaitu Bus umum dari terminal Terboyo Semarang tujuan terminal Bungurasih Surabaya, berangkat dari rumah pukul 20.45 WIB dengan ojek online, sampai di terminal ngeteh dan isi perut dulu, tidak lupa ngobrol-ngobrol dengan beberapa pedagang yang masih kenal saya.

Pukul 21.20 WIB naik Bus Patas di depan pabrik percetakan Suara Merdeka yang mana pabrik tersebut sudah tutup sejak lebih dari 5 tahun lalu.

Singkat cerita sampai di terminal Bungurasih pukul 05.12 menit, cari masjid, kemudian sholat subuh (tidak peduli apakah masih sah atau tidak yang penting yakin).

Ngeteh, makan pisang rebus, sarapan pop mie di terminal, selesai ritual ini berangkat ke Sidoarjo, rencananya mau naik bus TransJatim untuk ke lokasi, ternyata penuh terus, akhirnya menggunakan moda transportasi online.


Oh ya, untuk menggunakan moda transportasi online di terminal Bungurasih Surabaya harus dari luar terminal, akhirnya saya pagi itu sedikit olah raga kecil dengan jalan kaki ke luar dari terminal.

Salah Lokasi

Tanggal 04 November ada kelas Seminar LibreOffice internal di Kampus UMSIDA, pesertanya adalah dosen dan mahasiswa/i Prodi IT, kebetulan saya dan pak Aftian yang ditunjuk sebagai pematerinya.

Saya tidak tahu jika acara seminar diadakan di kampus yang berbeda (salah saya juga sih tidak tanya ke panitia), ternyata dilaksanakan di kampus 2. Saya naik ojek online turun di kampus 1. Pas turun ada pesan dari telegram kalau seminar dilaksnakan di kampus 2 lantai 4.

Saya pun bertanya Satpam, dimana letak kampus 2, oleh satpam ditujukkin kalau kampus 2 bapak maju lurus saja, nanti belok kanan, di sebelah gedung yang sedang di renovasi itu kampus 2, eh ternyata info dari satpam tersebut salah, tanya satpam lagi, baru dapat jawaban yang benar kalau kampus 2 jaraknya masih sekitar 3 KM.

Singkat cerita saya pun akhirnya sampai di kampus UMSIDA 2 dengan naik ojek online lagi.


Di kampus 2 clingak-clinguk, jalan kaki ke masjid, di depan masjid sudah ada beberapa orang yang mengenali saya padahal belum pernah bertemu langsung sebelumnya.

Istirahat di lantai 3, tidak lupa numpang mandi biar segar. Tidak beberapa lama teman-teman panitia datang, ngobrol-ngobrol sebentar.

Pukul 09.12 WIB acara seminar dimulai, seminar dilaksanakan di lantai 4 yang mana untuk ke lantai 4 tidak ada lift, jadi harus jalan kaki melewati tangga yang cukup unik.

Materi pertama adalah Pengenalan LibreOffice secara umum, dilanjut dengan penjelasan dan demo LibreOffice Impress.


Selesai materi  LibreOffice, dilanjut materi Pegon yang dibawakan oleh pak Aftian, tidak lupa pak Aftian juga ceramah mengenai dosa besar menggunakan aplikasi yang seharusnya berbayar tapi tidak bayar.

Pukul 10.00 WIB acara seminar internal selesai, makan cemilan yang disediakan panitia, foto-foto, kemudian kembali ke kampus UMSIDA 1.

Sampai di sini dulu Liputan Indonesia Linux Conference 202, sampai jumpa pada liputan selanjutnya.

Terima kasih sudah mau membaca tulisan singkat ini. 

Meme Tragedi Salah Desktop di Acara ILC 2022

Kemarin di acara ILC2022 terulang kembali kejadian yang hampir mirip kejadian tempat lain yang pernah ada sehingga menjadi cukup viral memenya.

Berikut ini analisa mengenai penyebab kejadian tersebut dari sudut pandang teknisi berdasarkan profesi dan pengalaman saya, sehingga tidak terulang lagi kejadian serupa pada acara lain.
Ketika acara dimulai saya sudah menyadari bahwa ada yang tidak beres dengan tamplian gambar di Videotron, yaitu pada tampilan beberapa logo yang tidak simetris atau dengan kata lain terlihat gepeng.
Tidak lama kemudian saya tanya ke operator yang menjalankannya sampai dimana kewenangannya untuk akses komputer dan Videotron tersebut.
Dia jawab sebatas mengoperasikannya saja.
Nah sampai disini sudah jelas, pihak panitia penyelenggara tidak bisa berbuat banyak, dan kalau pun dipaksakan acara pasti molor, bisa jadi malah tidak terlaksana hari itu juga, karena teknolgi Videotron tidak sebarangan orang bisa menanganinya.

Videotron Rakitan
Biasanya Videotron besar dalam ruangan menggunakan versi rakitan, alasannya kalau beli yang bukan rakitan susah memasukkanya ke ruangan terutama ketika melewati pintu ukuran standar dengan tinggi 2 meteran.
Yang saya maksud di sini adalah Vediotron yang dirakit di tempat, karena semua videotron memang rakitan, hanya saja kalau videotron outdoor sudah dirakit dari distributor.

Berikut penjelasan sederhana proses perakitan Videotron:
Komponen: Cabinet - Kontroler, Sender Card, Reciver Card, dan Player
Langkah perakitan dan pengaturan
Rakit dulu Cabinet Kontroler Videotron dengan benar sesuai jumlahnya,  cabinet harus benar urutannya, kalau keliru potongan gambar bisa acak. 
Gambar Ilustrasi jika salah susun Cabinet
Sambungkan Cabinet ke Sender Card (sebagian besar koneksi dari komputer/laptop ke sender card modern menggunakan jaringan internet)
Kontroler Videotron
Install sender card, setelah terdeteksi, masuk ke screen configutation setting panel, masukkan password, bagian setting ini menggunakan software khusus (contoh: HD Player)
Bagian ini sengaja tidak saya lampirkan gambar pemandu karena pembaca tidak perlu mikir, setting Videotron itu benar-benar mudah kok.

Komponen lain yang perlu di perhitungkan adalah Receiver card, misal menggunkan Linsn Rv908m32

Setting brightness (semakin besar nilainya semakin bagus, tapi daya yang digunakan semakin besar atau semakin boros listrik)

setelah semua setting selesai, untuk bisa menghubungkan laptop lain ke Videotron bisa menggunakan menambahkan player, contoh menggunakan Novastar yang memiliki input AV, VGA, dan HDMI

Permasalah di ILC2022 bisa saja terjadi seperti kondisi berikut:
  1. Driver VGA pada komputer belum terinstall dengan benar, sehingga gambar yang ditampilkan tidak bisa sempurna (terlihat gepeng pada ikon lingkaran), dengan demikian kesulitan untuk melakukan pengaturan pada desktop.
  2. Resolusi komputer/laptop hanya support resolusi 1365 x 768 sedangkan Videotron membutuhkan resolusi 1920 x 1080, hal ini terlihat jelas pada salah satu presentasi yang menggunakan file PDF yang bagian bawahnya muncul potongan gambar bagian atas salindia.
  3. Tidak ada tambahan Palyer pada Videotron sehingga tidak bisa menghubungkan laptop ke Videotron (dengan asumsi videotron langsung terhubung ke komputer melalui LAN.
  4. Bisa saja terjadi karena permasalahan point 1 dan 2.
  5. Atau bisa juga karena faktor lainnya
 Ada juga yang komentar ditwitter kalau laptop operator tidak boleh diganti Linux 
Kalau komentar ini bisa saya simpulkan adalah komentar ngawur, apa diatahu secara pasti kalau Videotron bisa tersambung dengan Laptop?. 
Bisa jadi tidak bisa karena tidak ada port input VGA/HDMI ke laptop (tidak menggunakan player tambahan). Atau kasus lainnya laptopnya tidak ada port LAN RJ45.
Misalkan bisa menggunakan laptop yang OSnya Linux apakah support dengan Videotron secara langsung?
Atau misalkan komputer operator boleh diinstall ulang, apakah ada jaminan driver dan software videotron tersedia di Linux?, kalau pun tersedia proses install pasti memakan waktu lama, belum lagi jika gagal di tengah jalan yang mengakibatkan tampilan Videotron menjadi klisse.
Kalau sampai terjadi Klisse harus bongkar videotron untuk reset ulang kontroller (clear CMOS), bahkan bisa lebih parah lagi kalau harus inject firmware (semacam firmware eprom pada TV.

Untuk kalian yang membuat dan menyebarkan meme tersebut jika memang pintar cobalah buat tutorial Cara Menyambungkan Laptop OS Linux ke Videotron dengan Mudah, jika tidak bisa, kalian memang Djuaanncuuuk (mumpung acaranya di jawa Timur saya pakai pisuhan jawa timuran)
Sebenarnya saya juga mau MISUH dengan kejadian itu, karena berimbas juga pada materi saya, tapi percuma juga karena sudah ada yang mewakili pada sesi setelahnya. Seandainya saya juga ikut misuh tidak akan mengubah apapun, bahkan bisa memperkeruh suasana.
Semarang, 06 November 2022

Google Cloud: Backup and Restore Our GKE Workloads using Backup for GKE

Hi all!

I hope that you are doing well, safe and healthy!

In this journal, I would like to share and explain a case study related to one of the great features of Google Kubernetes Engine (GKE). Yup, it is a Backup for GKE. As the name suggests, this feature is intended to back up and restore the workloads in the Kubernetes cluster we have on Google Cloud.

What can be backed up?:

  • Configuration: Kubernetes resource including manifest and the cluster state.
  • Volume backups: Application data that correspond to PersistentVolumeClaim resources

There are many possible scenarios that we can choose to back up and restore the cluster. For example, we can only back up the configuration and restore it to the newly created cluster, or we can also back up the entire cluster and restore it to the source cluster for disaster recovery that may happen. Besides that, we can also set a scheduler job to run back up automatically. It will save our lives when shocking incidents unexpectedly happen.

From the main documentation here, there are two main components to focus on. A service and an agent. A service has the ability to serve as a controller for Backup for GKE service, and the agent will run automatically in the cluster where backups or restores are performed. Below is the diagram architecture:

As you may know, in the previous journal, I already wrote about Velero. One of the open-source tools which has a similar function to Backup for GKE. So, what is the difference between both? Based on my perspective, Backup for GKE is more simplified and requires less effort than Velero. You do not necessarily download the binary and install it like Velero. Also, Backup for GKE is more integrated into GKE and GCP services as common like IAM, Cloud Storage Bucket, etc.

But, if you were more familiar with Velero as you’re used it in another Kubernetes environment cluster before, and you want to use Backup for GKE now, you need to adapt again . For example, in Backup for GKE you need to create a backup and restore plan as template before doing a backup and restore. Backup for GKE also gives us a challenge when we’ve already enjoy using it and we have to move in another cloud platform, we need to research and adapt again because this feature is native and proprietary.

Backup for GKE is a separate service from GKE, so the pricing too. Based on the documentation here, we will be charged along two items. Backup management and also storage. And the pricing is different based on the region. So be careful!

Now. In this journal, we will do a simple backup and restore scenario. I have a GKE cluster in us-central1 named gke-cluster1-a. There, I deploy a wordpress application with a persistent disk provided by PersistentVolumClaim and execute backup regularly every hour. Then I create a new GKE cluster named gke-cluster1-b, and try to restore the backup created before to test and ensure that the backup runs smoothly and successfully.

What will I back up? GKE cluster configuration and wordpress data stored on persistent disk. So, when the restore is complete, wordpress is automatically loaded and can be accessed from outside.

As I writing this journal, Backup for GKE still has a limitation for backup storage(PVC). It is only support for multi-zone (intra-region) and doesn’t support multi-region yet. So, I will only using us-central1 region for backup and restore.

Okay! Let’s jump in!

Here, I will use Google Cloud SDK instead of Google Cloud Console. So, I will define the environment variables first like below:

This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters. Learn more about bidirectional Unicode characters
# Define env variables
export PROJECT_ID=$(gcloud config get-value project)
export PROJECT_USER=$(gcloud config get-value core/account)
export PROJECT_NUMBER=$(gcloud projects describe $PROJECT_ID –format="value(projectNumber)")
export GCP_REGION="us-central1"
export GCP_ZONE="us-central1-c"
export NETWORK_NAME="default"
view raw define-env-gcp hosted with ❤ by GitHub

Make sure the configuration is correct, and then set the default region and zone based on the variables defined before.

This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters. Learn more about bidirectional Unicode characters
gcloud config set compute/region $GCP_REGION
gcloud config set compute/zone $GCP_ZONE

We can verify with the command below:

gcloud config list

We need to enable three APIs that will be used for each service. Containers API will be used by GKE for computing, storage API will be used by GKE for persistent disk, and also GKE Backup for backup and restore tasks.

This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters. Learn more about bidirectional Unicode characters
gcloud services enable \ \ \
view raw enable-apis-gke hosted with ❤ by GitHub

We can verify the enabled services with command below:

gcloud services list --enabled

Next. We have to create a GKE cluster. I create it as a public cluster with a multi-zones configuration in us-central1 region. Do not forget to add –addons=BackupRestore to install Backup for GKE agent in this cluster.

This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters. Learn more about bidirectional Unicode characters
export CLUSTER_NAME="gke-central1-a"
gcloud beta container clusters create $CLUSTER_NAME \
–project=$PROJECT_ID \
–region=$LOCATION \
–addons=BackupRestore \
–num-nodes=1 \
–enable-autoupgrade –no-enable-basic-auth \
–no-issue-client-certificate –enable-ip-alias \
–metadata disable-legacy-endpoints=true \

Verify the cluster and make sure the state of all workers is Ready.

gcloud container clusters get-credentials $CLUSTER_NAME \
--region $GCP_REGION --project $PROJECT_ID

kubectl get nodes -o wide

For wordpress application, I am using the tutorial from here. You can follow along, or use your own application instead.

This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters. Learn more about bidirectional Unicode characters
# create Kustomize file
cat > ./kustomization.yaml << EOF
– name: mysql-pass
– password=gkebackup2022
# download manifests
curl -LO
curl -LO
# update Kustomize file (note >> which appends original file)
cat >> ./kustomization.yaml << EOF
– mysql-deployment.yaml
– wordpress-deployment.yaml
# deploy (using built-in kustomize feature of kubectl)
kubectl apply -k ./
view raw deploy-wp-gke hosted with ❤ by GitHub

Make sure the pod is running, the external IP in the service appears, and the volume state is bound.

kubectl get pods
kubectl get svc
kubectl get pvc

Try to access the application from browser like below.

Now, we are going to do back up strategy. We will back up the entire kubernetes cluster environment, including data volume and secrets.

Before that, make sure the location can provide it, because not all regions can using command below:

gcloud alpha container backup-restore locations list \
    --project $PROJECT_ID

For the backup strategy, we have to create a BackupPlan first. I will create it using environment variables that defined below

# Define env variables for GKE Backup
export BACKUP_PLAN="gke-central1-a-backup"
export LOCATION="us-central1"
export CLUSTER="projects/$PROJECT_ID/locations/$GCP_REGION/clusters/$CLUSTER_NAME"
export RETAIN_DAYS="3"

And then, create a BackupPlan which will back up all namespaces, including secret and volume data. I also set the cron scheduler that will automatically back up every hour and set backup retention only for 3 days.

This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters. Learn more about bidirectional Unicode characters
gcloud alpha container backup-restore backup-plans create $BACKUP_PLAN \
–project=$PROJECT_ID \
–location=$LOCATION \
–cluster=$CLUSTER \
–all-namespaces \
–include-secrets \
–include-volume-data \
–cron-schedule="0 * * * *" \
–backup-retain-days=$RETAIN_DAYS \

Verify the backup plan newly created:

gcloud alpha container backup-restore backup-plans list \
--project=$PROJECT_ID \

We can also verify from the Cloud Console too

How do we back up using BackupPlan created before? Using the command below will create a manually backup named manual-backup1 with the appropriate BackupPlan, location, and project.

This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters. Learn more about bidirectional Unicode characters
export BACKUP=manual-backup1
gcloud alpha container backup-restore backups create $BACKUP \
–project=$PROJECT_ID \
–location=$LOCATION \
–backup-plan=$BACKUP_PLAN \

Wait and ensure the backup is successful.

All right. After we do the back up the task. We need to test using restore to ensure that the backup is running correctly.

First, I will create a second GKE cluster with the same specification like the cluster one.

This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters. Learn more about bidirectional Unicode characters
export CLUSTER_NAME2="gke-central1-b"
gcloud beta container clusters create $CLUSTER_NAME2 \
–project=$PROJECT_ID \
–region=$LOCATION \
–addons=BackupRestore \
–num-nodes=1 \
–enable-autoupgrade –no-enable-basic-auth \
–no-issue-client-certificate –enable-ip-alias \
–metadata disable-legacy-endpoints=true \

Same as BackupPlan, I define the environment variables:

This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters. Learn more about bidirectional Unicode characters
export RESTORE_LOCATION="us-central1"
export RESTORE_PLAN="gke-central1-b-restore"
export CLUSTER2="projects/$PROJECT_ID/locations/$GCP_REGION/clusters/$CLUSTER_NAME2"
export CLUSTER_RESOURCE_CONFLICT_POLICY="use-backup-version"
export NAMESPACED_RESOURCE_RESTORE_MODE="delete-and-restore"
export VOLUME_DATA_RESTORE_POLICY="restore-volume-data-from-backup"

And do the manual restore with appropriate restore plan and the backup created before.

This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters. Learn more about bidirectional Unicode characters
export RESTORE="manual-restore1"
gcloud alpha container backup-restore restores create $RESTORE \
–project=$PROJECT_ID \
–location=$GCP_REGION \
–restore-plan=$RESTORE_PLAN \
–backup=projects/$PROJECT_ID/locations/$LOCATION/backupPlans/$BACKUP_PLAN/backups/$BACKUP \
view raw restore-gke hosted with ❤ by GitHub

Wait until the restore is successful. Verify the pods is running, PVC are bounds, and the external IP is accessible




Google Cloud: Backup and Restore Our GKE Workloads using Velero

Hi all!

I hope that you are doing well. In this journal, I will explain the backup and restore strategy for Kubernetes using Velero, specifically in Google Kubernetes Engine (GKE).

As you may know, Velero is one of the great open-source tools which can be used to back up and restore (including migrate and replicate) our existing Kubernetes cluster. It has lots of features which we can use. First, absolutely it is open source. We can use Velero in all most Kubernetes environments. For example, on-premise, Google Kubernetes (GKE), or other public clouds. So, if you are already using Velero in another environment, you will easily adapt to it in GKE.

Based on the main documentation here, there are many use cases that we can use to implement using Velero, for example, backup filtering. Velero is also easy to use. We just have to install the binary and a bit of configuration to connect to the cluster, and it is ready to do backup and restore.

But, in this case, there are many limitations on Velero too. First, Velero does not natively support the migration of persistent volumes snapshots across cloud providers. If we want to do it, we need to enable Restic. Velero also does not support do restore into a cluster with a lower Kubernetes version than where the backup was taken. So, we need to ensure the version is properly and carefully.

Maybe, in previous experience, you’ve already tried Velero to execute backup and restore on-premise Kubernetes environment. This is the most common use case, but storage is one of the benefits of using the public cloud. We don’t necessarily to taking care of the backup storage because (for example, in GCP, we are using cloud storage) it is fully managed.

We just have to create a backup (if we don’t have one) that is ready to use.

This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters. Learn more about bidirectional Unicode characters
gsutil mb gs://$BUCKET/
# verify
gsutil ls

Because Velero needs access the resources and the storage, we need to create a service account and define the permission. The permission must be attached to the service account is get, create, and delete. So the resources are accessible from Velero.

This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters. Learn more about bidirectional Unicode characters
gcloud iam service-accounts create velero-backup-anandadwi –display-name "Velero SA"
SERVICE_ACCOUNT_EMAIL=$(gcloud iam service-accounts list –filter="displayName:Velero SA" –format 'value(email)')
gcloud iam service-accounts list
gcloud iam roles create velero.server –project $PROJECT_ID –title "Velero SA" –permissions "$(IFS=","; echo "${ROLE_PERMISSIONS[*]}")"
gcloud projects add-iam-policy-binding $PROJECT_ID –member serviceAccount:$SERVICE_ACCOUNT_EMAIL –role projects/$PROJECT_ID/roles/velero.server
gsutil iam ch serviceAccount:$SERVICE_ACCOUNT_EMAIL:objectAdmin gs://${BUCKET}
gcloud iam service-accounts keys create credentials-velero –iam-account $SERVICE_ACCOUNT_EMAIL

After the permission is configured, we now have to download the Velero. There are many architectures provided, and we can just choose it right away

This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters. Learn more about bidirectional Unicode characters
wget -c<RELEASE-TARBALL-NAME&gt;.tar.gz
tar -xvf <RELEASE-TARBALL-NAME>.tar.gz
sudo cp <RELEASE-TARBALL-NAME>/velero /usr/bin/
view raw velero-install hosted with ❤ by GitHub

And install it. Don’t forget to use GCP as the plugin and define the secret file to the secret file created earlier before. This is important, so the Velero can connect to the bucket

This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters. Learn more about bidirectional Unicode characters
velero install –provider gcp –plugins velero/velero-plugin-for-gcp:v1.5.0 –bucket velero-backup –secret-file ./credentials-velero –use-volume-snapshots=true

Okay. Now Velero is ready to use.

In this journal, for example, below is my GKE cluster. I am using Kubernetes with the version 1.22.12, and it has three workers nodes.

And there, I already deployed a wordpress application that uses PVC for storage and services with LoadBalancer type. You can follow along here.

There are many ways to do a backup. We can backup based on the namespace, on the label, and even the entire cluster, including cluster state. This depends on the use case. For example, I only want to do backup-specific namespace or deployment based on the label.

Here is the example if I only want to do a backup for wordpress namespace

This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters. Learn more about bidirectional Unicode characters
velero backup create wp-backup –include-namespace wordpress
velero backup get
velero backup describe wp-backup

In another moment, we can do a backup automatically by scheduling it as daily like below

The resources will automatically back up into the storage defined before.

After backup is successful, how do restore it? For testing, we can delete the deployment first and try to restore it in the same cluster. Or if we have another cluster, we can restore it there too.

This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters. Learn more about bidirectional Unicode characters
BACKUP_NAME = wp-backup
velero restore create –from-backup $BACKUP_NAME
view raw velero-restore hosted with ❤ by GitHub




Google Cloud: GKE Upgrade using Blue-Green Strategy

Hi all!

I hope that your day is good enough. In this journal, I would like to explain about Google Kubernetes (GKE) upgrade, specifically using Blue-Green Strategy.

By default, GKE offers an automatic upgrade feature to our existing GKE cluster. We just have to make sure auto-upgrade is enabled, with a bit configuration, and the system will do an upgrade automatically. Sounds promising, right?

That strategy has a lot of benefits. First, it is less effort and easy to use because we don’t have to manually track and update the versions. It has better security management because GKE will ensure that the security of the selected version is updated.

But how about when we want to choose the specific version of Kubernetes for our existing cluster? For example, I want to use the newer version from the current version instead of the latest. How about our strategy when the automatic upgrade is still happening, but our application is crashing/failing, and we have to downgrade the version?

From the documentation here, downgrading a cluster is not recommended, and we cannot downgrade a cluster control plane from one minor version to another. For example, if your control plane runs GKE version 1.17.17, you cannot downgrade to 1.16.15. If we attempt to do that, we will get an error. We can just downgrade 1.17.17 to 1.17.16, if that version is still available.

The same thing will happen to node pool, based on the documentation here. If we want to downgrade the worker’s node, we have to create a new node pool with the previous version, drain the workers which use the latest version, and delete it. Lots of effort and pain.

So, what is the alternative? How do we avoid the pain and ensure the upgrading process is successful?

We can do this by using the upgrade manually strategy 🙂

Similar to common Kubernetes clusters, the manual upgrading process will consume more effort and time. But, we will have more control to ensure the upgrading process is successful and reduce the risk.

Using a manual process, we can choose the specific version of the Kubernetes cluster instead of the latest. But, to be honest, it also has a limitation. We cannot upgrade the cluster to more than one minor version at a time. So, if our version cluster is 1.22 and we want to upgrade to 1.24, we have to upgrade to 1.23 first and then upgrade it to 1.24. The reference is here.

The limitation is similar to the Kubernetes provided by officials. But, one thing we have to remember is the version provided by GKE is limited. As this journal writes, the latest version of Kubernetes is 1.25. But from the version provided by GKE is still 1.24. Version 1.25 is still in rapid channel (pre-production), and we have to wait 2-3 months until it is ready to be used in production.

GKE provided two strategies when we want to use a manual upgrade, SURGE (default) and BLUE-GREEN. What is the difference between both? The surge strategy uses a rolling method to upgrade nodes simultaneously in an undefined order. This strategy is better for our applications that tolerate disruptions until 60 minutes when graceful termination happens.

So, when our applications are less tolerant of disruption, it is better to use the blue-green strategy. Other than that, blue-green strategy also offers to cancel, resume, roll back, and complete features. This is a great solution if our workloads fail and we need to be rolled back to the old node configuration.

When we recap, the steps to do blue-green strategy upgrade are:

  1. Upgrade the control-plane version to the newer version
  2. Create a new worker node pool (call it a green pool) with the same version as control plane
  3. Drain and cordon nodes in the blue node pool (node pool with the previous version)
  4. Migrates the applications to the green pool
  5. Delete the blue node pool
  6. Test and verify

All right, let’s practice!

Let’s say I have a cluster named gke-dev1 in us-central1 region, and it uses 1.22.12-gke.2300 for the version.

By default, the upgrade strategy for node pool is SURGE which means

And we need to change to blue-green strategy by using the command below:

This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters. Learn more about bidirectional Unicode characters
gcloud container node-pools update $NODE_POOL \
–cluster $CLUSTER_NAME \

After that, upgrade the control plane:

This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters. Learn more about bidirectional Unicode characters
gcloud container clusters upgrade $CLUSTER_NAME \
–region $GCP_REGION \
–cluster-version $NEW_K8S_VER \
–project $PROJECT_ID \

Verify that the control plane is upgraded as below.

After that, create a green node pool that uses the same version as the control plane node

This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters. Learn more about bidirectional Unicode characters
gcloud container node-pools create pool-gke1-23 \
–project $PROJECT_ID \
–cluster $CLUSTER_NAME \
–region $GCP_REGION \
–num-nodes $NUM_NODES \
–machine-type $MACHINE_TYPE \

And then drain and cordon the blue node pool. This action ensures that new pods are not scheduled to the blue node pool.

This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters. Learn more about bidirectional Unicode characters
NODE=$(kubectl get nodes -o wide | grep v1.22.12-gke.2300 | awk '{print $1}'
kubectl -n default cordon $NODE

As we can see below, the node status is changed to SchedulingDisabled.

After this, we have to reschedule the applications into the green node pool. Make sure the applications is healthy, and then we delete the blue node pool.

This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters. Learn more about bidirectional Unicode characters
gcloud container node-pools delete default-pool \
–project $PROJECT_ID \
–cluster $CLUSTER_NAME \
–region $GCP_REGION



Thank you!

Google Cloud: Deploying a Static Web Application to Google Cloud Storage Bucket with HTTPS Load Balancer

Hi all!

I hope that you are doing well, safe, and healthy!

In this journal, I would like to share how to deploy a static web application using the Google Cloud Storage bucket for hosting with HTTPS Load Balancer. So it will be safely accessible from outside.

What makes it different from static web hosted on other platforms? Using this HTTPS Load Balancer will ensure the communication and/or user requests will be secure using the HTTPS 443 Protocol.

You may see the diagram below:

The data flow is:

  • When external users access a static website from outside, the request will forward to the Load Balancer system.
  • Like a gate, the forwarding rule is the first part that needs to be passed. It contains the public IP along with the port used by the application. The forwarding rule is responsible for forwarding requests to the respective HTTP(S) proxy targets.
  • Once received by the target HTTP(S) proxy, the request will be evaluated using the URL Map to determine where to forward the request. For example, in this journal will be forwarded to the GCS backend, which contains the application. In this section also, we can add security using an SSL certificate to make it even more secure.

Let’s jump in.

Here. I am using Google Cloud SDK for configuration. First, we have to define the environment variables.

export PROJECT_ID=$(gcloud config get-value project)
export PROJECT_USER=$(gcloud config get-value core/account)
export PROJECT_NUMBER=$(gcloud projects describe $PROJECT_ID --format="value(projectNumber)")

# Workload identity domain

export GCP_REGION="asia-southeast2"
export GCP_ZONE="asia-southeast2-b"

export NETWORK_NAME="default"

And enable the appropriate APIs

# enable apis
gcloud services enable \

To verify which APIs is enabled, we can use the command below:

gcloud services list --enabled | head -25 | tail -15

Set default region and zone to avoid wrong location

# Configure default region and zone
gcloud config set compute/region $GCP_REGION
gcloud config set compute/zone $GCP_ZONE

To verify all configuration is correct, use the command below:

gcloud config list

We need to create a new bucket in GCS to store the static files. We can use gcloud or gsutil command-line tool that provided by Google Cloud to create it. For example, I create a bucket named pengedit-markdown-sept2022site

# create a storage bucket
export BUCKET_NAME="pengedit-markdown-sept2022site"
gsutil mb -b on gs://$BUCKET_NAME

gsutil ls

I will use a react app I created before for this scenario. So, I need to clone from the repository first, and run npm run build command to provide a build directory for production-ready application

# Setup the application
git clone
npm i react-scripts
npm run build
cd ../

Copy all the sources code in build directory to the bucket newly created.

# upload site files
gsutil cp -r $APP_NAME/build/* gs://$BUCKET_NAME

For making it accessible from outside, we need to configure permission too. It must be accessible by anyone with read-only access.

# set read permissions for public
gsutil iam ch allUsers:objectViewer gs://$BUCKET_NAME

# set 404 to redirect to index.html page
gsutil web set -m index.html -e index.html gs://$BUCKET_NAME

Prepare the dishes is finished.

Now, we are going to set up the HTTPS Load Balancer which will serve to handle external requests from outside. Before that, I will define the environment variable for IP Public and SSL Certificate that I will request and domain name that I will use

export ADDRESS_NAME="my-public-ip"
export CERTIFICATE_NAME="pengedit-markdown-ssl"
export DOMAIN=""

Request a dedicated Public IP with command below. This IP will be used by the web application.

# reserve external IP
gcloud compute addresses create $ADDRESS_NAME --global

After that, go to your own DNS Management and point the domain to the appropriate IP Address before. Make sure it is resolved by a command similar nslookup or dig.

Fortunately! And maybe this is also one of the huge benefits when we use HTTPS Load Balancer, we can request an SSL Certificate that we can use on the target HTTPS or target SSL proxy just by one line command.

# create a certificate
gcloud compute ssl-certificates create $CERTIFICATE_NAME \
    --description=$DOMAIN \
    --domains=$DOMAIN \

The requesting process may consume around 20-40 minutes depending on the issuer. Please wait until the status changes into ACTIVE.

We can also verify the SSL Certificate from the cloud console like below

And then, we also need to create a backend service that will distribute the requests to the healthy backends. In this case, it is a GCS bucket.

# create backend bucket for lb
export BACKEND_BUCKET_NAME="pengedit-md-backend-static-site"
gcloud compute backend-buckets create $BACKEND_BUCKET_NAME \

Define a backend service created before in a URL MAP

# configure URL Map
gcloud compute url-maps create https-lb \

And create a target HTTPS Proxy which configured URL Map and SSL Certificate created before.

# Add HTTPS target proxy to LB
gcloud compute target-https-proxies create https-lb-proxy \
    --url-map=https-lb \

After the target HTTPS proxy is created, create a new forwarding rule that connected to the target.

# Configure Forwarding Rule
gcloud compute forwarding-rules create https-content-rule \
    --load-balancing-scheme=EXTERNAL \
    --network-tier=PREMIUM \
    --address=$ADDRESS_NAME \
    --global \
    --target-https-proxy=https-lb-proxy \

Don’t forget to create a firewall rule to allow the incoming request from outside using TCP port 80 and 443.

# Add a firewall rule
gcloud compute firewall-rules create allow-http-https-traffic \
    --direction=INGRESS \
    --priority=10000 \
    --action=ALLOW \
    --rules=tcp:80,tcp:443 \

And that is. After all the configuration is successfully. We can verify the web application using command-line tool similar like cURL or using browser instead.



AWS: Building a Simple Web Application Using AWS CodeBuild


Selamat siang. Pada jurnal ini saya ingin berbagi sedikit mengenai AWS CodeBuild. AWS CodeBuild merupakan layanan yang memiliki tugas untuk meng-compile kode aplikasi, menjalankan unit test, dan membuat artifak yang siap untuk di deploy oleh layanan AWS CodeDeploy.

AWS CodeBuild menawarkan banyak sekali build environment yang sudah dikemas oleh bahasa pemrograman dan build tools populer seperti Apache Maven, Gradle, dan masih banyak lagi. Kelebihan AWS CodeBuild:

  • Fully managed. Dikelola sepenuhnya oleh AWS
  • On demand. Skalabilitasnya sangat tinggi dan sesuai permintaan
  • Out of the box

Mari kita coba.

Pertama, masuk ke AWS Management Console. Pada kolom pencarian, ketik AWS CodeBuild.

Berikut ini tampilan dashboard dari AWS CodeBuild. Klik Create Build Project untuk membuat project baru.

Isikan nama project, misal web-app dan isikan deskripsinya lalu gulir ke bawah

Untuk Source Provider, pilih AWS CodeCommit dan pilih repositori yang diinginkan. Jangan lupa atur branch nya juga ya. Disini saya atur default ke master. Lalu gulir ke bawah

Pada bagian environment, saya pilih Managed Image dengan pengaturan:

  • Operating system: Amazon Linux 2
  • Runtime: Standard
  • Image: aws/codebuild/amazonlinux2-arch64-standard:1.0
  • Image Version: use the latest image for this runtime version

Untuk bagian service role, saya pilih New Service Role dan set default pengaturan lainnya

Pilih No Artifact karena disini saya tidak ingin membuat artifak dan hanya ingin mencoba AWS CodeBuild saja dan uncheck pada Logs. Lalu klik Create Build Project

Pastikan project berhasil dibuat dan untuk menjalankan build klik Start Build

Tunggu sampai statusnya berubah menjadi Succeded

Buka tab Phase details dan bisa diverifikasi mengenai tiap fase build yang telah dijalankan


AWS: Creating a Private Repository using AWS CodeCommit


Selamat siang. Pada jurnal ini saya ingin berbagi mengenai salah satu layanan AWS yaitu AWS CodeCommit. AWS CodeCommit merupakan layanan version control (mirip seperti GitHub) yang dikelola AWS untuk menyimpan repositori yang berisi kode aplikasi pribadi hingga binary yang aman dan memiliki skalabilitas yang tinggi.

AWS CodeCommit memungkinkan para developer dalam satu tim untuk saling berkolaborasi dalam membuat kode yang saling terintegrasi satu sama lain melalui pull request, branching, dan merging. Dan selain itu juga dapat melakukan tracking untuk melihat perubahan kode yang terjadi.

Mari kita coba.

Pertama, buka AWS Management Console masing-masing.

Lalu pada kolom pencarian, ketik codecommit

Setelah masuk ke dashboard CodeCommit. Klik Create repository untuk membuat repositori baru yang nantinya akan digunakan sebagai lumbung untuk menyimpan kode.

Isikan nama repositori. Misal web-app, isikan deskripsi dan klik Create

Verifikasi bahwa repositori berhasil dibuat dan salin perintah clone yang terdapat di step ketiga, yang tertera git clone https://git-xxxxx . Perintah ini yang nantinya kita gunakan untuk mendorong/push kode dari lokal laptop ke repositori

Selanjutnya, kita akan mengatur autentikasi yang dapat digunakan untuk mengakses repositori secara remote CLI. Pada kolom pencarian, ketik IAM.

Masuk ke menu Users dan pilih user yang akan digunakan untuk mengakses repositori. Misal user dwi

Masuk ke tab Security Credentials

Gulir ke bawah sampai menemukan opsi HTTPS Git Credentials for AWS CodeCommit. Klik Generate

Akan muncul kredensial yang berhasil di generate, dan bisa diunduh

Selanjutnya, akan kita coba uji adengan mendorong/push kode aplikasi ke repositori.

Pertama, clone repo dengan perintah yang telah disalin sebelumnya. Gunakan kredensial yang telah digenerate.

Note: terdapat warning karena repositorinya memang masih kosong.

Lalu coba unggah kode aplikasi dengan melakukannya seperti tangkapan layar berikut ini

Bisa diverifikasi melalui web-app repo di console, apakah kode berhasil diunggah atau belum


AWS: Deploy Container Workloads using Amazon Lightsail


Selamat malam teman-teman. Pada jurnal ini saya ingin berbagi bagaimana men-deploy container(s) di AWS menggunakan Amazon Lightsail. Untuk Lightsail sendiri sudah pernah saya bahas di jurnal sebelumnya, bisa dibaca dulu AWS: Launch a WordPress Site using Amazon Lightsail. Selain itu, saya juga pernah share mengenai bagaimana men-deploy container menggunakan Amazon ECS, bisa dibaca dulu di AWS: Getting Started with Amazon ECS (Elastic Container Service) using Fargate.

Pada intinya, goal yang diinginkan sama, yaitu aplikasi di dalam container running dan bisa diakses. Hanya saja, di AWS banyak opsi yang bisa dipilih, salah satunya adalah Amazon Lightsail.

Mari kita coba.

Klik Services > Compute > Lightsail

Kita akan diarahkan ke dashboard Amazon Lightsail. Klik tab Containers > Create container service

Pada langkah pertama, bisa pilih region yang akan menjadi tempat service berada. Saya pilih Singapore dan gulir ke bawah

Pilih spesifikasi dari container, misal saya pilih Micro dengan scale x 2 (container akan direplika menjadi 2)

Klik + Set Up Deployment > Specify a custom deployment. Ubah nama container, image, configuration (jika ada), dan port aplikasi, misal 80 HTTP. Sesuaikan dengan container yang ingin dibuat

Bisa tentukan konfigurasi health check nya juga seperti di bawah ini

Tentukan nama service, misal virtualpiano dan klik Create container service.

Tunggu hingga status container menjadi Running

Akses public domain melalui tab baru, maka aplikasi bisa diakses seperti berikut ini


AWS: Create an Amazon FSx File System for Windows File Server


Selamat malam teman-teman. Pada jurnal ini saya ingin berbagi mengenai bagaimana membuat file server dengan menggunakan Amazon FSx untuk Windows workload. Jurnal ini merupakan jurnal lanjutan, bisa dibaca dulu di AWS: Create AWS Managed Microsoft AD Directory dan AWS: How to Join a Windows Server Instance to AWS Managed Microsoft AD Directory .

Ibaratkan Windows workload sudah terbentuk, file server disini berperan untuk saling berbagi dan menyimpan file. Amazon FSx merupakan layanan file server yang fully-managed untuk Windows. Dengan backend fully-native Windows file system, Amazon FSx memiliki banyak fitur seperti performa dan kompatibilitas yang tinggi.

Mari kita coba.

Sebelum memulai, pastikan AD directory sudah aktif dan instance Windows Server di jurnal sebelumnya bisa diakses.

Untuk menggunakan Amazon FSx, klik Services > Storage > FSx

Kita akan diarahkan ke dashboardnya. Klik Create file system untuk membuat fs baru.

Pilih tipe file system yang akan digunakan. Klik Amazon FSx for Windows File Server lalu Next.

Tentukan nama file system, tipe lokasi (Multi-AZ atau Single-AZ), dan tipe storage (SSD atau HDD) lalu Gulir ke bawah

Tentukan VPC yang akan digunakan oleh file system dan pilih security groupnya. Pastikan rule berikut sudah di allow:

UDP53, 88, 123, 389, 464
TCP53, 88, 135, 389, 445, 464, 636, 3268, 3269, 5985, 9389, 49152-65535

Untuk autentikasi saya pilih AWS Managed Microsoft Active Directory, dan pilih direktori yang sudah dibuat di jurnal sebelumnya.

Enkripsi saya pilih default dan untuk auditing, bisa ceklis log yang diperlukan.

Bisa tambahkan dns alias (memudahkan untuk map drive), dan tentukan konfigurasi backup and maintenance nya. Atur daily backup, retensi, dan kapan daily maintenance window dilakukan.

Bisa tambahkan tag, lalu Next

Bisa lakukan review untuk verifikasi apakah konfigurasi sudah benar

Jika sudah OK, klik Create file system

Tunggu hingga statusnya berubah menjadi Available.

Klik nama file system untuk melihat detail, dan untuk mengaitkan instance ke file system, bisa klik Attach

Akan muncul pop up berisi langkah-langkah bagaimana melakukan attach file system

Kita bisa gunakan perintah di atas dan paste di CMD, atau melalui GUI seperti berikut:

Saat sudah di attach, drive siap digunakan




Hoby Pencet Tombol Meteran

Sudah hampir 1 bulan ini sering pencet-pencet tombol Meteran PLN.
Berkaitan dengan pencet-memencet tombol meteran tersebut saya ada beberapa cerita menarik, tapi saat ini saya ceritakann 1 dulu saja.
Beberapa hari lalu ada teman yang beli token listrik, nah ketika selesai diinput tulisannya gagal, sudah dicoba berulang-ulang tetap nihil hasilnya.

Akhirnya dia komplain ke saya, ya sudah saya kompain ke PLN melalui call center 123, biar cepat karena kalau lewat aplikasi PLN Mobile prosesnya lebih lama, walau begitu ketika kita telp ke 123 salah satu jawaban si robot adalah kurang lebih seperti ini "agar pelayan lebih cepat ditangani silakan gunakan aplikasi PLN Mobile" tapi yaitu tadi kenyataannya malah sebaliknya.


Pernah komplain lewat aplikasi PLN Mobile dari jam 8 pagi, jam 4 sore baru ditangani.
Singkat cerita ketika saya telp 123 diminta nomor WA yang aktif. saya berikan saja.
Saya Telp 123 pukul 14.xx WIB, pukul 21.xx WIB si Halo Electrizen baru kirim WA berisi Key Change Token-1 untuk diinput ke meteran yang bermasalah.

Ya sudah saya teruskan saja kode tersebut ke pemilik meteran, dengan sedikit penjelasan cara menggunakannya.

Beberapa menit kemudian pemilik meteran balas WA saya, bahwa ketika selesai memasukkan kode baris ke-2 selalu gagal.
Akhirnya dia minta tolong ke saya untuk datang ke rumahnya, saya pun dijemput.
Sampai di rumahnya langsung saya input 4 baris kode tersebut, ternyata memang benar seperti yang dia bilang, pada baris kedua keterangannya gagal.

Jalan keluarnya saya reset meteran tersebut dengan pencet angka 0 (nol) sebanyak 2 kali, kemudian Enter.
Baru deh masukkan 4 baris kode tersebut, selanjut masukkan kode token yang dia beli. dan input token pun sukses.

Sementara ini kalau ada yang beli token listrik, saya tolak dengan alasan Saldo habis, daripada cuma untung seribu rupiah tapi ribet dan menyita waktu. Lebih baik waktu digunakan untuk keperluan lain yang lebih bermanfaat, misalnya menulis buku.
Mungkin PLN keliru dengan slogannya "Listrik Printar" kalau jadinya ribet begini, mungkin sloganya bisa diubah jada "Listrik Belajar"

Sistem peringatan dini (EWS)

“Entah kenapa ketika tiba-tiba passion gue muncul terhadap satu hal, biasanya akan ada pekerjaan dalam waktu dekat” begitu kata gue ke Aris suatu malam di kantor Cilandak waktu gue ngoprek SMS gateway dan dia membuktikannya dua Minggu kemudian kami kedatangan tamu dari Belanda

Selepas dari kampus sekitar tahun 2010an, saat itu lagi rame-rame nya kejadian gempa di Indonesia, saat itu pengguna internet ga seramai sekarang dan blackberry masih menguasai pangsa gadget high-end. gue sempet bantuin disebuah NGO kebencanaan buat membangun sistem peringatan dini bencana alam terutama gempa bumi. datanya dari BMKG buat dibroadcast ke stasiun tv, portal, dan SMS warga di sekitar area terdampak. Teknologinya sederhana memang tapi lumayan gue jadi punya kesempatan jadi pembicara di banyak tempat gara-gara itu.

Sekitar tahun yang sama sebagian teknologi tersebut mulai diadopsi oleh beberapa lembaga dari pemantauan kota di Jakarta, pemantauan kekerasan di Papua dan Thailand selatan, pemantauan lingkungan, kekerasan thd TKI, hingga pemantauan pemilu di malaysia. Beberapa tahun kemudian. sekitar 2013 tiba-tiba dikontak mahasiswa MIT diajak mengembangkan salah satu teknologi tersebut untuk pemantauan banjir di Jakarta. Sayangnya itu hanya menjadi sebatas paper. Mungkin karena terlampau canggih kala itu.

Beberapa waktu kemudian saat rame kebakaran hutan, gw terlibat dalam pengembangan sistem peringatan dini kebakaran hutan, metodenya jauh berbeda dari yang sebelumnya lumayan ribet, tapi beberapa tahun kemudian berguna buat pekerjaan gue di lokadata. Nah sekarang gw lagi pengen iseng bikin EWS buat SpO2 karena mungkin ketersediaan tempat tidur RS akan semakin berkurang dan akan lebih banyak yg isoman, kalo ada sebuah EWS yg bisa broadcast ke nakes/RT/RW keknya bisa mengurangi beban RS. ternyata alat dan bahannya cukup murah.

Gue bilang juga apa!!

Penggalan frasa semacam itu dan sejenisnya udah gue tinggalkan sejak mungkin 5 tahunan lebih, frasa yang ga ada gunanya selain bentuk keinginan pengakuan atas keberhasilan yang entah apa yang sebenernya juga ga jelas.

Bener ga jelas, karena gw jamin 80% yang bilang kaya gitu ga siap perencanaan jika ide mereka yang dipake, kalo ditanya bagaimana rencananya biasanya akan jawab “lah gue kan udah usul, masa gue juga yang harus bikin rencana?” Terlihat flawless sekali bukan?

Belakangan sejak pemerintah terlihat kehilangan kontrol terhadap pengendalian pandemi, frasa semacam itu banyak yang lewat di timeline sosial media gue. Jadi inget omongan si Bahlul suatu hari waktu kami duduk disebuah rapat, dan lagi ngomongin yang mimpin rapat .

G: “Omongannya tinggi banget ya ga takut kesamber pesawat tuh?”
B: “Orang Indonesia itu dilahirkan dengan rahang yang kuat”
G: “maksudnya gimana?”
B: ” hobinya komentar doang ga ada eksyen”
G: “itu soalnya pas absen pembagian otak bangunnya kesiangan, dapetnya dikit deh”

Sinyal dan indikator

Bagaimana untuk mengetahui seekor sapi sedang lapar atau sudah kenyang?

Setahun trading gue belajar untuk menunggu sinyal, kemudian menunggu konfirmasi kemudian baru di eksekusi. Setelah eksekusi pun kita perlu pasang pengaman sampai semua berjalan sesuai arah sinyal. Pengaman dipasang di awal biar gue ga mikir lagi buat mengakhiri kalo ternyata setelah konfirmasi gerakan ga berjalan sesuai dengan rencana.

Mendefinisikan keberanian adalah ketika kita mengeksekusi setelah melihat konfirmasi dan memasang pengaman, spekulasi adalah ketika kita baru hanya melihat sinyal kemudian kita langsung mengeksekusi, gegabah adalah ketika ga ada sinyal kita maksa buat masuk.

Secara umum trading mencerminkan kehidupan secara keseluruhan. Manusia tidak didesain untuk mengatasi semua masalah, banyak hal yang diluar kuasa setiap individu. Dari alam sampai perasaan individu yang lain. Kita hanya perlu alat ukur atau indikator yaitu sebuah alat yg bisa kita gunakan untuk mengukur sebuah kejadian.

Output dari beberapa indikator yang saling berkorelasi bisa membentuk sebuah sinyal, sinyal – sinyal tersebut tentunya akan banyak sekali dan karena alat ukur ini adalah alat ukur statistik maka tidak selalu sinyal ini benar, oleh karena itu sinyal perlu diperkuat oleh sebuah konfirmasi. Setelah adanya konfirmasi gerakan sesuai dengan yg sinyal berikan baru rencana dapat dijalankan.

Jadi menurut gue kalo mau belajar apapun pelajari sifat dan indikator baru pelajari sinyal dan konfirmasi.


Lebih dari 10 tahun hidup di perantauan gue bersyukur banyak ketemu orang baik, seorang kawan pernah bilang “orang baik biasanya bakal ketemu orang baik, cuma ya biasanya yg ga baik lebih banyak.”

Well, Veri Junaedi adalah salah satunya, sebelum mengenal baik kami sempat bertemu beberapa kali saat persiapan pemilu 2014 sama-sama di KPU tapi beda bidang beliau di peraturan perundangan gw di teknologi mungkin circa 2012, di tahun yang sama di kepentingan yang lain kami dipertemukan di sebuah program yaitu Matamassa program inisiatif masyarakat untuk pemantauan pemilu. Tak lama kemudian kami berada satu gedung dalam usaha rintisan kami masing-masing.

Veri Junaedi, adalah sosok yang istimewa berbeda dengan image orang yg bekerja dibidang hukum kebanyakan yg gw kenal. Entah apa yang dia lihat sama gue sehingga mau berteman sama gue. Mungkin karena kesamaan kami spontan, ketika punya ide kemudian langsung dieksekusi.

Dia orang yg tiba-tiba ga ada angin ga ada hujan tiba-tiba ngajak makan bareng, yang mungkin setiap Ramadhan ngajak buka bareng, setiap kesempatan makan-makan gw selalu diundang. hmm mungkin ini juga salah satu kesamaan kami, kami suka makan enak.

Beberapa kali kami nyoba buat bikin usaha rintisan bareng juga tapi ga jalan, kami terlalu sibuk dengan urusan masing-masing, meski gagal pertemanan kami baik-baik saja. ya gue menemukan definisi pertemanan tak sebatas materi dari orang-orang baik sekitar gue.

Perbedaan usia kami ga terlalu jauh, Gue udah nganggep dia seperti kakak gue sendiri. Sekali gue pernah ngenalin perempuan spesial gue ke dia, gue ajak ke pembukaan rumah makannya. buat gue ini adalah big move karena gue bukan tipe orang yg selalu ngenalin cewek gue ke orang-orang terdekat, unless she has taken half of my soul. Sayangnya gw ga berjodoh sama dia.

Sekitar 3 Minggu yang lalu seperti biasa dia kontak ngajakin ngopi di proyek rumah barunya di Cibinong, dia bercerita setiap weekend dia nginep disana. Rumahnya gede iya memang dia sekalian menyiapkan untuk kantor istrinya yang notaris. Ajaibnya dia juga tetep bikin area buat kumpul2 seperti yg biasa kami dan kawan-kawan sering lakukan.

“Ini nanti kita bisa kumpul-kumpul disini mas, terus yang bawah itu bisa buat barbeque, sebelah sana nanti saya bikin kolam renang, terus nanti pintu ke rumah udah saya bedakan biar yg ngumpul ga ganggu orang rumah, dan kalo kemaleman males balik udah saya siapkan kamar khusus tamu” kata Beliau sambil tertawa-tawa

Kemudian kami makan, dan gue dikenalkan seluruh keluarga besarnya dari neneknya yang biasa dia panggil emak sampai ibunya. saat itu neneknya bercerita tentang masa kecil mas Veri yang sudah ditinggal bapaknya dari usia 4 bulan dalam kandungan, kemudian ibunya yang banting tulang sebagai single parents membesarkan dia, juga paman dan sodara-sodaranya yang lain yang bahu membahu membesarkan dia. “Saya juga ga nyangka dia akan jadi anak yang pinter begini” ujar emak

Saat itu gue jadi tau darimana kebaikan dia berasal. Dia dibesarkan oleh orang-orang yang baik dan tidak pernah putus asa. dalam hati gue bertanya apa harus jadi orang sesusah ini buat jadi orang berhasil? Gue melihat mas Veri ini orang yg berhasil. Dia berhasil menjalin pertemanan dengan banyak orang dari berbagai kalangan, dia berhasil membangun kantornya yang nyaris ga sepi dari pelanggan, dan menularkan kebaikannya pada ketiga putrinya yang masih kecil.

Sekitar dua Minggu lalu dia memasang status di WA bahwa dia terkena Covid 19, gw kirim pesan ke dia semoga lekas pulih. Namun tak pernah terbalas hingga siang tadi gue dapat kabar dari Fadli teman kami bahwa Mas Veri sudah Wafat siang tadi pukul 14.10 di RS. Pelni.

Menghapus Gambar Latar Belakang di LibreOffice Calc

Kemarin sore di group Telegram LibreOffice Indonesia ada salah seorang anggota yang mengalami masalah ketika menggunakan LibreOffice.

Kemudian yang dia bertanya bagaimana cara mengatasinya, adapun permasalahannya adalah; dia menyisipkan tandatangan berupa gambar format JPG pada dokumen, kemudian dia mengaturnya ke Latar Belakang dengan cara Arrange to Background. Nah, setelah itu dia kesulitan untuk menghapusnya.

 Sampai esok harinya belum juga ada yang bisa memberi jawaban memuaskan atas pertanyaan tersebut.

Kemudian penulis menanyakan permasalahan tersebut terjadi pada LibreOffice Writer, Calc, atau Impress?

Namun penanya tidak juga memnjawab pertanyaan penulis. Akhir penulis perhatikan dengan cara yang seksama dan sesingkat-singkatnya pada tangkapan layar yang dilampirkan, dan dapat disimpulkan bahwa permasalahan tersebut terjadi pada LibreOffice Calc.

 Cara mengatasi masalah

Karena penulis juga penasaran dengan permasalahan tersebut, maka penulis berusaha mencari jalan keluaranya.

Pertama penulis mencari berkas lama yang berisi data yang agap mirip dengan milik penanya, akhirnya ditemukanlah berkas daftar belajar komputer murid-murid PKBM Kertajaya.

Langkah selanjutnya adalah; penulis menyisipkan tandatangan ke salah satu sel di berkas LibreOffice Calc tersebut (biasanya kalau saya menyisipkan tanda tangan berarti bayaran).

Selanjutnya penulis mengatur tandatangan tersebut ke belakang dengan cara klik kanan tanda tangan => Arrange => To Background.

Dan memang benar, setelah gambar diatur ke latar belakang tidak bisa dikelola lagi atau jadi beku, mau dihapus, digeser, diperbesar tidak bisa.

Penulis pun mencobanya dengan disertai menekan tombol pintas, yaitu dengan menekan tombol Ctrl, Shift, Alt sambil klik pada gambar tandatanga, namun tetap tidak bisa. Bahkan penulis sempat masuk ke sel dengan menekan tombol F2 hasilnya tetap nihil.

Akhirnya penulis menggunakan metode seleksi seperti pada aplikasi grafis (Inkscape, Gimp, Scribus), dan ternyata berhasil.

Berikut caranya:

Tampilkan Alat Menggambar pada LibreOffice Calc dengan cara klik View => Toolbar => Drawing.

Setelah Alat Menggambar sudah berhasil ditampilkan, cari dan klik ikon Select (biasanya berada di pojok paling kiri)

Sekarang arahkan kursor ke gambar tanda tangan, kemudian klik tanda tangan tersebut, bisa bukan?.

Dengan cara ini kita tetap bisa mengolah gambar atau tandatangan pada LibreOffice Calc yang telah diatur ke Latar Belakan (Arrang To Background), Mudah bukan?

Di bawah ini adalah video sesuai artikel ini

Demikian Tutorial singkat yang dapat penulis bagikan hari ini, sampai jumpa pada tutorial lainnya, semoga penulis tidak malas menulis di blog ini.


Buku Belajar Komputer Tingkat Dasar 5 Tema 1

Puji syukur tim penulis panjatkan kepada Tuhan Yang Maha Esa yang telah memberikan rahmat dan karunia-Nya, setelah molor beberapa waktu akhirnya buku Belajar Komputer Tingkat Dasar 5 Tema 1 yang kami tulis hari ini bisa rilis.

Buku ini adalah lanjutan dari buku Belajar Komputer Tingkat Dasar 4 yang sudah terbit sebelumnya. Seperti pada buku sebelumnya, materi dalam buku ini juga masih mengusung tema belajar dan bermain secara menyenangkan.
Adapun beberapa materi dalam buku ini adalah:
  • Materi pada bab 1 berisi pelajaran geografi yaitu mengenal negara-negara di berbagai dunia, sehingga anak-anak dapat mengetahui nama benua dan negara di dunia. Di dalam bab ini juga berisi permainan tentang wilayah dalam berbagai negara di dunia.
  • Bab 2 berisi pelajaran huruf braille, yaitu huruf yang biasa digunakan oleh orang-orang tidak bisa melihat. Dengan menggunakan huruf braille, orang yang tidak bisa melihat bisa membaca. Di dalam bab ini juga dijelaskan sejarah singkat terciptanya huruf braille.
  • Bab 3 berisi pelajaran cara bermain catur untuk anak-anak. Di dalam bab ini dijelaskan pengetahuan dasar mengenai catur, notasi pada permainan catur, gerakan berbagai buah catur. Materi pelajar pada bab ini dapat dilakukan lewat permainan di komputer ataupun menggunakan perangkat catur asli yang tersedia.
 Untuk mengunduh buku digital Belajar Komputer Tingkat Dasar 5 Tema 1 silakan pilih salah satu tautan berikut:

Pembaca boleh menyebarkan buku versi digital ini ke masyarakat yang membutuhkan baik secara online ataupun offline, juga dipersilakan untuk membuat mirror di berbagai web atau server yang pembaca miliki.


Migrasikan Konten Django Lama ke Jekyll

Para pengembang BlankOn Linux saat ini telah menggunakan Jekyll untuk beberapa situsnya, salah satunya adalah laman Penulisan konten berbasis Markdown dan situs statis merupakan pilihan yang diambil setelah beberapa tahun sebelumnya para pendahulu menggunakan Django untuk sebagian besar website mereka. Konsekuensinya konten-konten website lama yang berbasis Django tersebut perlu...

Permainan Baru di GCompris bagian 1 (Keyboard Bayi)

Awal bulan Oktober 2020 lalu penulis membaca pengumuman di Millis GCompris bahwa tim pengembang akan merilis GCompris V 1.0 pada tanggal 17 November 2020. Dengan adanya rencana rilis tersebut maka Server GCompris akan dibekukan pada tanggal 15 s/d 17 November 2020.

Dengan adanya pengumuman tersebut maka Tim Penerjemah GCompris Indonesia bergerak secara cepat melakukan diskusi melalui Telegram.

Nah di sini ternyata saya salah baca atau memahami tanggal dan bulan.

Yang seharus tanggal tanggal 15 November saya bacanya 15 September.

Pada rilis GCompris V 1,0 ini terdapat perubahan dan perbaikan pada beberapa permaianan, contohnya adalah permianan Jelajahi Peternakan Hewan, Permianan Catur, Menghitung Benda, Pengelompokan. dan lain-lain.


Selain itu terdapat juga beberapa permaian baru pada GCompris V1.0, yaitu: Keyboar Bayi, Listrik Analog, Labirin Pemrograman, Belajar Digit, Belajar Pengurangan,dan Belajar Penambahan.

Pada post kali ini penulis membahas permianan bernama Keyboard bayi, sedangkan permainan baru lainnya akan penulis bahas pada post berikutnya

Terjemahan pada judul permainan ini masih keliru, yang lebih tepat adalah Keyboard anak.
Tapi bisa dimaklumi karena tim penerjemah melakukan penerjemahan secara langsung dari judul aslinya yaitu Baby keyboard.

Permainan ini bertujuan sebagai sarana belajar memahami berbagai tombol pada keyboard sekaligus pengenalan huruf dan angka untuk anak-anak pada usia dini.

Cara memainkannya adalah Tekan tombol apa pun pada keyboard sesuai keinginan.
Maka Huruf, angka, atau karakter muncul di layar sesuai tombol yang ditekan tersebut.

Jika yang ditekan tombol berupa huruf dan angka maka keluar suara  sesuai tombol yang ditekan.
Jika yang ditekan tombol selain huruf dan angka maka suaranya hanya bleep.

Rencananya permainan ini akan penulis masukkan pada Buku Belajar Komputer Dasar tingkat 0 Tema 3 yang sedang penulis kerjakan, atau bisa jadi dimasukkan ke tema 1 atau 2 edisi revisi.

Untuk yang tertarik dengan buku yang penulis rilis dapat mengunjungi tautan berikut => Unduh Buku Digital Gratis

Cara Menginstall Python 3.6 di Debian 9 (stretch)

Debian 9 (stretch) secara default membawa python2.7 (default) dan python3.5. Saya sedang melakukan instalasi aplikasi yang ternyata membutuhkan Python versi 3.6. Pada beberapa tutorial di internet, menyarankan untuk menggunakan repo debian testing. Namun saat tulisan ini dibuat, saya cek repo debian testing memiliki python versi 3.8, sedangkan versi tersebut ketinggian....

Mengunci Versi aplikasi di CentOS

Setelah catatan sebelumnya kita berhasil downgrade versi aplikasi di CentOS, ternyata saat kita lakukan yum update, aplikasi kembali dinaikkan versinya ke versi yang lebih baru. Tentunya hal ini menjengkelkan karena aplikasi project kita akan kembali error alias tidak jalan. Namun jangan khawatir, pada postingan ini kita akan membahas bagaimana cara...

Cara Downgrade Aplikasi di CentOS

Sebuah aplikasi yang ditulis oleh temen-temen developer terkadang hanya kompatibel dengan versi runtime tertentu pada bahasa pemrogramannya. Hal ini akan menuntut administrator agar dapat menyesuaikan dengan kebutuhan tersebut. Nah, catatan ini disimulasikan dijalankan di sebuah VM dengan sistem operasi CentOS 8. Catatan ini juga berdasarkan pengalaman penulis saat menangani sebuah...

Multi Machine Vagrant dengan Vagrantfile Tunggal

Vagrant merupakan sebuah tools yang saya gunakan untuk provisioning Virtual Machine, khususnya untuk environment lokal di laptop. Vagrant juga dapat digunakan untuk provisioning VM dengan beberapa provider, antara lain VirtualBox, VMware, Docker, Hyper-V, maupun custom. Saya sendiri menggunakan provider Libvirt :D Oke, salah satu alasan kenapa tulisan ini saya buat...

Cara Install Autoscaling GitLab Runner yang Hemat Biaya

Ngomong-ngomong soal GitLab tidak lepas soal CI/CD (Continuous Integration/Continuous Delivery/Deployment). Nah, kebetulan Di tempat saya bekerja menggunakan gitlab-runner. GitLab Runner merupakan salah satu fitur yang sangat bermanfaat untuk menjalankan CI/CD. Saya tidak akan menjelaskan apa itu CI/CD di sini (mungkin akan saya jelaskan di postingan yang lain). Hanya akan saya...

Menjalankan Vagrant Provider Libvirt di openSUSE Leap 15.2

Melihat pak Andi Sugandi menggunakan vagrant untuk menyediakan lab VM saat beliau mengajar, saya pun jadi penasaran. Karena provisioning VM menggunakan vagrant ini sepertinya mengasyikkan, terutama karena….. Nanti deh saya ceritain apa, dan mengapa ini penting saya utarakan. Apa itu Vagrant? Tampilan Website Vagrant Vagrant merupakan sebuah perangkat lunak yang...

Cara Install gcloud CLI di openSUSE Leap 15.2

Postingan kali ini akan sangat singkat, karena merupakan catatan yang dibuat untuk sekedar mendokumentasikan apa yang saya ketikkan saat memasang gcloud CLI di laptop saya. Sistem Operasi yang digunakan di laptop saya seperti yant tertulis di judul tulisan ini, yaitu openSUSE Leap 15.2. Sebelumnya, mungkin perlu juga saya tulisan apa...

openSUSE Leap 15.2 di Google Cloud Platform (GCP)

Sebagai pengguna openSUSE, saya kadang merasa penasaran apakah bisa saya menggunakan os ini di langit sebagai server. Yang saya maksud di langit di sini adalah Google Cloud Platform (GCP), karena saya juga pengguna produk google tersebut di beberapa proyek milik klien. Namun melihat daftar templat citra (image template) di Google...

Pi Zero sebagai Tukang Periksa (Bot)

Bojongbot - Pi Zero

Saya memasang beberapa cctv berbeda merek, baik yang berjenis ip cam maupun yang analog dengan dvr. Kesemuanya terhubung ke 1 server shinobi video yang pernah saya tulis di artikel sebelumnya. Nah, beberapa perabotan itu tentunya memiliki IP, dan ada beberapa yang suka ngambek, gak hidup. Di-ping juga gak respon. Agak susah kalau tidak mengetahuinya. Kapan hari ada insiden panci presto meledak, namun cctv di area dapur pas heng. Jadi tidak ketahuan prosesnya.

Setelah kemarin ngoprek-ngoprek ARM (lagi setelah sekian lama), saya jadi inget punya beberapa perabotan arm yang tidak kepakai, salah satunya pi zero. Ya sudah itu aja dimanfaatkan jadi mesin bot. Tugasnya cuma kirim ping ke beberapa perangkat yang ada di daftar, jika gak ngasih balikan, ngirim pesan ke telegram via bot telegram.

Kodenya ada di

Bot beraksi

Ada beberapa yang nanya, kenapa gak pakai ESP32 aja? Jawabannya sebagai berikut:

  1. Saya belum pernah ngoprek ESP32, baru order, belum datang saat tulisan ini dibuat
  2. Memanfaatkan yang sudah ada, jadi tinggal pakai gak perlu beli-beli
  3. Saya sangat familiar dengan linux dan bash, jadi ndak ribet bahasa pemrograman lainnya

Kepinginnya sih nanti botnya jadi tambah pinter, kulkas di rumah sepertinya ada API, bisa diintip nanti-nanti.

LibreOffice 7.0 di Raspberry Pi OS

Setelah kemarin bikin video Armbian dengan LibreOffice 7.0 ( ngoprek disela-sela kesibukan masih berlanjut. Kali ini ngidupin layar 7 inch dengan perangkat raspberry pi buat mainan bocah dengan GCompris.

Di Raspberry Pi OS (dulu Raspbian), yang berbasis debian buster. Caranya cukup mudah, pasang flatpak, pasang libreoffice dari flatpak. Beres!

Eh tunggu dulu, belum beres. Karena menu aplikasi libreofficenya belum bisa muncul. Harus digosok dulu. Berikut cara nggosoknya:

  • Edit berkas


  • Di paling bawah, tambahkan

[Environment_variable] XDG_DATA_DIRS=/var/lib/flatpak/exports/share:/home/pi/.local/share/flatpak/exports/share:/usr/local/share/:/usr/share/raspi-ui-overrides:/usr/share/:/usr/share/gdm/:/var/lib/menu-xdg/

  • Reboot

Udah deh!

LibreOffice 7.0 di Raspberry Pi OSLibreOffice 7.0 di Raspberry Pi OS

Unduh Buku Digital Gratis

Halaman ini sengaja penulis buat untuk kumpulan buku digital yang sudah penulis rilis dan bagikan gratis.
Silakan klik pada masing-masing judul buku untuk menuju link download

Cara menjadi Sponsor pada buku yang akan terbit

Server CCTV dengan Shinobi Video – Bag. 5, IP Cam Murah Meriah

Setelah liat-liat di situs perbelanjaan daring, saya menemukan satu kamera yang fiturnya cukup pas untuk disambungkan dengan Shinobi, harganya juga berkisar 250 ribu rupiah. Berikut fitur yang penting untuk digunakan:

  • Onvif
  • PTZ Rotate Pan Tilt 360
  • Ada sensor suara, sensor gerak dan pemberitahuan ke Hp

Mini CameraMini Camera

PTZnya juga berhasil tersambung dengan Shinobi. Onvif devicenya dikenali bikinan Eyeplus.

Server CCTV dengan Shinobi Video – Bag. 4, Menyambungkan dengan DVR

Saya memiliki satu set CCTV beserta DVRnya. Mereknya Nathans, sponsor dari kantor (PT SKK). Ini CCTV asli ndak pakai ribet, just work. Nah … PRnya adalah gimana caranya nyambungin ke Shinobi. Berminggu-minggu saya gak berhasil menemukan solusinya. Sampai saya menyerah.


Sekitar 2 mingguan lalu, saya tiba-tiba nemu sebuah saran url rtsp dari internet. Dan saya coba beneran bisa. Berikut urlnya:


Silahkan sesuaikan alamat IP beserta akun yang ada di DVR Anda.

Data Diri Lengkap di Marketplace

Maraknya penjualan data yang dicuri dari marketplace sedikit banyak tidak lepas dari penggunanya juga, makanya sampai saat ini kalau ada notifikasi peringatan untuk melengkapi data diri (No KTP, KK, dll.) saya tidak melakukannya, termasuk dulu jamannya masih main di FJB Kaskus.

Di beberapa marketplace mensyaratkan kita harus melengkapi data diri tersebut agar akun kita bisa terverifikasi 100 %, tapi saya tetap tidak melakukan, biarlah akun saya tidak terverifikasi 100% tidak mengapa daripada data diri diperjual-belikan, resikonya sih calon pembeli yang belum begitu kenal sangsi dengan dengan reputasi toko online kita.

Segera ganti password dan PIN anda untuk mencegah kejadian yang tidak diinginkan

Satu lagi, jangan terlalu banyak membiarkan saldo kita di akun marketplace, lebih aman lagi kalau kita pindah ke rekening pribadi (walau tidak 100%).

Saatnya tarik saldo ah, kalau ada yang saldonya melimpah dan tidak punya rekening pribadi, saya tidak menolak jika anda mengirimnya ke rekening saya

Cara Install extensi redis di Azure App Service Linux

Pada proyek di salah satu klien di tempat saya bekerja, menggunakan layanan Azure app service untuk mendeploy aplikasi Laravel. Aplikasi tersebut membutuhkan ekstensi redis untuk dapat terhubung dengan cache service di azure yang berbasis Redis. Berikut langkah-langkah pemasangannya. Buka konsol KUDU https://<sitename> Pilih SSH pada konsol SSH, ketikkan perintah berikut...

Screencast OBS Studio ke Google Meet di openSUSE

Saat ini masanya, masa pandemi ini banyak yang melakukan pekerjaan dari rumah (“WFH”). Salah satu kebutuhan saat meeting secara daring adalah melakukan screencasting, atau berbagi layar. Catatan ini menjelaskan bagaimana cara melakukannya dengan OBS Studio dan Google Meet. OS yang saya gunakan di laptop adalah openSUSE Leap 15.1. Yang perlu...

Membuat CI/CD di GitLab CI

Sekarang saatnya saya akan membuat sebuah catatan tentang bagaimana kita akan membuat CI/CD (Continuous Integration & Continuous Delivery/Deployment) di GitLab. Ini merupakan contoh sederhana yang mungkin dapat Anda jadikan acuan jika Anda sama sekali baru dalam dunia CI/CD, khususnya di GitLab CI. Istilah-Istilah Penting Hal pertama yang ingin saya jelaskan...

Install GitLab Runner dengan Ansible

Setelah kita selesai menyiapkan server GitLab di postingan sebelumnya ini dan/atau ini, selanjutnya akan kita setup server atau instance untuk digunakan sebagai Runner. Apa itu GitLab Runner? GitLab Runner merupakan aplikasi sumber terbuka yang digunakan untuk menjalankan job dan mengirim kembali hasilnya ke GitLab. Sebagai penghubung dengan GitLab CI, layanan...

Server CCTV dengan Shinobi Video – Bag. 3, Menggunakan IP Cam Publik

Bagaimana kalau mau belajar pemasangan shinobi namun tidak memiliki IP Cam? ada caranya kah?

Ada. Pasti Ada

Salah satu caranya adalah dengan menggunakan IP Cam publik yang berada di beberapa wilayah/negara. Daftarnya bisa didapat di Tidak semua bisa digunakan, namun tentu saja ada yang bisa. Saya sendiri menemukan satu yang sukses digunakan. Tahapannya kurang lebih seperti ini:

  1. Cari salah satu kamera. Saya menemukan yang berada di Jepang.
  2. Ambil IP Addressnya, investigasi url-urlnya dengan iSpy agar bisa mendapat informasi lebih detil.
  3. Jika tanpa nomor 2, juga bisa, kebetulan kameranya support ONVIF, tinggal masukin alamat IP dan atur-atur dan coba-coba sampai pas
  4. Khusus ini, saya menemukan bahwa konfigurasi yang pas itu MJPEG.

IP Cam PublikIP Cam Publik

Selamat mencoba dan latihan untuk kamera yang lain. Banyak spot-spot bagus juga lho.


PS: CCTV Xiaomi Yi Max 02 1080p Outdoor Smart IP Cam ini ndak support ONVIF gak bisa diakses via rtsp jadinya.

Server CCTV dengan Shinobi Video – Bag. 2, Pemasangan Shinobi

Pemasangan Shinobi cukup mudah sekali, cukup menjalankan sebaris perintah dari root:

bash <(curl -s

Selanjutnya tinggal mengikuti langkah-langkah yang ada di layar. Saya memilih mengambil dari branch development agar mendapatkan fitur-fitur terbaru sekaligus testing. Dokumentasi pemasangan secara lengkap bisa dibaca di sini.

Berikut hal-hal utama yang perlu dilakukan setelah pemasangan:

Peramban Firefox

Gunakan peramban Firefox. Karena peramban Chrome tidak mau bila ada https dan self sign. Juka untuk streaming beberapa video cctv. Firefox bekerja lebih benar dari pada Chrome. Enggak tau kenapa.

Masuk sebagai admin dan buat user

Kita perlu memasukkan url http://alamat-ip-shinobi-server:8080/super. User / Pass bakunya adalah / admin. Dari halaman ini kita bisa membuat user baru untuk masuk ke dashboard shinobi server. Juga untuk mengganti password akun admin tersebut.

Super AdminSuper Admin

Shinobi Dashboard

Untuk masuk ke dashboard, buka peramban dan arahkan ke http://alamat-ip-shinobi-server:8080/ lalu masukkan username/password yang sudah dibuat tadi.

Menambahkan Kamera

Klik tombol + (Add Monitor). Di sini kamera disebut monitor. Lalu tinggal isikan parameter-parameter yang sesuai kamera. Saya mencoba sendiri dan ribet. Setelah beberapa kali percobaan, baru berhasil.

Menambah KameraMenambah Kamera

Ada cara gampangnya, melalui menu pojok kiri atas – ONVIF. Lalu isikan alamat ip dan klik tombol search. Secara pintar, shinobi bisa mendeteksi kamera dalam jaringan yang kombatibel ONVIF. Jika ketemu, akan ditampilkan deskripsi kamera, bahkan bisa tahu merek/modelnya. Lalu tinggal klik tombol bergambar 2 dokumen (seperti ikon duplicate).

Add Monitor - ONVIFAdd Monitor – ONVIF

Selanjutnya tinggal melengkapi/mengganti isian yang ditampilkan (sama dengan jendela Add Monitor). Tinggal disesuaikan saja atau langsung Save. Secara baku, kamera akan memiliki mode View Only. Kita bisa mengatur/mengganti modenya menjadi Record.

Dua Kamera/MonitorDua Kamera/Monitor

Power Video Viewer

Digunakan untuk melihat video yang sudah tersimpan terekam. Tombol ikonnya mirip seperti tag/point pada peta.

Video ViewerVideo Viewer

Seingat saya, Power Video Viewer ini yang tidak bisa di Chrome.

Dah itu dulu tulisan kali ini. Tulisan berikutnya saya akan jelaskan cara optimasinya.


*Featured image diambil dari

Install GitLab dengan Ansible

Nah, kemarin sudah kita bahas instalasi GitLab secara manual di postingan sebelumnya. Kali ini saya akan tuliskan langkah-langkah instalasi GitLab dengan cara yang lebih simple, yaitu dengan Ansible. Ansible adalah sebuah alat otomasi yang dikembangkan oleh RedHat. Beberapa kata kunci yang melekat pada Ansible adalah “automation tool”, “configuration management”, “infrastructure...

Server CCTV dengan Shinobi Video – Bag. 1, IP Cam

Oprekan kali ini bermula dari lokasi proyek rumah yang kemalingan. Saat awal bangun, kemalingan genset, berikutnya beberapa minggu lalu, para tukang kemalingan handphone.

Saya memiliki cctv yang ada di rumah, subsidi dari Pak Bos yang memiliki perusahaan penjualan cctv. Yang sudah dipakai, sangat mudah dioperasikan. Just work. Namun kali ini sejak pandemi, saya kepikir untuk memanage cctv tersebut dengan linux, entah raspi atau pakai komputer-komputer spek rendah.

Sebelumnya, saya sama sekali tidak mengerti teknologi cctv beserta perabotannya. Namun sejak ngoprek ini, pengetahuan jadi bertambah. Awalnya hanya tau/nemu Shinobi Video saja, setelah itu bingung, harus bagaimana? cara koneksinya ke cctv bagaimana?

Dinamakan IP Cam, tentunya memiliki IP, umumnya, dari pabrikan diatur menjadi dhcp client. Sehingga dapat IP otomatis dari router/server dhcp. Saya dipinjami IP Cam oleh Pak Iwan Tahari. Dalam kardusnya tidak ada informasi apapun (buku manual juga tidak ada). Merek/Pabrikan pembuatnya juga tidak tahu. Jadi dengan coba-coba colokin aja ke router/modem yang ada di rumah, lalu diintip dapat IP berapa, nah itu dia tinggal dipanggil IPnya di peramban.

IP CamIP Cam

Setelah sukses dapat IP, saya punya 1 komputer yang rencananya jadi server cctv dan sudah ada dhcp servernya, saya sambungkan IP Cam tersebut ke komputer . Dapat IP Tinggal dipanggil di peramban dan muncul antar muka web si kamera.

Antarmuka WebAntarmuka Web

Hal utama yang perlu dilakukan adala mengatur zona waktu/waktu, agar nantinya saat dipakai, timestamp yang ditampilkan sesuai. Hal berikutnya adalah pengaturan kualitas gambar. Kamera ini sanggup merekam video/gambar dengan codec H265 dan H264, juga bisa merekam audio serta pengaturan fps dan kualitas. Saya mengatur kualitas medium dan codec H264 (karena H265, rata-rata browser tidak mulus menampilkannya).

Selanjutnya, bagaimana cara menguji bahwa kamera tersebut bisa digunakan? Saya cukup bingung dengan pertanyaan sendiri. Mencari-cari, akhirnya menemukan jawaban, bahwa bisa menguji dengan menggunakan VLC. Tinggal memasukkan url rtp/udp melalui menu Open Network. Nah bagaimana mendapatkan urlnya? macem-macem jawabnya dan bingung. Namun saya menemukan aplikasi pembantu, yang bisa memandu kita.

Aplikasinya bernama iSpy, opensource, adanya di OS Windows saja. Cara penggunaannya cukup mudah, bisa mencari berdasarkan IP yang kita masukkan atau dia mencari melalui jaringan yang ada. Setelah itu dia akan memberikan info ke kita daftar url yang bisa digunakan.


Ada beberapa format yang perlu diperhatikan:

  • ONVIF, ini format standar IP Cam, jika bisa ini, dengan Shinobi bisa otomatis dalam pendeteksiannya.
  • RTSP, catat url rtsp yang diberikan, di atas contohnya rtsp://ip:8554/live/ch00_0

VLC dengan rtspVLC dengan rtsp

Setelah sukses tampil di VLC, kita bisa melanjutkan pemasangan Shinobi Video.

Install GitLab di Ubuntu 18.04

Setelah sekian lama, saya merasa perlu memerbarui konten blog ini. Kali ini saya akan menulis ulang panduan instalasi GitLab di Ubuntu 18.04 dalam Bahasa Indonesia. Dokumentasi resminya dapat langsung diakses melalui halaman ini. Di sana cukup singkat dan mudah dipahami. Namun saya menambah beberapa cuil penjelasan tambahan berdasarkan hasil praktek...

Membuat VM dengan Ubuntu Cloud Image di KVM/virsh

PERINGATAN, Aku akan mengambil harta karunmu. Eh, bukan. Kalo disebut tutorial sebenarnya enggak juga, postingan ini lebih ke catatan pribadi. Dan mungkin akan banyak yang sulit dipahami, terutama jika pembaca belum pernah menggunakan Linux, atau belum pernah menggunakan virsh. Namun, saya akan tetap menulikan ini sebagai “tutorial” yang mungkin akan...

Pasang ulang Weibu F3C – Endless Mini PC (unreleased)

Saya mendapatkan komputer ini dari Baris, CEO Endless Solutions jaman saya masih jadi ambassador pada 2017. Sudah terpasang Endless OS dan berfungsi dengan baik. Beberapa hari ini saya memutuskan untuk mengganti OSnya dengan OS apapun yang memungkinkan.

Pengujian pertama dengan openSUSE Tumbleweed, pemasangan berjalan mulus, masuk desktop agak kacau dikarenakan layar HDMI dianggap sebagai layar extended. Jadi harus mengarahkan kursor yang tepat dan mengatur ulang layar beserta resolusinya. Setelah masuk desktop, wireless tidak bisa digunakan. ini sudah sesuai prediksi. Pasang firmware non-free juga tidak membuahkan hasil.

Pengujian berikutnya dengan Ubuntu 20.04 yang masih Beta. Hampir sama, perbedaannya hanya si Ubuntu sedikit lebih pintar mengenali layar dari pada openSUSE. Namun tetap perlu mengatur resolusi layarnya. Wireless juga sama-sama tidak bisa digunakan walaupun sudah memasang firmware non-free.

Berikutnya nyari firmware yang dipakai Endless OS, nemu di github Coba dipasang … jreng, tetep gagal. Karena masih penasaran, saya unduh iso Endless OS terkini, dan install lagi. Selanjutnya ambil /lib/firmware untuk dibandingkan, ternyata ada sedikit (bisa dibilang banyak sih) tambahan dari yang ada di github. Saya rangkum di Setelah dipasang, reboot, tetep gak mau.

Baca-baca dmesg, terus guling-guling, nemu titik terang untuk ambil dari terus dibongkar. Dicomot yang brcmfmac43455. Saya rangkum di

Dicoba di Ubuntu 20.04 sukses. Di openSUSE Tumbleweed pun demikian.

openSUSE TumbleweedopenSUSE Tumbleweed


Ubuntu 20.04Ubuntu 20.04

Macbook Jadul dengan openSUSE Tumbleweed

Jadi kapan hari menjenguk duo R, dan keinget kalau ada “harta” lama yang gak dipakai. Jadinya saya minta dan dicoba dihidupkan. Macbook2,1. Laptop jaman Pak Beye kata teman saya.


Ini komputer cukup nyusahin. Kalau pakai MacOS X mentok di Lion. Walhasil gak bisa ngapa-ngapain, wong banyak aplikasi ndak support. Boot usb linux juga ndak mau, gak kayak Macbook keluaran baru yang mau boot linux. Dulu masang ubuntu lewat media CD. Berhubung sudah gak punya CD, alhasil menggunakan segala cara agar bisa boot. Cara termudah adalah memasang ubuntu dari komputer lain, lalu pindah disknya ke macbook jadul tersebut.

Bagaimana dengan OS Linux lainnya? susah … gak bisa kepasang. Kesimpulan akhir, karena grub yang terpasang di ubuntu itu grub-pc i386 (walaupun pakai arch 64 bit). Jadi yang mulus terpasang pertama kali adalah ubuntu.

Selanjutnya usaha agar memasang openSUSE Tumbleweed. Berbagai cara sudah digunakan, ketemu kesimpulan cara yang mujarab sebagai berikut:

  1. Pasang opensuse (boot legacy, jangan uefi) pada disk (usb flashdisk) lain dengan komputer lain.
  2. Sediakan partisi kosong ext4 di macbook jadul tersebut.
  3. Salin isi usb flashdisk pada nomor 1 ke dalam partisi ext4 tadi. Salin dengan opsi -rapv biar kebawa semua atribut dan permission berkasnya.
  4. Uji dengan chroot, kalau mulus berarti sudah benar.
  5. Ubah fstab, sesuaikan dengan uuid yang baru, pindah motherboard/komputer akan membuat beda uuid.
  6. Edit grub di ubuntu, sesuaikan.

Ribet kan? tapi seru, buat nambah kesibukan selama masa diam di rumah.

Beli Kuota Rela, Tapi Beli Aplikasi Tidak Mau

Beberapa hari lalu saya mengisi acara Seminar Pendidikan yang diselenggarakan oleh salah satu yayasan, temanya adalah "Implementasi Belajar Sambil Bermain lewat Permainan di Gawai" (kurang lebih seperti itu kalau diterjemahkan ke bahasa Indonesia).

Salah satu Materi saya adalah mengenai penggunaan GCompris untuk belajar sesuai kurikulum yang berlaku.

Pada sesi tanya jawab ada salah seorang peserta yang bertanya;
  • Apakah GCompris bisa diinstal di Android?
  • Bisa, jawab saya singkat, cari saja di Playstore
Kemudian sebagian besar peserta seminar mulai mencarinya di playstore.
Salah seorang peserta bertanya;
  • Kok berbayar?

  • Ya, jawab saya dengan beberapa penjelasan singkat
  • Peserta lain kemudian menimpali kalau harganya terlalu mahal untuk sebuah permainan.
Saya pun menjawab:
  • Dalam satu bulan anda belu kuota habis berapa?
Dia jawab
  • Kurang lebih 100 ribu untuk saya, kalau untuk anak saya 20 ribu untuk seminggu.
Kemudian saya menimpali, Anda beli kuota setiap bulan saja tidak sayang, kok beli aplikasi yang harganya cuma 99.000 dan bisa dipakai seumur Android sayang banget.
Belum lagi kuota untuk anaknya yang dipakai untuk game online yang tidak jelas unsur pendidikannya.

Padahal rata-rata peserta seminar adalah tenaga pendidik (guru), termasuk kedua peserta yang bertanya tadi.
Sepertinya tingkat Edukasi untuk tenaga pendidik di Indonesia masih perlu ditingkatkan lagi.

Penulis Yang Egois

Belakangan ini saya memang sedang sering berinteraksi dengan orang-orang yang bergerak di bidang Keperpustakaan atau Literasi.

Dari obrolan dengan beberapa penulis buku dalam kegiatan tersebut, saya mendapatkan fakta bahwa kebanyakan penulis tersebutnya ketika mengawali jadi penulis menggunakan aplikasi yang tidak legal.
Sebagian dari mereka sadar bahwa aplikasi yang dia gunakan untuk menulis itu ilegal.

Sebagian lagi tidak mengetahuinya sama sekali karena ketika membeli komputer/laptop aplikasi tersebut sudah terpasang.
Saat sudah menjadi penulis terkenal, sebagian sudah menggunakan aplikasi yang legal dengan membelinya.

Sebagian lagi tetap menggunakan aplikasi yang ilegal walau sudah mampu membelinya dari hasil menulis buku. Dia pun tahu dan sadar kalau yang dia lakukan tidak benar.

Ada juga yang walau sudah menerbitkan puluhan judul buku tapi tetap tidak tahu kalau aplikasi yang dia gunakan untuk menulis itu ilegal.

Padahal di semua buku yang dia tulis, kemudian diterbitkan selalu tertulis kalimat kurang lebih seperti ini  
Hak Cipta dilindungi undang-undang. Dilarang memperbanyak atau memindahkan sebagian atau seluruh isi buku ini dalam bentuk apapun, baik secara elektronis maupun mekanis, termasuk memfotokopi, merekam atau dengan sistem penyimpanan lainnya tanpa izin tertulis dari penulis.

Dia sendiri ketika menulis buku sudah melanggar hak cipta, atau menggunakan aplikasi hasil penggandaan tanpa seijin pembuatnya, lha buku yang dia tulis kok tidak boleh digandakan!
Menurut saya ini namanya penulis yang egois dan dzalim.

Pesan saya, daripada menulis dengan aplikasi ilegal karena memang belum mampu beli, lebih baik pakai aplikasi yang walau gratis tapi legal.

Fungsi Fitur Arrange di Inkscape

Salah seorang pengguna Inkscape pemula ada yang bertanya mengenai fungsi dari fitur Arangge, mungkin karena bingung cara menggunakannya, atau belum pernah mencoba menggunakannya tapi sudah bertanya duluan.

Sayangnya lagi gambar yang ia lampirkan berupa hasil foto yang kurang jelas, mungkin ia tidak tahu cara mengambil cuplikan layar (screenshot) di komputer, ya mohon dimaklumi saja.

Sebenarnya  penjelasan mengenai fitur tersebut sudah saya tulis di buku Desain Grafis dengan Inkscape versi 2 yang rencanya akan terbit setelah Inkscape versi 1.0 rilis filnal secara resmi.

Di bawah ini adalah penjelasan singkat penggunaan Arrange yang saya Salin-Tempel dari buku yang sedang saya kerjakan tersebut.

Arrange digunakan untuk mengatur beberapa object yang letaknya tidak beraturan supaya rapi, cara kerjanya adalah menata object-object tersebut membentuk kolom dan baris dengan jarak tertentu sesuai parameter yang telah dilakukan.
Jendela pengaturan Arrange dapat ditampilkan dengan klik Object => Arrange.

Pada jendela pengaturan Arrange terdapat dua Tab, yaitu Rectangluar grid dan Polar Coordinate.

Berikut contoh penggunaan pada tab Rectangluar grid:
  • Seleksi object yang akan diatur

  • Isikan nilai tertentu pada kotak Rows dan Columns (contoh: 5 x 5)
  • Lakukan pengaturan pada menu Alignment (contoh: Center) 
  • Pilih salah satu menu Fit into selection box atau Set spacing (contoh: pilih Set spacing)
  • Isikan nilai tertentu pada kotak X dan Y (contoh: 2 X 2 cm)

Jika semua pengaturan dirasa sudah selesai dan benar, klik tombol Arrange, maka hasilnya seperti gambar di bawah ini

Berikut contoh penggunaan pada tab Polar Coordinate:
  • Pilih tab Polar Coordinate
  • Pada menu Objecs' bounding boxes: pilih Center

Pada menu Arrange on pilih Parameterized, maka segera tampil submenu seperti gambar di bawah ini:

Sebagai contoh latihan, lakukan langkah seperti berikut:
  • Pada kotak Center X/Y masing-masing isi dengan nilai 20,00 cm 
  • Pada kotak Radius X/Y masing-masing isi dengan nilai 20,00 cm
  • Pada kotak Angle X/Y isi dengan nilai 0,00 dan 360, jangan lupa unitnya pilih derajat (bukan turn, rad, atau grad).
  • Beri tanda centang pada Rotate objects
Jika semua pengaturan dirasa sudah selesai dan benar, klik tombol Arrange, maka hasilnya seperti gambar di bawah ini
Demikian penjelasan singkat contoh penggunaan fitur Arrange pada Inkscape.
Sampai jumpa pada tutorial menarik lainnya.
Draf naskah buku Desain Grafis dengan Inkscape v.2

Rute Bus Salatiga - Semarang

Sebenarnya penulis sudah lama ingin membuat artikel singkat ini, namun lupa terus karena lebih banyak menulis buku.

Artikel ini hanya berupa info singkat mengenai beberapa rute bus Salatiga - Semarang jika anda ingin  menggunakan moda transportasi umum.
Penulis sengaja menulis artikel ini untuk membatu pembaca yang bingung ketika memilih bus dari Salatiga yang mau ke Semarang.
Jika Anda akan naik Bus umum dari Salatiga ke Semarang memang harus lebih cermat, karena terdapat 3 tujuan terminal yang beda, dan satu bus jurusan tengah kota.

Salatiga - Terminal Mangkang
Bus ini cocok jika anda akan meneruskan perjalanan ke Semarang wilayah Barat dan Utara, Misalnya ke Bandara Ahmad Yani, Ngalian (Boja), Kendal, Jakarta, dan lain-lain. Anda bisa menggunakan Bus Patas Solo - Semarang yang lewat Tol Krapyak.

Salatiga - Semarang Kota
Bus ini rutenya lewat tengah kota (membelah jalur tengah kota), sangat cocok anda naiki jika tujuan anda adalah ke Semarang kota atau tengah, Misalnya ke Tembalang, Jatingaleh, RSUD Kariadi, Tugu Muda, Poncol, Johar, Kota lama, Tawang, dan lain-lain.
Anda bisa menggunakan Bus jurusan Salatiga - Semarang yang berupa Mini Bus, dan bus ini satu-satunya yang tidak lewat tol ketika ke Semarang, namun ketika bus ini kembali ke Salatiga (rute seblaiknya) lewat tol.
Bus jurusan ini hanya berjalan antara pukul 05.00 s/d 17.00 WIB.

Salatiga - Terminal Terboyo
Bus ini cocok jika anda akan meneruskan perjalanan ke wilayah Genuk, Demak, Kudus, Rembang, Surabaya (jalur Pantura), dan lain-lain. Namun perlu diingat, bahwa saat ini sudah jarang Bus dengan juruan Terboyo, karena terminal Terboyo sudah ditutup untuk Bus Umum dan dialih-fungsikan sebagai terminal Peti Kemas.
Namun masih ada satu-dua Bus Patas Solo - Semarang yang ke Terboyo, Bus ini melewati Tol Tembalang - Kaligawe, yaitu masuk gerbang tol Sukun dan keluar gerbang tol Kaligawe. Yang perlu diingat bahwa Bus jurusan ini tidak masuk ke terminal.

Salatiga - Terminal Penggaron
Rute Bus ini sejatinya sebagai pengganti Terminal Bus Terboyo, sangat cocok jika anda akan meneruskan perjalanan ke wilayah Kudus, Pati, Purwodadi, dan lain-lain.
Bus ini melewati Tol Tembalang - Gayamsari, yaitu masuk gerbang tol Sukun dan keluar gerbang tol Gayamsari

  • Semua bus melewati Tuntang, Bawen, Pasar Karangjati, Pasar Babadan, Banyumanik, dan Sukun, setelah dari sukun jalurnya baru berubah seperti rute masing-masing. 
  • Beberapa penjelasan dari artikel di atas belum lengkap, untuk itu silakan baca beberapa komentar  yang sudah ada sebagai pelengkapnya.

Proposal Sponsor Buku

Beberapa bulan belakangan ini saya bersama teman-teman sedang menulis buku Belajar Komputer Tingkat Dasar untuk anak-anak.

Buku yang kami tulis tersebut terdiri dari 16 seri yaitu:
  • 4 (empat) buku untuk tingkat 0 (nol), yaitu ditujukan untuk murid TK kecil dan besar yang masing-masing untuk semester 1 dan 2.
  • 12 (dua belas) buku tingkat 1 sampai dengan 6, yaitu ditujukan untuk murid tingkat SD yang masing-masing untuk semester 1 dan 2.
 Dalam waktu dekat ini kami akan mulai merilisnya satu persatu.
Seperti beberapa buku yang sudah saya rilis sebelumnya yang menggunakan sistem sponsor. Buku yang kami tulis ini juga menganut cara yang sama.
Beberapa orang teman sudah menanyakan tata cara menjadi sponsor buku tersebut. Maka malalui post ini saya lampirkan tautan tata cara menjadi sponsor buku tersebut

Unduh Proposal sponsor buku

Demikian pemberitahuan tentang perkembangan Belajar Komputer Dasar yang kami tulis.

Exiciting openSUSE Asia Summit 2019, Bali

So, this is the first time i attend openSUSE Asia Summit. This year openSUSE Asia Summit 2019 has been held in Udayana University, 5-6 October 2019. Why i attend this event? I was skeptical when i submit my paper the CFP is open in which i only submit one paper....

Membuat Label Buku Perpustakaan

Beberapa minggu belakangan ini saya sedang berurusan dengan buku perpustakaan, karena kebetulan desa kami sedang melakukan persiapan untuk mengikuti lomba perpustakaan desa tingkat Kabupaten Semarang.
Adapun kegiatannya antara lain membuat klasifikasi pada koleksi buku yang sudah kami miliki.
Klasifikasi meliputi pendataan ulang, menyortir, dan memberi label pada koleksi buku.

Di bawah ini saya sengaja membuat tutorial dalam pembuatan label untuk buku, sekaligus cara mendata koleksi buku yang sudah ada.

Untuk membuat klasifikasi koleksi buku perpustakaan, maka pengelola sebuah perpustakaan haruslah cakap dalam membuat kategori dari buku-buku yang sudah dimiliki. Salah satu hal terpenting adalah memiliki pedomannya. Adapun pedoman klasifikasi untuk mengelola buku di Indonesia secara umum menggunakan buku Pengantar Klasifikasi Persepuluhan Dewey.
Sedikit penjelasan mengenai buku Pengantar Klasifikasi Persepuluhan Dewey silakan lihat :

Dalam contoh tutorial ini, saya menggunakan LibreOffice 6.1.x.x yang berjalan pada sistem operasi BlankOn Linux XI Uluwatu.
Maka dari itu jika Anda mengunakan Sistem Operasi lain dan versi LibreOffice yang berbeda maka akan terdapat juga sedikit perbedaan, tinggal disesuaikan saja sendiri.

Untuk komputer/laptop anda yang belum terpasang LibreOffice, silakan unduk pada tautan berikut, pilih sesuai sistem operasi yang anda gunakan, kemudian pasang atau install.

Mengetik Data Koleksi Buku

Buka LibreOffice Calc, kemudian buat basis data dari koleksi buku yang ada dengan mengetik di kolom lembar kerja, contohnya seperti berikut:
Kolom A: No. | kolom B: Judul Buku | kolom C: Edisi | kolom D: Kode Buku | kolom E: Kode Pengarang | kolom F: Kode Judul 

Kolom G: Pengarang Buku | kolom H: Penerbit Buku  | Kolom I:  No. Iventaris | kolom J:   Iventaris Buku | kolom K:   Tgl. Iventaris

Setelah Basis Data dari koleksi buku sudah berhasil dibuat, simpanlah pada direktori tertentu di komputer anda, beri nama yang mudah diingat (misal: Data buku Perpustakaan), atau jika perlu simpanlah di folder khusus agar tidak tercampur dengan berkas lainnya.

Mengolah Basis Data

Untuk mengolah basis data lakukan langkah berikut:
Klik Berkas => Baru => Basis Data
Maka tidak beberapa lama tampil jendela untuk mengatur Basis Data yang akan dibuat, lakukan langkah berikut:
Pilih Menu Menyambung ke basis data yang ada, kemudian pilih Lembar Kerja (pilih Spreadsheet jika LibreOffice anda menggunakan antarmuka bahasa Inggris), klik tombol Lanjut untuk menuju ke proses berikutnya

Pada jendela yang tampil, klik tombol Ramban

Kemudian cari berkas yang sudah anda buat di LibreOffice Calc sebelumnya, pilih berkas tersebut => klik tombol Buka

 Klik tombol Lanjut untuk menuju proses berikutnya

Lakukan pengaturan sebagai berikut:
Pilih menu "Ya, daftarkan basis data untukku" dan "Buka basis data untuk penyuntingan"
Klik tombol Selesai

Pada jendela pengaturan Simpan, lakukan pengaturan seperti berikut:
Beri judul Basis Data yang sudah dibuat dengan mengetiknya pada kotak Nama, usahakan menyimpan Basis Data tersebut di folder yang sama tempat anda menyimpan berkas LibreOffice Calc sebelumnya.
Klik tombol Simpan untuk meyelesaikan proses penyimpanan.

Jika semua langkah yang anda lakukan sebelumnya benar semua, maka secara otomatis tercipta Basis Data seperti pada contoh gambar di bawah ini

Sampai disini pembuatan basis data sudah berhasil dibuat, langkah selanjutnya adalah membuat Label dari data yang ada secara otomatis.

Membuat Label Otomatis

Berikut ini adalah contoh langkah-langkah membuat tabel secara otomatis:
Klik Berkas => Baru => Label

Maka secara otomatis tampil jendela pengaturan label yang terdiri dari 3 Tab yaitu tab Label, Format, dan Opsi. Pada masing-masing tab memiliki menu dan submenu yang berbeda-beda.

Pengaturan Tab Label 

Pada kotak Teks label ketik nama sesuai Perpustakaan, dalam contoh PKBM KERTAJAYA, kemudian tekan tombol Enter pada keyboard,
arahkan kursor pada kotak menu di bawah Basis data:, kemudian klik menu tersebut, pilih basis data yang sudah dibuat sebelumnya, dalam contoh pilih Basis Data Label Buku Perpustakaan DATA 1

Arahkan kursor pada kotak menu di bawah Tabel:, kemudian klik menu tersebut, pilih lembar kerja yang berisi data, dalam contoh terdapat dua lembar kerja yaitu  DATA 1 dan DATA 353-406, dalam contoh menggunakan data di DATA 1

Arahkan kursor pada kotak menu di bawah Ruas basis data: kemudian klik menu tersebut, pilih data berdasarkan kolom tersebut berada, dalam contoh KD Buku, karena aturan pelabelan buku yang umum adalah setelah Nama Perpustakaan adalah kode buku.

Maka secara otomatis kode angka pada kolom KD Buku secara masuk ke kotak Teks label

Tekan tombol Enter pada akhir kalimat di kotak Teks label agar terdapat paragraf baru yang nantinya di isi data-data pada kolom KD Pengarang dan KD Judul.

Untuk memasukkan data dari kolom  KD Pengarang dan KD Judul ke kotak Teks label lakukan seperti cara sebelumnya, contohnya seperti pada gambar di bawah ini:

Pengaturan Tab Format

Untuk sementara pengaturan pada tab Label dihentikan dulu, maka dari itu pindah ke tab Format, lakukan pengaturan seperti dalam contoh di bawah ini

  • Dalam pedoman pengelolaan perpustakaan daerah Kabupaten Semarang, ukuran label adalah 6,00 cm x 4,00 cm, jika anda ingin mengikuti aturan tersebut ubah saja pada menu Tinggi menjadi 4,00 cm dan Pitch vertikal: menjadi 4,20 cm. Selain itu ubah juga pada menu Baris: menjadi 8
Sekarang tugas selanjutnya adalah membuat nama label pada format label yang akan digunakan, caranya klik tombol Simpan
pada jendela yang tampil ketik nama Label di dalam kotak menu Merek (contoh Label Kategori Buku), klik tombol Oke untuk menyimpan nama label.

Sekarang kembali ke tab Label untuk menerapkan Nama Label yang tadi sudah ditambahkan, caranya yaitu klik menu di samping Merek, kemudian pilih nama label yang ditambahkan tadi.

Oh ya, pada menu format sebaiknya pilih menu Lembar, karena jenis label yang akan dibuat berada dalam halaman yang berisi banyak label

Pengaturan Tab Opsi

Sekarang pindah ke tab Opsi, lakukan pengaturan seperti berikut:
Pada menu Distribusikan pilih Seluruh halaman, beri tanda centang pada kotak Selaraskan isi.

Jika semua pengaturan pada masing-masing tab sudah selesai, klik tombol Dokumen Baru untuk menampilkan pembuatan label pada halaman writer, jika tidak terjadi kekeliruan maka akan tampil halaman baru seperti dalam contoh di bawah ini

Merapikan Format Label

Sekarang label sudah berhasil dibuat, namun formatnya masih kurang bagus, untuk itu perlu dimodifikasi, berikut caranya:
Blok salah satu isi label, kemudian atur supaya rata tengah, atur juga jarak spasinya menjadi 1,5 spasi

Mengatur Bingkai

Untuk mempermudah pemotongan label yang dicetak maka perlu pembatas berupa garis, maka dari itu sebelum dicetak masing-masing kotak label harus diberi bingkai, berikut caranya:
  • Pilih salah satu kotak label, kemudian klik kanan, pilih Properti

Pada jendela yang tampil, lakukan pengaturan seperti berikut:
  • Garis: pilih garis lurus 
  • Lebar: 0,50 pt 
  • Warna: Hitam 
  • Pada menu Perataan Garis => Pratata: pilih atau klik ikon Atur Keempat Garis Tepi

Klik tombol Oke untuk menyelesaikan proses pengaturan Bingkai.

Jika semua pengaturan Paragraf dan Bingkai sudah sesuai keinginan, klik tombol Selaraskan Label untuk menerapkan semua perubahan pada masing-masing label.

Maka hasilnya seperti pada gambar di bawah ini

Simpan label di dalam folder yang sama dengan berkas Data buku Perpustakaan dan Basis Data yang sudah dibuat sebelumnya, beri nama yang sesuai (misalnya: Label Buku Perpustakaan)
Sampai langkah ini, sebenarnya pembuat label sudah berhasil, dan tinggal dicetak (diprint) pada kertas saja.
Untuk mengetahui apakah label yang dibuat sudah sesuai, kita bisa mencetaknya menjadi berkas, yang mana hasilnya berupa berkas LibreOffice Writer, berikut caranya:

Klik ikon Printer pada Bilah Alat Standar atau tekan Ctrl+P pada keyboard

Beberapa saat kemudian tampil peringatan bahwa anda akan mencetak dokumen yang berisi kolom basis data, klik Ya untuk melanjutkan ke proses berikutnya.

Pada jendela pengaturan cetak Surat Masal lakukan pengaturan berikut:
  • Rekaman: pilih Semua
  • Keluaran: pilih Berkas, pada submenu Simpan Dokumen Gabungan pilih Simpan sebagai dokumen tunggal
  •  Klik tombol Oke untuk melanjutkan ke proses berikutnya.

Simpan label hasil cetak tersebut di dalam folder yang sama dengan berkas Data buku Perpustakaan, Basis Data, dan Label Buku Perpustakaan yang sudah dibuat sebelumnya, beri nama yang sesuai (misalnya: Label Buku Perpustakaan_Print)

Sekarang buka berkas hasil label tersebut, maka hasilnya seperti dalam contoh gambar di bawah ini:
Demikian Tutorial cara membuat label dengan LibreOffice yang dapat saya tulis kali ini, sampai jumpa pada tutorial lainnya.

Oh ya, untuk anda yang ingin menonton video tutorial yang sesuai dengan postingan ini, silakan lihat pada tautan di bawah ini

Dulu diblokir, sekarang jadi Idola

Seperti yang sudah kita ketahui bersama, bahwa untuk meredam penyebaran hoax lewat Media Sosial, pemerintah Indonesia menggunakan solusi yang pintar dan cerdas, yaitu dengan melakukan pembatasan pada beberapa Media Sosial, diantaranya Facebook, Whatsapp, dan Instagram.

Di Facebook dan Whatsapp pembatasan meliputi pada jenis Gambar dan Video, yang salah satu efeknya adalah kita tidak bisa melihat gambar dan memutar video yang dikirim oleh sesama kedua media sosial tersebut, walaupun kita tetap bisa saling berbagi gambar dan video.
Untuk mengatasi masalah ini beberapa teman terpaksa menggunkan VPN gratisan, namun penggunaan VPN gratis tentu ada resikonya, salah satunya seperti yang sudah saya tulis di post sebelumnya berjudul Ingin Mencegah Penyebaran Hoax, Tapi Yang Terjadi Sebaliknya.

Efek lain dari pembatasan ini adalah, sekarang orang-orang jadi tahu cara mengakses situs-situs yang sebelumnya telah diblokir oleh pemerintah Indonesia.
Sedikit sia-sia sudah dana milliaran rupiah untuk proyek ini karena sebuah solusi yang sangat cerdas.

Sudah bukan rahasia lagi, jika banyak orang Indonesia sudah kecanduan Facebook dan Whatsapp untuk komunikasi sesama penggunanya, begitupun dengan beberapa teman yang punya bisnis online sudah mulai tergantung pada kedua media sosial tersebut, sehingga mereka mulai kelimpungan dengan adanya pembatasan ini.

Sejak adanya pembatasan tersebut, teman-teman mulai menggunakan media sosial alternatif, salah satunya Telegram, hal ini dapat dilihat dengan semakin meningkatnya orang yang baru bergabung ke Telegram.

Para pengguna telegram yang baru saja menggunakan media sosial ini otomatis akan terlihat jika kebetulan nomor telepon yang mereka gunakan tersimpan di daftar kontak HP kita.

Berkaitan dengan hal ini, saya sering iseng meledek beberapa teman yang baru saja menggunakan Telegram, terutama pada teman yang sebernanya cukup melek di bidang IT.

Padahal kalau sedikit menengok sejarah ke belakang, Telegram pernah diblokir oleh pemerintah Indonesia dengan alasan sebagai penyebaran konten negatif.
Konten negatif yang dimaksud antara lain propaganda radikalisme, terorisme, paham kebencian, ajakan atau cara merakit bom, cara melakukan penyerangan, gambar tak senonoh, dan lain-lain yang bertentangan dengan peraturan perundang-undangan di Indonesia.
Namun hal ini tidak berlangsung lama karena Pavel-Durov sebagai pendiri Telegram langsung datang ke Indonesia untuk melakukan perundingan dengan Menteri Komunikasi dan Informatika.

Terus pertanyaannya adalah, kapan Telegram diblokir lagi?

Ingin Mencegah Penyebaran Hoax, Tapi Yang Terjadi Sebaliknya

Sehubungan dengan sedang memanasnya situasi politik di Indonesia saat ini, salah satu upaya yang dilakukan Pemerintah adalah mencegah terjadinya penyebaran Hoax.

Upaya tersebut adalah dengan melakukan pembatasan penggunaan Media Sosial terutama Facebook, Whatsapp, dan Instagram.

Namun, baru beberapa hari ini pemerintah membatasi penggunaan media sosial untuk mencegah penyebaran Hoax, tapi justru yang terjadi sebaliknya, yaitu mulai tadi malam banyak hoax dan spam yang malah beredar dengan beringas lewat media sosial terutama Whatsapp.

Cara ini bisa disebut teknik menyebar spam melalui hoax, jadi kalau diikuti salah satu efeknya adalah Gawai (Smartphone) yang Anda gunakan tahu-tahu muncul berbagai iklan yang tidak dinginkan.

Kalau pemberitahuan seperti di gambar memang benar-benar resmi dari Whatsapp seharusnya alamat tautan yang disertakan adalah bukan tautan seperti dalam chat tersebut.

Pun mulai pagi ini hal yang sama terjadi pada Chat di Facebook, baik chat pribadi maupun chat Marketplace.

Mungkin tidak beberapa lama lagi hal ini juga akan merambah ke Media Sosial lain.

Salah satu penyebab hal ini bisa terjadi karena banyak masyarakat yang kurang pengetahuan di bidang IT ikut-ikutan latah menggunakan VPN gratisan, terutama para emak-emak dan bapak-bapak yang Smartphone-nya lebih pintar dari yang punya.

Upaya Pencegahan
Untuk mencegah supaya spam ini tidak semakin menyebar luas, kita semua dapat mecegahnya dengan membuat laporan seperti di bawah ini:

Rencana Rilis Buku Tahun 2019

Berikut adalah rencana rilis buku yang saya tulis, baik yang ditulis sendiri maupun bersama tim
1. Mei: Menulis Buku dengan LibreOffice versi digital
2. Juni: Belajar Komputer Tingkat Dasar 0 (buku 1 dan 3)
3. Juli s/d September: Belajar Komputer Tingkat Dasar 1 s/d 6 (masing-masing buku 1)
4. November: Membuat Video dengan Aplikasi FOSS
5. Akhir tahun: Tips & Trik Inkscape v.1.0

  1. Buku ini adalah edisi digital dari versi cetak yang sudah terbit sebelumnya, ketika saya merilis versi Digital buku tersebut jangan menanyakan versi cetaknya, karena versi cetaknya sudah tidak saya jual.
  2. Buku ini dibuat khusus untuk anak-anak TK 0 kecil dan 0 besar semester 1, berisi permainan di GCompris dengan dilengkapi beberapa cerita sesuai tema permainan yang diajarkan.
  3. Buku ini dibuat khusus untuk siswa/i kelas 1 S/D 6 SD semester 1, berisi pelajaran komputer yang disesuaikan dengan pelajaran K13, beberapa materi di buku ini adalah penyempurnaan dari buku yang sudah pernah dirilis sebelumnya, juga beberapa revisi menyesuaikan dengan buku K13 hasil revisi 2018.
  4. Ini adalah buku tutorial cara mengolah dan membuat video dengan beberapa aplikasi Open Source, saya sengaja menulis buku ini dikarenakan saat ini saya belum menemukan buku jenis ini yang beredar, saya sudah ngubek-ngubek di Gedung Perpustakaan Nasional Jl. Medan Barat Jakarta, tapi tidak menemukan buku yang dimaksud.
    Kaos kenang-kenangan dari Perpusnas
  5. Berisi lanjutan dari buku Inkscape versi cover Suramadu yang sudah saya rilis sebelumnya, buku ini berisi berbagai fitur dan tool baru di Inkscape V.1.0, tentunya dilengkapi berbagai tips dan trik cara menggunakannya sehingga pembaca bisa menghasilkan karya yang keren, buku ini rilisnya belum bisa dipastikan karena masih menunggu rilis Inkscape V.1.0 Final (bisa saja tahun depan baru rilis)
Terlaksana dan tidaknya rilis buku yang saya sebutkan di atas tergantung adanya sponsor yang mau menyeponsori buku-buku tersebut. Bisa saja ada yang tidak rilis tahun ini, namun tetap saya usahakan untuk merilisnya, walau tidak semuanya.

Bagi yang tertarik untuk menjadi SPONSOR buku-buku tersebut bisa mengajukannya melalui surel yang dikirim ke istanalinux<at>gmail<dot>com.
Terima kasih
Salam sukses untuk kita semua

Promosi Produk

Produk yang bagus tidak akan dikenal tanpa promosi yang bagus juga.
Karena kurang dikenal banyak orang, maka kurang laku di pasaran.
Namun sebaliknya, produk yang kurang bagus lebih laku karena promosi yang gencar.
Walaupun produk itu harganya tidak murah.

Begitupun dengan Aplikasi
Walaupun aplikasi tersebut bagus dan murah, bahkan gratis, namun karena kurang promosi, maka kalah dengan produk yang kurang bagus tapi berbayar.
Bahkan kalah dengan aplikasi yang harusnya berbayar tapi menjadi gratis.

Salah satu cara untuk mempromosikan sebuah aplikasi adalah dengan menulis dokumentasi aplikasi tersebut sebanyak-banyaknya.
Dokumentasi bisa berupa buku panduan (manual book) atau Video.
Akan lebih menarik lagi jika isi buku tersebut bisa diimplemtasikan secara langsung.

Misalnya bisa diterapkan secara langsung dan mudah di bidang pendidikan.
Itu pun harus sesuai standar pendidikan yang ada.
Pun harus sesuai dengan usia anak didik.

Menulis sebuah buku perlu biaya. Baik buku cetak maupun buku elektronik, sama saja.
Biaya digunakan oleh penulis untuk kebutuhan sehari-hari, misalnya untuk makan dan minum.
Biaya juga diperlukan untuk kebutuhan riset.
Pun untuk piknik agar otak penulis tetap sehat, agar isi buku yang ditulis lebih bermutu.

Biaya bisa di dapat dengan berbagai cara, salah satunya dari sponsor atau donatur.
Dengan menjadi sponsor sebuah buku, maka secara otomatis juga sudah mempromosikan produk anda sendiri.
Dengan menjadi sponsor sebuah buku, maka anda juga sudah berjasa di bidang pendidikan.
Sudah ikut mencerdaskan generasi penerus bangsa.

Ada yang tertarik jadi sponsor?
Silakan tulis di kolom komentar