Be Developers' Conference Approaching Be Dev Tools Andrew Kimpton |
Mr. Kimpton: Welcome once again to our third session. At this point in the afternoon it's three o'clock and I'm tired, even if it's because I was here late last night. And I'm sure the rest of you are.
We're having a little change in style and format. As Talinn mentioned in the beginning of the afternoon, this is a unique opportunity for developers. The one thing that all developers have in common, regardless of what they're trying to do, is the tools they have to go about it. For all developers the quality of those tools is critical. We pride ourselves at Be with trying to have the best tools available and Metrowerks has done us very well in that regard.
What I have this afternoon is I've invited a number of people. Brian Stern to my right here, who is one of the technical support engineers at Metrowerks. I'll let him do his own introductions further, he can tell you more about his life history. And Maarten Hekklelman, who's busy trying to fiddle his demo, has two great qualities for this afternoon's sessions. One is he's one of those people like you, you know, he's a third-party developer and he's not even being paid by us to be here this afternoon I don't think.
Secondly, as one of the things that he likes to develop is tools for the developers and so in addition to being the author of Sum-It, which is a spreadsheet, he's also the author of PE, Programmer's Editor and a new tool which he will talk about a little more this afternoon.
Now, these two folks here, I'm pleased to say, do not by any means represent the only source of developers' tools out there. There are plenty of others and I get to carry the baton and the torch for other tools that are available and try and sort of wave their flag for them as well.
So we'll mention those as we go on during the afternoon. Primarily this session is one of the few short demos and an opportunity for you out there to ask some questions about, you know, how do I do this or what is there or how do I deal with this. Resources was one thing that came up in an earlier session already and we sort of deferred the question to now and when you see Maarten's demo that will become clearer.
So let us continue on and introduce Brian here, who can give you a demonstration of some of the stuff that's up with the BeIDE from Metrowerks and their products.
Thank you, Brian.
Mr. Stern: Thank you, Andrew. I'm the author of BeIDE, I've been working on it for the last couple of years. I just want to give you a brief view of some of the new features for those of you who maybe haven't seen our tools before, give you a brief introduction to them.
One of the new features in this upcoming release is stationary files. Stationary files is a method that we use for generating new projects. Simply choose a new project, menu item, we're going to generate a x86 BeApplication; there are a number of other types of stationary available. These are all completely configurable. You can add your own stationary to the stationary folder. You can open the existing stationary, change optimizations, add a new file, add libraries or so forth. And so I'm going to generate a new project which we'll just call Hello New.proj.
This, so it happened, was the existing project in the stationary folder was copied, a new folder was created. All these libraries that you need, which you probably don't know exactly what they do nor do you care, they're already in there. There's a source file already in here. This is your -- your basic C style Hello World. I'm going to modify this a little bit and make it into a Be Hello World. So all good BApplications have to have a BApplication object.
The way that I'm going to make Hello World appear on the screen is in an alert, so we're going to need a BAlert object.
I have to tell you that I can't remember the prototype for the BAlert constructor, so going to have to look at the appropriate header file. One of the features in the IDE is to help you navigate to various files that are in your project as the open selection window. I happen to know that the alert.H header is called -- well, the BAlert header is called alert.h and we're just going to open it up there.
So we're going to... that's BAlert, that's the title. The text that appears in the alert is next and the text for the first button is the third -- third parameter, so we'll just make that be an okay.
You'll notice that one of the features of the editor is Syntax styling, language key words and so forth are in one particular style, comments in another, strings in another and that's configurable. You can choose the particular font, size, color for each of those different types of texts.
So in order to make our alert appear on screen we need to call GoForIt and that should actually do it for us, so let's bring up the date that compiled, see if we can run here. The demo Gods are not happy.
Mr. Kimpton: Seems like we should have done our sacrificial slaughter at this point.
Mr. Stern: It worked at lunch time.
Mr. Kimpton: Actually, you know what it is, it's Alex, demo God Alex, sitting at the back of the room.
Mr. Osadzinski: We've entered the suck zone.
Mr. Kimpton: We've entered the suck zone, did you say?
Mr. Stern Actually, this is so I can show you another one of the features. The ability to write click on an item from the project, we're going to remove this item and that should fix this problem. So we compiled and there we go. Not too exciting, but got to start somewhere.
I'm going to show you a Java application or Java applet. This particular Java applet was written by one of our engineers at Metrowerks, -- it's just a Mahjong application, applet. So doing Mahjong and development you can -- I don't know if you noticed in the new projects dialogue there, there's Java stationery as well. In order to compile Java it's essentially the same as doing C or C++ development.
Another one of the features of our editor is this function pop-up. It allows you to -- it shows a list of all the functions in that particular source file and you can easily move to them, so that's selected at Dim. Let's undo up here.
Going to launch this Java applet. It automatically launches the applet viewer for you. And this is the Mahjong applet that basically the way you play is by -- where are we? Okay. Here we go. You click identical tiles and they get removed for you. I won't bore you with playing through it for very long, but you get the idea.
So the JDK with this release is JDK115. If you've used our previous 102 and 104, I think you'll find this one to be much more bug-free and should have some performance improvements. For the last three or four months, since the release of 114, we've spent most of our time fixing bugs and making performance improvements using the Java conformancy kit to find problems and so forth.
Some people think the best part of the IDE is the About box.
Mr. Kimpton: How many more engineer hours were spent developing the About box?
Mr. Stern This About box was written by a current Be engineer, Jon Watte, I think in his spare time. I'm the engineer for the IDE, but he required that we have a good About box.
Mr. Kimpton: For those of you that know a little history about Be. Be About box is an interesting source of information and they're a fun place to explore, so Easter eggs are a good thing. There are some good ones around.
Mr. Stern That's about all I have to say for my demo.
Mr. Kimpton: Thank you, Brian. Do we have any particular questions? (Inaudible question.)
Mr. Kimpton: The question was what happens if you wish to do an application using standard sort of C++ ANSI standard features, such as iostreams or so forth.
One of the things that the BeOS provides is, A, a based Posix interface mechanism, so that you can write posix-compliant code. B, a terminal window and because we have the posix compliance that means we can build such utilities as the GNU utilities, in particular bash, so there's the shell. And thirdly, from Metrowerks the standard C++ libraries and such, such as iostreams.
So to answer your question, absolutely, you can do all of those things quite easily.
One feature with the IDE, which I maybe should reiterate from this morning, may not have been quite clear this morning, is that all versions of BeOS over the last few years, and this continues now, ship with a version of the IDE just as you saw it now.
It does have one, and only one, limiting feature and that is that the resultant application executable size must be less than 64KB, but otherwise the IDE is fully featured as what you would get from paying the $300 or now $129. There's no other differences.
(Inaudible question.)
Mr. Kimpton: The question was what about doing and developing device drivers, can you do that from within the IDE or do you need special tools.
You can certainly write device drivers in the IDE. Debugging a device driver is a little more tricky. The supplied debugger with the IDE is primarily targeted for doing application level debugging. However, the kernel environment provides for a number of tools, most notably a kernel mechanism of printing which can be directed to a serial port, for example, for doing some of the really rather hairy low-level development.
(Inaudible question.)
Mr. Kimpton: Let me repeat the question, then I'll pass the buck to Brian. The question was some notable differences between -- in using previous version PR2 of BeOS between using standard C functions, such as scanf() and printf() and using the iostreams standard C++ functions provided in iostreams, and in particular that the performance declined, I think would be the polite term, hey, you know, I work for Alex, so I can put a marketing spin on this -- declined between those two versions. So I'm going to go over here now and let Brian answer it.
Mr. Stern What I can tell you is that with R3 there's a new version of MSL and also new compilers. The compilers have more -- are more C++ compliant than the previous -- the current PR2 compiler, so you're going to find a lot fewer. There will be much less necessity for work-arounds due to nonfull C++ compliance.
It's still not all the way there, there are still some template features that aren't all the way there, but they should be there within the next six to eight months, something like that.
And MSL performance issues are something that is important to us and as I said, it should be better. It may not be all better. And we're certainly happy to hear from you if you say that, you know, send -- you can send us E-mail to our support or to these technical support.
Mr. Kimpton: Be Dev Support.
Mr. Stern You know, tell us about that stuff, because if it's, you know, it may be slow because there's a bug, it may be slow because we haven't looked at it.
Mr. Kimpton: Question?
(Inaudible question.)
Mr. Kimpton: Let me just repeat. The comment was that a bug had been reported, but what's Brian's response?
Mr. Stern It will be better this time.
Mr. Kimpton: Standing in the back.
(Inaudible question.)
Mr. Kimpton: Sorry, can you just repeat because I didn't quite catch you.
(Inaudible question.)
Mr. Kimpton: The question was regarding, you know, what future are we going to have to the IDE, what sort of enhancements.
I think really there are a number of directions that it could be taken and extricate the abilities and capacity that could be added to the product and stuff. It's difficult for me at the moment to really say exactly where we plan to do it.
Alex has stood exactly to your right shoulder. I could wimp out at this point and let him give the senior marketing weenie answer, thereby carrying almost completely no clout, as mine does.
Mr. Osadzinski: (Inaudible.)
Mr. Kimpton: For the benefit of our stenographers at the front, who are sitting there who, didn't hear that, let me repeat Alex's statement, and for those of you down in the front who may not have heard it fully either.
One of the real benefits that we get from the arrangement that was announced this morning is a single point of contact for all of you and as developers that means if you have a question, whether it's regarding why doesn't API X work or why doesn't IDE feature Y work, it's one E-mail address or one point that you can direct your question to us, the folks at Be.
In the meantime, as Metrowerks continues their own development of the IDE on other platforms, we will continue to receive regular input from them, snapshots of their code, if you will, and then we have the prospect of adding extra features from them into the IDE as when we can and as time allows.
And, you know, it may well be that direct request to us leaders to do certain things of our own as well, as time goes on. Okay.
I'm sorry?
A Speaker: What is the status with Java threads in this release, are they BNative threads or --
Mr. Stern Yeah, Java threads have always been BNative threads.
Mr. Kimpton: Probably one of the areas that is most contentious for some programmers is that of an editor and so forth. And we're quite fortunate that on the Be platform we have a number of choices and there is the very fine editor supply with the IDE and there are a number of others, too.
And for the real purists amongst you, we mentioned just previously the posix compliance and stuff and GNU utilities and yes, folks, that means if there is nothing finer in life -- see the man waving in the back -- if there is nothing finer in life to you than using VI --
(Clapping.)
Mr. Kimpton: -- we can do that. That pain and torture is available to you here, too. There are much more choices available, too.
So Maarten Hekkelman here is the author of one of those choices, PE, the aptly named Programmer's Editor, so does that mean he doesn't do spelling? I guess he doesn't do spelling. And he can talk to us on that a little now about PE and a new tool for handling resources. So let me pass the baton over to Maarten and continue on.
Mr. Hekkelman: Yeah. Well, Be mentions, Programmer's Editor also has an About box to start with, but okay. Never mind.
It's mainly -- PE came to life because I was not happy with the abilities of the IDE and mainly using make files to create programs and doesn't combine very well with the IDE, in my opinion.
I used to program for MPW and BBEdit with BBEdit and MPW on MacOS and there I am going to use the concept of using an editor that also can execute commands, and it's one of the main features of PE, but let's first start with first just some basic stuff like editing.
As you see here, this is just file. It can do all kinds of things. There's some interesting things, like you can change fonts and so on, but that's not very interesting.
Let's start with preferences. Here you see there are lots of preferences in PE. You can change colors, there are lots of colors, key words, strings, comments, constants. There are user define sets that you can change.
There's a connection to the IDE, so you can launch the IDE, if you want to, from within PE. It's kind of limited right now, but it will be extended in the future I hope by Be.
There are editor commands you can -- you should have a look at this perhaps, there is so much to tell, but okay. Let's do create a program with it.
PE has a concept of group file, it's something like a project, but it only stores files for regular access, so if I drop these in here I can plus a folder and have access to all the source files with BBounce information, sample information. Here's the source file, has a function pop-up as well.
You can also open include files. You just saw Brian was showing the coding of BAlert. Well, suppose you don't even know where BAlert is hiding in the header files, you have to look for it. So let's try to find BAlert inside the be_include file. You have multi-file search, you can search all the include files, do a search and finds the class BAlert.
Well, what's a more recent menu. As I said, there's a very impressive find dialogue. You can do multi-file search, you can use regular expressions. You can also search, for example, this folder, BBounce. Look for BPoint and get me all the occurrences, fetch. Works like this. That's how it gets from there.
And then, okay, so we have the source code and we have a make file over here. Make file, is if you don't know -- well, they're pretty hard to create, but they are extremely powerful. You have much more capabilities if you use them instead of in IDE.
So I have this source code, BBounce. I can now go to my worksheet. It's just a regular file that has some friction. I can execute commands by typing enter on the number on the key path or select this one. Then I click this button and now it starts to compile. You see it appear here? Okay. So BBounce, very nice.
Suppose we introduce an error inside BBounce; for example, I say somewhere here -- oops, this is a read only file. Oops, bla bla. Save it. Execute this one.
Now come with an error. I can double-click this error, brings me to this. It's the same functionality as in the IDE, this one is extendable. I mean you cannot use other compilers as well to do these tricks.
PE is not limited to C++ only. It can also do Syntax styling on other kinds of filings. For example, Be right now is delivered with eight plug-ins, doing HTML, Java, Oberon, Perl, Python, pop-ups for all those languages. If you want to add a new language, it's very easy to write those plug-ins. For more color extensions like these extensions are compatible with the IDEs interface, so you can use BeIDE extensions as well as PE's one. This one comes from BeIDE startup, extensions, you can turn it off.
This one is my favorite. It's a extremely simple encryption. It has unlimited and new, all the hype you can think of.
One other thing, people were mentioning Emacs here. If you are used to Emacs key bindings you can use PE as well. As you can see, there's set_mark option somewhere in here. Mark. Yeah, this one. Control space. You perhaps know control space. So control space, there is a mark here. As you see, it's a blue line, put it here. Mark here. And now I can put the region 2 control mark.
As you see, it gets it and it's put inside the copy buffer, the playboard, the same as you would use the regular copy and paste, so I can use it right now.
So Dominic, a user of Emacs I believe, has told me that Be feels like Emacs and I take that as a compliment. Well, what else is there? Split wing notes, things like that.
Okay. Any questions?
A Speaker: Do you have a resource editor?
Mr. Kimpton: I know he's really keen to get this out. The question was is there a resource editor, so off you go.
Mr. Hekkelman: Well, as you probably saw in the language preference, there is this language Rez. I wrote resource compiler based on Rez. Rez is an Apple invention. It's a language for describing data streams and I created the compiler and it was almost very successful, and you can use it to create resources.
Let's take all the interface elements like this dialogue inside the PE, are created using resources. I can give you an example of a resource file. I'll have to look for it. PE comes with an HTML editor -- how do you call it, palette, this one. And this palette can create -- shoot. This working? For example, want to make this bold. As you can see, it places the bold text around it.
So what you see here are two things. First of all, there's a type definition. Type. This defines the resources, structure of the resource and then here's the resource itself and this defines the compliments of a resource, so here's a structure, here's the compliment. So suppose we want to add another text here for example. Let's put a simple command in here. I type some code in here.
Mr. Kimpton: By the way, bla bla is a very common Dutch word. Mr. Hekkelman: I select these lines and I use execute and it has now created a new palette inside the PE settings directory. As you see here, it's three shell commands. PE directory where the goodies are. Compile this palette into a new palette and then move the result into the settings directory. I have not quit PE, so close Windows. This one, yeah. Start it again. And it should now how say bla, as you see.
This resource compiler is bundled with PE and if you want to use it, yeah, you should know how to resource rez language real-time. Probably you will have to get some old manual off a Mac programming environment, because I do not provide it yet. I'm thinking about how to, well, evolve this problem, change the problem to a more suitable compiler to BeOS. If you have any ideas you can contact me, we might come up with a new language that's more suited to BeOS.
Mr. Kimpton: Any burning questions from that? Stunned silence.
And resource is an area where we at Be know that we have work to do, the best way to put it. And we are striving forward in future releases. I don't think Hiroshi's in the room, who is the engineer. No? No, well, we don't need to disturb him.
One of our engineers is busy looking over the next number of releases at how we should really approach resources, both from the concept of a language and programming language for developers, editors and compilers and also for the prospect of, you know, what does an application need.
And in particular, one of the features of the Be Operating System is the mechanisms of handling international character sets and international type styles and stuff, and that's another area where resources really come to play the most part, because they allow you to localize what you translate in your applications, text streams and messages into other languages very easily and although we do not right now support too much internationalization, we do have all of the right framework and flavors of support to do a very good job in the future.
And I have to say I'm very proud actually to work at a company where we have about 15 nationalities and we can cover most of the world from just our own testing just within our own office, so that's a fairly good thing for us to be able to do. So you will see some future work being done in that particular area.
Okay. That sort of concludes demos from our two guests up here. There are, however, a wealth of other tools and it sort of falls to me to explicitly mention them.
One of the other tools and editors, continuing in the stream of editing, to be mentioned is a tool called Eddie, Eddie the editor. That was actually written and it's maintained by an engineer at Be and it's a very popular tool. He would be up here to tell you about it himself, but he's next door giving the other session, so he sort of has a legitimate reason for squirreling out of this.
There are also a number of framework type tools and Atilla Mezei, who I believe that I haven't seen today, Atilla Mezei is one of the Adamation engineers, a partner engineer who has developed a number of products, one of which you saw this morning in the form of audio elements and has a framework tool called application elements.
And there's another tool called app_sketcher, which are also available, which are GUI-based application framework generation tools. They allow you to create an on-screen image of your positions of dialogue components and so forth and save that into a stream, whereby it can be recreated on the fly as your application runs. I think the, you know, the future bodes well for development tools generally on the platform.
Now, we have a number of very good and talented developers who are producing some very good and very well-performing tools, and I think you've seen a good few examples of those.
Both of these gentlemen are around for the rest of the week. Metrowerks has a small booth next door and I believe Maarten, you've been taking some time on the Be Europe booth to also talk about some of these things. So if you have further questions or stuff, you can certainly catch either of them or myself, of course, during the rest of the sessions.
Thank you very much for your time this afternoon and I hope you can all be excited to get out there and play with these folks' hard work.
Thank you very much.