from Belletristik oder so
Stillstehen
Die Schecke steht still Wird ihr Ziel nie erreichen Huch wo ist sie hin?
Read the latest posts from write.literatur.social.
from Belletristik oder so
Stillstehen
Die Schecke steht still Wird ihr Ziel nie erreichen Huch wo ist sie hin?
from Khotim
Dalam upaya memperbaiki kualitas tanah pertanian, peran kapur dolomit semakin mendapatkan perhatian yang signifikan. Kapur dolomit, dengan komposisi utama magnesium karbonat (MgCO₃) dan kalsium karbonat (CaCO₃), bukan hanya berfungsi sebagai pemupukan, tetapi juga memberikan banyak manfaat bagi kesuburan dan keberlanjutan tanah. Artikel ini akan membahas berbagai aspek mengenai kapur dolomit sebagai pembenah tanah, termasuk sifat-sifatnya, manfaat, cara aplikasi, serta relevansinya terhadap praktik pertanian berkelanjutan.
Kapur dolomit merupakan mineral yang terbentuk dari proses geologi, di mana kalsit dan magnesit berada dalam kombinasi tertentu. Sifat unik kapur dolomit, terutama dalam konteks pertanian, terletak pada kemampuan mineral ini untuk meningkatkan pH tanah yang bersifat asam. Berikut adalah beberapa sifat kapur dolomit yang menjadikannya pilihan unggul sebagai pembenah tanah:
Dengan meningkatkan pH dan menyeimbangkan kadar nutrisi dalam tanah, kapur dolomit berkontribusi terhadap peningkatan kesuburan tanah yang secara langsung berdampak pada produktivitas tanaman. Tanah yang seimbang dan kaya nutrisi akan memungkinkan tanaman untuk berkembang dengan baik, menghasilkan hasil panen yang optimal.
Kapur dolomit tidak hanya berperan dalam mengatur pH, tetapi juga menyediakan kalsium dan magnesium yang penting untuk pertumbuhan tanaman. Kekurangan kalsium dapat menyebabkan berbagai masalah, seperti kelayuan pada pucuk tanaman, sedangkan kekurangan magnesium dapat mengakibatkan klorosis, yaitu kondisi di mana daun kehilangan warna hijau sehatnya.
Dengan meningkatkan struktur dan stabilitas tanah, kapur dolomit dapat mengurangi erosi tanah yang sering terjadi akibat air hujan atau angin. Tanah yang terjaga dengan baik akan memiliki daya tahan lebih terhadap proses erosi, yang penting untuk menjaga kesuburan dalam jangka panjang.
Kapur dolomit membantu meningkatkan kapasitas pertukaran kation (KPK) tanah. KPK yang tinggi memungkinkan tanah untuk retenisi nutrisi yang lebih baik, sehingga tanaman dapat mengambil nutrisi lebih efisien. Hal ini sangat penting dalam praktik pertanian intensif, di mana kebutuhan nutrisi tanaman meningkat pesat.
Aplikasi kapur dolomit ke dalam tanah harus dilakukan dengan cara yang tepat untuk memaksimalkan manfaatnya. Berikut adalah langkah-langkah yang dapat diikuti dalam proses aplikasinya:
Dalam konteks pertanian berkelanjutan, penggunaan kapur dolomit menawarkan solusi yang ramah lingkungan untuk meningkatkan kualitas tanah. Dengan menghindari penggunaan bahan kimia sintetis yang dapat merusak ekosistem tanah, kapur dolomit memberikan alternatif yang lebih alami dan berkelanjutan. Selain itu, peningkatan kualitas tanah dengan kapur dolomit dapat membantu dalam memperkuat ketahanan pangan global dengan mendukung produktivitas pertanian yang efisien.
Kapur dolomit berfungsi sebagai pembenah tanah yang memiliki banyak manfaat bagi pertanian. Pada dasarnya, penggunaannya tidak hanya mendukung peningkatan kesuburan tanah tetapi juga membawa dampak positif dalam praktik pertanian berkelanjutan. Dengan memahami sifat-sifat, manfaat, serta cara aplikasinya, para petani dan pelaku pertanian dapat memanfaatkan kapur dolomit secara optimal untuk mencapai hasil pertanian yang lebih baik dan berkelanjutan. Keberhasilan pertanian masa depan sangat bergantung pada pemilihan amandemen tanah yang tepat, dan kapur dolomit hadir sebagai salah satu pilihan yang sangat berharga.
from Belletristik oder so
War wohl nicht so wichtig
Du wirst es mir nicht glauben Ich hab den Sinn des Lebens gefunden Grad beim Scheiße aufklauben Als ich spazieren ging mit den Hunden Kennst sie ja, sind total lieb die beiden Doch eben auch noch recht jung Ich sags dir, da muss man Katzen meiden Auch eben trotz guter Erziehung Die Nachbarskatze zum Beispiel Die heißt übrigens Eunuch Find ich als Namen zwar etwas skuril Aber sie erinnert mich immer an dieses Buch Ach wie hieß es denn nur? Weißt schon, mit dieser Katze die spricht Die Essen bekommt rund um die Uhr Der Schrecksenmeister oder nicht? Bei dem Buch hatte ich damals noch Musik auf den Ohren Während dem lesen mein ich, so nebenbei Dadurch hab ich an vielen Liedern die Lust verloren Du kennst doch Alt-J, die warn leider eben auch dabei Im Moment hör ich wieder viel King Gizzard Vor allem an dem neusten Metal Album Hör ich mich grad einfach nicht satt Da gehts um Klimawandel kurzum Mit der Natur schauts ja leider immer schlechter aus Naja heut werd ich noch die Sonne genießen Kommste mit mir noch n bissl raus? Wollte heut eh noch das Hochbeet gießen Das wächst dieses Jahr echt erstaunlich gut Da kann man sich wirklich nich beklagen So ich hol jetzt nur noch schnell meinen Hut Warte mal, was wollt ich dir nochmal sagen?
from Belletristik oder so
Selbstbewusstsein
Oftmals nachm Sport Da fällt mir etwas auf Dieses eine kleine Wort Wart nur ich komm gleich drauf Da muss ich dann dran denken Wenn ich viel zu schnell nach Hause fahr Und das Auto grad noch so um die Kurve lenke Mit viel zu lauter Musik, is ja klar Oft ists Metal oder Hyperpop oder Techno Hauptsache richtig richtig laut Und natürlich n schnelles Tempo Wenn man sich dann einfach traut Als wärs ein riesiges Konzert Komplett schrill und ungehemmt So laut wies geht nur mitplärrt Und sich dabei trotzdem so gar nicht schämt Wenn es egal ist was man macht Wenn es egal ist was die andern toll finden Der Scham einfach entgegenlacht Man muss sich eigentlich einfach nur überwinden
from Belletristik oder so
Das Mordmotiv
Die Maus und der Strauß sitzen draus vor ihrem haus. Lebten in einem Landhaus nähe Moskaus von Haus aus schon in saus und braus. Doch liefs durchaus eines Tages im Treppenhaus auf was anderes hinaus. Der Strauß fand an der Maus eine Laus und machte aus Angst heraus ihr den Garaus.
Es gab den Schein alles wäre fein doch ist das Fräulein nun ganz allein. Sie war nicht gemein, war kein Schwein und warf obendrein nie den ersten stein. Wieso nur kams in diesem Heim insgeheim zu dieser Pein? Was man doch alles tut nur für den Reim..
from Belletristik oder so
Bin dabei
Wenn ich gefragt ob Ja ob Nein Und Präferenz fällt mir nicht ein Wird meist von mir ein Ja gewagt Denn für ein Nein würd nicht gefragt
from Becoming More
PURPOSE
Who am I? Why am I here?
The reason for which something is done, created or for which something exists. The Big Why. That inarguable reason.
Where am I going? Why am I headed in this direction?
Purpose is defined as the reason for BE-ing, for EXIST-ence. A driving force that propels.
To discover purpose is to dicover why we are here.
Anyone or anything whose purpose is not known is in danger of abuse.
Dr. Myles Munroe How can the best version of a life be lived when the reason for its existence is unknown?
In 2024, some think the idea of finding purpose is cliche. It’s not.
Purpose is powerful! The impact of clarity of purpose in a life changes everything.
By the time I found the answers to the question of my purpose I was years out of college. Seminars, books, student counselling sessions didn’t do it for me. On the other hand, there are those who already knew as soon as they could speak what their purpose was and that doesn’t make it any less valid.
I think there is something beautiful about the fact that we all have our own unique journeys to finding our purpose. The discovery of purpose creates a novel experience for each person.
Even when I found the answer to the question of my purpose I wasn’t sure if I had the right answers because the answer did not tick off the checklists from the many self-help books I’d read. All that about passion, gifts & talent, excitement, great sacrifice and work not feeling like work.
I just knew that I’d moved from doing and functioning to being and with that came a deep sense of meaning and fulfillment.
The impact was earth shaking, life changing!
“Work on being, not on having, for with what you are you shall have.” ~ Daisy Osborn
The sad thing though, is that many never find purpose. When I discovered my purpose I realized everyone on earth is here for a specific reason. I also realized that there are those who never find their purpose. The thought that a person can come into this world and just exist without finding true purpose is scary.
Most people just want to be doing something, especially when that something is lucrative and they are successful at it.
I recently came accross this quote by Diana Mereu “When you are purpose-oriented, you will move from “doing” to “being”, you will ask yourself more “why” questions than “what” questions, and you move from being just functional to fantastical.”
I couldn’t help but wish I had come accross this sooner as it resonated so much with my experience of finding my true purpose. My journey from the life of doing, getting and having to being and becoming.
It’s the inspiration for this blog.
What’s your purpose and how did you discover it? Find out mine in my next post.
“We did not just happen to be, we were chosen by God to exist” – Mother Angelica
“More men fail through lack of purpose than lack of talent.” – Billy Sunday”
The real tragedy is not death but a life lived without purpose” – Rick Warren
from Becoming More
Hey there!
Thinking about writing a blog..., erm..not just individual posts
Starting a daily blog series.
Yep. Its a huge committment
Not sure if I'm totally ready
Follow my journey ....
https://beyoubecomemore.wordpress.com/
https://write.literatur.social/me/c/becoming-more
from Khotim
Minuman bersoda, dengan berbagai rasa dan variasi, telah menjadi bagian integral dari gaya hidup modern. Dikenal dengan kelezatannya yang unik, minuman bersoda memiliki sejarah panjang dan terus berkembang seiring waktu.
Minuman bersoda pertama kali ditemukan pada abad ke-18 oleh ahli kimia Joseph Priestley. Namun, popularitasnya melejit setelah ditemukan cara untuk memberikan karbonasi pada minuman pada awal abad ke-19.
Minuman bersoda berkarbonasi dikenal dengan gelegar dan sensasi berbusa yang dihasilkan oleh penambahan karbon dioksida. Proses karbonasi ini memberikan ciri khas yang unik pada minuman ini.
Coca-Cola Coca-Cola, ikon minuman bersoda, dikenal dengan rasa manis dan segarnya yang mendunia.
Pepsi Pepsi, pesaing utama Coca-Cola, memiliki karakteristik rasa yang berbeda dan telah menjadi favorit banyak orang.
Fanta Fanta menonjol dengan berbagai rasa buah yang menyegarkan, menciptakan variasi yang menarik.
Minuman bersoda tanpa kafein menawarkan pilihan untuk mereka yang ingin menikmati minuman bersoda tanpa efek stimulan kafein.
Sprite Sprite, dengan rasa lemon-lime, merupakan contoh populer dari minuman bersoda tanpa kafein.
7 Up 7 Up, dengan keunikan rasa citrusnya, menjadi alternatif menarik untuk minuman bersoda berkafein.
Mirinda Mirinda hadir dengan variasi buah yang berbeda, tetapi tetap tanpa kafein.
Minuman bersoda diet mengandung pemanis buatan sebagai pengganti gula, cocok untuk mereka yang mengontrol asupan kalori.
Diet Coke Diet Coke menyediakan versi tanpa kalori dari minuman bersoda klasik.
Diet Pepsi Diet Pepsi adalah alternatif diet yang populer dengan rasa yang tetap memikat.
Coke Zero Coke Zero memberikan rasa klasik tanpa kalori, menggoda penggemar minuman bersoda.
Minuman bersoda energi mengandung bahan tambahan stimulan, seperti kafein, untuk memberikan dorongan energi.
Red Bull Red Bull, dengan kandungan kafein dan taurin, menjadi minuman energi yang sangat terkenal.
Monster Monster Energy menawarkan variasi rasa dan kekuatan yang tinggi.
Rockstar Rockstar Energy, dengan kombinasi rasa unik, menjadi pilihan favorit para pecinta minuman bersoda energi.
Minuman bersoda sering mengandung tingkat gula dan kalori yang tinggi, yang dapat berdampak negatif pada kesehatan.
Untuk mengurangi dampak gula, pilihan minuman bersoda rendah gula atau tanpa gula dapat dijadikan alternatif.
Kafein dalam minuman bersoda dapat memberikan efek stimulan, tetapi konsumsi berlebihan dapat memiliki dampak negatif.
Peningkatan konsumsi kafein dapat menyebabkan masalah tidur, ketegangan, dan dampak lainnya pada kesehatan.
Bahan tambahan, seperti pewarna dan pengawet, dapat memberikan pengaruh pada citarasa dan warna minuman bersoda.
Bahan tambahan umum meliputi pewarna buatan, pengatur keasaman, dan pemanis buatan.
Asam dan gula dalam minuman bersoda dapat merusak enamel gigi, menyebabkan kerusakan gigi.
Sikat gigi secara teratur dan batasi konsumsi minuman bersoda untuk menjaga kesehatan gigi.
Konsumsi berlebihan gula dalam minuman bersoda dapat meningkatkan risiko penyakit jantung.
Menerapkan pola makan sehat dan gaya hidup aktif dapat membantu menjaga kesehatan jantung.
Beberapa penelitian menunjukkan bahwa konsumsi berlebihan minuman bersoda dapat berhubungan dengan penurunan kepadatan tulang.
Asupan kalsium yang mencukupi dan gaya hidup sehat dapat membantu mencegah kerusakan tulang.
Air mineral adalah pilihan utama untuk menjaga hidrasi tubuh tanpa tambahan gula dan kalori.
Memilih air mineral berkualitas tinggi dengan kandungan mineral yang seimb
ang adalah kunci untuk mendapatkan manfaat optimal.
Teh herbal memberikan pilihan yang lezat dan sehat tanpa kafein dan pemanis buatan.
Teh herbal seperti chamomile, peppermint, dan green tea menjadi alternatif yang populer.
Infused water, dengan tambahan buah dan herbal, memberikan rasa segar tanpa gula tambahan.
Berbagai kombinasi buah, sayuran, dan rempah dapat menciptakan infused water yang lezat.
Minuman bersoda menawarkan berbagai pilihan dengan karakteristik unik masing-masing, dari rasa klasik hingga variasi diet dan energi.
Pemilihan minuman bersoda yang bijak, pengontrolan asupan gula, dan eksplorasi alternatif sehat dapat mendukung gaya hidup yang seimbang.
Apakah Minuman Bersoda Berkarbonasi Berbahaya bagi Kesehatan? Meskipun minuman bersoda dapat dinikmati secara moderat, konsumsi berlebihan dapat berdampak negatif pada kesehatan, terutama terkait dengan gula, kalori, dan kafein.
Apa Saja Alternatif Sehat untuk Minuman Bersoda? Alternatif sehat melibatkan konsumsi air mineral, teh herbal, infused water, dan minuman rendah gula untuk mendukung kesehatan tubuh.
Berapa Jumlah Maksimal Konsumsi Minuman Bersoda yang Aman bagi Tubuh? Jumlah maksimal konsumsi minuman bersoda yang dianggap aman bervariasi untuk setiap individu. Namun, disarankan untuk mengonsumsi dengan bijak dan memperhatikan aspek gula, kalori, dan kafein untuk menjaga kesehatan secara keseluruhan.
from Khotim
Ikan dewa, dikenal juga sebagai ikan mas purba atau grass carp, merupakan salah satu spesies ikan air tawar yang populer di Indonesia. Ikan ini digemari karena berbagai alasan, mulai dari nilai estetikanya sebagai ikan hias, kelezatan dagingnya sebagai hidangan konsumsi, hingga potensinya dalam budidaya.
Bagi Anda yang tertarik dengan ikan dewa, artikel ini akan mengupas tuntas informasi mengenai harga, jenis, dan tempat membelinya.
Harga Ikan Dewa yang Beragam
Harga ikan dewa bervariasi tergantung pada beberapa faktor, seperti:
Berikut adalah perkiraan harga ikan dewa di Indonesia per Februari 2024:
Menjelajahi Ragam Jenis Ikan Dewa
Terdapat beberapa jenis ikan dewa yang populer di Indonesia, antara lain:
Menemukan Tempat Membeli Ikan Dewa yang Tepat
Anda dapat menemukan ikan dewa di berbagai tempat, seperti:
Tips Memilih Ikan Dewa yang Berkualitas
Sebelum membeli ikan dewa, perhatikan beberapa hal berikut:
Dengan memahami informasi mengenai harga, jenis, dan tempat membeli ikan dewa, Anda dapat memilih ikan yang tepat untuk kebutuhan Anda.
from Khotim
Fungsi Katalis dalam Proses Produksi: Mendorong Kemajuan dan Efisiensi
Proses produksi modern tidak dapat dipisahkan dari peran katalis. Kata “katalis” berasal dari bahasa Yunani, yang berarti “sesuatu yang mempercepat atau mendorong.” Dalam dunia industri, katalis berperan sebagai agen yang meningkatkan laju reaksi kimia tanpa mengalami perubahan permanen. Artikel ini akan mengupas secara mendalam tentang fungsi katalis dalam proses produksi, menggali manfaatnya, dan bagaimana inovasi terus mengembangkan peran katalis dalam mencapai efisiensi yang lebih tinggi.
Sebelum memahami bagaimana katalis berperan dalam proses produksi, penting untuk memahami dasar kerjanya. Katalis bekerja dengan cara menyediakan jalur reaksi alternatif yang membutuhkan energi aktivasi yang lebih rendah. Ini memungkinkan molekul-molekul reaktan untuk berinteraksi lebih efisien, membentuk produk-produk yang diinginkan tanpa mengubah katalis itu sendiri.
Salah satu manfaat utama katalis dalam proses produksi adalah peningkatan efisiensi energi. Dengan meminimalkan energi aktivasi yang diperlukan untuk reaksi kimia, katalis membantu mengurangi konsumsi energi keseluruhan. Hal ini tidak hanya menghemat biaya, tetapi juga mengurangi jejak karbon dan dampak lingkungan.
Selain itu, katalis berperan sebagai agen pengurangan limbah. Dengan mempercepat reaksi kimia, proses produksi menghasilkan jumlah limbah yang lebih sedikit. Ini sangat relevan dalam konteks keberlanjutan, di mana upaya untuk mengurangi limbah dan meningkatkan efisiensi menjadi fokus utama.
Peran katalis tidak hanya mencakup efisiensi produksi, tetapi juga berdampak positif pada keberlanjutan. Dengan memanfaatkan katalis yang dapat didaur ulang, industri dapat mengurangi ketergantungan pada bahan kimia berbahaya dan mengurangi dampak negatif terhadap lingkungan.
Inovasi terbaru dalam katalisis hijau menunjukkan upaya untuk mengembangkan katalis yang lebih ramah lingkungan, menggunakan bahan-bahan yang lebih berkelanjutan dan meminimalkan risiko toksisitas. Ini adalah langkah signifikan menuju produksi yang lebih bersih dan berkelanjutan.
Industri kimia dan petrokimia adalah dua bidang di mana peran katalis sangat krusial. Proses konversi minyak bumi menjadi bahan bakar, plastik, dan bahan kimia lainnya memanfaatkan katalis untuk meningkatkan efisiensi dan menghasilkan produk dengan kualitas yang lebih baik.
Katalis juga berperan penting dalam menghasilkan amonia, senyawa yang digunakan dalam pupuk. Proses Haber-Bosch, yang mendapatkan Nobel Kimia pada tahun 1918, menggunakan katalis untuk mensintesis amonia dari nitrogen dan hidrogen, memainkan peran utama dalam mendukung ketahanan pangan global.
Dunia katalisis terus mengalami inovasi yang mengubah paradigma industri. Penggunaan katalis nanopartikel, pengembangan katalis berbasis biologi, dan penelitian tentang katalis yang dapat berfungsi pada suhu rendah menjadi fokus penelitian saat ini.
Inovasi-inovasi ini tidak hanya bertujuan untuk meningkatkan efisiensi, tetapi juga untuk mengatasi masalah kompleks seperti perubahan iklim dan keberlanjutan. Mempertimbangkan aspek-aspek ini, katalis muncul sebagai pendorong utama perubahan positif dalam industri produksi.
Dalam perjalanan evolusinya, katalis telah menjadi tulang punggung proses produksi modern. Dengan memahami dan mengoptimalkan peran katalis, industri dapat mencapai tingkat efisiensi yang lebih tinggi, mengurangi dampak lingkungan, dan membuka pintu menuju produksi yang lebih berkelanjutan. Dengan terus menggali inovasi dan penelitian, masa depan katalisis menjanjikan solusi yang lebih baik untuk tantangan produksi masa kini dan masa depan.
from Khotim
Peran Bahan Kimia dalam Pupuk Pertanian: Meningkatkan Produktivitas dan Kesejahteraan Tanaman
Pertanian adalah tulang punggung bagi kehidupan manusia, menyediakan pangan esensial untuk memenuhi kebutuhan nutrisi dan energi. Dalam upaya untuk meningkatkan hasil pertanian, para petani dan ilmuwan pertanian terus mencari inovasi, dan salah satu aspek kunci adalah penggunaan pupuk pertanian. Pupuk memberikan nutrisi penting yang dibutuhkan tanaman untuk tumbuh dan berkembang dengan optimal. Dalam hal ini, bahan kimia memainkan peran sentral dalam pembuatan pupuk pertanian.
Mengoptimalkan Nutrisi Tanaman Bahan kimia seperti nitrogen (N), fosfor (P), dan kalium (K) merupakan komponen utama dalam pupuk pertanian. Nitrogen mendukung pertumbuhan daun dan batang tanaman, fosfor mempromosikan perkembangan akar dan pembentukan bunga, sedangkan kalium berperan dalam resistensi terhadap penyakit dan stres lingkungan. Penggunaan bahan kimia ini secara tepat dapat membantu menciptakan formula pupuk yang sesuai dengan kebutuhan spesifik tanaman, memastikan penyerapan nutrisi yang efisien.
Mengatasi Defisiensi Nutrisi Pupuk mikro dengan kandungan unsur hara seperti besi, mangan, tembaga, dan zinc memainkan peran penting dalam mengatasi defisiensi nutrisi pada tanaman. Bahan kimia ini secara khusus digunakan untuk memperbaiki kondisi tanah yang kurang subur atau mengatasi kondisi tanah tertentu yang dapat menghambat penyerapan nutrisi oleh tanaman.
Mempercepat Proses Pemecahan Pupuk Organik Bahan kimia juga digunakan dalam pupuk organik untuk mempercepat proses dekomposisi dan pemecahan bahan organik. Enzim dan mikroorganisme tertentu yang diperoleh dari bahan kimia membantu mengurai bahan organik menjadi nutrisi yang lebih mudah diserap oleh tanaman. Ini meningkatkan ketersediaan nutrisi tanaman secara keseluruhan.
Mengurangi Risiko Keracunan Tanaman Penggunaan bahan kimia pada pupuk dapat membantu mengurangi risiko keracunan tanaman. Dengan formulasi yang tepat, dosis yang benar, dan penerapan yang hati-hati, bahan kimia dalam pupuk dapat memberikan nutrisi tanaman tanpa menimbulkan dampak negatif pada kesehatan tanaman atau lingkungan.
Inovasi Terus Berkembang Peran bahan kimia dalam pupuk pertanian terus berkembang seiring dengan kemajuan teknologi dan penelitian. Inovasi baru mencakup pengembangan pupuk berbasis nanoteknologi dan formulasi khusus yang dirancang untuk mengoptimalkan pertumbuhan tanaman dengan lebih efisien.
Dalam mengejar ketahanan pangan global, pemahaman yang mendalam tentang peran bahan kimia dalam pupuk pertanian menjadi sangat penting. Dengan penerapan yang bijak dan bertanggung jawab, penggunaan bahan kimia dalam pupuk dapat menjadi kunci untuk meningkatkan produktivitas pertanian, memastikan ketahanan pangan, dan mendukung kesejahteraan manusia secara keseluruhan.
ins: https://icsa.co.id/
from Clemens
Since 2019 Klaudia and I are running the Mastodon instance literatur.social. Back then, we knew that we do not have the time to maintain a Mastodon fork or even a customized installation. We already saw several other smaller instances being haunted by their custom Mastodon installations and every security release would involve a lot of stress getting the code base updated in time.
While the resource footprint of our instance has changed in the last years, the setup itself is still pretty much the same, simple (ansible-managed) docker-compose setup running the official docker image, with easy maintainability as the main design goal.
In summer 2023, we had the need to back-port several upstream changes for admin-webhooks for our automatic account approval system. Additionally we wanted do a few smaller changes, like extending the number of possible poll options was something that we really wanted to try out and also a few (hard-coded) rate limits needed changes. A customized docker image was born.
We don't want to maintain a full fork of the Mastodon repository. We basically just want to create and maintain simple, minimalistic patch files. One can do this with the basic diff
and patch
tools, but especially updating patches that break due to changes is not possible in a meaningful way.
This is where quilt comes in:
Quilt is a tool to manage large sets of patches by keeping track of the changes each patch makes. Patches can be applied, un-applied, refreshed, etc.
It is extensively used, among others, by OpenWrt to manage several hundred Linux kernel patches, by Debian to maintain patches for building packages and others. Both OpenWrt and Debian have quilt pages, but they are quite specific and you will probably find better how-tos.
For quilt you will have a patches
folder with:
– the patches/*.patch
files you work on
– a patches/series
file that lists the currently enabled patches with their order
If you have worked with version control systems like git, working with quilt will feel quite familiar, although there are a few differences: – patches are created before making the actual changes – files are added/assigned to patches before making the changes – everything outside of the added files will not be tracked
A typical workflow looks like this:
1. quilt new 001-my-patch-change-foobar-patch
– create a new patch
2. adding the file and making the changes:
– quilt edit foo/bar/fileToChange.bar
– directly edit with quilt and your favourite EDITOR, or
– quilt add foo/bar/fileToChange.bar
– add file to edit it in an external editor afterwards
3. quilt refresh
– update the patch once you made your changes
The commands quilt push
and quilt pop
will allow you to apply and remove patches in your current working tree, changes are typically added to the last applied patch.
Disclaimer: This is not intended as a quilt tutorial, there is a lot more to it, (dealing with multiple patches, refreshing of failing patches, etc.) If more people are interested in this I might write another blog post, just write me a note at @datacop@literatur.social 😉
Building a custom Mastodon Docker image from scratch with the original Dockerfile would be the obvious way, but part from the build time and required build resources, the official image is well-tested and verified by the community within minutes of a new release.
This is why we decided to go the minimalistic way and apply our patches on top of the official release image by installing quilt, pushing the patches and re-compiling the assets.
This is the Dockerfile that we use to create our customized image:
FROM ghcr.io/mastodon/mastodon:latest
ARG DEVELOPMENT
# add a nice '+custom' version suffix
ENV MASTODON_VERSION_METADATA="custom"
USER root
RUN apt-get -y --no-install-recommends install quilt vim
# add patches and .quiltrc
COPY --chown=mastodon:mastodon patches /opt/mastodon/patches
COPY --chown=mastodon:mastodon .quiltrc /opt/mastodon/
# back to the mastodon user
USER mastodon
WORKDIR /opt/mastodon
# push all patches in the `series` file, do not fail if DEVELOPMENT
RUN quilt push -a -f || [ -n "${DEVELOPMENT}" ]
# Precompile assets again
RUN OTP_SECRET=precompile_placeholder SECRET_KEY_BASE=precompile_placeholder rails assets:precompile && \
yarn cache clean
.quiltrc
is just for nice looking patches and vim as default editor:
QUILT_DIFF_ARGS="--no-timestamps --no-index -p ab --color=auto"
QUILT_REFRESH_ARGS="--no-timestamps --no-index -p ab"
QUILT_PATCH_OPTS="--unified"
QUILT_DIFF_OPTS="-p"
EDITOR="vim"
To pull the lastest Mastodon release and build the image, run:
docker pull ghcr.io/mastodon/mastodon:latest
docker build . -f Dockerfile mastodon-custom
The image mastodon-custom
will be your new, customized Mastodon image.
For creating and updating the patches I use this small shell script that builds a Mastodon container, starts it up with the local patches folder mounted as volume, and drops you in a shell where you can use quilt to do your changes and update your patches:
#!/bin/sh
set -xe
docker build . --build-arg DEVELOPMENT=1 -t mastodon-patch
docker run --rm -it -v $(pwd)/patches:/opt/mastodon/patches mastodon-custom /bin/bash
docker image rm mastodon-custom -f
That's basically all the magic. This is an easy way to work with a few patches, and not lose the advantages of using the official Mastodon image. Especially backports of unreleased features from Mastodon's development branch were really easy to integrate.
We're currently running this in a GitLab instance to take advantage of GitLab's internal docker registry. On most Mastodon releases it is just needed to hit the rebuild button, once the Mastodon upstream image was updated.
Disclaimer: YMMV, further research is needed.
You might ask, But what if my patches break on updates?. Yes, you will have to fix and refresh your patches.
In our experience, smaller upstream changes are usually easily fixed by force-applying the patch, fixing every part of the patch that did not apply and refreshing the patch afterwards. We typically upgrade our instance within 1-2h of a new release.
For larger version updates, the upstream code might have changed so much, that you will have to re-write the patch. As soon as there are release-candidates, you can (and probably should) try to apply your patches on the release-candidate image tag to see if something breaks.
On bigger patch fails, find the pull request on GitHub that changed the parts you want to patch and understand what the upstream change intends to do. Mastodon's release notes are quite good, so the chances are quite high that you will find it there.
Ein neuer Blog ...
... oder zumindest ein erster Eintrag im writefreely, das wir für litera.tools aufgesetzt haben. Ich bin selbst schon ganz gespannt, wie sich die Dinge hier entwickeln werden und was es hier bald zu lesen gibt. Vielleicht sind ja ein paar Autorenkolleg:innen bald hier und schreiben ihre Texte und Gedanken nieder. Oder ich komme irgendwann auf die Idee, meinen eigenen Blog hierher zu übertragen. Oder einen ganz neuen anzufangen.
Writefreely ist, wenn ich das richtig sehe, aktuell vor allem auf Fließtext aus. Bilder kann man nur per URL einbinden, zB einige von denen, die ich bei Pixelfed oder Mastodon gepostet habe. Wäre ja auch was, das zu verbinden.