1 poin oleh GN⁺ 2024-02-09 | 1 komentar | Bagikan ke WhatsApp
  • Aras bahkan tidak tahu bahwa Blender memiliki Video Sequence Editor (VSE), tetapi setelah mengunjungi Blender HQ ia berkontribusi paruh waktu selama sekitar dua bulan untuk peningkatan performa dan kualitas di Blender 4.1
  • Perubahan yang paling mencolok adalah responsivitas timeline: pada proyek Sprite Fright dengan sekitar 3.000 strip terlihat, UI untuk scrolling dan panning meningkat dari sekitar 15fps menjadi lebih dari 60fps
  • Multithreading, SIMD, dan penyederhanaan matematika diterapkan pada konversi RGB↔YUV berbasis ffmpeg, resampling audio Audaspace, konversi dan filtering gambar, serta pemrosesan efek VSE
  • Pada tiga dataset Blender Studio, waktu render akhir film VSE di PC penulis menjadi sekitar 2x lebih cepat; rendering Sprite Fright turun dari hampir 13 menit menjadi 7 menit
  • Total 37 pull request telah ditinjau dan di-merge; perubahan saat ini masuk ke Blender 4.1, dan pekerjaan VSE berikutnya akan berlanjut mulai Blender 4.2

Bagaimana akhirnya berkontribusi ke Blender VSE

  • Aras pergi ke Amsterdam untuk menghadiri Unite 2023 dari Unity, lalu mengunjungi Blender HQ pada waktu luangnya
  • Di sana, Francesco dan Sergey menanyakan apakah ia berminat berkontribusi ke VSE, dan setelah itu ia mulai menyentuh Video Sequence Editor di Blender
  • Meski tidak terlalu memahami penyuntingan video, timeline, sequencer, color grading, ffmpeg, maupun audio mixing, ia memulai dari optimisasi performa, area yang relatif minim perdebatan
  • Setelah sekitar dua bulan kerja paruh waktu, terkumpul serangkaian perbaikan yang akan masuk ke Blender 4.1
    • Blender 4.1 sudah masuk beta dan bisa diperoleh dari daily builds reguler

Menggambar timeline dan responsivitas UI

  • Timeline VSE adalah area di bagian bawah layar, dan jika seluruh proyek Sprite Fright edit di-zoom out, sekitar 3.000 strip terlihat sekaligus
  • Sebelumnya, sekadar scrolling dan panning di timeline ini membuat pembaruan UI tertahan di kisaran 15fps
  • Setelah perubahan, ia berjalan pada lebih dari 60fps
  • Bottleneck-nya adalah struktur yang mengirim draw call API grafis per dua segitiga; di profiler Superluminal, sebagian besar waktu dihabiskan di dalam fungsi “mulai menggambar satu quad” dan “selesai menggambar satu quad”
  • Dalam proses ini, perilaku aneh pada tampilan waveform audio juga diperbaiki dan UI dirapikan; tampilan waveform kini aktif secara default

Peningkatan kualitas dan kecepatan tampilan scope

  • VSE menyediakan opsi tampilan scope umum seperti histogram gambar, waveform, dan vectorscope
  • Histogram sebelumnya digambar sebagai gambar berpiksel dengan saturasi sangat kuat, tetapi kini ditampilkan dengan polygon yang lebih halus, grid, dan saturasi lebih rendah
  • Opsi parade pada Waveform memiliki masalah terlalu cepat jenuh, dan setelah multithreading diterapkan menjadi 15x lebih cepat
  • Heksagon warna luar pada Vectorscope sangat berpiksel, sehingga diperbarui dengan menyalin design baru dari vectorscope image editor
  • Opsi zebra stripes untuk “menampilkan area overexposed” juga menjadi 2–3x lebih cepat
  • Ia juga menambahkan pandangan bahwa semua scope dan scope di image editor semestinya suatu saat diproses dengan GPU compute shader

Optimisasi konversi RGB↔YUV ffmpeg

  • Blender terutama menggunakan library ffmpeg untuk membaca dan menulis audio serta video
  • Di dalam Blender, yang digunakan bukan tool command-line ffmpeg, melainkan library kode seperti libavcodec; libswscale bertanggung jawab atas konversi RGB↔YUV frame film
  • libswscale mendukung konversi multithread, tetapi jika hanya memakai sws_getContext() dan sws_scale(), ia berjalan sepenuhnya single-thread
  • Untuk memakai multithreading, parameter "threads" harus disetel saat inisialisasi, sehingga perlu menggunakan sws_alloc_context(), av_opt_set_int(), dan sws_init_context() secara langsung
  • Selain itu, karena sws_scale() tidak melakukan multithreading secara internal, ia harus memakai sws_scale_frame(), dan proses ini juga mengungkap masalah pada cara pembuatan AVFrame
  • Hasilnya, konversi RGB→YUV saat menulis file film menjadi jauh lebih cepat
  • Saat membaca file film, konversi YUV→RGB multithread juga digunakan, dan vertical flip digabung ke pekerjaan yang sama

Resampling audio

  • Saat merender video di VSE, ditemukan bahwa hampir separuh waktu untuk “menghasilkan frame video atau audio” dihabiskan di dalam library audio Audaspace yang digunakan Blender
  • Bottleneck-nya bukan encoding audio, melainkan mixing sebelum encoding; sebagian besar terjadi ketika strip audio seperti 44,1kHz dicampurkan ke film 48kHz
  • Audaspace memiliki dua mode resampling
    • Pemutaran internal Blender: Linear resampler yang melakukan interpolasi linear antar sampel
    • Rendering film: resampler berbasis algoritma Julius O Smith
  • Kualitas resampler dibandingkan dengan meresampling suara sintetis yang frekuensi tunggalnya meningkat, lalu melihat spectrogram
    • Targetnya adalah hasil dengan frekuensi tambahan sesedikit mungkin, seperti pengaturan “best” di Audacity
  • Resampling preview Audaspace cepat dihitung tetapi menghasilkan banyak frekuensi tambahan, sedangkan resampling rendering memiliki kualitas spectrogram yang baik
  • Kualitas resampling medium baru ditambahkan ke Audaspace, dan menurut penulis hasilnya hampir sama tetapi komputasinya sekitar 3x lebih cepat
  • Blender kini menggunakan pengaturan medium ini saat rendering
    • Di PC Windows Ryzen 5950X, rendering 2.000 frame Sprite Fright turun dari 92 detik menjadi 73 detik
    • PR terkait: #116059

Konversi dan filtering gambar

  • Di VSE, strip yang menghasilkan output visual seperti gambar, film, teks, dan scene dapat diberi posisi, rotasi, scale, dan crop
  • Transformasi seperti ini dilakukan dengan cara mentransformasi gambar yang dihasilkan strip menjadi gambar baru, dan sebelumnya pun sudah diproses secara multithread di CPU
  • Alasan pemrosesan dilakukan di CPU, bukan GPU, adalah karena implementasi GPU belum ada, dan CPU fallback saat ini masih dibutuhkan untuk use case rendering di render farm tanpa GPU
  • Perbaikan error half-pixel

    • Kode lama memiliki beberapa error off by half a pixel; dalam banyak kasus error itu saling meniadakan atau tidak terlihat, tetapi muncul dalam situasi tertentu
    • Saat gambar kecil diperbesar 16x, filter Bilinear menggeser gambar sebesar setengah piksel asli, dan warna latar magenta ikut menyusup
    • Sebaliknya, saat gambar diperkecil tepat 2x, filter Bilinear sama sekali tidak melakukan filtering
    • Error “off by something” pada Bilinear dan filter lainnya diperbaiki
    • PR terkait: #116628
  • Penanganan tepi transparan Bilinear

    • Sebelum Blender 4.0, VSE memiliki tiga opsi filter: Nearest, Bilinear, dan Subsampled3x3; dari ketiganya, hanya Bilinear yang menambahkan transparansi selebar setengah texel sumber di sekitar gambar hasil
    • Perilaku ini terlihat jelas saat media diperbesar, dan tidak ada yang ingat mengapa perbedaan seperti ini muncul
    • Perilaku “blending ke transparansi” di kode filter Bilinear VSE dihapus
    • Namun saat hanya rotasi yang diterapkan, penanganan transparansi lama memberi semacam antialiasing pada edge, sehingga sebagai gantinya transparency anti-aliasing diterapkan pada edge pixel gambar tujuan
    • PR terkait: #117717
  • Filter Cubic, Box, Auto

    • Transform strip VSE biasa tidak memiliki opsi filter cubic, dan opsi itu hanya ada pada strip Transform Effect khusus
    • Di Blender, “Bicubic” sebenarnya berarti filter Cubic B-Spline, setara dengan koefisien B=1, C=0 dari Mitchell-Netravali filter
    • Penulis merangkumnya sebagai pilihan yang “tidak ringing, tetapi blur-nya besar”
    • Dua jenis opsi cubic filtering masuk ke VSE
    • PR terkait: #117100, #117517
    • Filter “Subsampled 3x3” di Blender 3.5 sebenarnya adalah box filter yang di-hardcode berukuran 3x3, dan mulai rusak ketika diperkecil dengan rasio selain 3x3
    • Filter ini diubah menjadi Box filter yang disesuaikan, bukan 3x3 tetap
    • PR terkait: #117584
    • Karena semakin banyak filter yang harus dipilih pengguna, Auto filter option ditambahkan sebagai default untuk strip VSE
    • PR terkait: #117853
    • Jika tidak ada scale atau rotasi: Nearest
    • Jika diperbesar lebih dari 2x: Cubic Mitchell
    • Jika diperkecil lebih dari 2x: Box
    • Selain itu: Bilinear
  • Peningkatan performa filtering

    • Proses filtering gambar juga menjadi lebih cepat
    • Menghapus virtual function dari loop internal, menerapkan sebagian SIMD pada Bilinear filtering: #115653
    • Menyederhanakan Cubic filtering dan menambahkan SIMD: #117100
    • Menyederhanakan matematika pada Box filter: #117125
    • Memperbaiki masalah ketika optimisasi untuk melewati item di bawah solid image yang menutupi seluruh layar tidak berjalan saat ada scale: #117786
    • Di PC penulis, pada proyek 3840x2160 dengan satu gambar 1920x1080 diperbesar 2x dan memakai Bilinear filtering, seluruh drawing sequencer preview turun dari 36,8ms menjadi 15,9ms
    • Halaman interaktif untuk membandingkan filter upsample juga tersedia: aras-p.info/img/misc/upsample_filter_comp_2024

Optimisasi efek VSE

  • Dataset film nyata dari Blender Studio tidak banyak memakai effect, tetapi effect VSE juga dioptimalkan terutama pada bagian yang terlihat di kode
  • Sebagian besar perubahan adalah penerapan multithreading
    • Glow effect: diterapkan multithreading, menjadi 6–10x lebih cepat #115818
    • Wipe effect: diterapkan multithreading, perhitungan fungsi trigonometri berlebihan pada Clock wipe disederhanakan, menjadi 6–20x lebih cepat #115837
    • Gamma Cross effect: mengubah pendekatan yang memakai table dan interpolation rumit demi menghindari satu pemanggilan akar kuadrat, sehingga menjadi 4x lebih cepat #115801
    • Gaussian Blur effect: menghindari perhitungan duplikat, menjadi 1,5x lebih cepat #116089

Perubahan waktu render akhir

  • Berdasarkan tiga dataset yang diterima dari Blender Studio, waktu render akhir film VSE di PC penulis menjadi sekitar 2x lebih cepat
  • Rendering Sprite Fright edit turun dari hampir 13 menit menjadi 7 menit
  • Penulis berharap ada peningkatan kecepatan tambahan, dan mengungkapkannya dengan kira-kira “tiga kali lagi peningkatan 2x akan cukup bagus”

Cara kerja dan langkah berikutnya

  • Selain perubahan yang terlihat oleh pengguna, ada juga pull request untuk menambah test, refactoring, dan pekerjaan bersih-bersih; total 37 pull request selesai, ditinjau, dan di-merge
  • Penulis menilai pekerjaan sebesar ini mungkin sulit dilakukan di “pekerjaan sungguhan”
    • Ia mengatakan bahwa di Unity antara 2015–2022, dalam waktu yang sama mungkin hanya sekitar 30% dari pekerjaan di atas yang bisa dilakukan, mungkin bahkan lebih sedikit
    • Ia menambahkan bahwa di Unity “ancient” sekitar 2010, hal itu mungkin saja bisa dilakukan
  • Menurutnya, ketika faktor seperti skala perusahaan, proses, ekspektasi, komunikasi, dan politik saling terkait, pekerjaan yang sama di lingkungan perusahaan berbayar justru bisa menjadi lebih lambat atau dibatalkan di tengah jalan
  • Ia berharap Blender tidak bergerak menuju skala, kompleksitas, dan workflow yang prosesnya justru melemahkan semangat dan memperlambat orang, alih-alih membantu mereka
  • Karena Blender 4.1 sudah beta, dari sisi fitur statusnya selesai, dan perubahan terkait VSE untuk 4.1 saat ini masuk dalam release notes
  • Pekerjaan Blender 4.2 dimulai, dan ia berencana terus mengutak-atik VSE tanpa rencana yang jelas setelah ini

1 komentar

 
GN⁺ 2024-02-09
Komentar Hacker News
  • Kalau ini adalah “pekerjaan sungguhan”, rasanya saya tidak akan bisa melakukan hal seperti ini
    Salah satu hal yang terasa tidak berjalan baik dalam karier saya adalah adanya jurang seperti ini: pada proyek tanpa bayaran yang mengharuskan saya memecahkan matematika yang benar-benar unik sendiri, dalam dua bulan saya bisa menghasilkan lebih banyak daripada biasanya selama dua tahun, tetapi pada proyek berbayar hasil saya umumnya biasa-biasa saja
    Saya benar-benar sudah berusaha keras, tetapi tidak pernah berhasil menemukan titik tengahnya, dan tahun lalu ketika pekerjaan gratis yang saya lakukan mulai punya kemungkinan dibayar, saya akhirnya malah sama sekali tidak bisa menyentuhnya

    • Anda tidak sendirian. Saya mengalami hal serupa sepanjang hidup saya, dan karena itu saya jadi meragukan semua yang orang katakan tentang motivasi, misalnya gagasan bahwa laba dan upah sajalah yang membuat orang menyelesaikan pekerjaan
      Lalu saya menemukan teori alienasi Marx, dan semuanya mulai jauh lebih masuk akal. Ia berangkat dari pengamatan bahwa kerja adalah aktivitas yang pada dasarnya dilakukan oleh orang sehat, tetapi menurutnya itu tidak boleh disamakan dengan bekerja untuk orang lain dan terasing dari hasil kerja sendiri
      https://en.m.wikipedia.org/wiki/Marx's_theory_of_alienation
    • Di antara pekerjaan terbaik atau paling menarik yang pernah saya lakukan, tidak ada satu pun yang saya kerjakan demi uang
    • Manajemen proyek membunuh pekerjaan semacam itu sepenuhnya
      Ada tempat yang punya sistem bagus berupa ruang penyangga 1–2 minggu untuk melakukan apa pun, dan itu membantu meredakan masalah seperti ini
    • Semua pekerjaan yang paling bermakna dan paling berdampak yang pernah saya lakukan hampir tidak dibayar atau sama sekali tidak dibayar. Sekarang rasanya seperti sesuatu yang sulit dihindari, dan itu membuat pekerjaan software terasa agak menyedihkan
    • Ini fenomena yang cukup menarik, dan saya rasa kebanyakan berasal dari ukuran tim dan kebutuhan untuk menghasilkan uang
      Dalam proyek passion, karena tidak dibayar, ekspektasinya rendah, tidak ada kewajiban untuk harus melakukan sesuatu, dan pada dasarnya Anda bebas melakukan apa yang Anda mau. Jadi Anda cenderung memilih pekerjaan yang menarik dan berdampak bagi diri sendiri, seperti mengeksplorasi teknologi atau alat baru yang Anda minati
      Begitu uang ikut terlibat, ekspektasi dari pihak yang membayar pun ikut masuk, dan percobaan yang baru serta asing jadi lebih sulit karena peluang gagalnya besar
      Pada akhirnya, ketika ada uang yang dipertaruhkan, orang cenderung menghindari solusi yang lebih berisiko meskipun berpotensi lebih baik, dan lebih memilih hasil yang dapat diprediksi
  • Sangat mengesankan, dan jelas juga bahwa penulis posting asli tidak sekadar berjalan dari jalanan lalu masuk ke Blender HQ. Pengalaman panjangnya di Unity tampaknya sangat membantu untuk memahami ranah ini
    Perubahan ini [1] sangat saya sukai. Saat mengoptimalkan tahap pemrosesan gambar, ia menghapus sangat banyak “optimisasi” berbasis tabel dan menggantinya begitu saja dengan perhitungan floating-point, dan di mesin milik penulis posting asli hasilnya sekitar 4 kali lebih cepat. Luar biasa
    [1]: https://projects.blender.org/blender/blender/pulls/115801/fi...

    • Bukan cuma itu, kalau melihat perbedaannya, ia mengubah 100–150 baris kode menjadi 3 baris. Pull request seperti ini rasanya cuma bisa dibuat di mimpi
    • Ini memang optimisasi yang bagus, tapi saya penasaran apakah return c * c; benar-benar merupakan pendekatan yang baik untuk gamma sRGB
  • Selama beberapa tahun terakhir, salah satu hal yang paling saya sukai adalah melihat Aras tiba-tiba masuk ke berbagai proyek grafis open source, menghasilkan peningkatan kecepatan dan perbaikan besar, lalu pindah ke proyek grafis acak lain dan mengulangi hal yang sama

  • Saya juga ingin melakukan hal seperti ini pada pemutar musik yang saya pakai, MusicBee
    Seandainya itu open source. Pembuatnya sekarang hampir tidak lagi menyentuhnya, aplikasinya sepenuhnya gratis dan selalu begitu, jadi saya tidak mengerti kenapa tidak dijadikan open source
    Ada begitu banyak masalah kecil yang mengganggu, bagian-bagian remeh yang rusak, lambat, atau aneh, sehingga saya benar-benar ingin memperbaikinya di waktu luang saya
    Dan sekarang, pindah ke yang lain seperti FooBar sudah terasa terlalu banyak pekerjaan. Saya juga pernah mencoba HQPlayer, tetapi UI/UX-nya terlalu mengerikan sehingga saya tidak bisa beralih

    • Pada 2013, seperti yang sudah Steven katakan beberapa kali, tidak ada rencana untuk menjadikan MusicBee open source dalam waktu dekat
      Membuka source code saat ia tidak lagi ingin melanjutkan proyek itu adalah salah satu opsi yang mungkin dipertimbangkan, tetapi ia mengatakan ini adalah proyek hobi yang dikerjakan karena pemrograman itu menyenangkan, dan tidak akan pernah dijalankan dengan cara yang profesional
      Ia sudah menghabiskan cukup banyak waktu untuk mengelola orang di pekerjaan utamanya dan tidak ingin melakukan itu di sini juga, dan ia juga mengatakan bahwa orang yang khawatir soal hal seperti “bagaimana kalau saya tertabrak bus” sebaiknya memakai aplikasi lain
      https://web.archive.org/web/20170721042120/https://getmusicb...
    • Karena ketika sebuah proyek software dijadikan open source, pada saat itu juga ia berubah menjadi proyek pengelolaan orang
    • Untuk menulis kode bagi proyek open source, tingkat kerapian yang dibutuhkan jauh lebih tinggi daripada yang dibayangkan orang. Pekerjaannya jauh lebih banyak daripada sekadar membuat program berjalan dengan baik
    • Ada alternatif. Tulis ulang seluruhnya sebagai open source
    • Satu-satunya software yang tetap saya rindukan setelah berhenti memakai Windows adalah MusicBee
      Kalau masih dipelihara, saya mungkin akan mempertimbangkan menjalankannya lewat Wine, tetapi sekarang saya malah sudah meninggalkan konsep pengelola musik itu sendiri dan hanya memutar album yang ingin saya dengarkan lewat mpv. Dan saya selalu mendengarkan per album. Playlist sudah saya tinggalkan
  • Sejak 2020 saya telah memakai Blender VSE untuk semua penyuntingan video saya, dan senang sekali melihatnya terus membaik
    Kalau mempertimbangkan stabilitas dan kumpulan fiturnya, saya sudah menganggapnya sebagai editor video terbaik di Linux. Bisa memakai seluruh alat animasi Blender yang sudah ada juga merupakan kelebihan besar

  • VSE benar-benar butuh banyak perhatian. Saya ingin memakai semua alat open source untuk podcast, tetapi saat merender sequence mp4 dengan chroma key di Blender, video 1,5 jam butuh 10 jam
    Akhirnya pindah ke DaVinci Resolve versi gratis

    • Blender VSE saat ini tidak punya akselerasi GPU untuk rendering video, jadi CPU yang menangani seluruh pekerjaan
      Selain itu, bahkan saat re-encoding tidak diperlukan, VSE tidak bisa melewatinya seperti DaVinci Resolve dan tetap merender seluruh frame satu per satu. Jika bagian ini diperbaiki, itu akan sangat membantu performa dan efisiensi Blender
    • Ada masalah bahwa rendering multithread Blender tidak terskalakan dengan baik untuk pekerjaan VSE. Fokusnya pada membagi tiap frame, jadi tidak bisa memanfaatkan banyak core dengan baik
      Dulu saya pernah bereksperimen dengan plugin [1] yang memulai beberapa pekerjaan render sebagai proses terpisah dari titik timeline yang berbeda, dan itu bisa membuat rendering jauh lebih cepat
      Sekarang saya juga sudah pindah ke Resolve di Linux, karena saya memakai kamera Blackmagic jadi itu lebih cocok
      [1] https://github.com/AkBKukU/blenderSubprocessRender
    • Saya pernah memakai VSE di satu proyek. Memang menyakitkan, tetapi hasilnya jadi, dan pada saat itu jelas merupakan editor video perangkat lunak gratis terbaik
      Sekarang saya sedang mengerjakan versi baru dengan Final Cut Pro
  • Membuat bagian mana pun dari program Blender 3D menjadi lebih cepat tampaknya cukup sulit. Ini sudah merupakan aplikasi 3D yang paling cepat dijalankan, dan respons GUI-nya juga paling cepat
    Houdini memang di posisi kedua, tetapi bukan pesaing yang dekat

    • Di luar dugaan, masih ada banyak buah yang tergantung rendah
      Beberapa tahun lalu saya menyentuh kode generator ‘blobby’ dan menambahkan multithreading, lalu malah membuatnya jauh lebih lambat. Setelah melewati overhead multithreading memang jadi lebih cepat, tetapi setahu saya itu jarang masuk ke kasus penggunaan umum, jadi akhirnya saya tinggalkan. Pasti ada juga beberapa kesalahan dari saya
    • Saya sudah melihat sebagian kodenya dan menurut saya masih banyak ruang untuk perbaikan. Seperti yang disebutkan di tulisan itu, ada sangat banyak kode yang pendekatannya sangat rumit atas nama optimisasi, tetapi pada praktiknya kemungkinan sama besarnya untuk malah memperlambat
      Misalnya, texture painting melakukan sekitar 3 kali pointer indirection per piksel, dan itu cukup tersendat bahkan di PC saya
    • Alat animasinya punya sangat banyak ruang untuk perbaikan, dan tampaknya memang sedang dikerjakan. Peralihan ke Vulkan juga terlihat akan sangat membantu
  • Dia bilang, “Tahukah Anda bahwa Blender punya kumpulan alat pengeditan video? Saya juga tidak tahu :)”, tetapi saya rasa kebanyakan orang yang membuat animasi dengan Blender pasti tahu
    Karena itu adalah cara dasar untuk mengubah frame hasil render menjadi file video

    • Anda bisa langsung merender frame menjadi file video (opsi ffmpeg), dan pengguna pemula atau pengguna ringan tampaknya cukup sering melakukannya
      Anda juga bisa memakai compositor untuk mengubah sequence frame yang sudah dirender sebelumnya menjadi file video
      Namun, kebanyakan orang mungkin lebih suka mengedit video di program lain seperti Resolve, dan VSE terasa berada di area yang sempit: “perlu pemotongan dasar, tetapi tidak perlu transformasi, judul, atau efek”, jadi sepertinya tidak banyak dipakai
      Akan bagus jika seseorang terus meningkatkan transformasi dan efek, lalu suatu hari juga menambahkan 3-point editing
  • Oh, jadi itu Aras. Dia luar biasa. Benar-benar Aras yang luar biasa, kalau saya tidak salah itu nama lengkapnya
    Dia hebat dalam hal seperti coding grafis, dan tampaknya juga punya flow yang mendalam saat menulis kode
    Tulisannya enak dibaca dan menyenangkan. Rasanya seperti mendengar seseorang sedang berbicara. Kalimat seperti “However!” di tengah juga begitu
    Saya juga setuju dengan bagian di akhir bahwa ketika seseorang tertekan oleh ekspektasi budaya dan proses standar di perusahaan biasa, produktivitasnya turun menjadi 30%. Biaya mengikat karyawan pada “pekerjaan mereka sendiri” benar-benar mencakup penurunan produktivitas yang sangat besar
    Saya berharap dengan terus melihat contoh seperti ini, para teknolog bisa belajar cara mengatur orang dan aktivitas dengan lebih baik, lalu cukup percaya pada pelajaran itu untuk mulai mengintegrasikan produktivitas tinggi/flow tinggi ke dalam cara organisasi benar-benar dijalankan
    Seperti yang diisyaratkan tulisan itu, jika begitu, bekerja di industri teknologi bisa menjadi lebih menyenangkan. Mungkin hampir sama menyenangkannya dengan bermain-main dengan teknologi itu sendiri

  • Menambahkan soal https://projects.blender.org/blender/blender/pulls/116089, inline pertama-tama memengaruhi aturan definisi tunggal
    Singkatnya, jika Anda mendefinisikan fungsi di header lalu memanggilnya dari beberapa file .cc, akan muncul error linker kecuali fungsi itu ditandai inline
    Dampaknya pada optimisasi inlining yang sesungguhnya bervariasi dari “tidak ada”, sampai “kompiler mungkin memberi bobot berbeda karena cara penghubungannya”, sampai “benar-benar diterima sebagai petunjuk”, dan ada pertimbangan serupa pada link-time optimization
    Jika ingin memberi sinyal inlining yang jauh lebih kuat ke kompiler, terutama untuk fungsi yang hanya dipakai di dalam file tempat ia didefinisikan, lebih baik mendefinisikannya di dalam anonymous namespace
    Maksud awal memberi inline pada fungsi itu mungkin memang untuk mencoba mendapatkan inline yang sesungguhnya. Keuntungan yang bisa diukur memang tidak jelas, tetapi juga bukan hal yang mustahil