<rss version="2.0" xmlns:dc="http://purl.org/dc/elements/1.1/" xmlns:atom="http://www.w3.org/2005/Atom"><channel><title>Hacker News: css</title><link>https://news.ycombinator.com/user?id=css</link><description>Hacker News RSS</description><docs>https://hnrss.org/</docs><generator>hnrss v2.1.1</generator><lastBuildDate>Wed, 15 Apr 2026 23:14:14 +0000</lastBuildDate><atom:link href="https://hnrss.org/user?id=css" rel="self" type="application/rss+xml"></atom:link><item><title><![CDATA[New comment by css in "Apple has locked my Apple ID, and I have no recourse. A plea for help"]]></title><description><![CDATA[
<p>What's wrong with `imessage-exporter`?<p><a href="https://github.com/ReagentX/imessage-exporter" rel="nofollow">https://github.com/ReagentX/imessage-exporter</a></p>
]]></description><pubDate>Sat, 13 Dec 2025 06:57:34 +0000</pubDate><link>https://news.ycombinator.com/item?id=46252636</link><dc:creator>css</dc:creator><comments>https://news.ycombinator.com/item?id=46252636</comments><guid isPermaLink="false">https://news.ycombinator.com/item?id=46252636</guid></item><item><title><![CDATA[New comment by css in "Getting syntax highlighting wrong"]]></title><description><![CDATA[
<p>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.<p>If you paste the following code into the example block in [0] you can see how useful this can be:<p><pre><code>    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;
    }
</code></pre>
[0]: <a href="https://wordsandbuttons.online/lexical_differential_highlighting_instead_of_syntax_highlighting.html" rel="nofollow">https://wordsandbuttons.online/lexical_differential_highligh...</a><p>[1]: <a href="https://news.ycombinator.com/item?id=20414528">https://news.ycombinator.com/item?id=20414528</a></p>
]]></description><pubDate>Wed, 15 Oct 2025 20:24:33 +0000</pubDate><link>https://news.ycombinator.com/item?id=45597938</link><dc:creator>css</dc:creator><comments>https://news.ycombinator.com/item?id=45597938</comments><guid isPermaLink="false">https://news.ycombinator.com/item?id=45597938</guid></item><item><title><![CDATA[New comment by css in "Too Many Open Files"]]></title><description><![CDATA[
<p>I ran into this issue recently [0]. Apparently the integrated VSCode terminal sets its own (very high) cap by default, but other shells don't, so all of my testing in the VSCode shell "hid" the bug that other shells exposed.<p>[0]: <a href="https://github.com/ReagentX/imessage-exporter/issues/314#issuecomment-2267164947">https://github.com/ReagentX/imessage-exporter/issues/314#iss...</a></p>
]]></description><pubDate>Fri, 06 Jun 2025 15:58:22 +0000</pubDate><link>https://news.ycombinator.com/item?id=44202146</link><dc:creator>css</dc:creator><comments>https://news.ycombinator.com/item?id=44202146</comments><guid isPermaLink="false">https://news.ycombinator.com/item?id=44202146</guid></item><item><title><![CDATA[New comment by css in "Reverse Engineering Apple's typedstream Format"]]></title><description><![CDATA[
<p>Semi-related, one of the `imessage-exporter` contributors provided a great write-up on reverse engineering the handwritten and digital touch message protobufs [0]. The reconstructed proto files are [1] [2].<p>[0]: <a href="https://github.com/trymoose/handwriting2svg/blob/0eb56cf458207bb1c2ceea48cf4b6b6510fa7b13/DISCOVERY.md">https://github.com/trymoose/handwriting2svg/blob/0eb56cf4582...</a><p>[1]: <a href="https://github.com/ReagentX/imessage-exporter/blob/beeb853b211b52d71bf5f8e6e241810b89bd93cc/imessage-database/src/message_types/handwriting/handwriting.proto">https://github.com/ReagentX/imessage-exporter/blob/beeb853b2...</a><p>[2]: <a href="https://github.com/ReagentX/imessage-exporter/blob/beeb853b211b52d71bf5f8e6e241810b89bd93cc/imessage-database/src/message_types/digital_touch/digital_touch.proto">https://github.com/ReagentX/imessage-exporter/blob/beeb853b2...</a></p>
]]></description><pubDate>Tue, 04 Feb 2025 17:16:13 +0000</pubDate><link>https://news.ycombinator.com/item?id=42935445</link><dc:creator>css</dc:creator><comments>https://news.ycombinator.com/item?id=42935445</comments><guid isPermaLink="false">https://news.ycombinator.com/item?id=42935445</guid></item><item><title><![CDATA[New comment by css in "Reverse Engineering Apple's typedstream Format"]]></title><description><![CDATA[
<p>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.</p>
]]></description><pubDate>Mon, 03 Feb 2025 21:44:55 +0000</pubDate><link>https://news.ycombinator.com/item?id=42923637</link><dc:creator>css</dc:creator><comments>https://news.ycombinator.com/item?id=42923637</comments><guid isPermaLink="false">https://news.ycombinator.com/item?id=42923637</guid></item><item><title><![CDATA[New comment by css in "Reverse Engineering Apple's typedstream Format"]]></title><description><![CDATA[
<p>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.</p>
]]></description><pubDate>Mon, 03 Feb 2025 17:19:23 +0000</pubDate><link>https://news.ycombinator.com/item?id=42920484</link><dc:creator>css</dc:creator><comments>https://news.ycombinator.com/item?id=42920484</comments><guid isPermaLink="false">https://news.ycombinator.com/item?id=42920484</guid></item><item><title><![CDATA[New comment by css in "Reverse Engineering Apple's typedstream Format"]]></title><description><![CDATA[
<p>Apple provides Messages for Business [0], but if you have a machine that can read the iMessages as they come in, you could use the library [1] that powers `imessage-exporter` as a bridge.<p>[0]: <a href="https://register.apple.com/messages" rel="nofollow">https://register.apple.com/messages</a><p>[1]: <a href="https://docs.rs/imessage-database/latest/" rel="nofollow">https://docs.rs/imessage-database/latest/</a></p>
]]></description><pubDate>Mon, 03 Feb 2025 16:26:35 +0000</pubDate><link>https://news.ycombinator.com/item?id=42919883</link><dc:creator>css</dc:creator><comments>https://news.ycombinator.com/item?id=42919883</comments><guid isPermaLink="false">https://news.ycombinator.com/item?id=42919883</guid></item><item><title><![CDATA[Reverse Engineering Apple's typedstream Format]]></title><description><![CDATA[
<p>Article URL: <a href="https://chrissardegna.com/blog/reverse-engineering-apples-typedstream-format/">https://chrissardegna.com/blog/reverse-engineering-apples-typedstream-format/</a></p>
<p>Comments URL: <a href="https://news.ycombinator.com/item?id=42919221">https://news.ycombinator.com/item?id=42919221</a></p>
<p>Points: 127</p>
<p># Comments: 25</p>
]]></description><pubDate>Mon, 03 Feb 2025 15:36:52 +0000</pubDate><link>https://chrissardegna.com/blog/reverse-engineering-apples-typedstream-format/</link><dc:creator>css</dc:creator><comments>https://news.ycombinator.com/item?id=42919221</comments><guid isPermaLink="false">https://news.ycombinator.com/item?id=42919221</guid></item><item><title><![CDATA[New comment by css in "Four limitations of Rust's borrow checker"]]></title><description><![CDATA[
<p>Yes, or use the entry api: <a href="https://doc.rust-lang.org/beta/std/collections/hash_map/enum.Entry.html" rel="nofollow">https://doc.rust-lang.org/beta/std/collections/hash_map/enum...</a></p>
]]></description><pubDate>Tue, 24 Dec 2024 20:01:25 +0000</pubDate><link>https://news.ycombinator.com/item?id=42504495</link><dc:creator>css</dc:creator><comments>https://news.ycombinator.com/item?id=42504495</comments><guid isPermaLink="false">https://news.ycombinator.com/item?id=42504495</guid></item><item><title><![CDATA[New comment by css in "Show HN: Extract iMessage Attachments and Links into Organized Folders"]]></title><description><![CDATA[
<p>If you want something a bit more robust and cross-platform, including support for the undocumented TypedStream-stored text data, you can use my open source software: <a href="https://github.com/ReagentX/imessage-exporter">https://github.com/ReagentX/imessage-exporter</a></p>
]]></description><pubDate>Mon, 04 Nov 2024 20:13:07 +0000</pubDate><link>https://news.ycombinator.com/item?id=42045573</link><dc:creator>css</dc:creator><comments>https://news.ycombinator.com/item?id=42045573</comments><guid isPermaLink="false">https://news.ycombinator.com/item?id=42045573</guid></item><item><title><![CDATA[New comment by css in "USPS text scammers duped his wife, so he hacked their operation"]]></title><description><![CDATA[
<p>"666" is a slang term: <a href="https://en.wikipedia.org/wiki/Chinese_Internet_slang" rel="nofollow">https://en.wikipedia.org/wiki/Chinese_Internet_slang</a></p>
]]></description><pubDate>Fri, 09 Aug 2024 15:05:25 +0000</pubDate><link>https://news.ycombinator.com/item?id=41202560</link><dc:creator>css</dc:creator><comments>https://news.ycombinator.com/item?id=41202560</comments><guid isPermaLink="false">https://news.ycombinator.com/item?id=41202560</guid></item><item><title><![CDATA[New comment by css in "Show HN: iMessage-exporter: a comprehensive CLI app and library"]]></title><description><![CDATA[
<p>You can probably do this using the library: <a href="https://docs.rs/imessage-database/latest/imessage_database/" rel="nofollow">https://docs.rs/imessage-database/latest/imessage_database/</a></p>
]]></description><pubDate>Thu, 08 Aug 2024 17:46:23 +0000</pubDate><link>https://news.ycombinator.com/item?id=41194252</link><dc:creator>css</dc:creator><comments>https://news.ycombinator.com/item?id=41194252</comments><guid isPermaLink="false">https://news.ycombinator.com/item?id=41194252</guid></item><item><title><![CDATA[New comment by css in "Show HN: iMessage-exporter: a comprehensive CLI app and library"]]></title><description><![CDATA[
<p>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.<p>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.<p>[0]: <a href="https://github.com/ReagentX/imessage-exporter/releases/tag/2.0.1">https://github.com/ReagentX/imessage-exporter/releases/tag/2...</a><p>[1]: <a href="https://docs.rs/imessage-database/latest/imessage_database/util/typedstream/index.html" rel="nofollow">https://docs.rs/imessage-database/latest/imessage_database/u...</a><p>[2]: <a href="https://docs.rs/imessage-database/2.0.1/imessage_database/message_types/index.html" rel="nofollow">https://docs.rs/imessage-database/2.0.1/imessage_database/me...</a></p>
]]></description><pubDate>Wed, 07 Aug 2024 14:42:52 +0000</pubDate><link>https://news.ycombinator.com/item?id=41181994</link><dc:creator>css</dc:creator><comments>https://news.ycombinator.com/item?id=41181994</comments><guid isPermaLink="false">https://news.ycombinator.com/item?id=41181994</guid></item><item><title><![CDATA[Show HN: iMessage-exporter: a comprehensive CLI app and library]]></title><description><![CDATA[
<p>Article URL: <a href="https://github.com/ReagentX/imessage-exporter">https://github.com/ReagentX/imessage-exporter</a></p>
<p>Comments URL: <a href="https://news.ycombinator.com/item?id=41181989">https://news.ycombinator.com/item?id=41181989</a></p>
<p>Points: 24</p>
<p># Comments: 4</p>
]]></description><pubDate>Wed, 07 Aug 2024 14:42:31 +0000</pubDate><link>https://github.com/ReagentX/imessage-exporter</link><dc:creator>css</dc:creator><comments>https://news.ycombinator.com/item?id=41181989</comments><guid isPermaLink="false">https://news.ycombinator.com/item?id=41181989</guid></item><item><title><![CDATA[New comment by css in "Autogenerating a Book Series from Three Years of iMessages"]]></title><description><![CDATA[
<p>Awesome to see someone using my library [0] in the wild! Very cool use case.<p>[0]: <a href="https://github.com/ReagentX/imessage-exporter">https://github.com/ReagentX/imessage-exporter</a></p>
]]></description><pubDate>Thu, 07 Mar 2024 15:09:26 +0000</pubDate><link>https://news.ycombinator.com/item?id=39630002</link><dc:creator>css</dc:creator><comments>https://news.ycombinator.com/item?id=39630002</comments><guid isPermaLink="false">https://news.ycombinator.com/item?id=39630002</guid></item><item><title><![CDATA[New comment by css in "Cleaning up my 200GB iCloud with some JavaScript"]]></title><description><![CDATA[
<p>Cheers! It was fun to build.</p>
]]></description><pubDate>Fri, 05 Jan 2024 17:09:54 +0000</pubDate><link>https://news.ycombinator.com/item?id=38881506</link><dc:creator>css</dc:creator><comments>https://news.ycombinator.com/item?id=38881506</comments><guid isPermaLink="false">https://news.ycombinator.com/item?id=38881506</guid></item><item><title><![CDATA[New comment by css in "Cleaning up my 200GB iCloud with some JavaScript"]]></title><description><![CDATA[
<p>Hey, this sounds like an interesting problem. I am always looking for edge cases to test, if you have time would you mind checking if <a href="https://github.com/ReagentX/imessage-exporter">https://github.com/ReagentX/imessage-exporter</a> works for you and if it crashes in that spot?</p>
]]></description><pubDate>Fri, 05 Jan 2024 15:51:24 +0000</pubDate><link>https://news.ycombinator.com/item?id=38880336</link><dc:creator>css</dc:creator><comments>https://news.ycombinator.com/item?id=38880336</comments><guid isPermaLink="false">https://news.ycombinator.com/item?id=38880336</guid></item><item><title><![CDATA[New comment by css in "Beeper – Moving Forward"]]></title><description><![CDATA[
<p>Thanks for sharing my work!</p>
]]></description><pubDate>Sat, 23 Dec 2023 04:51:16 +0000</pubDate><link>https://news.ycombinator.com/item?id=38741716</link><dc:creator>css</dc:creator><comments>https://news.ycombinator.com/item?id=38741716</comments><guid isPermaLink="false">https://news.ycombinator.com/item?id=38741716</guid></item><item><title><![CDATA[New comment by css in "Show HN: Beeper Mini – iMessage client for Android"]]></title><description><![CDATA[
<p>I wrote a tool for this: <a href="https://github.com/ReagentX/imessage-exporter">https://github.com/ReagentX/imessage-exporter</a></p>
]]></description><pubDate>Wed, 06 Dec 2023 07:46:36 +0000</pubDate><link>https://news.ycombinator.com/item?id=38541404</link><dc:creator>css</dc:creator><comments>https://news.ycombinator.com/item?id=38541404</comments><guid isPermaLink="false">https://news.ycombinator.com/item?id=38541404</guid></item><item><title><![CDATA[New comment by css in "Nonprofit hospitals skimp on charity while CEOs reap millions, report finds"]]></title><description><![CDATA[
<p>Maybe cartel is a strong word, but there are many states in the US where, in order to operate a medical facility or provide a service, you must get permission from all of the existing facilities in the locality: <a href="https://en.wikipedia.org/wiki/Certificate_of_need" rel="nofollow noreferrer">https://en.wikipedia.org/wiki/Certificate_of_need</a><p>This extends to even purchasing medical equipment.</p>
]]></description><pubDate>Fri, 20 Oct 2023 15:06:12 +0000</pubDate><link>https://news.ycombinator.com/item?id=37957146</link><dc:creator>css</dc:creator><comments>https://news.ycombinator.com/item?id=37957146</comments><guid isPermaLink="false">https://news.ycombinator.com/item?id=37957146</guid></item></channel></rss>