<?xml version="1.0" encoding="utf-8" standalone="yes"?><rss version="2.0" xmlns:atom="http://www.w3.org/2005/Atom"><channel><title>Duken Marga</title><link>https://dukenmarga.id/</link><description>Recent content on Duken Marga</description><generator>Hugo</generator><language>en</language><lastBuildDate>Sat, 02 Aug 2025 00:00:00 +0700</lastBuildDate><atom:link href="https://dukenmarga.id/index.xml" rel="self" type="application/rss+xml"/><item><title>Software Kurvatur Momen</title><link>https://dukenmarga.id/software-kurvatur-momen/</link><pubDate>Thu, 26 Nov 2015 08:00:00 +0700</pubDate><guid>https://dukenmarga.id/software-kurvatur-momen/</guid><description>&lt;h3 id="pengantar">Pengantar&lt;/h3>
&lt;p>Halaman ini diperuntukkan sebagai cadangan (backup) halaman software Kurvatur Momen yang pernah saya buat ketika bekerja di Lab Rekayasa Struktur, Institut Teknologi Bandung. Dokumen versi lawas tidak akan saya upload ulang. Halaman asli bisa dilihat di &lt;a href="http://lab-struktur.si.itb.ac.id/software-kurvatur-momen/">http://lab-struktur.si.itb.ac.id/software-kurvatur-momen/&lt;/a>&lt;/p>
&lt;p>Versi 1.5.1 adalah versi terakhir yang saya kerjakan di Lab. Rekayasa Struktur ITB. Versi 1.6 hingga yang terakhir adalah program terbaru yang saya buat di waktu senggang saya. Saya kembali mengembangkan software ini karena saya sendiri cukup sering menggunakan software ini dalam pekerjaan saya. Beberapa bug yang saya anggap mengganggu akan saya patch di versi berikutnya, termasuk menambah dan menyempurnakan beberapa fitur dari aplikasi ini. Untuk nilai momen nominal untuk analisis tulangan beton, jika kondisi under-reinforcement terjadi, nilai yang dihasilkan software ini lebih kecil 5-15% dari nilai kalkulasi tangan (manual) bergantung dari banyak tulangan, jadi cukup konservatif.&lt;/p></description></item><item><title>Credit</title><link>https://dukenmarga.id/credit/</link><pubDate>Thu, 06 Jan 2022 18:03:23 +0700</pubDate><guid>https://dukenmarga.id/credit/</guid><description>&lt;p>Credit to all below technologies used for making this website.&lt;/p>
&lt;p>Static Blog: &lt;a href="https://gohugo.io/">Hugo&lt;/a>&lt;/p>
&lt;p>Theme: &lt;a href="https://github.com/halogenica/beautifulhugo">Beautiful Hugo&lt;/a>&lt;/p>
&lt;p>Icon: &lt;a href="https://www.flaticon.com/free-icons/beam">Engineer icons created by Flat Icons - Flaticon&lt;/a>&lt;/p>
&lt;p>Hosting : &lt;a href="https://render.com/">Render - Static Sites&lt;/a>&lt;/p></description></item><item><title>About</title><link>https://dukenmarga.id/about/</link><pubDate>Thu, 06 Jan 2022 18:03:23 +0700</pubDate><guid>https://dukenmarga.id/about/</guid><description>&lt;p>My name is Duken Marga. I pride myself as experienced Structural Engineering with well understanding on seismic design (building and non building: mechanical/architectural). I have solid knowledge of fundamental material mechanics, structural modelling, and numerical analysis.&lt;/p>
&lt;p>I have worked previously for &lt;a href="https://www.rekayasa.com">Rekayasa Industri&lt;/a> and helped build 2 geothermal power plants (PLTP) and 1 LNG regasification plant. I also worked for &lt;a href="https://www.vinci-energies.co.id/vinci-energies-in-indonesia/">Vinci Energies Indonesia (Indokomas Buana Perkasa)&lt;/a> to helped build 3 electrical substations, 1 perfume factory extension, and 1 international data center. In my early career, I worked as engineering staff at &lt;a href="https://ftsl.itb.ac.id/laboratorium/laboratorium-rekayasa-struktur/">Material and Concrete Lab at Institut Teknologi Bandung&lt;/a>. Currently, I&amp;rsquo;m working as Senior Backend Engineer for &lt;a href="https://getblood.com/">Blood&lt;/a>.
In my spare time, I&amp;rsquo;m working on my side project, &lt;a href="https://linearstep.com/">LinearStep&lt;/a>, a web based application to help engineers to design concrete structural elements based on code SNI 2847:2019 (eq. ACI 318M-14).&lt;/p></description></item><item><title>Convert map[string]interface{} to Struct as Generic Function in Go</title><link>https://dukenmarga.id/post/convert-map-string-interface-to-struct-as-generic-function-in-go/</link><pubDate>Sat, 02 Aug 2025 00:00:00 +0700</pubDate><guid>https://dukenmarga.id/post/convert-map-string-interface-to-struct-as-generic-function-in-go/</guid><description>&lt;h3 id="several-methods-to-convert">Several Methods to Convert&lt;/h3>
&lt;p>There are several methods to convert &lt;code>map[string]interface{}&lt;/code> to a &lt;code>struct&lt;/code>
in Go.&lt;/p>
&lt;ul>
&lt;li>Using &lt;code>reflect&lt;/code>. This is the fastest. But, it will produce complicated long
code. If not well coded, it will have problems with
nested map. I will not discuss this method.&lt;/li>
&lt;li>&lt;strong>Using &lt;code>json&lt;/code> standard library&lt;/strong>. First we marshal the map as json string
and after that unmarshal it as a struct. &lt;strong>This is what I will be talking about.&lt;/strong>
It is slow, but reliable. Nested map are handled performantly.&lt;/li>
&lt;li>Using external library such as &lt;a href="https://github.com/mitchellh/mapstructure">mitchellh/mapstructure&lt;/a>. It is not maintained anymore. But, you can still use
it, since it is stable and has achieved its original intention.&lt;/li>
&lt;li>Using simple loop and check one by one using &lt;code>switch&lt;/code>-&lt;code>case&lt;/code>. You need to
hard-coded all the map properties, hence it&amp;rsquo;s not practical since it
can&amp;rsquo;t be reused for different struct type.&lt;/li>
&lt;/ul>
&lt;h3 id="converting-to-struct">Converting to Struct&lt;/h3>
&lt;p>The code below is the original non-generic method that can be used to
convert any map to string. Don&amp;rsquo;t forget to include the json tag as per your
intention, so the &lt;code>json&lt;/code> library can convert it correctly.&lt;/p></description></item><item><title>Error Handling in Go</title><link>https://dukenmarga.id/post/error-handling-in-go/</link><pubDate>Mon, 14 Jul 2025 00:00:00 +0700</pubDate><guid>https://dukenmarga.id/post/error-handling-in-go/</guid><description>&lt;h3 id="error-as-value">Error As Value&lt;/h3>
&lt;p>Error is treated as value in Go. No &lt;code>try/catch&lt;/code>, but there is &lt;code>panic/recover&lt;/code>.
Other programming languages is using &lt;code>try/catch&lt;/code> for regular error,
while Go use &lt;code>panic/recover&lt;/code> for fatal or unrecoverable condition such
as nil pointer dereference and so on.
Hence, &lt;code>panic/recover&lt;/code> is not a direct replacement for &lt;code>try/catch&lt;/code>.&lt;/p>
&lt;p>For regular error, we need to return it like we return a variable.
Some people are alright with this decision, but some are not because
it makes the code verbose and you will find &lt;code>if err != nil&lt;/code> are everywhere.&lt;/p></description></item><item><title>Beberapa Tips Uji Tekan Beton</title><link>https://dukenmarga.id/post/beberapa-tips-penting-uji-tekan-beton/</link><pubDate>Sun, 10 Dec 2023 00:00:00 +0700</pubDate><guid>https://dukenmarga.id/post/beberapa-tips-penting-uji-tekan-beton/</guid><description>&lt;h2 id="pengantar">Pengantar&lt;/h2>
&lt;p>Apakah kalian sudah melakukan uji tekan beton dengan benar? Ada beberapa hal teknis terkait uji tekan beton yang kadang luput dari pengawasan kita.
Beberapa hal di bawah ini semoga bisa menambah pengetahuan kita ketika hendak melakukan uji tekan beton, sesuai ASTM C39/C39M (&lt;em>&lt;strong>Standard Test Method for Compressive Strength of Cylindrical Concrete Specimens&lt;/strong>&lt;/em>).&lt;/p>
&lt;p>Artikel ini merujuk pada &lt;a href="https://www.astm.org/c0039_c0039m-17b.html">ASTM C39/C39M 17B&lt;/a>, namun versi terakhirnya adalah &lt;a href="https://www.astm.org/c0039_c0039m-21.html">C39/C39M 21&lt;/a>. Hal teknis lainnya yang lebih detail bisa merujuk langsung pada dokumen tersebut.&lt;/p></description></item><item><title>Menghitung Beban Dinamis pada Crane pada saat Lifting</title><link>https://dukenmarga.id/post/menghitung-beban-dinamis-pada-crane-pada-saat-lifting/</link><pubDate>Wed, 10 May 2023 00:00:00 +0700</pubDate><guid>https://dukenmarga.id/post/menghitung-beban-dinamis-pada-crane-pada-saat-lifting/</guid><description>&lt;h2 id="hukum-newton-dan-perubahan-momentum">Hukum Newton dan Perubahan Momentum&lt;/h2>
&lt;p>Bagaimana cara sederhana menghitung total beban crane akibat tambahan beban dinamis?&lt;/p>
&lt;p>Mengacu pada Hukum Newton, gaya terjadi akibat adanya percepatan pada suatu massa. Namun, jika di-&lt;em>extend&lt;/em> ke level selanjutnya, gaya terjadi akibat adanya perubahan momentum terhadap waktu.&lt;/p>
&lt;p>$$
F = \dfrac{d(mv)}{dt}
$$&lt;/p>
&lt;p>$$
F = m\dfrac{dv}{dt} + v\dfrac{dm}{dt}
$$&lt;/p>
&lt;p>&lt;strong>m&lt;/strong> = massa dalam kg dan
&lt;strong>v&lt;/strong> = kecepatan dalam m/s&lt;/p>
&lt;p>Aplikasinya pada bidang struktur, beban statik dan dinamik hanya menggunakan bagian yang pertama saja (sisi kiri). Ini bisa kita artikan sebagai massa dengan perubahan kecepatan terhadap waktu.&lt;/p></description></item><item><title>Lokasi 1 Layer Tulangan Susut dan Rangkak pada Beton Slab on grade</title><link>https://dukenmarga.id/post/lokasi-1-layer-tulangan-susut-dan-rangkak-pada-beton-slab-on-grade/</link><pubDate>Sun, 09 Jan 2022 00:00:00 +0700</pubDate><guid>https://dukenmarga.id/post/lokasi-1-layer-tulangan-susut-dan-rangkak-pada-beton-slab-on-grade/</guid><description>&lt;h2 id="definisi">Definisi&lt;/h2>
&lt;p>&lt;em>Slab on grade&lt;/em> atau &lt;em>slab on ground&lt;/em> adalah jenis struktur beton yang dipasang bersentuhan langsung di atas permukaan tanah.
Disebut slab karena memiliki permukaan yang cukup luas. Pada umumnya &lt;em>slab on grade&lt;/em> memiliki beban merata (&lt;em>uniform load&lt;/em>) dan sejumlah beban titik (&lt;em>point load&lt;/em>)
jika nilainya cukup signifikan.&lt;/p>
&lt;p>&lt;em>Slab on grade&lt;/em> berbeda dengan pondasi dangkal yang pada umumnya memiliki kolom pendek atau pedestal di atasnya yang bisa dimodelkan sebagai beban titik.&lt;/p></description></item></channel></rss>