iMessage ile otomatik oluşturulan 3 yıllık kitap serisi
(benkettle.xyz)- Eski konuşmaları sadece aramayla yeniden okumak zor olduğundan, en büyük iMessage konuşmasını fiziksel bir kitaba dönüştürerek tarihe göre sayfaları çevrilebilecek hale getirdi
- iPhone yedeğindeki
sms.dbdosyasını SQLite ile açıp mesajları çıkardı, ancak bazı içeriklermessage.textiçinde değil,message.attributedBodyiçindeki ikili blob olarak bulunduğu için ek işlem gerekti - Kendi ayrıştırıcısını yazmak yerine Rust’taki imessage-database crate’ini kullanarak iMessage DB’sini yapılandırılmış veri olarak okudu ve yalnızca tek bir konuşmayı almak için SQL’i uyarladı
- Kitap içeriği LaTeX ile üretildi; emoji işleme ve baskı maliyeti sorunlarını çözmek için XeLaTeX ile Google Noto Emoji siyah-beyaz yazı tipini kullandı
- 3 yıllık mesajlar 6" x 9" ölçüsünde yaklaşık 1.300 sayfa tuttu, bu yüzden 3 cilde bölündü ve Barnes & Noble Press üzerinden kargo dahil 30 dolara basıldı
iMessage neden kitaba dönüştürüldü
- Geçmişte yaşanan belirli şeyleri hatırlarken metin mesajı kayıtları sık sık ipucu oluyor
- iPhone’daki tüm iMessage geçmişinde arama hızlandı, ancak bunu işe yarar şekilde kullanmak için aranan mesajın tam ifadesinin bir kısmını hatırlamak gerekiyor
- Arama sonucundan eski bir konuşmaya girip çevresindeki bağlamı görmek istendiğinde kaydırarak yükleme çok yavaş kalıyor
- Belirli bir tarihe doğrudan gitme özelliği olmadığı için, konuşmayı rastgele noktalardan kitap gibi karıştırma deneyimini kendisi oluşturmaya karar verdi
iPhone yedeğinden mesajları çıkarma
- Mesajları işleyebilmek için önce veriyi iPhone dışına çıkarmak gerekiyordu
- iPhone Wiki’ye göre iPhone yedeğinden
sms.dbalınırsa mesajlar SQLite veritabanı olarak işlenebiliyor - Mac Finder ile standart bir yedek oluşturduktan sonra yedek klasörü açıldığında, kökte onaltılık bayt adlarına sahip dizinler bulunuyor
sms.dbdosya adı iPhone Wiki’de verilen3d0d7e5fb2ce288813306e4d4636395e047a3d28idi; bunuimessage.dbolarak kopyalayıpsqlite3CLI ile açabildi- Veritabanında
message,attachment,chat,handle,chat_message_joingibi tablolar yer alıyor
SQL sorguları ve içerik çıkarma sorunu
- Gerçek konuşmayı çıkarmak için
message,chat_message_join,chattablolarını birleştirmek gerekiyordu - Belirli bir
chat_identifieriçin tarih sırasına göre mesajlar sorgulandığında bazı mesajların içeriği boş görünüyordu - Boş görünen bu mesajların bir kısmı
message.textiçinde değil,message.attributedBodysütunundaki kodlanmış NSMutableAttributedString ikili blob’u içinde saklanıyordu sqlite3ile ikili veriyi hex olarak çıkarıpxxdile incelediğinde gerçek metin içeriğinin orada bulunduğunu görebildi- İkili biçim için kendi ayrıştırıcısını yazmak yerine imessage-database crate’ini kullandı
- Bu crate, iMessage veritabanını okuyup Rust veri yapıları olarak çıktı veriyor
- Birlikte gelen
imessage-exporterikilisi konuşmaları metin veya HTML olarak üretebiliyor - Yalnızca tek bir konuşmayı daraltarak almak için kütüphanedeki SQL ifadelerini biraz değiştirdi
LaTeX ile kitap içeriği oluşturma
- Hedef HTML ya da metin dosyası değil, elde tutulup çevrilebilecek fiziksel bir kitap olduğu için çıktı hedefi olarak LaTeX seçildi
- LaTeX’in metin tabanlı kaynak yapısı şablonlara ve otomatik üretime uygun olduğundan, her mesajı LaTeX kodu olarak dışa aktarma yöntemi kullanıldı
- İlk işleme basit bir düzenle başladı
- Gönderdiği mesajları sola, karşı tarafın mesajlarını sağa hizaladı
- Görsel olan yerlerde ek dosya gösterim metni koydu
- Tepkiler ve yanıtlar gibi işlenmesi zahmetli öğeleri atladı
- Bölümleri tarihe göre ayırdı ve görsel olarak küçük ayarlamalar yaptı
Emoji ve XeLaTeX işleme
- Normal LaTeX unicode desteklemediği için, emoji içeren bölümler işlenince derleyici hata veriyordu
- Emojileri kaldırabilirdi, ancak modern iletişimde önemli olduklarını düşündüğü için bunu yapmadı
- Unicode yazı tipi desteğini kullanmak için XeLaTeX’e geçti
- Üretilen LaTeX kaynağında her emojiyi
{\\emojifont X}biçiminde sardı ve\\emojifontu emoji yazı tipi olarak tanımlayarak satır içi emoji işlemeyi başardı - Renkli baskı maliyetinden kaçınmak için Google Noto Emoji siyah-beyaz emoji yazı tipini kullandı
- Her mesaj için
\\markrightLaTeX komutunu ekleyerek üstbilginin güncel tarihi takip etmesini sağladı
1.300 sayfayı 3 cilde bölme
- 3 yıllık mesajları standart 6" x 9" sayfa boyutunda derlediğinde 1.000 sayfayı çok aşan bir PDF oluştu
- Hedef dönem tam olarak 3 yıl olduğu için tamamını 3 cilde bölerek her cildi basılabilir boyuta indirdi
- Nihai hacim toplam yaklaşık 1.300 sayfa oldu
Barnes & Noble Press ile baskı
- Çeşitli baskı seçeneklerini inceledikten sonra Barnes and Noble Press seçildi
- Lulu ya da Amazon KDP gibi diğer seçeneklerden biraz daha pahalıydı, ancak kişisel kullanım için kitap bastırırken kitabı “yayınlamak” zorunda olmamak daha uygun geldi
- Üç cilt ve toplam yaklaşık 1.300 sayfa, kargo dahil 30 dolara basılabildi
- İçerik PDF’si yüklendiğinde B&N Press sitesi kapak için gereken ölçüleri oluşturdu, o da bu ölçülere göre Inkscape ile her cildin kapağını hazırladı
- B&N Press web sitesi genel olarak çok yavaştı ve sipariş sırasında ödeme sayfasının 24 saatten uzun süre açılmaması gibi bir sorun yaşandı
- Sorun çözüldükten sonra sipariş ilerledi ve birkaç hafta sonra üç fiziksel kitap eline ulaştı
- Fiziksel kitap olarak sayfa çevirme yöntemi, geçmiş konuşmaları telefonda yeniden bulmaya çalışmaktan çok daha kolaydı
Kendin dene
- Kaynak kodu düzen açısından biraz kaba ve Cargo ikilisi olarak paketlenmiş değil, ancak kod miktarı çok fazla değil
- Proje kodu bkettle/message-book adresinde açık olarak yayımlanmış durumda
1 yorum
Hacker News yorumları
Kişisel yazışmaların fiziksel kayıtlarını daha fazla bırakmamız gerektiği açısından bunu çok sevdim.
Sadece başlığa bakınca, mesaj geçmişine dayanarak bir LLM’in olayların anlatısını oluşturduğu bir şey sanmıştım; böyle bir şey hizmet olarak yapılsa harika olurdu.
Şimdi bunu kendi Telegram sohbet geçmişimle de denemek istiyorum.
Feynmann, Feyeraband, Einstein gibi kişilerin mektuplarından derlenmiş kitaplar var; bugünse neredeyse her şey parolaların arkasındaki e-postalarda, bu yüzden gelecekteki tarihî kişilikleri bağlama oturtacak kişisel mektup yığınlarını muhtemelen pek elde edemeyeceğiz.
Fiziksel bir kopya gerekiyorsa microSD’ye kopyalanabilir; kaybolmasından endişe ediliyorsa da üç tane kadar yapılabilir.
Şimdi benzer bir şeyi kendim denemek istiyorum.
Yaptığım kütüphane imessage-exporter’ın gerçekten kullanıldığını görmek güzel.
Gerçekten ilginç bir kullanım örneği.
Bu fikre bir dahaki bakışımda o kütüphaneye geçmeyi düşünüyorum; neredeyse gerçek zamanlı erişim konusunda öneri ya da ipuçları varsa merak ederim.
Teyzem, İkinci Dünya Savaşı sırasında büyükbabamla büyükannemin birbirlerine yazdığı mektupları ve günlükleri harika biçimde korumuştu.
Çocuklarımızın ve torunlarımızın aynı keyfi yaşayamayacağı hemen aklıma geldi.
İlgilenirseniz blogu görebilirsiniz.
Daha çok “Eve gelirken süt al”, “Çocukları sen alacaksın, değil mi?”, “20 dakika sonra görüşürüz” gibi not kâğıtlarının hepsini saklamaya benziyor.
Yine de bunun kendine göre bir çekiciliği var; fazla heves kırıcı gibi duyulmasını istemem.
Britanyalılar için sırada bunu WhatsApp’ta da çalışır hâle getirmek var.
Proje fikri beni heyecanlandırdı, sonra fork’lamak için Rust öğrenmem gerektiğini fark ettim.
Her hâlükârda gerçekten harika bir fikir; arkadaşlarla sohbet geçmişini okumak oldukça nostaljik oluyor.
Telegram dışa aktarma aracı da bağlantı olarak verilmiş.
Örneğin emojilerin kalıp kalmayacağından emin değilim; ekler veya sesli mesajlar da doğal olarak dışarıda kalacaktır.
Yedek veritabanından çıkarmak isterseniz şifreleme de devreye girecektir.
Açıkçası daha sonra başka bir cihazda geri yükleyebileceğimden emin olabileceğim bir yedek arşiv oluşturabilsem bile yeter.
Kişisel mesaj geçmişinin tamamını bastırmak için bir yayınevine gönderme fikri yalnızca bana mı biraz rahatsız edici geliyor?
Asıl, davranış değiştirme işi reklam veya rıza üretme araçları olan veri madenciliği şirketleri tarafından ortadaki adam saldırısına uğramaktan endişe etmek gerekir.
Yazarın yaptığı şeyi epeydir planlıyordum; bu, hâlâ çözemediğim engellerden biri.
Evde kendim basıp ciltlemek muhtemelen tek seçenek gibi; geriye kalan da son ürünü dayanıklı ve elde tutması hoş hâle getirmenin yolunu bulmak.
Yayınevi, baskı için gönderilen PDF’nin içinde kişisel olarak tanımlanabilir bilgiler olmasını beklememiş olabilir; veri saklama süresi de belirsiz/sonsuz olabilir.
—rot13anahtarını denemek işe yarayabilir :-)Popüler olmayan bir düşünce olabilir ama bu biraz ürkütücü.
İnsanların en başta neden kişisel konuşma kayıtlarını saklamak istediğini anlayamıyorum.
Herkese açık gönderilerden veya bloglardan farklı olarak kişisel mesajların geçici olması gerektiğini düşünüyorum. Yüz yüze konuşmaları veya telefon görüşmelerinin tamamını kaydetmiyoruz sonuçta.
İnsanlar bu meseleye farklı bakıyor gibi.
Ben mümkün olan tüm sohbet geçmişlerini korumaya çalışıyorum; yüz yüze konuşmaların ve telefon görüşmelerinin de tamamının kaydedilip kolayca erişilebilir olmasını isterdim.
Deneyimlerimin toplamının beni ben yaptığı hissine sahibim; bu yüzden o deneyimleri unutmak istemiyorum. Hatırlayamazsam bir şekilde kendimden daha eksik bir varlık oluyormuşum gibi geliyor.
Öte yandan Black Mirror’ın o bölümünü de izledim; bu yüzden tüm deneyimleri kusursuzca hatırlama arzusu ile unutabilmenin getirdiği zihinsel ve duygusal faydalar arasında kalıyorum.
Ama benim durumumda, eskiden gönderdiğim mesajların sonsuza kadar kalması gerçeği daha çok içimi burkuyor.
10 yıl önceki ben şimdiki hâlimden o kadar farklı ki, eski mesajları okuyunca çok tuhaf hissediyorum.
Yaklaşık 2004’e kadar insanlarla gerçek mektuplarla iletişim kurardım; özellikle eski kız arkadaşlarımdan ya da üniversiteye ilk gittiğimde kız kardeşlerimden gelen mektupları yıllar sonra okumak güçlü bir nostalji yaratıyordu.
Öte yandan ordudan ayrıldıktan sonra çok daha küçük bir yere taşınınca eşyalarımın çoğunu depoya koydum; 3 yıl sonra hâlâ dokunmadığım şeylerin gereksiz olduğuna karar verip onları depolama yerine devrettim.
Sanırım eski mektupların ve fotoğrafların tamamı da bunun içindeydi ama o şeyleri gerçekten özlediğimi söyleyemem.
İnsanlar geçmişi unutmak istemediklerini söyler ama unutmanın gerçeği, unuttuğunuzu bilmemektir; bir kez unuttuktan sonra algılanabilir bir etkisi olmaz.
Açıkçası zaten yeterince nostaljiye batmış durumdayım ve tutunacak daha fazla eşyaya ihtiyacım olmadığını düşünüyorum. Yeni TV programları izlemiyor, yeni müzikler dinlemiyorum; zihinsel olarak 1999’da sıkışıp kalmış gibiyim ve bunun sağlıklı olup olmadığını bilmiyorum.
Daha doğru benzetme, uzun süre kalan mektuplardır.
Mesajlar bir hikâye oluşturur ve bizim kuşağımızın zeitgeist’ını taşır.
İnsanlar bunların nasıl korunacağı üzerine henüz pek düşünmemiş gibi.
Kişisel olarak hoşuma giden bir fikir; annemle yaptığım mesajlaşmaların tamamını ya da bir kısmını dışa aktarıp o dönemin anısı olarak sakladığımı hayal edebiliyorum.
Gerçekten harika; sevilen birine verilecek mükemmel bir hediye de olabilir gibi görünüyor.
Yakın zamanda Nomic Atlas’ı (https://docs.nomic.ai/) denerken kendi sohbet geçmişimin büyük kısmını içine koydum; mesajları konu kümeleri olarak görselleştirip gezmek oldukça ilginçti.
Bu yüzden mesajların embedding’lerini üretip konu modelleme çalıştırınca, dijitalin aranabilirliğini fiziksel formata taşımanın mümkün olabileceğini düşündüm.
Böylece gerçek kitabın sonuna konu bazlı bir dizin oluşturulabilir ve o konudaki mesajların bulunduğu sayfa numaraları referans olarak eklenebilir.
Mac’te iMessage dışa aktarmak için Python betiği: https://pypi.org/project/imessage-reader/
2000 yıl sonra, 21. yüzyıl insanlarının nasıl yaşadığını araştırırken geriye yalnızca böyle kitaplar kalmış olabilir.
Tweet’ler, sohbetler, SMS’ler, e-postalar, kişisel cihazlardaki dijital fotoğraflar gibi geçici bilgiler tamamen yok olmuş olabilir.
Kişisel kullanım için BN Press’i bilmiyordum.
KDP ve Lulu’ya biraz bakmıştım ama Kindle’ı deneyip sevdikten sonra ana odağımı e-kitaplar yapmaya karar verdim.
Sınırlı veya deneme amaçlı baskılar için BN Press harika görünüyor; 1300 sayfa için 30 dolar da müthiş.