Friday August 29, 2008
I touched a PC, and I liked it !
Filed under:
adwatch

I
was going to blog today in anticipation of the Microsoft Vista ad campaign starting
next Thursday featuring
Jerry
Seinfeld. I was prepared to note the irony of hiring an
eye
wateringly expensive shill, whose show remains a
icon of the 90s,
for Windows, a product that is in danger of remaining...an
eye
wateringly expensive icon of the 90s.
At least
Beverly Hills 90210 is
attempting a
comeback.
But no.
A
rumor
that HP is reinventing its corporate branding led me to notice its
campaign for its line of
Touchscreen
PCs. Not that ATMs, kiosks, cash registers,
phones (and soon car
dashboards ?) aren't already on top of this game. But the HP
Touchscreen PC is sleek, big, black, and, well, you may never go back.
More importantly, its
expensive.
So I think the
TV
ads get it about right for something innovative, targeted at
affluent people, or at least those who think they are.
But check out the
Learning
Videos. These are the product demos for Touchscreen PCs. If any of
you have worked on a product and had to show it to an uninitiated
crowd, you know that ads, marketing literature and 20 bullet point
slideware aside, the demo is the single most important proof point to
your audience of the value of your work. Its the elevator pitch, the
turning point, the denouement, the inflexion point all in one pivotal
moment. I remember feeling this most strongly having to demo a proof of
concept website for online banking way back in early 1996 (the zenith
of the Seinfeld era!) to a London bank's great and glorious. The demo
included an animated Java applet that showed a credit card gracefully
flipping over as the user logged in. Ot at least that's what it did 7
times out of 10. The other times it ungracefully
hung the browser. Nailbiting times.
(By the way, even the worst behaved applets will
no longer be
able hang the browser, as I
may have
mentioned before.)
Great examples, for me, of online product demos include the
iPhone product demos
(simple and clear, though I do think the black turtleneck's best work
as garment-symbolizing-cutting-edge is behind it now). Also Microsoft's
excellent
demo
videos for its Surface technology (except for the moment at the end
of the meal where the otherwise happy group of diners is able, using
Surface Technology on the very table from which they ate, to split the
bill down to the last penny (and in v2, beyond ?), based on exactly what each one ordered.
Rather than, in my opinion, the more civilized non-technological
approach of splitting the bill equally. Microsoft products
could finally, I suppose, silence the age old cries of
'But I only had the soup !').
But back to HP and the TouchScreen PC demos.

Genre-wise, here, we are close to
Home Shopping
Network territory. The presenters are perky and fluid. The
repartee, though inevitably forced at times, is continuous and
engaging. But they battle with a panoply of low production values. No
industrial or minimalist backdrops here, presenters and TouchScreen PC
alike battle unsuccessfully for visual spectrum with a 50s diner cum
aquarium backdrop themed with a range of shades of the new (
?)
corporate blue and an inexplicable red, both jacked up to
persiprational levels of hue. Two cameras ought to be enough to allow
the viewer to engage honestly with both the product and the presenter.
This would require eye contact with the presenters and a clear shot of
the product for a large proportion of the time. But sadly we get
neither. Instead we cut away too quickly from the product only to find
ourselves watching the speaker talking to the other camera. This kind
of style can work in addition to
traditional full
frontal face shots in order to create a more rounded, dimensional
view of the speaker. But here the salespeople are never allowed quite
to meet your eye. I add to my litany of complaints patchy sound quality
and the total is an exposition that, rather than let it shine, just
gets in the way of the product. The worst crime in the book, as all of
us who have ever had to do a demo know.
Demo presentations in need of much more than a touch up.
Posted by dannycoward
( Aug 29 2008, 01:07:01 PM PDT )
Permalink
Wednesday August 27, 2008
Firing up the engines for multiple languages
Filed under:
javafx
javase7

Have you seen the latest update from
John on our efforts to make the
JVM run multiple
languages ? (I'm in a staff meeting writing this, but don't tell
anyone :) ).
From one to many languages
For those of you who would like a little context around
International
Invokedynamic Day, for the last few years we've been on a path
towards first class support for other languages on the JVM. No small
feat this, since the Java Platform was originally designed with one
language in mind. Now, we still believe that Java is the best language
for robust, long lived code. But we know that developers like to mix in
other languages that for special reasons: for particular applications,
for particular styles of development. Just as important, we've spent 13
years creating an incredibly scalable and high performing runtime
across a variety of operating systems. So for developers who create
applications with other languages (and we hope there will be many who
like
JavaFX
Script), we figure they would like to run those apps on the
best
runtime around.
So, as a matter of fact, do the creators of the engines for other
languages like
Ruby,
Python,
Groovy,
Scala - they started creating
the engines to run on the Java Platform.
Lining up the engines
So for Java SE 6, we provided a
framework by which
those interpreters could
plug
easily into the Java Platform. And the developer APIs by which the
code from those other languages can be asked to execute. We even
bundled a JavaScript engine into our own JDK. At the same time,
more and more
developers created the engines to run other languages on the Java
platform.
Firing up the engines
Now, many of the languages that are attracting the buzz that have been
invented since the Java language have a feature in common with each
other, but not with Java: they are
dynamically
rather than statically typed. So the types of the variables, method
parameters, return variables and so on are not known at development
time, unlike in Java where you are required to declare them. All very
nice for rapid prototyping and a more informal style of programming,
but a big problem for compiling it down to the Java bytecode because
the Java bytecode needs that type information filled out. So engines
for dynamic languages have to create artificial interfaces or classes
just to do the form filling. Making them brittle, difficult to maintain
and slower than they could be. But not if
we modify the bytecode
to remove the need to fill out all the type information.
So back to the update: John has
prototyped
support for the modified bytecode in the HotSpot JVM !
What this means is that implementors of dynamic language engines are
now free to try this out and
prove
the theory. I'm predicting that
Charlie
will be one of the first with his
JRuby
project, but the race is on.
Some of the newer languages have other features in common, like
closures for example. There may well be
other features
we will build into the Java runtime to support such features better
like tail call recursions, continuations and lightweight method
handles. But we'll see how it goes with new bytecode and get some real
data and decide how much further we need to go.
If, say,
Ruby,
Python and
Scala run faster on the
JVM than anywhere else, we may just be done. For now :)
Posted by dannycoward
( Aug 27 2008, 02:38:21 PM PDT )
Permalink
Thursday August 21, 2008
Numbers that Count
Filed under:
javame

For those of you who know me, I can still get
a
little freakish about numbers. So, from
a
really interesting article about mobile devices and Java ME I saw
over the last week, two numbers stood out for me. For developers trying
to figure out how to reach a wide audience for their application, those
numbers are:
2.7 million and
zero.
2.7 million is the
number of mobile phones that were sold, on average,
every single day in
2007 around
the world. Now, I *heart* my iPhone, its a wonderful device, but the
iPhone reached the
million
mark 74 days after its launch. That's
74 days to sell as many iPhones as
it took just
9 hours to sell
as many mobile devices.
Zero is the cost of entry to
develop an application for Java ME, which is deployed today on many of
that staggering number of devices (for a complete list,
see here).
No
complicated
agreements to get the
Java ME SDK, the
development of the platform is
out
in the open, so everyone sees it
unfold
at the same time. Better still, the
free visual
development environment for Java ME has been
pretty great for
some time now.
Two numbers that add up to a great way to reach a lot of people.
Posted by dannycoward
( Aug 21 2008, 05:52:02 PM PDT )
Permalink
Tuesday August 19, 2008
Some of my favorite things about the JavaFX SDK Preview
Filed under:
javafx

I'm
sure you all saw that our
JavaFX team
released a preview of the
SDK at the end of July. I've been happily tinkering with it for the
last few days. If you are hacking with
AJAX,
moonlighting with
Silverlight,
or fumbling with
Flex,
I think you should get up close and personal with it too, and
see what its all
about.
We've been
talking
about JavaFX in various ways for
some time now,
so you
probably already know
that its for building rich client applications, that it itself is built
using Java, and that it will span multiple devices - from small mobile
phones through TV settop boxes to the PC desktop and browser. Most
importantly, if you are a traditional Java programmer (I include
myself), you will notice there's a paradigm shift. A shift moving from
the Java programming environment, whose generality spans quite an
astonishing range of applications, to a programming
environment specially designed for those amongst us with more developed
visual design skills than technical ones (sadly, I cannot include myself).
Those who are focused on one kind of application: interactive and
fabulous looking.
Looking ahead a little,
the
plan here is to release the final version of the SDK for the
desktop at the end of this year and a preview of the mobile version
next March or so. I say or so, not just because schedules are
schedules, but because we are ready to adjust based on the
feedback
we get from this preview release.
Anyhow, some of my favorite things about this
preview release are:-
The Language:
JavaFX Script
Described in full in the
language
guide included in the SDK, this new language is highly declarative
(i.e. it says what its going to do, rather than saying how to do it),
with features like
data binding
to let you to bind one variable to another variable. Like,
let oneVariable = bind
anotherVariable;
(I did say it was declarative). Or like the
triggers feature, so that when the
value of one variable is replaced, you can have something else happen
at the same time.
attribute oneVariable
on replace
doSomethingElse();
To a Java programmer its going to be an
easy new language to pick up
because it shares much of its syntax with the Java language. To a
designer, its going to be an
easy
new language to pick up because its clean, straightforward and does
on the screen what it says in the code. And it has no
baggage
to carry.
The APIs
Neatly divided into two profiles (
which you can see
here) - the
common profile for all the APIs that will
be available on every device, and the
desktop
profile for all the APIs that make sense only for applications
on a desktop. There's a
mobile profile
to come of course in the mobile release next year, which will have the
common profile plus APIs that make sense on mobile devices.
As part of the common profile, you have the
scene graph and the media
JavaFX APIs. The GUI of an application is modeled as a graph of visual
nodes, (each node being a shape, line, piece of text, GUI widget or
embedded media), that moves, twists, rearranges as the user interacts
with it. The scene graph API in JavaFX is especially well suited to the
transition effects and animations that make all the difference between
a user experience and a captivating user experience. The media
supported in the scene graph includes a
player
control and support for OS native formats. You'll remember we
inked a deal
with On2 to provide cross device media support in May. Well that
will have to wait a little longer before we can put that in. But we're
all crossing our scene graph nodes that it will be soon.
The desktop profile includes the common profile, plus some desktop
specific extras like...many of the tried and tested Swing widgets we
know and love: buttons, combo boxes, lists and so on. So no shortage of
the basics you need there.
And of course,
being built in
Java and on Java, you can always reach down into the underlying
Java APIs for your favorite Java API if you would like to use that in
your application too.
NetBeans integration
and Project Nile Plugins
Naturally, the
SDK is available
pre-integrated with NetBeans 6.1 which is how I've been looking at
it, as
have
others. The language and APIs are supported in the IDE with all the
things you would expect like syntax coloring and checking, debugging
and so on. Together a
tutorial
and a range of samples. The samples are generally short and to the
point. Want to see how to draw polygons ? There's a sample just for
that. Want to see how to use keyframe animation to bring life to
randomly moving particles ? There's a sample just for that.
Transparency, color gradients, bounce a ball ? Check, check, check.
Also included in the SDK is a collection of plugins (
codenamed
Project Nile) to Adobe Photoshop and Illustrator so you can keep
working on the art there, and use Project Nile to export it into your
JavaFX application and bring some life to it.
My other favorite thing is that this is all running on Java SE. So
applications created in JavaFX aren't just running on any old VM, its
running on a supremely stable,
scalable
and
high
performing runtime. But I don't have time to tell you about all
that just now.
There's more to the SDK than just my favorite things. If you've been
curious about JavaFX, now is a good time to
take a look for yourself.
Posted by dannycoward
( Aug 19 2008, 07:50:01 PM PDT )
Permalink