HN user

css

4,161 karma

https://chrissardegna.com

Posts30
Comments361
View on HN
chrissardegna.com 1y ago

Reverse Engineering Apple's typedstream Format

css
127pts25
github.com 1y ago

Show HN: iMessage-exporter: a comprehensive CLI app and library

css
24pts4
github.com 2y ago

Show HN: imessage-exporter, a CLI app and library

css
161pts43
github.com 3y ago

Show HN: iMessage-exporter, a full-featured CLI app and library

css
15pts2
chrissardegna.com 3y ago

Uncovering A Blocking Syscall

css
2pts0
www.apple.com 4y ago

Apple announces first states to adopt driver’s licenses and IDs in Apple Wallet

css
177pts226
twitter.com 5y ago

User Locked Out of iCloud Account for 6 Months Because Last Name is “True”

css
28pts2
www.governor.ny.gov 5y ago

Governor Cuomo Announces Pilot Program Testing “Excelsior Pass” With IBM

css
3pts1
chrissardegna.com 5y ago

Making Python CLI Apps Faster

css
1pts0
www.apple.com 5y ago

AirPods Max

css
996pts1831
www.apple.com 5y ago

Apple Services Outage

css
1pts1
www.fcc.gov 6y ago

FCC Designates Huawei and ZTE as National Security Threats

css
2pts1
blog.irdeto.com 6y ago

Bethesda installs a kernel mode driver for Doom Eternal Anti-cheat

css
4pts1
developer.apple.com 6y ago

WWDC to Be Moved Online

css
248pts98
twitter.com 6y ago

16” MacBook Pro

css
7pts2
www.apple.com 6y ago

Apple Q4 Results

css
148pts57
www.apple.com 6y ago

macOS Catalina

css
477pts565
www.apple.com 6y ago

A Message about iOS Security

css
432pts291
medium.com 7y ago

Medium.com Down (5xx)

css
2pts1
chrissardegna.com 7y ago

Performance of Various Python Exponentiation Methods

css
2pts0
www.apple.com 7y ago

Apple introduces 8-core MacBook Pro

css
674pts1034
www.apple.com 7y ago

Apple Q2 Results

css
119pts116
www.apple.com 7y ago

Addressing Spotify’s Claims

css
733pts654
www.nbcnews.com 7y ago

Chinese company charged with stealing trade secrets from Micron

css
20pts0
www.hkexnews.hk 7y ago

Foxconn Interconnect Technology Limited Acquires Belkin, Linksys, Wemo, and Phyn [pdf]

css
1pts0
chrissardegna.com 7y ago

Building a High-End Mechanical Keyboard

css
3pts0
www.instagram.com 8y ago

Instagram down (5xx error)

css
5pts2
chrissardegna.com 9y ago

Visualizing iTunes Library Data in Excel

css
2pts0
chrissardegna.com 10y ago

Using Keynote to Make Beautiful Data Visualizations

css
2pts0
chrissardegna.com 10y ago

The eGPU Problem

css
5pts2

I love the concept of lexical differential highlighting [0] (discussed here [1]). It makes reading math so much easier, especially in dense code. However I don't know of any editor that implements a feature like this.

If you paste the following code into the example block in [0] you can see how useful this can be:

    while (b - a).abs() > EPSILON {
        let c = a + (a - b) * f_a / (f_b - f_a);
        let f_c = J(c);
        if f_c * f_b == 0.0 {
            a = b;
            f_a = f_b;
        } else {
            f_a /= 2.0;
        }
        b = c;
        f_b = f_c;
    }
[0]: https://wordsandbuttons.online/lexical_differential_highligh...

[1] https://news.ycombinator.com/item?id=20414528

The plist is probably a binary plist (header bytes `bplist00`) generated by NSKeyedArchiver, and then the specific data you need is encoded inside. Edited iMessages are stored in the exact same way. Luckily the plist itself is not that complex–but typedstream is pesky to work with.

iMessage uses a very strange amalgamation of typedstream (message content), keyed archives (app messages, sticker data), and protobufs (Digital Touch, handwriting) for different features. I wonder what motivated all of those design decisions.

The California Poppy release [0] of `imessage-exporter` is the biggest update yet. Most notably, it implements a novel `typedstream` deserializer [1], allowing it to understand the data stored in `NSAttributedString` binary data that is stored in the iMessage database.

I've spent a long time reverse engineering nearly every aspect of Apple's iMessage SQLite tables to build this program. As far as I know, there are no other tools that support the full corpus of iMessage features [2], including edited messages, app messages, reactions, text range formatting, and threads.

[0] https://github.com/ReagentX/imessage-exporter/releases/tag/2...

[1] https://docs.rs/imessage-database/latest/imessage_database/u...

[2] https://docs.rs/imessage-database/2.0.1/imessage_database/me...

I drilled keybr from 30wpm to 110 several years ago and still come back every few days to practice. It is a great tool. I sometimes use it to "study" documentation by pasting it in as a custom prompt.