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.
FWIW, I have built something like this--including safely reimplementing the deserialization of that old "streamtyped" format, though not necessarily dealing with "the full corpus of iMessage features", as I thankfully don't experience people using newer formatting ;P)--and, to me, the hardest part wasn't/isn't dealing with a single database, or adding file format features like that deserialization: it is that the user almost certainly has a handful of these database files collected from a hodgepodge of devices and backups that are all slightly out of sync (as always happens for various reasons, both reasonable and unreasonable) and were last touched by different versions of macOS/iOS, and you have to merge all of their data into a single unified export. I found this particularly hard when going back and dealing with ancient database files from early versions of iPhoneOS, before "iMessage" even existed, as well as weird corner cases where old database files were on devices which happened to be upgraded to newer versions of iOS, as the migrations are sometimes a bit more awkward than a de novo message. Like, to me, "table stakes" for this kind of program is that it takes a list of database files, not a single one, or it is simply never going to work well. (I would be happy to help test such with my database files--though probably a tad slowly right now as I've been overly-booked recently--as well as, if it would somehow be at all helpful, to show you the somewhat disorganized code I developed, particularly so if you would be willing to support an SQLite or JSON output format... it would be nice to never have to maintain my version of this stuff again, as I only wrote what I have so far for my own personal use cases, and mostly in a frantic panic over a few days in 2021 when dealing with discovery for a lawsuit against Apple, not to distribute to random users, though I otherwise might some day if this use case is never fully served.)
Thank you for this! I recently was digging into the sqlite files with an idea to monitor them for changes indicating new messages and then extract them. My initial prototype seemed to mostly work, with a few hacks. Next time I look at that idea I’ll switch to your library. Any suggestions or tips around near-time accessing?
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 https://github.com/ReagentX/imessage-exporter works for you and if it crashes in that spot?
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: https://en.wikipedia.org/wiki/Certificate_of_need
This extends to even purchasing medical equipment.
It looks like the library could remotely start the car. I wonder if they'd care if it couldn't.
I think that's actually not something that would be wise to hook up to an automation platform. A car running in the garage can kill, and 'a human chose to press this button' is an important interlock. After all, you have to swipe your way in to the official app, and to use a key fob you need to hold the button for several seconds.
'How dare Mazda permit this' is a real lawsuit that will happen. Automakers also got sued because pushbutton start is confusing and people would leave the car running after use. There is an active lawsuit right now about push-button gear selectors making it too hard to put the vehicle in park, allowing unexpected rollaways.
I have my car (Subaru) hooked to an automation with home assistant. Several, actually. I can start the car in winter by pushing a button in my kitchen, heat it up, and then walk there. But the most important one is that I can turn the car off remotely as well, based on timers and automations.
I generally don’t buy the ‘we should not allow this or that because it can be dangerous’. I’m a big boy. Driving is even more dangerous always. Let me choose. Please.
Here's a really fun one from yesterday's 'midwit' thread:
> I have somehow automated some lights to come on too early in the morning but the specific task/automation I set to do this is nowhere to be found.. I can create and remove new tasks but I'm being haunted by this old task.
Do you have an attached garage? How about if it gets turned on with the door closed at 4am after a daylight savings changeover gone horribly wrong. I enjoy my home assistant but I wouldn't let it control something that can gas me. I've seen way too much weird shit in my iot network to ever trust it with that.
You'll be pleased to know that pretty much no post 2005 car can gas you.
Old cars gassed people with carbon monoxide. Odorless and deadly.
Modern cars make basically none of that. Instead, you'll die of too much CO2.
Luckily, humans are pretty good at detecting gradually increasing levels of CO2 - it's what happens when 5 people are in a car together and someone says "it's getting stuffy in here, turn the vent on!".
Sudden CO2 increases can still kill. But gradual ones like a car gradually producing more and more CO2 likely wouldn't. Even in your sleep, you will wake up and find the air stuffy (it can happen when lots of cave people are all sleeping in a badly ventilated cave, so we evolved to handle it).
However, you shouldn't rely on the above for the safety of people - all it takes is someone to be drunk or taking sleeping pills, and they might not be able to act on their senses... Also, cars where the emissions system has been tampered with or faulty can still produce a lot of deadly carbon monoxide.
Man, I live in snow country and every year someone gets killed idling in the winter. Kids idling and hanging out or someone parked eating their lunch. It's true that CO emissions are way down since the mid-aughts rules went in, but it isn't 0 ppm.
The last go-around about the keyless ignitions was kicked off by a 2017 toyota. The story was from 2019
Potentially valid concerns, but not what copyright law was designed to address. Mazda can easily prohibit their own customers from doing this kind of thing in their terms of service if they want.
No, in a functioning democracy, it is the job of the legislature to write laws. However, looks like we can barely pass a budget most years. I saw Jeff Jackson from North Carolina say on tick tock that it is likely that we won’t even be able to do that on time this year.