WWDC2001 Session 708

Transcript

Kind: captions Language: en and your host for this afternoon session is Godfrey de Georgie please welcome Godfrey thank you very much it's a pleasure to see so many people here today you are the survivors there's only a couple more sessions after this there are feedback forums which we would like you to attend and without any further ado as tenacious as you are I'd like to introduce Mike Rosetti mr. tenacious himself okay thanks Jonathan all right well welcome there was there was this Microsoft engineer and this cocoa engineer and Godfrey on this train sorry I'm not going there we'll do this instead so welcome no you're not getting that joke I'll tell you later if you really want it they should put a up this side up on here okay why are you here today well we're gonna be slightly irreverent in this session maybe crack a couple of inside jokes you'll pick them up but I certainly hope that this session is going to be full of good information that will help you make a decision and how you're going to approach your development in getting your application onto Mac os10 and so that's the intent of the presentation today now these objectives that are on this slide haven't changed in years they haven't changed since 1985 really and so I don't think there's any need to go through each one of them I mean the languages have changed the operating systems have changed but the goal of any framework is to make it possible for you to get your application out and going and you know take advantage of the wonderful Mac OS technology and we think that the Apple C++ frameworks are are the key to success in this realm here's what we're going to discuss today many of you are familiar with Mac app one more poll question how many of you are familiar with Mac app very good and there's a number of you who'd like to be a little more familiar because the C++ term is that correct okay we're going to talk about the Apple class Suites which is a new offering or should I say an offspring of Mac app and you may remember that you know previously Mac app was this huge monolithic framework where if you it's like a camel you know the the nose got in the tent and all of a sudden you had this big beast well it's not that way anymore and anyone familiar with Mac App over the last few years knows that that's the case we want to talk about a few new Mac OS features and how you can take it advantage of those in a CS and Mac app and we want to talk about our progress in the C++ standard library adoption that we have and of course to iterate over the project builder code warrior development environments well we won't discuss this is not a tutorial on mac app so if you're hoping to learn everything there is to know about Mac app come next year when we'll have about six sessions this isn't going to be a tutorial on ACS we're not going to teach you all about C++ what we're going to do is hit the highlights of our C++ offerings that will leverage your investment in your current C++ code or what you'd like decide you'd like to do it you know we want to help you get that killer application out there now you might have seen a slide earlier and this is one of the advantages of having a late afternoon Friday slide you can go rip off the other sessions and well there have been many frameworks introduced since 1985 when Mac app came out and and before Mac app there were a few other things like class kal and some small talk stuff and but Mac was really the first commercially-available framework and some other frameworks like to roll out their pedigree like that like there's some royal heritage associated with it but with Mac app and ACS we think we've taken the next step so so 7 of 9 in this slide represents Mac app release 15 and then r2d2 represents ACS well how does this all fit together essentially we want you to take your investment in your product your key points you know your key offering we want you to be able to take that mix it in with a little bit of ACS and/or Mac App toss in perhaps a few third-party ingredients mix it up with project builder and with it we'll and/or with code warrior and then bake it on Mac OS 10 and Mac OS 9 and 8 and 98.6 and voila your award-winning product I mean that's what we want you to be able to do so I gave a little bit of history on Mac out for those of you who aren't familiar with it it started an object pascal and over the years it's migrated to c++ and it's gotten away from the monolithic class hierarchy approach that it had and then and now we're introducing well we introduced a CS a couple of years ago but we were able to productize it now so that you can actually download it and use it in your applications without pulling it all back out I'm going to talk about a little bit that a little bit more in a second so let's make sure I don't miss a note here it's about Mac app and a lot more it's maturing offspring so I want to emphasize this ACS side of things because now I don't want you to have the wrong impression about Mac app being this huge monolithic framework for example Tom's going to talk a little bit about see carbon event which is a thin wrapper on the carbon events that you've been hearing about all week well this C++ wrapper class on carbon events provides you nice convenient accessors and mutators for that Carbon event and preflighting a little robustness you know and so instead of checking for no we'll throw an exception or something like that things that a C++ person really want to see all right this is this is way up until you know last year so a application written to Mac app might have looked like before that it would have just been mac out but we introduced the Apple class Suites that's what ACS is I think I forgot to mention that and so your application mixes in a little Mac App and a little bit of the Apple class Suites now you can still build your applications this way much to the relief of those who have a lot of legacy code in here but this is no longer the only way to do it you could just use ACS you could just pull in C string AC or which is a thin wrapper on the standard library string class provide and the reason we did that one was because we wanted to provide a little compatibility with res files or resource files and conversion to CS string you know things like that and you know I mentioned carbon carbon events and you can build a CS as a static library or as a dynamic library if you want and take advantage of everything that's in it or just pick and choose but what's in it so here's a list of the Suites the class suites that are available in the Apple class suites the these Suites comprise ACS and they're basically the conceptual children of Mac Apple over the years we've started to distill them out Mac app pioneered things like a dependencies and and adorned errs and and commands and things that are now written about in design patterns books so we allow you to take advantage of that without pulling in all of Mac app if you choose or you you can pull in the heavier back app classes of course everything we do in the C++ frameworks group is buzzword enabled if we didn't use standard C++ the cost to you would to you would be much higher you know you'd have two different types of iterators you'd have the mac app a CS type of iterators and you'd have the standard library iterators well why do that so we're we've been moving to using standard library iterator standard containers in fact we one of the suites we provide an ACS is a thing called FTL and it provides some compatibility with the standard library iterator classes I believe Tom might mention that so I won't steal his thumper his Thunder bumper you'll cut that want you so the other thing is that we try to make it easy to take advantage of those great Mac OS technologies one of those is Apple script use Apple script it's wonderful it makes products very valuable to people when they can look at Photoshop you know they they use script ability a long time well Mac app makes it possible to with very little effort scriptable recordable attachable now mostly you know what scriptable is I think all of you know what scriptable is most you know what recordable is but attachable I mean this is really cool stuff you can attach scripts to documents that you save that do things like if you try to open the document they ask for a password or just something like that it's way cool stuff and we make it easy for you to use this I believe in Apple script by the way the other key point I'd like to make is that Apple class Suites works with other frameworks such as power plant in fact we do have an example of that I believe in the release that we have called the counter example well with this brief introduction I'd like to introduce Tom Becker who will give an architectural overview of some of the work that we've been doing and with you know some emphasis on how it'll affect your code and some topics about some of the light classes tom is an invaluable member of the team and I certainly heartily welcome him up on stage with me thank you um here's a clicker by the way now what button do i press that went backwards okay all right so what I would like to do is go into a little bit of technical detail about some of the design issues and architectural features in what we've got pretty much focused on the current release the stuff that that is new that's available right now if you go to the developer tools website and so we're going to talk about the the Apple class suites and how they work by themselves talk about core foundation and what we're doing with that what we're doing a standard library and Carbon events okay so the basic idea of the Apple class Suites as mike has explained is that it's a lightweight utility class library it I wouldn't necessarily use the frame with the word framework to describe it because it doesn't really affect the way that you do your programming doesn't affect your overall flow program or overall design instead it's lots of very useful C C++ classes that you can take advantage of anywhere in your application that you feel the need to and it doesn't require Mac out so the emphasis on this has always been lightweight efficient easy to use and let's see now one of the new examples that we've got is the counter example and that's an example that DTS did that it's written in power plant and it shows how you can use ACS in conjunction with power plant and it shows really how easy it is and we just had to do a couple of little tweaks in ACS in order to make sure that it would go along with power plants way of doing things so that means for example if any code in ACS throws an exception it actually throws an L exception so that the standard power plant exception caching code will catch it and so the idea there is that ACS is it's very good at fitting in and that's the general philosophy that we want to continue with it and you know it's placing the emphasis again on being easy to use and yeah in order for it to be easy to use it has to work the way that the calling code expects it to work and there's there are a lot of classes in ACS and you saw the diagram that that Mike showed with all of the Suites there and so I can't really go into it all in detail in detail but if you're doing some work in power plant and you're going gee I wish there was a class that did this take a look in in ACS like we've got a really nice class for working with quick time atom containers we've got a really nice class for working with Carbon events and there are also some classes like templatized handle Locker that works better than the one that is built into power plant and you can just use it the footprint contribution on something like this is in like you know single digit number of K bytes kind of thing it's very very small effect you know you pay for only only for what you use so now there's a couple of different ways that you can use ACS so if you are using Mac app you're already using ACS so that's that's pretty easy right there like I said you can create power plant graphical applications and use ACS and those you can also if you have have your own framework or you a different framework that you're using ACS is something that could really help you out and it helps us out with Mac out it could help you out with your framework and you can also do things that don't have a graphical interface at all several of the ACS key samples that we've got are for command-line tools let's see so now moving forward want to let's see switch to demo I've got it and show a little bit of what we've got with the carbon event support that we have in Mac out and so this is the standard mac app skeleton sample application and this is if can you see right here where the CPU monitor is and now actually it took a little bit of work to put this demo together because we actually had to find something where Mac app wasn't already incredibly well behaved but we were able to find that there actually is an issue with Mouse tracking so if I click you know just hold the mouse down you can see that we're doing an awful lot of you know while not you know while still down Mouse tracking in here so I'm we're taxing the CPU pretty heavily and of course if you do this in your application what's going to happen is your customers are gonna ask if all of your programmers are rejects from the word six project and and so ego gosh what can I do about that and the answer is you can actually switch to using carbon events so here's the carbon event version of skeleton I'm going to click the mouse down as you can see I'm doing Mouse tracking and auto scrolling and stuff like that and the CPU usage is quite reasonable and the cool thing about this you go well what do I have to do in order to do this and the answer is going to come up in a future slide but it's pretty easy so there we go in fact it's one line of code let me let me actually go ahead and there there's the line of code effuse Carbon events equals true and now this is the very first release where we've got carbon event support in the framework and so by default we're shipping with it with it turned off for being a little bit conservative about it and it's a sort of thing where there may be some stuff in your application where you might need to write some code in order to fully utilize the Carbon events but what we're heading for is a future release where it's going to be turned on by default and you get all this stuff for free uh actually I'm I'm I'm being a little bit fast and loose here I actually changed two lines of code the other line I as I changed skeleton application to Carbon event so you can see which is which so let's get back to where I was okay now talking about some other really cool stuff that we've got in release 15 is we have a set of C++ interface it's work or find a ssin if you're using carbon or if you're using math or if you want to use Mac os10 core foundation is essential for doing that and what we're trying to do is we're trying to make programming with core foundation natural for C++ developers so that it's object-oriented the syntax is as simple and straightforward as it can be the error handling is done through exceptions the way that you would expect it and we've the way to think about it and actually I should give credit to Andrew dem Ken on the finder team who helped us out with some really great ideas for structure these these interfaces and and so he's he's one of the key people is responsible for making them as easy to use as they are the idea is that we're defining the interfaces that you would expect ought to have been there always and what you have to do in order to actually start using core foundation in an object-oriented way is include the header and then all of your core foundation type references that you already have now our object references if you just go and and you can start making method calls on them and it just works if you the one caveat one thing you have to kind of watch out for is if you use if you use C++ syntax for calling core foundation if there's an error it will throw an exception if you use the procedural syntax which then if there is an error it will return a code or it will not return anything so but it won't throw you know because you're just calling this procedural interface but I think that's also what you would expect to okay now another another cool thing that we have and this is really something that we're just getting started on it's it's going to be something that I think will be very useful but well we've got is we've got the basic idea we've got an implementation which is out there and we want to get it out there get people looking at and get people thinking about the issues of how well does it work for them and and giving us feedback on the design and on the implementation and what other stuff they would like to see and this is bridge classes between C++ standard containers and style programming and the core foundation containers and so the first class that we have is the foundation template library string class and it stores a string using a CF string so that the it's fully compatible with the Mac os10 a POS for unicode strings and for all of the new features that you really want to be able to connect to but you can construct that string using standard template library iterators you can construct them from standard library strings you can use standard library algorithms and and function templates on the FTL string and it'll compile and just work it's this is not intended I want to give a little bit of a caveat this is not intended to be the absolute best string for doing absolutely everything what's gonna you're gonna find that in some cases you really want to use a CF string in some case you know where a AC CF string which is our object-oriented CS string in some cases you're going to just want to use standard strings or you may have a library that that has come come in from somewhere else that is implemented using standard strings that's just fine just keep on doing that and what FTL string can do is it makes it incredibly easy to build this bridge or connection between the standard library way of doing things and the Mac os10 interface that you want that you want to connect to okay now what are we actually doing with the standard library itself our basic philosophy is the standard library is the wheel that is like the best wheel we think it's great we are moving to adopted we have done an awful lot already in adopting it there are still more that we need to do were taking a stepwise incremental approach towards doing it in part because we want to bring you along with us and make it so that it's easy for you to transition to the benefits of using the standard library and your stuff and and we also want to make sure that we're getting it right as we go along but the basic idea is that where Apple C++ frameworks we're making it easy to use C++ on the Mac that means we're also making it easy to use standard C++ types on the Mac and so for where we're at right now in this process if you use release 15 you will be using standard strings and we have put a lot of work into compatibility so that are the instead of using standard string directly where we've created the C string AC which is a very thin wrapper on standard string and it will automatically convert pascal strings to standard strings for you and we're making it very easy to convert back and forth in order to work with the toolbox because that's something that we know that you need to do but the so that's that's an area where we're already well along on the conversion process and let's see the next one as far as standard containers we're using them in several places now and it's something that you really ought to consider using the legacy containers that we've got C list a cc dynamic array AC the standard containers are going to replace those in pretty much everywhere in the framework I think we'll continue to make the skin the legacy containers available so that if you don't want to change your code you don't have to but as time goes on we really are going to be moving towards using the standard containers we think they're more efficient and they're easier to work with and now as far as streams are concerned there's some really nifty features in ACS streams and were we're looking at ways that we can make so that those features will be available with standard streams as well but for right now we're continuing to use ACS streams because things like counting streams and handle streams are so so incredibly useful and we're not going to get away from that right now okay for Carbon events check out the see carbon event AC class in ACS it makes it really easy and convenient and safer to access Carbon events whether you're using a Mac app or or not actually you know especially if you're not using Mac app if you're gonna look at one class this is this is the class I would recommend that you take a look at because it will make it an awful lot easier for you to to get up and running on Carbon events if you're using your own framework or if you're using a different framework other than Mac app if you are using Mac out then you might want to consider writing one more line of code okay so let's bring back Mike okay thank you Tom good stuff there let's talk for a minute about the challenge of getting your microphone in your back pocket should shave this morning okay I think you got the impression from Tom these aren't slides these aren't just slides this stuff actually works it's ready for you today go to the Mac App website download ACS take a look at it give us some feedback tell us if you like it tell us what you don't like about it we'll fix it but you can move your applications to Mac OS 10 today and take advantage of these features and there are people who are actually doing it there's some in the audience who already moved our 15 in fact there are some in the audience who moved our 15 after it was posted on Tuesday on their wonderful power books that they are carrying around with them using airport today incredible technology isn't it I'll mention a couple our themá-- medical technologies they've got a couple of applications virtual implant navigator virtual implant simulator they use Mac app in QuickTime scheduled for a summer release this is an application that helps dentists in the planning and drilling of dental implants I was hoping to have a demo Tom Myers and his crew Pete Hawk this is beauty Biosciences is that alright that's Pete that's Pete well I mentioned Tom anyway Beedie Beedie they're porting a suite of applications and drivers to OS 10 that use the flow cytometry this is like blood analysis another wonderful demo they're in various stages of development looking to launch six applications and three drivers by the end of the year follow up follow it on my three more text co has that's Anders isn't it Anders Pitta texaco is his client gene construction kit 2.5 it's a ok coming he says on here possibly a beta test version within a week and okay so what else I mentioned calc and Apple system profiler and calc is about my level of capability and then we'll let mark take the real complex Apple system profiler how we would have had a really great experience converting calc it just just was too short of an effort you know it literally took minutes of work the it essentially took about five minutes to set up the project builder project then I compiled and unfortunately I shot myself in the foot by changing do need disk space which will be familiar to old Mac appers to a constant C++ function and as you know when you change a function to cost it has this ripple effect but I'm happy to say I've shot you all on the foot too so the lesson for this is do not postpone your day of constant this the other thing I did was I used pre-built resources in the example so when you and when you take a look at calc you'll notice that all the resources being pre-built in there the reason for that was because when I did this project late last year the resource compiler wasn't quite ready it is ready now and so we'll put an update in that will actually build the resources for you using project builder it wasn't a big deal and so quick build and calc was ready to run as an honorable ma Co citizen let's see now let me bring mark Dawson up there we go let me bring mark Dawson up he's the author I guess I could say of Apple system profiler and Apple system profiler is a wonderful application for demonstrating Mac app and ACS capabilities I'll let mark talk to that but it is fully scriptable and recordable isn't that is it recordable these record okay well it's wonderfully scriptable yes and I'll let him address this mark okay [Applause] well for those of you don't know Apple system profiler creates a profile of your software and hardware on your drive on OS 9 it can find a lot of stuff and almost anak it actually using some routines find even more stuff on your drive using that gap it was extremely fast to make the port someone who were last year just before a few actually a few hours before the demo I was able dim Apple assistant profiler coming up on OS 10 using carbon and Mac app and the worldwide beta I was able to ship a product and then around December I was able to port in about one week with the hood I had to mock oh and Apple system profiler ships on OS 10 as a mock oh application and then the ten point oh release it on its a it was a very quick transition I say two weeks for the UI and going from the are 14 or 15 was only about a couple days and most of the transition time I took was to use a lot of the new ACS classes that helped a lot right now I have two versions of the Apple system profiler one for OS 10 and one for OS 9 the OS 9 one still uses code warrior four just for compatibility reasons I can ship the same exact source code with only a few pound of lines from ar-15 and mock oh and also OS 9 so it's just a matter of ones compiled one code warrior and once compiled in project builder so it's actually that easy and what really made that transition smoother that was using the ACS Suites as Mike said my application is very scriptable I think I believe in the carbon book there's an it is actually an example of scripting and for apple programs it's probably the next most scriptable program after the finder and what it really helped me was the ACS classes for scripting you just take basically you you shove a value in a variable then you pass it in in Mac app takes care of everything else I don't really know how to script an application to be honest if something breaks I have to go to Tom because it's so easy I actually haven't had to learn which me is good maybe he's bad but I haven't had to do it and Apple system profiler is fully scriptable again the transition was very very small most the problems I had is I was the test case the big app test case for most of Mac app as it was being brought up and as part of the mac app team if I found something I had to fix it so actually mac app has been tested on on Apple system profiler and I use quite a bit of Mac app and all my tabs and controls and everything and fortunately for some of you I don't use pop-ups so I know that's one of the things that's come up but it has been a very quick transition it's gone very smooth again I say the ACS classes have really really helped I'm a I'm as much of a developer as in a view I run into the all the same problems I I read the carbon lists all the time and ACS again and again it has helped me and then Mac app I really haven't had to do much work it's outside of the initial carbon transition so for me as a developer and not just reporting to Mike Rosetti over here Mac app has been a great win for me I just haven't had to do a lot of work it's lessons learns things you all will run into carbonizing will unearth bugs it did for me you'll be really lucky if it doesn't for you most of it a lot of times its memory books OS 10 is a great platform for catching memory bugs because if you write to zero instead of the system letting you do that in corrupting someone else it just crashes and if you've been to any of the gdb sessions and stuff they have wonderful tools for finding leaks something equivalent to spotlight you can do using gdb and it's really been very wonderful the other thing I read to a lot and it's my own programming fault is on OS 10 on project builder bool is four bytes not one bite and if you have structures that require that you know where things are in the structure you'll lose and I had and those are my bugs doesn't mat bugs I have to say they were just mine those are the kind of things I ran into you that had nothing to do with Mac out but again that the stuff I had to do with Mac app went very very smoothly the things I've done it changed a little with ASP I have a single source code I've included the Mac App sources and into ASP a lot of that was done just because so the the build systems in Apple could compile them they can't compile right now sources that are outside and in libraries and applications together so I've had to do that the other thing I did is just to save time I ripped out files that I didn't particularly use that saves time compiling the other thing I did actually this shows up in a post if you're developers you can look on the developer seed sites for ESP but I've created a static text control using the current ste static text map and Mac app uses a edit text view instead of the kerbin static text control and I've converted that to use that and it's helped a lot since the Attic text doesn't give you anti aliased text and that should be showing up in a future Mac app soon but again the Mac App has made my transition a lot and an ASP is a big big app well probably medium I'd say it's probably a hundred thousand lines of code so it's not it's not tiny it's not like I know some people have million lines of code but it's a it takes a while to compile so I'll leave it over here to mike Rossetti and it's like leave you with that Mac App has really made my life Marty bundle [Applause] some of you saw this slide a little bit earlier in the week and I'm not actually with a slide I'm not actually taking you know a license with what Edie said Edie Bose who's done incredible work on the the the carbon event model he was explaining of course during the session how back in the early days this is how you wrote your application and all the applications had to write their own event loop and their own dispatcher you know and their handlers for whatever events came through and then he explained that of course 16 years later when he after he graduated he graduated 16 years ago don't want to give the wrong impression how the new carbon event manager actually handles a lot of this for you but now those of you with some experience in my cab know that we were doing this 16 years ago in madcap because this is the responsibility of a good framework is to take those things that you do all the time that everybody has to do and provide the the implementation of them so we're we're delighted that the new karmatit mechanism provides us for us because now we can take it's a wonderful fit for the event dispatching that is taking yeah you know that's implemented in in Mac app and this just fits right in so you'll see that the dispatcher and Mac app will become extremely simple or maybe just disappear so we're very happy about this but we did it 16 years ago so one perspective is when you build your applications this is the model that you could build against and and there's nothing wrong with this I mean build a carbon if that's what you like to do but how does Mac happen and ACS fit into this model well it provides a nice higher level framework on top of the carbon api's and the and the carbon low level framework that they're providing in and carbon events and if I say so myself it's a perfect fit I mean do you want exceptions thrown you know when there's a problem in carbon yeah so I think you do do you want robustness and the interfaces so that if you pass a bad value you know that's caught yes I think you do so if you're using C++ this is the way to get it a CS or Mac App provide that for you so what does Mac app and a CS release 15 bring to the party besides adding 15 percent to 10 just kind of go over this quickly project Miller support with the core foundation classes the carbon events support standard strings I think tom said all of this have the slide get in here and ACS is available all by itself if you choose and in project Miller I wanted to hit just a couple of highlights here you can build the Apple class Suites as a static library or is a dynamic framework ACS dot framework we provide some ACS stationery so if you want to write hello world with ACS you can put that together very easily Mac App projects are provided as well debug and a non debug version right now we're only building them as static libraries ACS has incorporated into it now you might ask why we don't provide a framework target for project builder and the reason is because all you Mac cappers like to touch the code so we're gonna leave it that way for a while just to see but see how it works out but ACS framework is fine because I think very few developers have any need to actually touch the ACS code at this point in time and of course the example projects code warrior pro six support for all of the usual targets including 68k still alright and we're going to provide you know really fairly quickly here some code warrior pro 7 projects so that you can you don't have to do that for yourself now keep these things in mind budget your time you know to manage the changes that you're going to have to adopt as you move to carbon because you know there's changes in the api's and the tools project Miller and gdb and GCC etc GCC for example has pulled helped us identify a number of problems that were in the old framework that we never saw with the old compilers so running your code through this new compiler will expose probably some errors you'd be surprised at there will be a cost of course you know there's a little learning curve in that but I I think we believe that the benefits far outweigh the costs so be prepared for the learning curve and so I call this like the the the three curves of the development biorhythm and I think they're coming to a curve right now but once you get over that things are going to look a lot better important future directions so keep up the work on Carbon events provide a nice wrapper around the data browser something that's long been requested which is an MLT eview you know TM LTE view whatever the more work in the standard libraries talked about unicode strings plus the same work that has resulted in the Apple class sweets where we've kind of pushed down on Mac app and stuff of come out on the bottom and ACS this is going to continue I mean this is an evolving process so I can't promise what you're going to see there but I could say that perhaps you're going to see things like dependencies moving down there or maybe event handling will become behavior based you know I'm just spouting off the top of my head here and the thing I want to stress about all of this so you know the future directions and that is it whether you're an old Mac a purr or a new C++ programmer you never use the framework or you use some other framework I want to stress that you take a look at ACS Apple class Suites so that you get the benefit of our working with the people within Apple to make sure that those capabilities are in the framework that you want let us know what they are the the email will bring up email addresses there's a Mac app dev mailing list you can send mail directly to me but if we know what you want we'll respond we try to do that that is our ultimate goal we want to have fun we want to have a great framework but we also I think need to make sure that you get what you want when you get what you want that reminds me you know it's sort of a we hope you have a good experience you know the definition of experience is experiences what you get when you don't get what you want we don't want it to be that way we want you to get what you want and before Godfrey comes back up I just like to thank the developer community it's given us a wonderful response and feedback so far and it's helped guide our efforts to provide like ACS and to do things like make sure the carbon events work and that your applications are going to be speedy under Mac os10 and thank you for that feedback thank you for the support that you provide each other on the mailing list and the news group because this is critical for developing a consensus in the community and making sure that we do what you want so please keep that good work up and also I have this little key cat up here and some of you know what that means I'd like to thank one of our developers for his gift Nouriel ootah who's sitting back here and just wanted to tell you that if you want to get faster email response to your bug reports and questions gifts are great but yeah and and gives her great but wonderful Mac os10 applications are even greater so we encourage you to do that Godfrey thank you Mike so the whole point of the Apple C++ frameworks is to continue to support all the developer needs new Apple technologies and the industry standards going forward this is a fantastic set of technologies for people who are Carbon developers who want to move forward who have a large body of C++ code that they want to move from another platform and want to stay within the C++ environment information resources those of you have been through the other tool sessions I've seen most of these most of these addresses before our overall page for Mac OS 10 tools developer.apple.com dot slash tools and the C++ frameworks web pages at the developer Apple comm tools Mac app we get a lot of hits on these pages we've gotten I think over the course of the week we've had over 10,000 hits when I called in last so that's quite a bit of activity and we have a master master mailing list for all of our for all of our mailing lists that I mean a master web page for all of our mailing lists Mac app dev is one of them there's also the carbon dev cocoa dev project builder users all of these would be useful to you as resources we decided to give you a back road map through the show since this is Friday very nearly the last sessions of the day these are some of the sessions that hallmark our tools various various other you know things that you could use and when you get your DVDs because everybody at the show is receiving DVDs of these sessions you can review these if you if you've had to be at other sessions over the course of the week questions about C++ frameworks you can always contact me as the technology manager for development tools I'm very interested in your feedback ideas directions and Mike Rosetti for questions on the frameworks themselves is always extremely active about answering those questions you