They just locked that away from 3rd party devs until...umm...cobalt. All apps ran in the UIAS.
Cooperative MT can/was done/faked using
1) Notifications
2) setjmp/longjmp and getSP/setSP macros to set the stack pointer.
3) something I hadn't bothered to learn since I was just fooling around.
Any mis-behaving app broke multitasking and there's always one. Or you could just live in your singly-threaded world which would have REALLY sucked if PalmOS didn't actually have a preemptive multitasking kernel and running Hotsync, TCP-IP, sound, etc as seperate system tasks in the background.
Oh, and I bet you haven't written 50KB of code so you have no clue as what is or isn't a challenge. It is often MORE of a challenge to write for resource limited mobile devices than for desktops.
Oh, I wrote plenty of code. But mostly in Fortran, so it was for mostly scientific purposes. the only other code I wrote much for was Forth. It's been over ten years though.
The multitasking in Palm, as you say is locked away, so is of no importance to what we are talking about.
The rest is easy, as can be seen by what's been already done. If it's difficult for you, I can't explain that.
Quote:
Mainframes have zip to do with this discussion.
Everything is zip to you if it disproves what you are saying in any way.
[quote]
The point is that the iPhone CPU is not slow and an iPhone has about as much compute power as machines that vastly benefited from pre-emptive multitasking...which you actually had in your Treo.[/quote[
Slow is relative. Compared to other phones it's not slow, but that doesn't mean much.
Quote:
ARM isn't sitting still either. 2010 should be a fight from from back here in 2007 the outcome can easily go either way.
I hope they aren't. But, Intel has the bucks. If they want to apply them to this, and they have some good ideas, which it seems they do have, they could eat ARM's lunch, long term.
You have no real clue about this do you? You could at least google about it to not make such asinine assertions that more CPUs are required to make multi-tasking practical given the whole POINT is that you want to run more processes than you have CPUs for...which for the majority of the time was ONE CPU.
Pre-emptive multitasking systems are more responsive than non given it allows for efficient interrupt handling as well as the scheduling of tasks you descrive. If the kernel can't pre-empt the active task by doing a context switch then it can run off to I/O or whatever until the active task yeild the processor by either blocking or yielding the CPU via a system call (cooperative multitasking like the old OS9).
It was a major improvement in operating systems.
I do. you always seem to find something unimportant to add though, which doesn't change the argument.
You want to preemptively multitask with such slow processors?
This can be done by simply stopping the program while another is open. Use the phone while looking something up elsewhere? That can be done already.
I've had preemptive multitasking on far slower computers and even then I was quite happy with it.
Even if it's some sort of abomination like preemptive single tasking, anything to allow the device to force control back from an errant process without some witch doctor salute or some other form of user reset is good.
I've had preemptive multitasking on far slower computers and even then I was quite happy with it.
I'm not saying it didn't work. Just that it wasn't the panacea that some claimed it was. It really did take two cpu's, or cores, to make a big difference. even if one didn't know much about programming, it should be obvious.
If you have two programs that use little cpu time, and the OS isn't hogging the rest, then preemptive will certainly help a fair amount. But, take two programs that want as many cycles as they can get, and they both bog down.
It's one thing to download, or print in the background, and another to run two programs that are trying to render large files at the same time.
I've tried this a number of times, and there were always performance problems, and sometimes more serious ones as well.
There is often a wide gap between theory and practice, something which low level coders don't always seem to understand.
Quote:
Even if it's some sort of abomination like preemptive single tasking, anything to allow the device to force control back from an errant process without some witch doctor salute or some other form of user reset is good.
Yes. That's a different issue, and not one that most people think of when they look at the advantages of multitasking, so I didn't address it. But, it requires proper memory protection, which not all systems do equally.
I'm not saying it didn't work. Just that it wasn't the panacea that some claimed it was. It really did take two cpu's, or cores, to make a big difference. even if one didn't know much about programming, it should be obvious.
If you have two programs that use little cpu time, and the OS isn't hogging the rest, then preemptive will certainly help a fair amount. But, take two programs that want as many cycles as they can get, and they both bog down.
It's one thing to download, or print in the background, and another to run two programs that are trying to render large files at the same time.
That's nice, but this is about a handheld communicator, which most programs shouldn't be trying to hogging all the CPU. What weenie is going to try to run two rendering programs on a freaking phone?
That's nice, but this is about a handheld communicator, which most programs shouldn't be trying to hogging all the CPU. What weenie is going to try to run two rendering programs on a freaking phone?
Jeff, it's all relative. Coverflow alone seems to use all of the cpu cycles. How many times are people here saying that this is a computer, not just a phone? I'm pretty sure that there will be programs that will hog the little processing power the device has, and there will be those who will think they are powerusers, and try to run several at one time. They will then complain that the iPhone, or iTouch, is too slow. you know that's true.
I'm not saying it didn't work. Just that it wasn't the panacea that some claimed it was. It really did take two cpu's, or cores, to make a big difference. even if one didn't know much about programming, it should be obvious.
No, it didn't require 2 cpus. You're completely wrong on this. This is going to be one of those time where you simply cant admit you're wrong on something so easily verifiable isn't it?
Quote:
If you have two programs that use little cpu time, and the OS isn't hogging the rest, then preemptive will certainly help a fair amount. But, take two programs that want as many cycles as they can get, and they both bog down.
There are many little programs running all the time. And you're forgetting that user input is one of those things that require CPU cycles to process. If you can't preempt the running program to handle user input you end up with a non-responsive system.
Two programs that want as many CPU cycles as they can get will get some fraction of the available cycles based on the scheduling algorithm. They don't bog down the rest of the system.
Quote:
It's one thing to download, or print in the background, and another to run two programs that are trying to render large files at the same time.
So what? You are saying that folks haven't found multi-tasking useful until multi-core or multi-CPU systems and that is patently false.
Jeff, it's all relative. Coverflow alone seems to use all of the cpu cycles.
This is exactly why preemptive multitasking (with fair scheduling) is useful. You can safely let Coverflow gobble as much CPU cycles as it wants safely knowing that it can't starve anyone else.
The reason the iPhone does not feel slow and does not bog down because of one or more applications that wants to hog the CPU is because of preemptive multitasking with some kind of priority based scheduling.
The multitasking in Palm, as you say is locked away, so is of no importance to what we are talking about.
No, what it means is that you are completely unaware of how the product you used worked but feel free to state unequivocably that one of the key things that made it work is unimportant.
Quote:
The rest is easy, as can be seen by what's been already done. If it's difficult for you, I can't explain that.
Because you have no understanding of the issue.
Quote:
Everything is zip to you if it disproves what you are saying in any way.
No, just the things that have zip to do with what we are talking about. That mainframes sometimes have better I/O than some desktops has nothing to do with the issue of multitasking.
Quote:
Quote:
The point is that the iPhone CPU is
not slow and an iPhone has about as much compute power as machines that vastly benefited from pre-emptive multitasking...which you actually had in your Treo.
Slow is relative. Compared to other phones it's not slow, but that doesn't mean much.
In comparison to historical multitasking systems the iPhone blazes.
Quote:
I hope they aren't. But, Intel has the bucks. If they want to apply them to this, and they have some good ideas, which it seems they do have, they could eat ARM's lunch, long term.
They didn't fare so well last round. Just having bucks does not guarantee success. Witness Sony and Microsoft in some of their less successful endeavors.
No, it didn't require 2 cpus. You're completely wrong on this. This is going to be one of those time where you simply cant admit you're wrong on something so easily verifiable isn't it?
As usual, you misstate what I've said. I very clearly didn't say that it didn't work with one cpu. I said that it didn't work as well with one cpu as people were saying it would.
[quote]
There are many little programs running all the time. And you're forgetting that user input is one of those things that require CPU cycles to process. If you can't preempt the running program to handle user input you end up with a non-responsive system.[quote]
Yes, little programs. read what I said again. I'm not talking about little programs on a big machine.
Quote:
Two programs that want as many CPU cycles as they can get will get some fraction of the available cycles based on the scheduling algorithm. They don't bog down the rest of the system.
Sorry, but you're wrong about that. Why don't you try it?
Quote:
So what? You are saying that folks haven't found multi-tasking useful until multi-core or multi-CPU systems and that is patently false.
Other than for those "little programs" you mentioned, it wasn't terribly useful until two cpu's.
You've obviously never done much (or any) work with video, or professional photography.
This is exactly why preemptive multitasking (with fair scheduling) is useful. You can safely let Coverflow gobble as much CPU cycles as it wants safely knowing that it can't starve anyone else.
The reason the iPhone does not feel slow and does not bog down because of one or more applications that wants to hog the CPU is because of preemptive multitasking with some kind of priority based scheduling.
The power of a device is directly related to the hardware. If a device is designed properly, then it will function properly.
Right now, there is little on the iPhone that takes too much from the system other than video and coverflow. Of course, you can't do both at once.
When more powerful programs do come out, we will see what happens.
No, what it means is that you are completely unaware of how the product you used worked but feel free to state unequivocably that one of the key things that made it work is unimportant.
Because you have no understanding of the issue.
No, just the things that have zip to do with what we are talking about. That mainframes sometimes have better I/O than some desktops has nothing to do with the issue of multitasking.
In comparison to historical multitasking systems the iPhone blazes.
They didn't fare so well last round. Just having bucks does not guarantee success. Witness Sony and Microsoft in some of their less successful endeavors.
Dude, when you stop making baldly incorrect statements and defend them to the death I'll be much less of a pain for you.
I see that you are once again trying to find wording where you can try to appear to be right but pre-emptive multitasking has been so useful that it is now in almost every modern operating system. I would say EVERY but I guess there might be some oddball OS out there that doesn't have it that I am unaware of.
Single-core, multi-core, single processor, multi-processor, embedded OS, desktop OS, whatever category. Useful in each and every one.
You have spent more effort in denying this than it would have taken to simply read up on it and moved on.
You know, its guys like you that make me dread getting old. So full of yourself that you have to be right about everything and unable to accept that you might have learned something wrong or your experience does not apply and you might need to learn something new because the world has changed.
Dude, when you stop making baldly incorrect statements and defend them to the death I'll be much less of a pain for you.
I see that you are once again trying to find wording where you can try to appear to be right but pre-emptive multitasking has been so useful that it is now in almost every modern operating system. I would say EVERY but I guess there might be some oddball OS out there that doesn't have it that I am unaware of.
Single-core, multi-core, single processor, multi-processor, embedded OS, desktop OS, whatever category. Useful in each and every one.
You have spent more effort in denying this than it would have taken to simply read up on it and moved on.
You know, its guys like you that make me dread getting old. So full of yourself that you have to be right about everything and unable to accept that you might have learned something wrong or your experience does not apply and you might need to learn something new because the world has changed.
It's not my statements that are a problem, it's your replies. you may understand coding, but you don't understand real world use.
Oh, and don't worry about getting old. When you insult someone as you do without the barrier of the internet, we will all mourn you.
When you insult someone as you do without the barrier of the internet, we will all mourn you.
Heh, for a moment back there I considered it worth a ban to tell you what I thought of you but decided you really aren't worth the effort...and trust me if I wanted to insult you it would be what I would say to your face.
In any case, this is just more of the same from you. You say something wrong, when corrected you say even more silly things and it escalates from there.
Heh, for a moment back there I considered it worth a ban to tell you what I thought of you but decided you really aren't worth the effort...and trust me if I wanted to insult you it would be what I would say to your face.
In any case, this is just more of the same from you. You say something wrong, when corrected you say even more silly things and it escalates from there.
I know you are good at insults you've done it before, spitting out four letter insults, and other trash.
I thought it might be different this time, but you seen to like to pass by outrageous comments to get to me. Fine, live in your world of fantasy.
I know you are good at insults you've done it before, spitting out four letter insults, and other trash.
Dude, while I can curse the only 4 letter insult I hand out is "dumb" and I try to use that only on statements, not the individual that makes that statement though I do slip once in a long while. But yes, for you I had been considering more "colorful" language which for me is kinda rare in an internet forum.
Perhaps if I get under your skin you can avail yourself to the ignore feature.
Dude, while I can curse the only 4 letter insult I hand out is "dumb" and I try to use that only on statements, not the individual that makes that statement though I do slip once in a long while. But yes, for you I had been considering more "colorful" language which for me is kinda rare in an internet forum.
Perhaps if I get under your skin you can avail yourself to the ignore feature.
You could do the same. I never start these arguments, you do.
If you don't like what I have to say, move on. You don't have to think you're saving the world, you're not.
Comments
Gee...given I've actually written a program for PalmOS (once) and read the docs I happen to know that PalmOS has had a multitasking kernel.
http://www.access-company.com/develo...s.html#1046570
They just locked that away from 3rd party devs until...umm...cobalt. All apps ran in the UIAS.
Cooperative MT can/was done/faked using
1) Notifications
2) setjmp/longjmp and getSP/setSP macros to set the stack pointer.
3) something I hadn't bothered to learn since I was just fooling around.
Any mis-behaving app broke multitasking and there's always one. Or you could just live in your singly-threaded world which would have REALLY sucked if PalmOS didn't actually have a preemptive multitasking kernel and running Hotsync, TCP-IP, sound, etc as seperate system tasks in the background.
Oh, and I bet you haven't written 50KB of code so you have no clue as what is or isn't a challenge. It is often MORE of a challenge to write for resource limited mobile devices than for desktops.
Oh, I wrote plenty of code. But mostly in Fortran, so it was for mostly scientific purposes. the only other code I wrote much for was Forth. It's been over ten years though.
The multitasking in Palm, as you say is locked away, so is of no importance to what we are talking about.
The rest is easy, as can be seen by what's been already done. If it's difficult for you, I can't explain that.
Mainframes have zip to do with this discussion.
Everything is zip to you if it disproves what you are saying in any way.
[quote]
The point is that the iPhone CPU is not slow and an iPhone has about as much compute power as machines that vastly benefited from pre-emptive multitasking...which you actually had in your Treo.[/quote[
Slow is relative. Compared to other phones it's not slow, but that doesn't mean much.
ARM isn't sitting still either. 2010 should be a fight from from back here in 2007 the outcome can easily go either way.
I hope they aren't. But, Intel has the bucks. If they want to apply them to this, and they have some good ideas, which it seems they do have, they could eat ARM's lunch, long term.
You have no real clue about this do you? You could at least google about it to not make such asinine assertions that more CPUs are required to make multi-tasking practical given the whole POINT is that you want to run more processes than you have CPUs for...which for the majority of the time was ONE CPU.
Pre-emptive multitasking systems are more responsive than non given it allows for efficient interrupt handling as well as the scheduling of tasks you descrive. If the kernel can't pre-empt the active task by doing a context switch then it can run off to I/O or whatever until the active task yeild the processor by either blocking or yielding the CPU via a system call (cooperative multitasking like the old OS9).
It was a major improvement in operating systems.
I do. you always seem to find something unimportant to add though, which doesn't change the argument.
You want to preemptively multitask with such slow processors?
This can be done by simply stopping the program while another is open. Use the phone while looking something up elsewhere? That can be done already.
I've had preemptive multitasking on far slower computers and even then I was quite happy with it.
Even if it's some sort of abomination like preemptive single tasking, anything to allow the device to force control back from an errant process without some witch doctor salute or some other form of user reset is good.
I've had preemptive multitasking on far slower computers and even then I was quite happy with it.
I'm not saying it didn't work. Just that it wasn't the panacea that some claimed it was. It really did take two cpu's, or cores, to make a big difference. even if one didn't know much about programming, it should be obvious.
If you have two programs that use little cpu time, and the OS isn't hogging the rest, then preemptive will certainly help a fair amount. But, take two programs that want as many cycles as they can get, and they both bog down.
It's one thing to download, or print in the background, and another to run two programs that are trying to render large files at the same time.
I've tried this a number of times, and there were always performance problems, and sometimes more serious ones as well.
There is often a wide gap between theory and practice, something which low level coders don't always seem to understand.
Even if it's some sort of abomination like preemptive single tasking, anything to allow the device to force control back from an errant process without some witch doctor salute or some other form of user reset is good.
Yes. That's a different issue, and not one that most people think of when they look at the advantages of multitasking, so I didn't address it. But, it requires proper memory protection, which not all systems do equally.
I'm not saying it didn't work. Just that it wasn't the panacea that some claimed it was. It really did take two cpu's, or cores, to make a big difference. even if one didn't know much about programming, it should be obvious.
If you have two programs that use little cpu time, and the OS isn't hogging the rest, then preemptive will certainly help a fair amount. But, take two programs that want as many cycles as they can get, and they both bog down.
It's one thing to download, or print in the background, and another to run two programs that are trying to render large files at the same time.
That's nice, but this is about a handheld communicator, which most programs shouldn't be trying to hogging all the CPU. What weenie is going to try to run two rendering programs on a freaking phone?
That's nice, but this is about a handheld communicator, which most programs shouldn't be trying to hogging all the CPU. What weenie is going to try to run two rendering programs on a freaking phone?
Jeff, it's all relative. Coverflow alone seems to use all of the cpu cycles. How many times are people here saying that this is a computer, not just a phone? I'm pretty sure that there will be programs that will hog the little processing power the device has, and there will be those who will think they are powerusers, and try to run several at one time. They will then complain that the iPhone, or iTouch, is too slow. you know that's true.
I'm just saying not to expect too much.
I'm not saying it didn't work. Just that it wasn't the panacea that some claimed it was. It really did take two cpu's, or cores, to make a big difference. even if one didn't know much about programming, it should be obvious.
No, it didn't require 2 cpus. You're completely wrong on this. This is going to be one of those time where you simply cant admit you're wrong on something so easily verifiable isn't it?
If you have two programs that use little cpu time, and the OS isn't hogging the rest, then preemptive will certainly help a fair amount. But, take two programs that want as many cycles as they can get, and they both bog down.
There are many little programs running all the time. And you're forgetting that user input is one of those things that require CPU cycles to process. If you can't preempt the running program to handle user input you end up with a non-responsive system.
Two programs that want as many CPU cycles as they can get will get some fraction of the available cycles based on the scheduling algorithm. They don't bog down the rest of the system.
It's one thing to download, or print in the background, and another to run two programs that are trying to render large files at the same time.
So what? You are saying that folks haven't found multi-tasking useful until multi-core or multi-CPU systems and that is patently false.
Jeff, it's all relative. Coverflow alone seems to use all of the cpu cycles.
This is exactly why preemptive multitasking (with fair scheduling) is useful. You can safely let Coverflow gobble as much CPU cycles as it wants safely knowing that it can't starve anyone else.
The reason the iPhone does not feel slow and does not bog down because of one or more applications that wants to hog the CPU is because of preemptive multitasking with some kind of priority based scheduling.
The multitasking in Palm, as you say is locked away, so is of no importance to what we are talking about.
No, what it means is that you are completely unaware of how the product you used worked but feel free to state unequivocably that one of the key things that made it work is unimportant.
The rest is easy, as can be seen by what's been already done. If it's difficult for you, I can't explain that.
Because you have no understanding of the issue.
Everything is zip to you if it disproves what you are saying in any way.
No, just the things that have zip to do with what we are talking about. That mainframes sometimes have better I/O than some desktops has nothing to do with the issue of multitasking.
The point is that the iPhone CPU is
not slow and an iPhone has about as much compute power as machines that vastly benefited from pre-emptive multitasking...which you actually had in your Treo.
Slow is relative. Compared to other phones it's not slow, but that doesn't mean much.
In comparison to historical multitasking systems the iPhone blazes.
I hope they aren't. But, Intel has the bucks. If they want to apply them to this, and they have some good ideas, which it seems they do have, they could eat ARM's lunch, long term.
They didn't fare so well last round. Just having bucks does not guarantee success. Witness Sony and Microsoft in some of their less successful endeavors.
No, it didn't require 2 cpus. You're completely wrong on this. This is going to be one of those time where you simply cant admit you're wrong on something so easily verifiable isn't it?
As usual, you misstate what I've said. I very clearly didn't say that it didn't work with one cpu. I said that it didn't work as well with one cpu as people were saying it would.
[quote]
There are many little programs running all the time. And you're forgetting that user input is one of those things that require CPU cycles to process. If you can't preempt the running program to handle user input you end up with a non-responsive system.[quote]
Yes, little programs. read what I said again. I'm not talking about little programs on a big machine.
Two programs that want as many CPU cycles as they can get will get some fraction of the available cycles based on the scheduling algorithm. They don't bog down the rest of the system.
Sorry, but you're wrong about that. Why don't you try it?
So what? You are saying that folks haven't found multi-tasking useful until multi-core or multi-CPU systems and that is patently false.
Other than for those "little programs" you mentioned, it wasn't terribly useful until two cpu's.
You've obviously never done much (or any) work with video, or professional photography.
This is exactly why preemptive multitasking (with fair scheduling) is useful. You can safely let Coverflow gobble as much CPU cycles as it wants safely knowing that it can't starve anyone else.
The reason the iPhone does not feel slow and does not bog down because of one or more applications that wants to hog the CPU is because of preemptive multitasking with some kind of priority based scheduling.
The power of a device is directly related to the hardware. If a device is designed properly, then it will function properly.
Right now, there is little on the iPhone that takes too much from the system other than video and coverflow. Of course, you can't do both at once.
When more powerful programs do come out, we will see what happens.
No, what it means is that you are completely unaware of how the product you used worked but feel free to state unequivocably that one of the key things that made it work is unimportant.
Because you have no understanding of the issue.
No, just the things that have zip to do with what we are talking about. That mainframes sometimes have better I/O than some desktops has nothing to do with the issue of multitasking.
In comparison to historical multitasking systems the iPhone blazes.
They didn't fare so well last round. Just having bucks does not guarantee success. Witness Sony and Microsoft in some of their less successful endeavors.
Give it up Vinea. You just like to be a pain.
Give it up Vinea. You just like to be a pain.
LOL...and you just like to sound important.
Dude, when you stop making baldly incorrect statements and defend them to the death I'll be much less of a pain for you.
I see that you are once again trying to find wording where you can try to appear to be right but pre-emptive multitasking has been so useful that it is now in almost every modern operating system. I would say EVERY but I guess there might be some oddball OS out there that doesn't have it that I am unaware of.
Single-core, multi-core, single processor, multi-processor, embedded OS, desktop OS, whatever category. Useful in each and every one.
You have spent more effort in denying this than it would have taken to simply read up on it and moved on.
You know, its guys like you that make me dread getting old. So full of yourself that you have to be right about everything and unable to accept that you might have learned something wrong or your experience does not apply and you might need to learn something new because the world has changed.
LOL...and you just like to sound important.
Dude, when you stop making baldly incorrect statements and defend them to the death I'll be much less of a pain for you.
I see that you are once again trying to find wording where you can try to appear to be right but pre-emptive multitasking has been so useful that it is now in almost every modern operating system. I would say EVERY but I guess there might be some oddball OS out there that doesn't have it that I am unaware of.
Single-core, multi-core, single processor, multi-processor, embedded OS, desktop OS, whatever category. Useful in each and every one.
You have spent more effort in denying this than it would have taken to simply read up on it and moved on.
You know, its guys like you that make me dread getting old. So full of yourself that you have to be right about everything and unable to accept that you might have learned something wrong or your experience does not apply and you might need to learn something new because the world has changed.
It's not my statements that are a problem, it's your replies. you may understand coding, but you don't understand real world use.
Oh, and don't worry about getting old. When you insult someone as you do without the barrier of the internet, we will all mourn you.
When you insult someone as you do without the barrier of the internet, we will all mourn you.
Heh, for a moment back there I considered it worth a ban to tell you what I thought of you but decided you really aren't worth the effort...and trust me if I wanted to insult you it would be what I would say to your face.
In any case, this is just more of the same from you. You say something wrong, when corrected you say even more silly things and it escalates from there.
Heh, for a moment back there I considered it worth a ban to tell you what I thought of you but decided you really aren't worth the effort...and trust me if I wanted to insult you it would be what I would say to your face.
In any case, this is just more of the same from you. You say something wrong, when corrected you say even more silly things and it escalates from there.
I know you are good at insults you've done it before, spitting out four letter insults, and other trash.
I thought it might be different this time, but you seen to like to pass by outrageous comments to get to me. Fine, live in your world of fantasy.
I know you are good at insults you've done it before, spitting out four letter insults, and other trash.
Dude, while I can curse the only 4 letter insult I hand out is "dumb" and I try to use that only on statements, not the individual that makes that statement though I do slip once in a long while. But yes, for you I had been considering more "colorful" language which for me is kinda rare in an internet forum.
Perhaps if I get under your skin you can avail yourself to the ignore feature.
Dude, while I can curse the only 4 letter insult I hand out is "dumb" and I try to use that only on statements, not the individual that makes that statement though I do slip once in a long while. But yes, for you I had been considering more "colorful" language which for me is kinda rare in an internet forum.
Perhaps if I get under your skin you can avail yourself to the ignore feature.
You could do the same. I never start these arguments, you do.
If you don't like what I have to say, move on. You don't have to think you're saving the world, you're not.