Why WAS Torque3D documentation so poor?
by Dark Tengu · in Torque 3D Professional · 03/02/2010 (6:38 pm) · 442 replies
I would really like to get back into Torque, but I am finding the documentation to be so poor. For example, where is the explanation of callbacks? If I remember correctly, callbacks are HIGHLY important in Torque. Its great that there is an explanation of Torque syntax, but honestly synatax is VERY easy to figure out for anyone who has done even a little C/C++.
Perhaps I am just missing the quality documentation, any help would be appreciated. The only documentation regarding Torque3D I have found is at the following link:
http://docs.torquepowered.com/torque-3d/official/index.html
Moderator Edit - You can download the draft version of the T3D Script Manual by clicking here
Perhaps I am just missing the quality documentation, any help would be appreciated. The only documentation regarding Torque3D I have found is at the following link:
http://docs.torquepowered.com/torque-3d/official/index.html
Moderator Edit - You can download the draft version of the T3D Script Manual by clicking here
#42
03/04/2010 (3:59 pm)
I was flicking through the TV the other night and Empire Strikes Back was on. That line was the very first thing that came out of Yoda's mouth. Spooky.
#43
Providing only what long-experienced developers want seems a suicidal course, as it will not grow the user base which keeps the product line, and the company behind it, alive. In particular, when you have a very sharp competitor entering directly into your market, who seems to have dotted all the i's and crossed all the t's in precisely the area in which one's own product is historically and universally avowed to be weakest--the documentation, tutorials and freely-given examples are the make-or-break decision-maker.
Mining the forums, common patterns of requests emerge--requests with a large amount of commonality and occurrence should be addressed with tutorials and examples. These are the questions answered over and over and over again, and they explicitly lay out out what large swathes of the user base wants to know.
Examples about how to hook up to a database? Is this something a significant chunk of your potential userbase appears to have an interest in? You bet your ever lovin' compiler. Make it so.
Examples about how vehicles work? This seems to come up continually--write up a how-to and advertise its availability--in the docs, not some sub-forum of a forum.
Examples of how to hook the camera up for different purposes? Oh that's actually available now in T3D (and in the docs--thanks, Michael!)--well, except for that right-mouselook camera thing all the kids are on about in them newfangled MMOs.
It is far easier for an advanced user who already has a different approach in mind to go ahead and implement it than it is for a beginner to figure out how to put a model in the game--much less figure out why a DTS is used for that and a DIF for this and so forth. And it is ridiculous that new users all have to struggle with the same solved sets over and over again, just because that's the way its always been. People have to learn somewhere, somehow, making it easier for them tends to leave a favorable impression of your company and product. And it only takes a generation of enthusiasts trained on one technology to kill another.
The complaints about documentation are not new ones. I spent more than a few hours thinking very hard over whether I should re-up to T3D after wasting literally weeks due to what turned out to be bugs in TGEA; and spent as many hours researching support for the decision in developer, hobbyist and gamer forums. In those researches, I found there is one complaint made as soon as mention of "Torque" arises in any form--and its always, always, always about the documentation and how difficult it is to learn to use the engine.
GG provides one thing which its competitor does not--source*. That's it. It is my personal estimation that T3D's out-of-the-box rendering is also much the superior--but that doesn't matter at all to most purchasers, or even myself, after a certain degree of ongoing frustration--its a degree of fineness lost in more important considerations, like getting something done in a reasonable amount of time. An experience with a platform vendor actually makes source a determining factor in my case, but the same can not be said in most cases versus a steep learning curve, I would think.
The vastly improved editor and can't-seem-to-slow-it-down rendering pipeline in T3D are huge steps in making it easier to love this engine, but showing--not telling--what can be done with these tools, by example, in examples customers are outright asking for would be to my mind the necessary next step.
-----------------------------------------------
*T3D Binary excepted, obviously.
03/04/2010 (4:37 pm)
GG is perfectly welcome to determine what they will "provide," which is eminently sensible as they know best what their resources actually allow and the internal culture they must fight uphill against to see something done--but dictating to customers (and more importantly, potential customers) what they need or "should" want rather had me stunned for a moment.Providing only what long-experienced developers want seems a suicidal course, as it will not grow the user base which keeps the product line, and the company behind it, alive. In particular, when you have a very sharp competitor entering directly into your market, who seems to have dotted all the i's and crossed all the t's in precisely the area in which one's own product is historically and universally avowed to be weakest--the documentation, tutorials and freely-given examples are the make-or-break decision-maker.
Mining the forums, common patterns of requests emerge--requests with a large amount of commonality and occurrence should be addressed with tutorials and examples. These are the questions answered over and over and over again, and they explicitly lay out out what large swathes of the user base wants to know.
Examples about how to hook up to a database? Is this something a significant chunk of your potential userbase appears to have an interest in? You bet your ever lovin' compiler. Make it so.
Examples about how vehicles work? This seems to come up continually--write up a how-to and advertise its availability--in the docs, not some sub-forum of a forum.
Examples of how to hook the camera up for different purposes? Oh that's actually available now in T3D (and in the docs--thanks, Michael!)--well, except for that right-mouselook camera thing all the kids are on about in them newfangled MMOs.
It is far easier for an advanced user who already has a different approach in mind to go ahead and implement it than it is for a beginner to figure out how to put a model in the game--much less figure out why a DTS is used for that and a DIF for this and so forth. And it is ridiculous that new users all have to struggle with the same solved sets over and over again, just because that's the way its always been. People have to learn somewhere, somehow, making it easier for them tends to leave a favorable impression of your company and product. And it only takes a generation of enthusiasts trained on one technology to kill another.
The complaints about documentation are not new ones. I spent more than a few hours thinking very hard over whether I should re-up to T3D after wasting literally weeks due to what turned out to be bugs in TGEA; and spent as many hours researching support for the decision in developer, hobbyist and gamer forums. In those researches, I found there is one complaint made as soon as mention of "Torque" arises in any form--and its always, always, always about the documentation and how difficult it is to learn to use the engine.
GG provides one thing which its competitor does not--source*. That's it. It is my personal estimation that T3D's out-of-the-box rendering is also much the superior--but that doesn't matter at all to most purchasers, or even myself, after a certain degree of ongoing frustration--its a degree of fineness lost in more important considerations, like getting something done in a reasonable amount of time. An experience with a platform vendor actually makes source a determining factor in my case, but the same can not be said in most cases versus a steep learning curve, I would think.
The vastly improved editor and can't-seem-to-slow-it-down rendering pipeline in T3D are huge steps in making it easier to love this engine, but showing--not telling--what can be done with these tools, by example, in examples customers are outright asking for would be to my mind the necessary next step.
-----------------------------------------------
*T3D Binary excepted, obviously.
#44
Personally, I very much fall in the group with Joshua and Henry and I value Torque's very approachable codebase a lot and certainly very much more than any documentation anyone could ever come up with, but given how the whole market has changed in recent years and continues to change, "you have the code" is admittedly not a good answer anymore.
03/04/2010 (4:51 pm)
Very good points made here all around.Personally, I very much fall in the group with Joshua and Henry and I value Torque's very approachable codebase a lot and certainly very much more than any documentation anyone could ever come up with, but given how the whole market has changed in recent years and continues to change, "you have the code" is admittedly not a good answer anymore.
#45
@Phillip: I think you're missing the point of what Frank was stating. GG has been at this for a long time, and for that long length of time, they've consistently failed to provide documentation to allow new purchasers to get up and running. Sure, there were a couple of $50-$100 text books out there (I own a couple), but even they don't get into modding the source code or anything other than "Here's how to make a neat pickup game!"
In the end, many people picking up these engines are not veteran programmers. I certainly am not. My area of expertise lies in level design, however I find myself forced more and more into a corner as far as what kind of games I'm allowed to make because I have no guidance in how to change the source code, no guidance in how to create a lot of the effects that really make today's games eye-catching, and no reference documents comprehensively listing all the commands and code that would make scripting and source code changing much, much less painful.
Heck, I'd even spring for a book if GG included all the information the masses are literally begging for.
03/04/2010 (5:02 pm)
@netwyrm *applause*@Phillip: I think you're missing the point of what Frank was stating. GG has been at this for a long time, and for that long length of time, they've consistently failed to provide documentation to allow new purchasers to get up and running. Sure, there were a couple of $50-$100 text books out there (I own a couple), but even they don't get into modding the source code or anything other than "Here's how to make a neat pickup game!"
In the end, many people picking up these engines are not veteran programmers. I certainly am not. My area of expertise lies in level design, however I find myself forced more and more into a corner as far as what kind of games I'm allowed to make because I have no guidance in how to change the source code, no guidance in how to create a lot of the effects that really make today's games eye-catching, and no reference documents comprehensively listing all the commands and code that would make scripting and source code changing much, much less painful.
Heck, I'd even spring for a book if GG included all the information the masses are literally begging for.
#46
Was it ever a good answer?
03/04/2010 (5:02 pm)
Quote:"you have the code" is admittedly not a good answer anymore.
Was it ever a good answer?
#47
Yes, for getting a full source-code license to a professional engine for $100, I think it was definitely a most appropriate answer.
03/04/2010 (5:08 pm)
Yes, for getting a full source-code license to a professional engine for $100, I think it was definitely a most appropriate answer.
#48
That being said, it does sound like some work to document in process might be going on and that should help out a lot. There is some very simple stuff that is grossly missing that should require a bit of time, but greatly help those who are starting out. Time will tell as some more focus is duefully needed.
03/04/2010 (5:12 pm)
@Black: Depends on the question :-). If the question is how does this console function work than the answer to that question should be no. In particular with them going to a binary only solution offering at the low end it really isn't an answer anymore for a lot of questions.That being said, it does sound like some work to document in process might be going on and that should help out a lot. There is some very simple stuff that is grossly missing that should require a bit of time, but greatly help those who are starting out. Time will tell as some more focus is duefully needed.
#49
03/04/2010 (5:17 pm)
I'm just scratching my head at why 1.0 was even released without complete documentation. The only thing I can figure is they were losing ground to Unity quickly and needed something to slow Unity down with.
#50
I hope they still mean everything stated there. If so they are failing bad. It appears that Michael Perry is the documentation guy. I have to wonder if he has been pulled away to do other side projects. There is absolutely no way that this is his full time job at GG. We would have much more documentation if that was the case. Perhaps they need to lighten his load a little bit so he can focus on documentation.
03/04/2010 (5:22 pm)
Looking back at Development blog #26, they state their goal for documentation:Quote:I agree 100%. The goal for Torque 3D's documentation has evolved over time. Initially, we simply wanted Torque 3D to ship with complete documentation with a consistent format that covers all the new features. As the weeks rolled by, the goal eventually became something much bolder: Provide the highest quality documentation with the most amount of content, superior to any of our previous tech. By the time the final page is written, it should surpass what is available for ANY engine you can find.
I hope they still mean everything stated there. If so they are failing bad. It appears that Michael Perry is the documentation guy. I have to wonder if he has been pulled away to do other side projects. There is absolutely no way that this is his full time job at GG. We would have much more documentation if that was the case. Perhaps they need to lighten his load a little bit so he can focus on documentation.
#51
My sentiment exactly.
I don't think it was pressure from competition or anything like that. If Unity didn't exist GG's "flagship product" still wouldn't have an adequate api reference. No, it wasn't pressure, just customer neglect.
03/04/2010 (7:20 pm)
Quote:
I'm just scratching my head at why 1.0 was even released without complete documentation.
My sentiment exactly.
Quote:
The only thing I can figure is they were losing ground to Unity quickly and needed something to slow Unity down with.
I don't think it was pressure from competition or anything like that. If Unity didn't exist GG's "flagship product" still wouldn't have an adequate api reference. No, it wasn't pressure, just customer neglect.
#52
Its easy for everyone here to sit back and say what tutorials or reference material GG should provide. Its also easy to say that everyone else wants that information too. The reality is that there are infinitely many resources that could be published about T3D and we all have a different list of "must haves". GG just need to choose the most appropriate - their resources aren't as infinite as our ideas.
03/04/2010 (7:54 pm)
Quote:I think you're missing the point of what Frank was stating.I addressed his concern regarding database support directly. My replies were in response to that particular line of question. I am certainly not saying that API documentation isn't needed, I just don't think that narrowly scoped tutorials or guides do the greater community any good.
Quote:GG has been at this for a long time, and for that long length of time, they've consistently failed to provide documentation to allow new purchasers to get up and running.That is exactly what the current documentation is doing. In fact, that's why this thread was started. There needs to be more information on the API and less absolute beginner information.
Quote:In the end, many people picking up these engines are not veteran programmers. I certainly am not. My area of expertise lies in level design...I'm not an advocate of any particular competing product, but there have been so many discussion threads on the forum outlining the pros and cons of Torque vs other engines. The reality is that you need to pick a product that suits your skills and goals. In your case, you've chosen Torque and you're not a strong programmer. You must be wanting to learn, I assume? This is the perfect example of why you need an API reference.
Its easy for everyone here to sit back and say what tutorials or reference material GG should provide. Its also easy to say that everyone else wants that information too. The reality is that there are infinitely many resources that could be published about T3D and we all have a different list of "must haves". GG just need to choose the most appropriate - their resources aren't as infinite as our ideas.
#53
Firstly, let me say that I'm not really a big fan of lofty language about what I'm going to do. Actions speak louder than words.
Michael, Matt, and I met two weeks ago to discuss what Michael needs in order to deliver on a better documentation experience. We covered several solutions and improvements. In my opinion, we can do much better for our customers.
Will we always be able to meet your expectations for documentation. Probably not. I've been writing code for about 15 years and I can count awesome documentation experiences on one hand (and that's being generous). But I’m not hearing requests for an awesome experience, just one that meets what you expect ( on a side note, I’ve always preferred well named functions and breakpoints over docs…but that’s just me...and that does require code )
Let me take a second to stand up for Michael. He has been doing a lot with very little. Prior Torque strategies focused on acquisition rather than retention. We are changing that. I’ve been consuming a lot of Michael’s time over the past two months. His time in our strategy meetings is a great investment in the future of our tech and our community. He is is a great representative for the community which is the biggest single reason he's on the team.
We are working internally on better customer experiences and retention. Again, actions speak louder than words so I’m going to bite my tongue for now. I’ll re-post when I have something to show.
Secondly, I'd like to thank Netwrym. I will listen to anyone's criticism. But the additional time Netwrym spent to point out detailed solutions/problems helps us get one step closer to meeting your needs ( as he points, a lot of these topics are already spread out across the site ). While I personally get a kick out of reading conspiracies and speculation, I think that the more constructive your feedback, the faster we can get to making this the place you want to spend your time. Thanks Netwrym!
@Black – too early in our plans to have an ETA. How about not soon enough for me? GDC is a black whole as far as time. You wouldn’t believe how times consuming these events are for us. I’d personally rather spend the money we put in our booth towards docs…but if I did that, can you imagine the fallout. No booth? I’m picturing pick axes and torches.
@Tom – can you have your instructor e-mail me at support@torquepowered.com? Just ask for me in the subject. I’d give out my e-mail address but right now I’m handling around 400 e-mails a day as is. It’s ridiculous, I’m spending around 14 hours a day right now and 6 of them have my nose glued to my inbox. Tom, I was a game instructor for several years. Maybe there’s an opportunity for us to win back your class?
03/04/2010 (8:43 pm)
Hey EveryoneFirstly, let me say that I'm not really a big fan of lofty language about what I'm going to do. Actions speak louder than words.
Michael, Matt, and I met two weeks ago to discuss what Michael needs in order to deliver on a better documentation experience. We covered several solutions and improvements. In my opinion, we can do much better for our customers.
Will we always be able to meet your expectations for documentation. Probably not. I've been writing code for about 15 years and I can count awesome documentation experiences on one hand (and that's being generous). But I’m not hearing requests for an awesome experience, just one that meets what you expect ( on a side note, I’ve always preferred well named functions and breakpoints over docs…but that’s just me...and that does require code )
Let me take a second to stand up for Michael. He has been doing a lot with very little. Prior Torque strategies focused on acquisition rather than retention. We are changing that. I’ve been consuming a lot of Michael’s time over the past two months. His time in our strategy meetings is a great investment in the future of our tech and our community. He is is a great representative for the community which is the biggest single reason he's on the team.
We are working internally on better customer experiences and retention. Again, actions speak louder than words so I’m going to bite my tongue for now. I’ll re-post when I have something to show.
Secondly, I'd like to thank Netwrym. I will listen to anyone's criticism. But the additional time Netwrym spent to point out detailed solutions/problems helps us get one step closer to meeting your needs ( as he points, a lot of these topics are already spread out across the site ). While I personally get a kick out of reading conspiracies and speculation, I think that the more constructive your feedback, the faster we can get to making this the place you want to spend your time. Thanks Netwrym!
@Black – too early in our plans to have an ETA. How about not soon enough for me? GDC is a black whole as far as time. You wouldn’t believe how times consuming these events are for us. I’d personally rather spend the money we put in our booth towards docs…but if I did that, can you imagine the fallout. No booth? I’m picturing pick axes and torches.
@Tom – can you have your instructor e-mail me at support@torquepowered.com? Just ask for me in the subject. I’d give out my e-mail address but right now I’m handling around 400 e-mails a day as is. It’s ridiculous, I’m spending around 14 hours a day right now and 6 of them have my nose glued to my inbox. Tom, I was a game instructor for several years. Maybe there’s an opportunity for us to win back your class?
#54
03/04/2010 (8:48 pm)
Thanks for the post Eric. Look forward to the improvements.
#55
looking forward for more strong documentation.
specially for binary users that dont know whats inside the engine code and get them jump started quick.
03/04/2010 (9:21 pm)
I am glad this is getting somewhere,looking forward for more strong documentation.
specially for binary users that dont know whats inside the engine code and get them jump started quick.
#56
The reality is that it is useless for me, i gave up to try by myself, because i'm used to learn with examples, documentation and community, and i thought that torque3d would be suitable for me, and i was wrong, there is no complete documentation, there is no simple examples for beginners and the community works only for veterans in my point of view, i learned with it but just a little, maybe the threads are too advanced for me.
The initial videos of torque 3d, made me think that this kind of content would be a common practice, and that kind of information would be easy and accessible for beginners. But since i bought it, the only useful thing that i could learn from the documentation was the RTS camera tutorial.
Basically i gave up with the right mouse button click problem, that someone wrote in a post in this thread, basically my idea would need this to work. Of course that would be other problems, but if i couldn't solve this simple one imagine others more advanced.
I tried also to cancel my purchase after i understood that i did a very bad choice, even knowing that source code product can't be refunded, i needed to try because for me was like throw $1000 away, now it's just something that i have and i won't use, i'm trying other free engines that i'm finding more beginner friendly at the moment.
Someone said that shouldn't be done examples of torque 3d features, but i can't agree with it, i mean, a programmer that do a engine, would be able to write simple examples that take 15 min or less that would help a lot beginners, even to develop the engine i think you need examples to test the features, why not deliver examples to the users? when you get the torque3d, you only have a very few examples, and far from inspiring, , what could be so difficult to make very simple and good examples?
I read in the forums a lot of promises to fix these issues, but nothing was done yet, i still have hope, that's why i'm here reading and writing in these forums, at least i feel good to see that are ppl that can do their projects, and is nice too read their development blogs, dreaming that i could do by myself one day.
03/05/2010 (4:14 am)
I'm adding my thoughts also like everyone. I was looking for game engines to develop some simple ideas that i had, i'm not a advanced programmer, but when i was looking for it, was in the same time that torque 3d was going to be released, a lot of impressive videos, and texts saying that it would be easy and awesome. I know that some will think "you need to study what you will buy before you buy" i did, and what i learned, is that the private community was the best thing that garagegame had, but i could only join this community with a license, so i trusted everything that i had learned about torque 3d, and bought it, the documentation was incomplete but it had some good information for the start, so i just thought that it would be completed later.The reality is that it is useless for me, i gave up to try by myself, because i'm used to learn with examples, documentation and community, and i thought that torque3d would be suitable for me, and i was wrong, there is no complete documentation, there is no simple examples for beginners and the community works only for veterans in my point of view, i learned with it but just a little, maybe the threads are too advanced for me.
The initial videos of torque 3d, made me think that this kind of content would be a common practice, and that kind of information would be easy and accessible for beginners. But since i bought it, the only useful thing that i could learn from the documentation was the RTS camera tutorial.
Basically i gave up with the right mouse button click problem, that someone wrote in a post in this thread, basically my idea would need this to work. Of course that would be other problems, but if i couldn't solve this simple one imagine others more advanced.
I tried also to cancel my purchase after i understood that i did a very bad choice, even knowing that source code product can't be refunded, i needed to try because for me was like throw $1000 away, now it's just something that i have and i won't use, i'm trying other free engines that i'm finding more beginner friendly at the moment.
Someone said that shouldn't be done examples of torque 3d features, but i can't agree with it, i mean, a programmer that do a engine, would be able to write simple examples that take 15 min or less that would help a lot beginners, even to develop the engine i think you need examples to test the features, why not deliver examples to the users? when you get the torque3d, you only have a very few examples, and far from inspiring, , what could be so difficult to make very simple and good examples?
I read in the forums a lot of promises to fix these issues, but nothing was done yet, i still have hope, that's why i'm here reading and writing in these forums, at least i feel good to see that are ppl that can do their projects, and is nice too read their development blogs, dreaming that i could do by myself one day.
#57
@Michael. Don't take my comments to heart. You're doing a great job given the resources available. After all, we're just talking about games here. In the grand scheme of things, it matters not.
If I didn't have hope or want you all to succeed, I would not have upgraded to the T3D binary.
Looking forward to seeing what you guys have in store.
-Frank
03/05/2010 (6:22 am)
Eric, thanks for a very well thought out response. @Michael. Don't take my comments to heart. You're doing a great job given the resources available. After all, we're just talking about games here. In the grand scheme of things, it matters not.
If I didn't have hope or want you all to succeed, I would not have upgraded to the T3D binary.
Looking forward to seeing what you guys have in store.
-Frank
#58
All engine features are made for customers, but they cannot achieve all engine power just because they do not know how and they are or course upset.
And i could add one more, we need public issue list, something like here(code.google.com/p/bullet/issues/list) or bug tracking system.
People are posting the same questions,bugs and propositions on the forum where posts are visible only 1-2 days, year by year the same bugs or propositions are messing forums.
And even more release schedule(road map), maybe approximate.
Like John did www.torquepowered.com/community/blogs/view/18955
We are blind, not knowing what could we expect in the future and when. It has to be public or for Pro owner at least.
Thanks for attention.
03/05/2010 (7:22 am)
Thank you Eric, retention is the key word here.All engine features are made for customers, but they cannot achieve all engine power just because they do not know how and they are or course upset.
And i could add one more, we need public issue list, something like here(code.google.com/p/bullet/issues/list) or bug tracking system.
People are posting the same questions,bugs and propositions on the forum where posts are visible only 1-2 days, year by year the same bugs or propositions are messing forums.
And even more release schedule(road map), maybe approximate.
Like John did www.torquepowered.com/community/blogs/view/18955
We are blind, not knowing what could we expect in the future and when. It has to be public or for Pro owner at least.
Thanks for attention.
#59
As you guys know, we are building a usability and quality assurance lab in conjunction with Full Sail University. The space is allocated, we are filling it with machines, and the contract is being finalized. Normally I wouldn't make public comments about a contract that isn't finalized, but I'm so certain this happening that it's almost a formality.
We hired a full time employee who will be on-site at the University. One of his jobs is to architect a bug tracking system that will injest bugs from the QA lab as well as bugs from the community. If my devs have to scour the forums I promise you many will get missed.
03/05/2010 (8:07 am)
@Zealander, again, our actions are stronger than words, but here are some of the actions we've taken so far to deliver on what you addressing.As you guys know, we are building a usability and quality assurance lab in conjunction with Full Sail University. The space is allocated, we are filling it with machines, and the contract is being finalized. Normally I wouldn't make public comments about a contract that isn't finalized, but I'm so certain this happening that it's almost a formality.
We hired a full time employee who will be on-site at the University. One of his jobs is to architect a bug tracking system that will injest bugs from the QA lab as well as bugs from the community. If my devs have to scour the forums I promise you many will get missed.
#60
One more thought about documentation, why do not use wiki with edit ability? just a thought.
I wrote 1 small guide and many others did it many times, it could be in categorized wiki along with official documentaion. Like in my previous 3d engine www.ogre3d.org/wiki/index.php/Main_Page.
Yeah, there is rosources but deep categories tree.
03/05/2010 (8:42 am)
Thank you Eric , sounds very promising! One more thought about documentation, why do not use wiki with edit ability? just a thought.
I wrote 1 small guide and many others did it many times, it could be in categorized wiki along with official documentaion. Like in my previous 3d engine www.ogre3d.org/wiki/index.php/Main_Page.
Yeah, there is rosources but deep categories tree.
Torque 3D Owner Dark Tengu
I believe they are trying to do it. However, to quote Yoda (this is so embarassing, but true):