Table of Contents
The BeOS Programmer's Reference Now Available!
The BeOS Programmer's Reference is now available from IDD. It is a set of quick reference "cheatsheets" that makes BeOS programming easier. The BeOS Programmer's Reference is a quick reference of the API of eight of the most commonly used BeOS Kits. Both novice and experienced programmers can write code faster and easier using the Reference. The BeOS Programmer's Reference is currently only available directly from IDD at http://www.pobox.com/~idd/be/index.html.
Icon Shareware: List Your BeOS Applications Icon Shareware just opened February 19th at http://www.iconshareware.com/ and they already have a category dedicated to BeOS titles. By visiting http://www.iconshareware.com/icon/software/default.asp you can assign yourself a log-in name and password. You will then be able to submit your programs and have them appear online straight away. To preview your software contribution go to http://www.iconshareware.com/ and find the category that you have placed your program in. What do you get when you submit your app to Icon Shareware? They provide a detail page for each application you submit. This page includes your description of your product and system requirements, as well as a links page where the product can be found. All for free! NetPositive users beware: this site uses Java.
BE ENGINEERING INSIGHTS: NetPositive Q&A By Scott Barta - sbarta@be.com
Whenever I make an appearance on one of the Be user mailing lists, I usually get peppered with questions from the curious about NetPositive. Many of these questions have common themes, so I thought I'd answer a number of them here. Q. When is JavaScript going to be implemented? A. JavaScript support is my main project right now (aside from getting R4.1 out the door, of course). You can get a very early developer release of JavaScript- capable NetPositive right now at http://www.be.com/support/updates/r4_netpositive_3.html. The mainline browser in R4.1 will not be JavaScript-enabled, though a 3.0 developmental version will likely ship in the experimental folder on the CD. For those who downloaded 3.0d1 and were less than impressed, a much- improved 3.0d2 is now available at the URL above. JavaScript will be shaping up over the next few months, and we'll continue to release new versions as it makes sense to do so. Q. How about Java? A. First, please understand that JavaScript has nothing at all to do with Java, despite the similarity of names. For more details, please see the ReadMe that installs with the developer release at the URL above. For Java to work in the browser, there needs to be a Java VM and AWT implementation for the BeOS; none currently exist. We've looked into bringing Java into the fold, and at various times there has been rudimentary Java support for the BeOS, but never anything that was very useful. Unfortunately, getting a decent Java implementation on the BeOS requires a lot of engineering resources that we don't have, so there isn't anything on the drawing board yet. A number of third parties are working on Java for the BeOS, but I don't know the exact status of any of those projects. It's my general understanding that getting the VM working isn't the hard part; the AWT and class libraries are extremely tough, especially if you're independent from Sun. Q. Will NetPositive allow plug-ins? A. NetPositive has a decreased reliance on plug-ins compared to other browsers, because a lot of the technologies that other browsers implement this way can be done with more BeOS-specific paradigms. For example, R4.1 will add PNG image support, courtesy of the Translation Kit and the new PNG add-on; and in the future, as streaming media nodes are written, the addition of Media Kit support to NetPositive will bring in those data types "for free." With that said, though, there are still a lot of situations which call for plug-ins, and I'm hoping to add plug-in support in cooperation with the folks working on Opera and BeZilla. One of my goals is to expand plug-in support beyond the simple model that Netscape and Internet Explorer use, and to allow new kinds of plug-ins to interact with the browser in new and mysterious ways. Q. What's up with the haiku error messages? A. The haiku error messages are responsible for a surprising amount of user feedback, which has been overwhelmingly (but not entirely) positive. I think it has to do with the fact that despite their fancy GUIs, computers have lately become somewhat impersonal, with their interfaces endlessly focus-grouped and graphic-designer-polished, and users are grasping at anything that adds a human touch, if a somewhat quirky one. Like many human touches, though, the haiku tend to anger some, particularly those who have seen NetPositive spectacularly fail to deal with yet another site. For that reason, and also for the non-native speakers of English, there will be a preference in R4.1 to turn the haiku off. There's a secret preference to do this in R4; see the BeOS Tip Server at http://www.birdhouse.org/beos/tips/archive/tip235.html for details. Be warned, though -- if you're expecting to get more informative error messages with the haiku turned off, you're going to be disappointed, because the messages that the haiku replace are (and always were) rather bland. There are very few kinds of errors that NetPositive displays in an error dialog, and for all of those, there is little information that NetPositive could possibly give that would be of any help. In virtually all cases, the haiku that you see replace one of two error messages, the first being "The web server www.blah.com could not be found" and the second, "The web server www.blah.com is temporarily down. Please try again later." The distinction between these two errors is important, because it will tell you if you've mistyped the hostname (unless you've mistyped the name of a popular site like www.yahoo.com, whereupon you're likely to come across one of the Net's several "adult" sites), or if the server is dead. Actually, NetPositive chooses from different sets of haiku for each type of error, and if you interpret the poem, you'll figure out what happened. For nearly every other type of error condition, the error message you see is actually an error page that is sent back from the server which NetPositive has no control over and displays as-is regardless of the haiku setting. So, the addition of haiku does not significantly mask information that other browsers would give you; if you like them, leave them turned on. Q. Can you add the XYZ feature to help page designers author better pages? A. I think some of the flap over haiku comes from people who would like to use NetPositive to help them author web sites, and would like to get more detailed error information when something goes wrong. They think that NetPositive is ignoring error information it could be giving and is deciding to be cute instead. The error information that page designers want would take the form of detailed, verbose error reporting from the HTTP level (which would be very helpful in diagnosing a variety of redirection and cookie problems), as well as some sort of "strict" HTML parsing mode that would reject illegal HTML with an error message. Unfortunately, this sort of error information usually isn't available in great detail from any browser, and in most cases isn't appropriate or interesting for the general browser user. While site designers are very interested in knowing what went wrong in the delicate interaction of CGIs, redirection, caching, proxies, cookies, frames, HTML, and JavaScript that made their site not work, most users don't want to be bothered with the gory details. Since it would require so much work to implement well and would only benefit a small fraction of users, it isn't something that makes sense to do in NetPositive in the near future. It's unfortunate, though, because this is an important if small market that isn't being served well by any tools that I'm aware of. There is one small diagnostic tool you can use, though; if
you run NetPositive from the command line and give it the
Q. How can I tell a NetPositive window to open a URL? A.
Q. What is the NetPositive Replicant format? A. The best way to figure it out is to create a
The other fields in the Q. Can I launch my own application when the user clicks a
A. This capability will be added for R4.1. It will be done through a set of MIME types that your application may register itself as a handler of to receive notification when the user clicks on a specific type of URL. NetPositive will look for handlers for these MIME types for all kinds of URLs that it doesn't insist on handling internally; these include, telnet, news, NNTP, ftp, and more. To help prevent user confusion, NetPositive will always
handle http, file, javascript, and netpositive URLs
internally (when they are clicked in NetPositive, that is)
and won't defer to external handlers. In addition, if you're
writing your own application that needs to deal with URLs
(such as an e-mail program or word processor), you can use
this mechanism to launch the appropriate external handler
for a URL. See the Q. Will you implement a "WWW Kit" for developers to use in their apps? A. This is a frequent and very reasonable request from
developers. It would be very handy if NetPositive exported
its various functions into a public Kit API so developers
could do things like instantiate (or subclass) a The browser components need to be worked into a stable public API for developers to be able to do these sorts of things better. While this is a long-term goal for NetPositive, there is an awful lot of heavy lifting in the architecture that needs to happen for this to work well, or at all. This is more than a convenient excuse: NetPositive does
indeed have an
DEVELOPERS' WORKSHOP: ParameterWebs and Nodes and Controls, Oh My! By Christopher Tate - ctate@be.com "Developers' Workshop" is a weekly feature that provides
answers to our developers' questions, or topic requests.
To submit a question, visit
[http://www.be.com/developers/suggestion_box.html].
I'm sure you've all noticed a certain emphasis on the Media
Kit in Developer Workshop columns over the last few months.
So far we've talked a lot about nodes, but not much about
how to control their behavior from the application level.
Many commonplace nodes that media applications will deal
with on a regular basis have various parameters that can be
adjusted at run time. This week I'll show you how to present
a user interface for dynamically controlling a node. But...before you run off to try the techniques I'll
demonstrate here, I must warn you that like so many of our
new Media Kit tools, today's code will only work under
Release 4.1, not under Release 4. Feel free to follow along
at home, though, and as soon as you get your hands on
Release 4.1 you can see the glorious results in living
color! Right -- the code. You can find the ftp://ftp.be.com/pub/samples/media_kit/ParameterSample.zip This little application displays a pair of windows. One is a
duplicate of the Audio preferences panel's Mixer tab, and
the other contains a single slider control for adjusting the
master gain of the system mixer. All the controls are
"live"; adjusting the sliders while sounds are playing
adjusts the volume in real time. And the secret to all this
live instrumentation is the magic of Any Media Kit node that has an adjustable configuration can
express that configuration in terms of The The Media Kit also supports standardized presentations of
media-related controls. This ensures that all media-related
instrumentation the user sees will have a consistent look
and feel. The Kit uses an object called a Oh -- our node? That's true, we need to pick a node to
control, preferably one that does something noticeable. The
The easiest way to present a UI for a node's parameter web
is to ask a This is straightforward: We look up the global BMediaRoster
object, ask it for a reference to the global system mixer's
node, then get a copy of the node's BParameterWeb. That's it! We ask for the preferred theme, then request a
BView from the But what if you don't want to instrument the entire
The This searches the Note the dynamic_cast. In general, you won't know the
derived type of the Once we've found the right BParameter, we need a control
that is appropriate for manipulating it: That gives us the control, and ensures that its
value-changed messages have a known "what" code for our
message handler to recognize. Note that the control is of
type Now, before we're done constructing the view, a little math: The That's it for setting up the window; the rest of the magic
happens in the window's Next, we use the scaling factors that we calculated earlier
to transform the slider's values to the Finally, we're ready to set the parameter's new value. Like
so many other things in the Media Kit, setting a
BParameter's value takes a performance time at which to
apply the change. We want the change to be immediate, so we
look up the current time according to the node's time
source, and set the parameter: Voilą! An active, effective slider controlling the master
system gain without benefit of the Audio preferences panel! Well, okay, it's not the world's most practical application
(although a pop-up Replicant to tweak the master volume
would be pretty handy), but of course it's just a convenient
controllable node to illustrate the principles. Other nodes
that media applications will find themselves presenting
interfaces for with may include video compression, audio
devices including multichannel cards, video capture, and so
forth. Now as soon as you get Release 4.1 you'll be all set
to build the UI of everyone's dreams! There's more that could be done with these implementations,
too. Neither one of them watches the
One would hope to answer this question in the affirmative,
but before I elaborate, some follow-up to last week's column,
"A Crack In The Wall," along with our thanks. Our offer of free copies of the BeOS to OEMs willing to load
our OS "at the factory," on the hard disk of PCs they sell,
got a tremendous response. We appreciate the interest in our
product and we intend to do our best to honor the hospitality
extended to us. Watch this space or, more generally, www.be.com,
for more details. For a number of contractual reasons, this
offer applies only in the US and Canada, not to other countries
in the Americas or in Asia. For Europe, please contact our VP
Europe, Jean Calmon, jcalmon@beeurope.com, for country-by-
country details. As we collect data from the flow of responses, an interesting
but not unexpected picture emerges. The OEMs expressing
interest are the ones who cannot realistically be "fined"
by Microsoft -- that is, lose their Windows rebate. If you
pay the maximum OEM price for Windows, or close to it, you
won't be afraid to load Linux or the BeOS on your customers'
hard drives, especially if you don't have to account to Wall
Street for your actions. If, on the other hand, your exposure is measured in millions
of dollars per quarter, and you are the CEO of a publicly
traded company, you'll load Windows and nothing but Windows
on the PCs you sell. More precisely, you might load Linux as
the OS engine on hardware other than PC servers. In any event,
this represents only a preliminary look at the returns --
it's too early to draw definite conclusions. Now, let's turn to the customer in the title of this column.
We hear that the Windows monopoly is good for customers -- it's
a standard, there's no confusion, users can rely on a trusted
foundation for their work, and so on. But how can this be if
there are so many obstacles placed in the way of a customer's
even seeing that (s)he has some (limited) choices? I'll take one example of what I mean by choices. One overseas
OEM announced with great fanfare that it would offer some
configurations in its PC line with a dual-boot arrangement:
Windows 98 for mainstream applications and the BeOS for its
natural media uses. Great -- exactly what we wanted -- the
specialized media OS peacefully coexisting with the mainstream
platform. Well, not exactly. If you take the machine out of the box and
boot it, the BeOS is nowhere to be seen -- the computer boots
only Windows 98. If you read the documentation carefully,
you'll find out how to "unhide" the BeOS. Then, through a
complicated sequence, you'll finally get to the dual-boot
situation. Should the OEM be criticized for this state of
affairs? Again, not exactly. It appears that the fear of
losing Windows rebates intervened to prevent the customer
from being offered a genuine dual-boot system. In fact, as we
verified for ourselves, the steps the customer must perform
are so complicated that it's much easier just to do the simple
partition and BeOS installation possible with our retail
product, complete with a BeOS Launcher icon on the Windows
desktop. Wouldn't one think that Microsoft behaves, in effect, as if
the PC belonged to it, rather than to the OEM or to the
customer? It's is hard to see how the customer and, more
generally, the industry, benefit if one company decides what's
good for all, and what the customer should see or not see.
1997 Be Newsletters | 1995 & 1996 Be Newsletters Copyright ©1999 Be, Inc. Be is a registered trademark, and BeOS, BeBox, BeWare, GeekPort, the Be logo and the BeOS logo are trademarks of Be, Inc. All other trademarks mentioned are the property of their respective owners. |