• So You Think You Know Git

    I learn a lot about GIT after watching this Youtube video.

    Showed a lot of commands (or sub-command) related to GIT, many command i didn’t know it existed before (yup never tried to use some of the commands before), like git push --force-with-lease, huge help!

  • Auto assigned Jira Service Management based on Opsgenie on-call rotation

    Previously, if someone create a Jira ticket on our Jira Service Management (service desk) ticketing system, it will auto-assigned to the person that i already assigned, and this person can quite overwhelmed with incoming ticket, event though we can route the ticket to another person, but the first impression will overwhelmed them.

    Because of that, i’m looking a way to automate the assignment of Jira Service Management based on Opsgenie on-call rotation, and it can be done easily.

    First open your Jira Service Management, head to your service project, say the name is “IT Support Service Center”, then you go to Project Settings, then you got to Automation.

    Select Create Rule, name your rule, add your trigger, choose Issue Created then choose Add Action, choose Assign Issue, then choose Assign to a user, then choose On-call responder and choose the team that you want to have auto-assigned, then choose the on-call schedule name on that list.

    Mine’s look like this

    After this, you can create a new ticket, and it will auto-assigned to the on-call responder based on the schedule.

  • Manage Multiple git project folder

    Managing multiple git project can be cumbersome, even just for updating the code, like pulling the latest code from the remote repository.

    For instance i have these project

    ➜ ls -1
    bla-android
    bla-platform
    blalslda
    open-bla
    billblabal
    edithing
    bla-blog
    bla-handler
    bla-fin
    wednes
    in-app
    saturca
    some-manifest
    code-backup
    doing-internal
    is-there-news
    protect-plus
    protect-plus-the-second
    notsomething
    onboarding
    blanking-the-new
    curious
    someform
    verosomeform
    vision-plus
    angle-plus
    some-text-collection
    

    If we wanted to update the code for all of these project, we have to do it manually, cd to the folders then so some git pull for each folder, we can use shell command like find . -name .git -print -execdir git pull \;, the command will find the git project folder and then execute each folder’s git pull command, to make things easier, we can make an alias for the command like alias git-pull-all='find . -name .git -print -execdir git pull \;', now we can just type git-pull-all and it will execute the command for all the git project folder.

    Or, you could use a python package, called gita, it will help you to manage multiple git project folder, and it feels flexible because we can relay the git command to the package, so we can do something like git pull or git push to update all the git project folder.

    Adding git project to gita

    $ gita add <folder-name>
    

    or you want to add all or the folder in one particular folder

    $ gita add -a <folder-name>
    

    Get latest information from each folder

    ➜ gita ll
    repo1   development []     [FN-9961] FDS extra onboarding (2 hours ago)
    repo2   develop    []      Merge branch 'enhance/unit-test-coverage' into 'develop' (3 weeks ago)
    repo3   main       []      Merge branch 'feature' into 'main' (2 years, 9 months ago)
    repo4   main       []      add service partner (2 years, 1 month ago)
    repo5   main       []      Merge branch 'releases/rb-v1.35.0' into 'main' (3 weeks ago)
    repo6   main       []      Merge branch 'ADO-1739-base-image-jupyterhub' into 'main' (3 months ago)
    repo7   main       []      second init(?) (9 months ago)
    repo8   develop    []      Merge branch 'staging' into develop (4 months ago)
    repo9   main       []      Merge tag 'release-v1.33.0' (5 weeks ago)
    repo10  main       []      Add MP pubsub subscription IAM grant (4 weeks ago)
    repo11  development []     [FUN-5663]  Webview (3 weeks ago)
    repo12  develop    []      Update BDS CI/CD Production (2 weeks ago)
    repo13  main       [$]     Update platformbanking image to 9587cd35 (43 minutes ago)
    repo14  main       []      progressing optimization 10% (5 months ago)
    repo15  staging    []      remove unused api (4 months ago)
    repo16  master     []      add new fopml feed from reeder (1 year, 3 months ago)
    repo17  main       [$]     [int][dev]update mobile api dev (6 hours ago)
    repo18  main       []      add file for DRC (4 months ago)
    repo19  develop    []      Merge branch 'BM-32353-dev' into 'develop' (34 hours ago)
    repo20  develop    []      Merge branch 'bypass_dev' into 'develop' (3 weeks ago)
    repo21  develop    []      Merge branch 'ms_UTP-7013' into 'develop' (54 minutes ago)
    repo22  main       []      Merge branch 'rc_v.2.4.0_into_main' into 'main' (3 weeks ago)
    repo23  main       []      remove fluentd (4 weeks ago)
    repo24  main       []      update roles datadog & telegraf (8 weeks ago)
    repo25  main       []      change readme (5 months ago)
    repo26  main       []      add more text for test (1 year, 3 months ago)
    

    We can have a fresh pulled repo using one command, or do some git command within one command, like gita pull or gita push

    But of course, we could still using the old way by using good old find.

    find . -name .git -print -execdir git pull --rebase \;
    

    Or you could always add it to your .bashrc or .zshrc

    alias gitupdate='find . -name .git -print -execdir git pull --rebase \;'
    
  • The Unix haters handbook

    Dokumen ini dirilis tahun 1994, di saat Unix masih mendominasi server-server yang ada di dunia.

    29 tahun di dunia internet sudah seperti kuno banget, dan jauh sekali dengan keadaan sekarang, meski sebenarnya dunia jaringan, internet dibangun atas banyaknya sistem-sistem kuno ini.

    Tahun 1994 masih SMP, sangat jauh dari dunia perkomputeran, hanya tau komputer IBM dengan interface DOS, lupa seri apa, kayaknya dengan prosesor 3080, lupa.

  • Browser fingerprinting, bagaimana tracker memata-matai pengguna

    Browser yang digunakan oleh kita, ketika mengakses suatu website, website tersebut bisa melakukan tracking terhadap kita, yang mana yang melakukan tracking itu memiliki profile kita, device yang kita gunakan, dari mulai sistem operasi, jenis browser, hingga extension, resolusi yang digunakan.

    Dan data kita bisa dijual ke pihak lain oleh perusahaan tracker tersebut.

    Hal ini menjadikan kita selaku pengguna akan dimata-matai, kemanapun kita melakukan browsing, akan bisa dikenali bahwa Deden telah mengakses ini itu, dan bisa dibuatkan profile dan juga korelasi dengan teman, keluarga dan lainnya.

    Untuk mengecek apakah kita rentan untuk diikuti oleh tracker-tracker tersebut, bisa menggunakan tool yang dibuat oleh EFF, dengan tool ini, kita bisa tahu apa saja yang rentan, misalkan untuk browser Safari yang saya gunakan

    Ada beberapa browser yang secara default melakukan perlindungan privacy, salah satunya browser Brave. Untuk browser yang tidak menyediakan fitur ini secara default, kita bisa melakukan proteksi lain, yaitu dengan DoH (DNS over HTTPS Protocol), dan untuk kasus DoH provider yang saya gunakan, memiliki proteksi terhadap iklan dan tracker, saya menggunakan DoH TiarApp.

    Setelah melakukan setting dan menggunakan DoH Tiar App, hasil dari Cover Your Track EFF mejadi begini.

    Proteksi terhadap tracker ini sangat penting, karena sangat intrusif, karena kita tidak hanya akan diikuti di browser, tapi aplikasi-aplikasi diluar browser, seperti kita akan mendapatkan iklan di aplikasi Instagram, Twitter, TikTok, dan lainnya.

    Karena sidik jari device yang kita gunakan sudah dimiliki oleh tracker, jadi gampang untuk mereka untuk bisa menampilkan iklan yang cocok untuk kita, karena sudah mempelajari kebiasaan kita ketika browsing menggunakan browser atau ketika scrolling instagram dan aplikasi lainnya, karena semua di ekosistem yang sama, dengan tracker yang masing-masing saling melengkapi satu sama lain.

    Kita rekap ya,

    1. Gunakan browser yang secara default melindungi pengguna, coba menggunakan Firefox atau Brave
    2. Jika hendak menggunakan proteksi, gunakan DoH/DoT, yang saya menggunakan https://doh.tiar.app/