Live data from Hacker News

“This presentation can’t be opened because it’s too old”

plus.google.com

171–180 of 217 posts

Re: “This presentation can’t be opened because it’s too old”

#171
post #89
post #80

Earlier quoted context omitted.

The world isn't so black and white. Document serialization is a rocky landscape that is rife with compromise. You have to balance document open time, document save time, file size, backwards compatibility, forwards compatibility, recovery modes, interoperability, size in memory, parsing time, time to save to disk, proprietary embedded file formats, metadata support, and more. And those are just the development consid…

> Software is hard. I think it's pragmatic for software vendors to have a strong, transparent philosophy about the trade-offs so that consumers can make the right choice. I'm not talking about software, I'm talking about information. Information shouldn't have an expiration date. Here's a webpage from 1994: http://www.lysator.liu.se/pinball/expo/ Surely you wouldn't prefer a world where the blog you wrote 4 years ago…

Surely you wouldn't prefer...

How about if we're talking a blog I wrote 20 years ago, vs. some really nice improvement in modern software?

Backwards compatibility is great, and ideally no data would ever be lost to bitrot, but backwards compatibility always has a cost. I'm not unilaterally willing to pay that cost.

Re: “This presentation can’t be opened because it’s too old”

#172
post #98
post #65

Earlier quoted context omitted.

Files are data. Data should be eternal. You should be able to convert a presentation you make today 30 years from now to a newer format. Making software not-backwards compatible is fine and normal but if files expire in a few years Apple is saying that the things you do on their computers are disposable.

"Data should be eternal." This is not a useful statement. If you convert the "should" to a "shall", and try to design a system around that requirement alone, it would prove very hard. Even designing a clock around that requirement is very hard ( http://longnow.org/clock/ ). If you back off from the "shall", then you are in the standard world of engineering tradeoffs, which is where you started. What features do you w…

Designing a clock around that is very hard because the clock is a physical machine that needs to physically last. Software is easier, because it's, well, soft.

I'm the developer who build their related Long Bets project (http://longbets.org/) and I think "data should be eternal" is a perfectly reasonable standard. That was certainly my goal in designing Long Bets.

If you start with that as a principle, I don't think it imposes particularly large engineering burdens, especially if you accept some potential degradation as a consequence.

For example here, instead of a "fuck you" dialog box, they could have imported the core of a presentation: text and images positioned on a sequence of frames.

An analogy is HTML. It's basically zero engineering effort to just suck the text out of a page. It is only modestly more effort to pull out some of the semantic markup, like headings, lists, and emphasis. And that's the part that really hurts to lose, not which precise shade of blue you used in your footer text.

Re: “This presentation can’t be opened because it’s too old”

#173

The author might consider using Microsoft products because they are obsessive about providing backwards compatibility. That's one of the positive things about Microsoft products. The downside is that they have to deal with a lot of old baggage as a result. Apple, on the other hand is almost the opposite. They're obsessive about upgrading everyone and leaving the past behind. That's great because they're free to make…

> Both are valid strategies in my opinion and appeal to different customers

Absolutely. One is for customers who don't want to lose any file or data. The other is for those who don't mind losing old stuff, no matter how important it may be. Now that's bold and innovative.

Re: “This presentation can’t be opened because it’s too old”

#174

Sadly, it seems like a business opportunity: "we'll convert formats for you when your vendor drops the ball."

Unfortunately, it could be a very expensive business to get into if there are patent-encumbered formats involved. In the cases where it's most likely to be useful, it also seems least likely to happen.

Reverse engineering file formats is covered by fair use due to this very reason.

Re: “This presentation can’t be opened because it’s too old”

#175
post #170
post #139

Earlier quoted context omitted.

It would be so nice if programs could request a dedicated core for these kinds of things.

Under Linux you can. You can boot the kernel with the maxcpus argument set to 1 or the number of cores you want the Linux kernel to use and then on a quad core machine you have 3 cores available all the time and setup to where Linux won't ever need to handle interrupts on that core. Then you just start your application and set the affinity to that unused core. You can extend this further by doing things like mmaping…

What I'm confused about. I'll likely just have to play around with this feature at some point. I knew about APIC, but not completely sandboxing cores.

Is if you have bare metal operations do you still have access to kernel functionality ala stdio and libc libraries? Normally when you hit bare metal your on your own. I'm just wondering because the idea of writing my own threading, and memory management libraries excites me to no end .

Also if you can call these functions like your in userland then do they block until execution has completed on the other 'kernel' cores? Also if you creating P-Threads elsewhere but not managing their execution on the 'non-kernel' core what happens?

>userspace but you get all the performance benefits of implementing everything like it was running in Ring 0

Can you give any literature on this? these terms are contradictory.

Re: “This presentation can’t be opened because it’s too old”

#176

Earlier quoted context omitted.

Saying Microsoft isn't perfect at backwards compatibility is nit picking to say the least! They are far far ahead of any competition in terms of backwards compatibility. It's practically measured in decades whereas Apple can't manage 5 years.

Silverlight didn't last decades.

I don't think that's the same thing. If Microsoft came out with a newer version of silverlight, you'd expect it to keep reading the old files.

The fact they canceled silverlight and won't make a new version, doesn't have much to do with backwards compatibility.

Re: “This presentation can’t be opened because it’s too old”

#177

Earlier quoted context omitted.

I get what you're saying about how it's definitely going to be slower, but I don't understand why the read/write time to the hardware matters if the hardware is buffering the last 100 timings or so. What I'm trying to point out is that you don't have to make your entire system down to the keyboard real time - you only need to make the tiny piece that is doing the physical process real time (with some very simple logi…

The only real time component of the software stack is the kernel. If you want another real time module your screwed because you need to run it in kernel space, but if you have a kernel you can't. Or you run a real time OS which may have problems because they aren't developed with security but IO timing in mind. It's a fundamental flaw of time shared OS's. :.:.: Second security works in a simple way. Cost to secure vs…

    > The only real time component of the software stack is
    > the kernel. If you want another real time module your
    > screwed because you need to run it in kernel space, but
    > if you have a kernel you can't.
I think you're confused about what RyanZAG is saying. If I'm reading correctly, he's saying "don't run the real-time stuff on the CPU." Have that stuff run on a much simpler piece of hardware that is real-time, and runs the real-time code, then have the non-real-time userland on the CPU talk to it in not-real-time.

To take your example:

    > When you access hardware on say a PCI bus (which you would in
    > this scenario). Your call to the PCI bus does not take place
    > WHEN you call for it to take place. You call the Kernel, which
    > calls the scheduler, which calls the hardware manager, which
    > calls the driver, which finally processes your request.
Design the PCI card to have it's own, smaller CPU (or FPGA, or whatever), that does the real-time interaction with the "32,600,000 pulses per second." Don't have the real-time bits depend in any way with the code running on the CPU. Have it buffer the data. The, when the PCI card is accessed by the userland program on the CPU, it dumps the buffer onto the PCI bus. The userland would obviously have be fast enough that the buffer doesn't fill up, but that speed is much less than "real time". You can then work with the data in the userland, running in non-real time.

Re: “This presentation can’t be opened because it’s too old”

#178

Earlier quoted context omitted.

#2 isn't viable because it breaks the primary design goal and the entire purpose of Keynote '13--that every presentation opens the same way across desktop, web, and mobile. The Keynote '09 source code does not and never has compiled for ARM, and so you would be faced with exactly the same dialog you have now, except instead of on your Mac it's on your iPad and instead of asking you to find an old version of keynote i…

Somehow Apple has been able to port their entire operating system from PPC to Intel to ARM. I think they could manage porting a bit of iWork code.

It's not about 'can they'. It's about 'should they'.

Can I build a flappy bird clone? Sure. Should I? Hell no. I have more profitable projects to work on given a fixed amount of time and resources.

If you think this is money left on the table, then build the 'small utility' to convert the format yourself. If you make money, huzzah, you were right. If you don't, then you were wrong, and this is a niche use case that isn't worth the investment.

Re: “This presentation can’t be opened because it’s too old”

#180

Earlier quoted context omitted.

The only real time component of the software stack is the kernel. If you want another real time module your screwed because you need to run it in kernel space, but if you have a kernel you can't. Or you run a real time OS which may have problems because they aren't developed with security but IO timing in mind. It's a fundamental flaw of time shared OS's. :.:.: Second security works in a simple way. Cost to secure vs…

> The only real time component of the software stack is > the kernel. If you want another real time module your > screwed because you need to run it in kernel space, but > if you have a kernel you can't. I think you're confused about what RyanZAG is saying. If I'm reading correctly, he's saying "don't run the real-time stuff on the CPU." Have that stuff run on a much simpler piece of hardware that is real-time, and r…

      >don't run the real-time stuff on the CPU.
You have to is what I'm saying.

      >that does the real-time interaction with the data...
I already gave an example where I literally said I do this. What your not understanding is the time to poll and respond are part of this real time system.

As I said before. The amount of time between "Kernel, I need this time stamp." and "PID 1337 here is your time stamp" is not instant, and is not constant. There are several stages of blocking I/O, which are not always given priority over other threads. This amount of time I stated will not be instant, nor constant. While for 100% accuracy it needs to both. This part, the collection and storage, needs to ALSO take place in real time BUT BEING IN USERLAND, it can't.

So to outline

      Topic: UserLand   Kernel                      RealTimeCard
     Stage
      1)     Request                                Counting Pulses (You Want This)
      2)                Unknown time                Counting Pulses (Additional Error)
      3)                Spent Doing I/O             Counting Pulses (Additional Error)
      4)                Changing Tasks              Counting Pulses (Additional Error)
      5)                etc.                        Counting Pulses (Additional Error)
      7)                                            Near Instant Response 
      8)                Unknown time (+Error)
      9)                Changing Tasks (+Error)
     10)                Managing Memory (+Error)
     11)                Higher Priority Threads (+Error)
     12)     Data received
What this example boils down to you get a time stamp 8 'cycles' after you thought you'd get it. But that actual time stamp is really 5 'cycles' off of what you should have gotten.

Those 2 unknowns between your real time and userland are where your error comes from. You have both pre-call and post call error added. Neither are avoidable.

No matter whats on the other end of your bus unless your bus moves faster then light.

Post reply on HN