Log on:
Powered by Elgg

Matthew Weaver :: Feeds

February 12, 2010

Silicon Valley’s in Trouble

The recession may have driven Silicon Valley’s innovation engine straight off the cliff, according to an annual study by two local non-profits, Silicon Valley Network and Silicon Valley Community Foundation. Based on their just-released 76-page 2010 Silicon Valley Index they say the Valley is stalled and that it’s “hard to say is whether we’re stuck in neutral, which has happened before, or whether it’s time now for a complete overhaul.”

read more


The Tao of Mobility for Business

So you are looking into Mobility or creating Mobility projects. What 'Tao' should guide you daily? Here are my 10 thoughts to the Mobility way...

read more


The Tao of Mobility for Business

So you are looking into Mobility or creating Mobility projects. What 'Tao' should guide you daily? Here are my 10 thoughts to the Mobility way...

read more


February 11, 2010

ADF BC Groovy – Showing Old Values Along with New, Part 2

A while back I posted about using Groovy within our ADF BC EOs to expose the new and old values of a particular attribute. This method described in that post works fine if you've access to the EOs in the same project. However in our current project EOs are segmented in another application workspace project for reuse and ADF Library JARed into our existing "master" ADF BC workspace project. The external EOs are intended to be shared by multiple other sub-systems, and it really didn't seem ideal to include additional transient attributes on all the attributes in the shared EOs just in case some other application needs them, mostly they wont want this specific requirement.

This lead to the requirement to include the same functionality, namely transient attributes based on a Groovy expression to return the old value of the attributes, from our project's VOs instead. In other words, if a VO needs them, it includes 'em.

We immediately hit a problem on implementing this requirement. The EntityImpl.getPostedAttribute(index) method is a protected method, and there is no equivalent ViewRowImpl method. Arguably it should be provided at the ViewRowImpl level, and a search of the JDev OTN forums shows it's an old issue and I guess not likely to change anytime soon.

Without an immediate change to the ADF BC framework, we needed to find another solution. What we came up with:

(As per the original post we'll assume we're looking at the Employees EO and Position attribute)

1) By default extend the ADF Business Components Framework as per section 37.1 Globally Extending ADF Business Components Functionality of the Fusion Guide.

2) In the extended EntityImpl class, say common.model.CommonEntityImpl, create a public exposed version of the getPostedAttribute method

public Object getPostedAttribute(int index) {
return super.getPostedAttribute(index);
}

3) For the specific VO interested in showing the old values of an attribute, create the associated ViewRowImpl (say EmployeesViewRowImpl). Ensure in the generated class an accessor method to access the underlying EntityImpl has been created, ie:
public EntityImpl getEmployees() {
return (EntityImpl)getEntity(0);
}

4) In the local project's VO transient attributes to show the old values base it on the following Groovy expression:

adf.object.getEmployees().getPostedAttribute(model.entities.EmployeesImpl.POSITION)

What it does:

a) adf.object.getEmployees() calls the EmployeesViewRowImpl.getEmployees() method we checked existed in step 3, to retrieve the associated EntityImpl for the current ViewRowImpl

Note if you haven't undertaken step 3 to generate the associated ViewRowImpl, alternatively you could just call getEntity(0) instead in your Groovy expression. However I'd be cautious on doing this as you're relying on future upgrades of the framework not changing what's at position zero.

b) .getPostedAttribute() calls the now publically exposed getPostedAttribute method we created in the common.model.CommonEntityImpl that gives us the ability to get at old attribute values in the EO

c) The parameter model.entities.EmployeesImpl.POSITION grabs the index position of the Surname field in the EO. Note we need to use the EntityImpl field position rather than the ViewRowImpl field positions, as the order of the fields can be different.


Of interest to this post, an old discussion on the ADF Enterprise Methodology Group, was do most projects extend the ADF framework as per section 37.1 Globally Extending ADF Business Components Functionality? As can be seen from this specific blog post this shows another reason to include the extended classes from day 1 of any ADF development.


Final caveat: Please note this post is mostly for self documentation purposes, posted here so others can make use of it, but is not guaranteed to work; honestly I haven't tested this thoroughly nor has it been placed in a production environment yet. As such be careful to check it works for you, your mileage may vary. If you find any problems it would be appreciated if you could post your findings here to assist other readers.

read more


ADF BC Groovy – Showing Old Values Along with New, Part 2

A while back I posted about using Groovy within our ADF BC EOs to expose the new and old values of a particular attribute. This method described in that post works fine if you've access to the EOs in the same project. However in our current project EOs are segmented in another application workspace project for reuse and ADF Library JARed into our existing "master" ADF BC workspace project. The external EOs are intended to be shared by multiple other sub-systems, and it really didn't seem ideal to include additional transient attributes on all the attributes in the shared EOs just in case some other application needs them, mostly they wont want this specific requirement.

This lead to the requirement to include the same functionality, namely transient attributes based on a Groovy expression to return the old value of the attributes, from our project's VOs instead. In other words, if a VO needs them, it includes 'em.

We immediately hit a problem on implementing this requirement. The EntityImpl.getPostedAttribute(index) method is a protected method, and there is no equivalent ViewRowImpl method. Arguably it should be provided at the ViewRowImpl level, and a search of the JDev OTN forums shows it's an old issue and I guess not likely to change anytime soon.

Without an immediate change to the ADF BC framework, we needed to find another solution. What we came up with:

(As per the original post we'll assume we're looking at the Employees EO and Position attribute)

1) By default extend the ADF Business Components Framework as per section 37.1 Globally Extending ADF Business Components Functionality of the Fusion Guide.

2) In the extended EntityImpl class, say common.model.CommonEntityImpl, create a public exposed version of the getPostedAttribute method

public Object getPostedAttribute(int index) {
return super.getPostedAttribute(index);
}

3) For the specific VO interested in showing the old values of an attribute, create the associated ViewRowImpl (say EmployeesViewRowImpl). Ensure in the generated class an accessor method to access the underlying EntityImpl has been created, ie:
public EntityImpl getEmployees() {
return (EntityImpl)getEntity(0);
}

4) In the local project's VO transient attributes to show the old values base it on the following Groovy expression:

adf.object.getEmployees().getPostedAttribute(model.entities.EmployeesImpl.POSITION)

What it does:

a) adf.object.getEmployees() calls the EmployeesViewRowImpl.getEmployees() method we checked existed in step 3, to retrieve the associated EntityImpl for the current ViewRowImpl

Note if you haven't undertaken step 3 to generate the associated ViewRowImpl, alternatively you could just call getEntity(0) instead in your Groovy expression. However I'd be cautious on doing this as you're relying on future upgrades of the framework not changing what's at position zero.

b) .getPostedAttribute() calls the now publically exposed getPostedAttribute method we created in the common.model.CommonEntityImpl that gives us the ability to get at old attribute values in the EO

c) The parameter model.entities.EmployeesImpl.POSITION grabs the index position of the Surname field in the EO. Note we need to use the EntityImpl field position rather than the ViewRowImpl field positions, as the order of the fields can be different.


Of interest to this post, an old discussion on the ADF Enterprise Methodology Group, was do most projects extend the ADF framework as per section 37.1 Globally Extending ADF Business Components Functionality? As can be seen from this specific blog post this shows another reason to include the extended classes from day 1 of any ADF development.


Final caveat: Please note this post is mostly for self documentation purposes, posted here so others can make use of it, but is not guaranteed to work; honestly I haven't tested this thoroughly nor has it been placed in a production environment yet. As such be careful to check it works for you, your mileage may vary. If you find any problems it would be appreciated if you could post your findings here to assist other readers.

read more


February 10, 2010

Apple's iPad & Business Will Make a Knock-out Combination

On Monday I wrote an article that put my initial thoughts and findings together on the newly announced iPad's. It included my belief that the current mass of iPhone Developers are excited & poised to adopt iPad, not only with their current applications on the App Store, but creating new applications to take advantage of the iPad... A New app 'gold rush' gathering momentum!

read more


Apple's iPad & Business Will Make a Knock-out Combination

On Monday I wrote an article that put my initial thoughts and findings together on the newly announced iPad's. It included my belief that the current mass of iPhone Developers are excited & poised to adopt iPad, not only with their current applications on the App Store, but creating new applications to take advantage of the iPad... A New app 'gold rush' gathering momentum!

read more


RealVNC Launches VNC Viewer for iPhone and iPod Touch

RealVNC has launched its new VNC Viewer, an application for the iPhone and iPod touch that allows you to connect to and take full control of a computer anywhere in the world. Available to download from the App Store, VNC Viewer makes it possible to run applications, access documents and change settings on any Mac OS X, Windows, Linux or UNIX computer, just as though you were sitting in front of it.

read more


RealVNC Launches VNC Viewer for iPhone and iPod Touch

RealVNC has launched its new VNC Viewer, an application for the iPhone and iPod touch that allows you to connect to and take full control of a computer anywhere in the world. Available to download from the App Store, VNC Viewer makes it possible to run applications, access documents and change settings on any Mac OS X, Windows, Linux or UNIX computer, just as though you were sitting in front of it.

read more


February 09, 2010

JavaFX Platform the Official Rich Client Technology for 2010 Winter Games

Oracle has announced that JavaFX and Java platforms are being used as the Official Rich Client Technology by the Vancouver Organizing Committee for the 2010 Olympic and Paralympic Winter Games (VANOC). Sport fans around the globe can now explore the historical Winter Games medal results through an innovative JavaFX application,Medal Wheel, available at http://www.vancouver2010.com/olympic-medals/geo-view/.

read more


JavaFX Platform the Official Rich Client Technology for 2010 Winter Games

Oracle has announced that JavaFX and Java platforms are being used as the Official Rich Client Technology by the Vancouver Organizing Committee for the 2010 Olympic and Paralympic Winter Games (VANOC). Sport fans around the globe can now explore the historical Winter Games medal results through an innovative JavaFX application,Medal Wheel, available at http://www.vancouver2010.com/olympic-medals/geo-view/.

read more


Kindle vs Publishers - The Wrong Debate

Another episode of As The E-Book Turns wrapped this week, with Amazon locked in a page-turning battle with the publishing industry. The plot twists are many, but here's a quick outline: Amazon wants to continue charging $10 for e-book versions of most new titles and bestsellers, but the industry's leading publishers think that price is too low. Macmillan, for instance, wants $13 to $15 for most of its e-book titles, a demand that Amazon conceded to last week. Hachette, another major publisher, also plans to drop Amazon's $9.99 price model, and would rather see many e-books in the $15 range. HarperCollins has made a similar move. Meanwhile, the industry just gained an ally in Apple, which has agreed to let publishers set the price of e-books designed for its new iPad tablet. It's no surprise that publishers would want higher e-book prices, particularly for hot new bestsellers. But their strong-arm efforts to eradicate Amazon's consumer-friendly pricing aren't a good way to grow a nascent e-book market (and e-reader) market.

read more


Kindle vs Publishers - The Wrong Debate

Another episode of As The E-Book Turns wrapped this week, with Amazon locked in a page-turning battle with the publishing industry. The plot twists are many, but here's a quick outline: Amazon wants to continue charging $10 for e-book versions of most new titles and bestsellers, but the industry's leading publishers think that price is too low. Macmillan, for instance, wants $13 to $15 for most of its e-book titles, a demand that Amazon conceded to last week. Hachette, another major publisher, also plans to drop Amazon's $9.99 price model, and would rather see many e-books in the $15 range. HarperCollins has made a similar move. Meanwhile, the industry just gained an ally in Apple, which has agreed to let publishers set the price of e-books designed for its new iPad tablet. It's no surprise that publishers would want higher e-book prices, particularly for hot new bestsellers. But their strong-arm efforts to eradicate Amazon's consumer-friendly pricing aren't a good way to grow a nascent e-book market (and e-reader) market.

read more


February 08, 2010

Jobs Has a Few Words for Google & Adobe & They Ain’t Pretty: Reports

"We did not enter the search business. [Google] entered the phone business. Make no mistake they want to kill the iPhone. We won't let them... I want to go back to that other question first and say one more thing. This don't be evil mantra - It's bullshit." - Steve Jobs at an employee Town Hall the other day according to Wired, MacRummors et al although he may have said "load of crap" not "bullshit"; sources vary. Jobs reportedly means to use "aggressive updates" to stay way out front of the Android phone.

read more


Jobs Has a Few Words for Google & Adobe & They Ain’t Pretty: Reports

"We did not enter the search business. [Google] entered the phone business. Make no mistake they want to kill the iPhone. We won't let them... I want to go back to that other question first and say one more thing. This don't be evil mantra - It's bullshit." - Steve Jobs at an employee Town Hall the other day according to Wired, MacRummors et al although he may have said "load of crap" not "bullshit"; sources vary. Jobs reportedly means to use "aggressive updates" to stay way out front of the Android phone.

read more


February 07, 2010

Escaping From the Blizzard of 2010 to Cat Cay Paradise

I left SYS-CON offices in Woodcliff Lake, New Jersey right on time before the snow storm closed the airports. These live pictures below show East Saddle River Road through my iPhone on my way to the airport.This driver in front of me slipped and hit the side walk outside Yossi's Deli, at the corner of East Saddle River Road and Lake Street. As I arrived in Ft Lauderdale, I found out that pilot Eric was waiting for me to take me to Cat Cay. The following picture is the Gun Cay lighthouse, directly North of Cat Cay and South of Bimini on our approach to Cat Cay. You can see the landing strip far left.

read more


Oracle, Sun and the Enterprise CTO

The CTOvision.com assessment of the Oracle Acquisition of Sun: This is positive for the enterprise IT across the board, but the biggest determinate of what it means for your enterprise is what decisions you make now.  If you are an enterprise CTO, the ball is in your court. The following provides a bit more context.  First, [...] Related posts:

  1. What does the Oracle-Sun news mean for enterprise CTOs?
  2. Open Source Software: More reasons it is more secure
  3. Larry Ellison on the Sun-Oracle Close, January 27, 2010

read more


Oracle, Sun and the Enterprise CTO

The CTOvision.com assessment of the Oracle Acquisition of Sun: This is positive for the enterprise IT across the board, but the biggest determinate of what it means for your enterprise is what decisions you make now.  If you are an enterprise CTO, the ball is in your court. The following provides a bit more context.  First, [...] Related posts:

  1. What does the Oracle-Sun news mean for enterprise CTOs?
  2. Open Source Software: More reasons it is more secure
  3. Larry Ellison on the Sun-Oracle Close, January 27, 2010

read more


February 06, 2010

New Media on Ulitzer - Social Media Marketing Is Hot Hot Hot

Social media marketing is hot hot hot. While the disjointed components have risen and fallien with the VC tide for some time now, a coherent roadmap is emerging for marketing a brand, product or service via social media. No longer just a fad for college kids or a way to virally promote your fart app, social media is emerging as a powerful and rapidly growing low-cost, high-reward force for driving sales. The price tag is appealing and there is no barrier to entry. With billions now being bet by the major players on the need for brands to have a mobile ad strategy, social media has evolved in the wings from a nice-to-have to a must-have for every company that sells anything. From a local pizza joint to a consumer packaged goods goliath, the power of human interaction to spread a marketing message though trusted social networks at very low cost is suddenly here (and increasingly measurable).

read more


New Media on Ulitzer - Social Media Marketing Is Hot Hot Hot

Social media marketing is hot hot hot. While the disjointed components have risen and fallien with the VC tide for some time now, a coherent roadmap is emerging for marketing a brand, product or service via social media. No longer just a fad for college kids or a way to virally promote your fart app, social media is emerging as a powerful and rapidly growing low-cost, high-reward force for driving sales. The price tag is appealing and there is no barrier to entry. With billions now being bet by the major players on the need for brands to have a mobile ad strategy, social media has evolved in the wings from a nice-to-have to a must-have for every company that sells anything. From a local pizza joint to a consumer packaged goods goliath, the power of human interaction to spread a marketing message though trusted social networks at very low cost is suddenly here (and increasingly measurable).

read more


IT Prima Donnas: Can You Fire a Team?

Yesterday, I finished my dinner in a French restaurant with traditional crème brulee. This time I’ve also ordered a small glass of sauterne wine. Then we went to our friend’s house to polish it with some good old port.  

But no matter what software developers drink or eat in February 2010, one way or the other the conversation will slide into a No-Flash-Player-on-iPad discussion.
Apple pretends that they will never allow Flash Player on Steve’s OS (SOS), because it’s buggy.  Adobe’s CTO, Kevin Lynch, states that Apple doesn’t cooperate.

After the third round, I made a statement that when the dust settles, everyone will thank Steve Jobs for forcing Adobe to make Flash Player better and faster, which is a win-win situation for all application developers.

My drinking buddy responded that Adobe has a tiny group of hard core developers who work on Flash Player, have deep understanding of its internals, have the status of sacred cows, and Kevin Lynch can’t put pressure on them regardless of what Steve says or wants.

When I hear about any prima donnas in IT, I’m getting easily excited. I believe that if any developer in any IT team starts exhibiting the prima donna symptoms, there’s only one solution to this disease: s/he has to be fired.
My opponent was not so sure and replied, “You can’t fire the entire team”.

Don’t get me wrong, I not saying that the Flash Player team has prima donnas nor that Adobe’s management can’t control them, but after a couple of old ports it was interesting to dig into this direction a bit deeper.

I told my friends a story that happened with my friend Gregory ten years ago. Back than he had several gas stations in our state of New Jersey.  You may not know, but NJ drivers are not allowed to pump gas themselves. You just pull up to a pump, the gas attendant stops by, and you say, “Fill up, Regular please”.  At least I say the same phrase during the last fifteen years – I lease cars and don’t buy premium gasoline.

Gregory had about 20 attendants working for him. All of them were relatives from some Asian country. They were self-managed, low maintenance, and hard working people.   One day, the leader of the clan came to Greg and demanded raising salaries to all of them. Greg refused. Then the envoy said, “If you won’t raise our pay, we’ll all quit”

Greg quietly responded, “Go back and tell everyone that all of you are fired as of this very moment.”  Greg had to temporarily lock his gas stations - he went to South Jersey, where the pays were lower, hired and relocated 20 new gas attendants. Greg has balls.  Yes, he lost money, but didn’t bend to blackmailers who believed that they were irreplaceable.

You’ll be surprised, but situation in the job market of gas attendants is very similar to what I see in IT. It’s a pretty small world, all local recruiters know you, and employers require references from the previous place of work.

Two weeks later, the blackmailer came back to Greg begging to hire them back, but it was a little to late.

No, I don’t think that developing Flash Player is as easy as pumping gas. But the source code of the latest build Flash Player is safely stored in a central repository, and if, for any hypothetical reason, Adobe executives will need to replace the entire team, they can do it within a month or so.  There are so many brilliant programmers in this country, you wouldn’t believe it.

Sorry Flash Player folks, for using your team for illustrating my attitude to prima donnas in IT. I believe that you did a great job with this VM (trust me, I have something to compare with). But our conversation about your team did take place yesterday, and I've openly shared it with my readers. Yes, there is always room for improvement, but I’m sure there are plenty of non-technical reasons for the current situation in Mac OS and SOS.

I simply don’t like prima donnas. Plus sauterne. Plus the old port…

read more


February 05, 2010

ADF Faces RC: af:document UncommittedDataWarning Property

Thanks to some assistance from Richard Wright from Oracle Corp on the OTN forums a week or so ago, I learnt about the uncommittedDataWarning property in the af:document tag, which I'd like to describe in this post.

This property is useful in the following scenario. Imagine you have a page as follows:


As you can see the page allows the user to change values of the current employee, and behind the scenes this is based on the usual ADFm bindings. In turn note the 3 buttons and their labels. For this screen there is a strict requirement for the developer to either Commit their changes or Undo them, before navigating back to the Home page.

Before the introduction of the uncommittedDataWarning property, the user could select the Go Home button and bypass this requirement. A workaround would be to set the Go Home button's disabled property such that the user couldn't navigate through the button if there were changes to be saved. However this is easily defeated by the user hitting the browser's back button, with the ensuing "JBO-35007: Row currency has changed since the user interface was rendered" mess that confuses users and developers no end.

With the introduction of the uncommitedDataWarning property for the af:document tag, and setting it to "on", if the user selects either the Go Home button (assuming we haven't disabled it) or the browser's back button without committing or undoing their work, they'll see the following browser error:


The dialog gives the user the option to Cancel, which leaves them on the current page, or Ok, which allows them to complete their action.

This is definitely an interesting feature, especially with its browser back button support.

One thing to note is that it only works for data that goes through the ADF binding layer. As such if you've JSF components based on a bean that isn't exposed to the ADF layer through a data control, it won't capture the data change. Thus this is another reason to ensure you don't hack code into the JSF layer, but expose it all through ADF Business Components or the other supported business service layer in ADF.

Also at this time the feature has a couple of limitations worth mentioning:

1) If the dialog displays and the user selects ok, the dialog will continue to display on each further page navigation until the user either commits or rolls back their changes. I can imagine this will become confusing or frustrating for some users, especially if you don't provide commit/rollback buttons on other pages.

2) As noted in this OTN post, I note that it is a warning mechanism and not an error mechanism (or at least, it doesn't have an option to enforce no navigation). It would seem ideal, especially with its back button functionality, to display an error only, leaving the user on the same page and forcing them to do a commit. Obviously this wouldn't be ideal in all cases, but certainly in some. I've raised ER 9299581 with Oracle Support for this.

3) As Richard Wright points out in the same post, "for a similar use case there has been a request to allow the user to continue with either a commit or rollback from the dialog. It would be analogous to the "Save" dialog received when exiting a native app (e.g., Word, Excel, JDev)." Hopefully we'll see these ERs in a future release.

I'm not overly sure when this property became available but I'm guessing the original JDev 11g release. It's definitely available in 11gR1 which this post was written against.

read more


ADF Faces RC: af:document UncommittedDataWarning Property

Thanks to some assistance from Richard Wright from Oracle Corp on the OTN forums a week or so ago, I learnt about the uncommittedDataWarning property in the af:document tag, which I'd like to describe in this post.

This property is useful in the following scenario. Imagine you have a page as follows:


As you can see the page allows the user to change values of the current employee, and behind the scenes this is based on the usual ADFm bindings. In turn note the 3 buttons and their labels. For this screen there is a strict requirement for the developer to either Commit their changes or Undo them, before navigating back to the Home page.

Before the introduction of the uncommittedDataWarning property, the user could select the Go Home button and bypass this requirement. A workaround would be to set the Go Home button's disabled property such that the user couldn't navigate through the button if there were changes to be saved. However this is easily defeated by the user hitting the browser's back button, with the ensuing "JBO-35007: Row currency has changed since the user interface was rendered" mess that confuses users and developers no end.

With the introduction of the uncommitedDataWarning property for the af:document tag, and setting it to "on", if the user selects either the Go Home button (assuming we haven't disabled it) or the browser's back button without committing or undoing their work, they'll see the following browser error:


The dialog gives the user the option to Cancel, which leaves them on the current page, or Ok, which allows them to complete their action.

This is definitely an interesting feature, especially with its browser back button support.

One thing to note is that it only works for data that goes through the ADF binding layer. As such if you've JSF components based on a bean that isn't exposed to the ADF layer through a data control, it won't capture the data change. Thus this is another reason to ensure you don't hack code into the JSF layer, but expose it all through ADF Business Components or the other supported business service layer in ADF.

Also at this time the feature has a couple of limitations worth mentioning:

1) If the dialog displays and the user selects ok, the dialog will continue to display on each further page navigation until the user either commits or rolls back their changes. I can imagine this will become confusing or frustrating for some users, especially if you don't provide commit/rollback buttons on other pages.

2) As noted in this OTN post, I note that it is a warning mechanism and not an error mechanism (or at least, it doesn't have an option to enforce no navigation). It would seem ideal, especially with its back button functionality, to display an error only, leaving the user on the same page and forcing them to do a commit. Obviously this wouldn't be ideal in all cases, but certainly in some. I've raised ER 9299581 with Oracle Support for this.

3) As Richard Wright points out in the same post, "for a similar use case there has been a request to allow the user to continue with either a commit or rollback from the dialog. It would be analogous to the "Save" dialog received when exiting a native app (e.g., Word, Excel, JDev)." Hopefully we'll see these ERs in a future release.

I'm not overly sure when this property became available but I'm guessing the original JDev 11g release. It's definitely available in 11gR1 which this post was written against.

read more


Siri Brings Their Virtual Personal Assistant’s Smarts to the iPhone

Siri provoked a flurry of interest last summer, and presumably not just because CTO Tom Gruber took part in one of my podcasts. With their genesis inside a big DARPA-funded Artificial Intelligence project, their talk of emergent Virtual Personal Assistants and their slick iPhone-powered demonstrations, the company ticked more than enough of the right boxes [...]

read more


Siri Brings Their Virtual Personal Assistant’s Smarts to the iPhone

Siri provoked a flurry of interest last summer, and presumably not just because CTO Tom Gruber took part in one of my podcasts. With their genesis inside a big DARPA-funded Artificial Intelligence project, their talk of emergent Virtual Personal Assistants and their slick iPhone-powered demonstrations, the company ticked more than enough of the right boxes [...]

read more


<< Back Next >>