Feed aggregator

Kscope '12 and the Rodeo Special Event

Marc Sewtz - Sat, 2012-06-30 21:10

Just arrived back home in New York after a great week at the ODTUG Kscope ’12 conference in San Antonio, TX. It was great meeting many members of our ever growing APEX community again, seeing several outstanding presentations on APEX and other topics and being able to present to our customers what’s new in Oracle Application Express 4.2 and introducing the mobile features we’ve been working on over the past couple of month.

If you've been to our sessions and want to try out for yourself what's new, or if you're just curious what APEX is all about, please sign up for our Early Adopters hosted site at:

https://apexea.oracle.com 

And thank you Kscope for organizing yet another amazing special event Wednesday night, I truly enjoyed the Rodeo, certainly something you don’t see every day in New York City. I’ve put together a few scenes of the event and loaded the up on YouTube, please check out the video here:



Do You Know What Day It Is?

Kenneth Downs - Sat, 2012-06-30 07:51
Have you ever sat in on a meeting like this?

Person 1:  The customer wants a green background on this page.

Person 2: Do we know they're going to stick with green?  Maybe we need a configuration option for background color.

Nobody wants to disagree and the manager never comes to these boring design meetings so there is quiet before somebody says...

Person 3: A configuration option just for background color is kind of weak, we'd be better off allowing choices for all colors.

Person 4: Is this an instance level configuration, or do we let the end-user pick her color?

Person 2 (the original troublemaker): well it really has to be instance level, but the end-user can override, that way we satisfy all possibilities.

From here the debate continues until they've decided to create a skinning system with lots of UI color pickers and other stuff, and they wrap up with:

Person 6: Well this sounds great, but what should we make the default background color?

...and nobody can remember that:

The customer specifically asked for green, only green, and nothing but green.

Is this an exaggeration?  Perhaps, but I've sat in meetings that come close.  Seems to me that I've sat in meetings that were worse, but I'd hate to slander anybody, and being as I'm not perfect myself, we'll leave that one alone for now.

So anyway, there were many things going wrong in that meeting, but we're going to stick with the simple fact that nobody there knew this one simple rule, the first rule of system design, which should be burned into your brain, which you should repeat before and during any design or architecture meeting:

Today's Constant is Tomorrow's Variable.

This is not so much a rule as an observation, but when you realize that it is true on almost any level, it can become a guiding rule, something that actually lets you make decisions with confidence, decisions that turn out to work well.

The problem is that most people in technology don't know what day it is.  They make one of two mistakes, they either:
  1. constantly plan, estimate, design, or program for tomorrow's variable when all they need to do is handle the simpler case of today's constant.
  2. or they don't realize that when "the customer changed the requirements!!!" the customer is doing what everybody does, taking something simple from yesterday and making it a bit more complex today.
So you can turn this around and say, "Everything I do today will get changed tomorrow.  It will become more complicated.  Everything I think is fixed or constant will float or become a variable."

What It Means
We've all learned (hopefully) that you don't embed constants in code because it makes the code difficult to change.  We define the constants in headers, or we accept all values from outside sources as parameters.  This makes the code more flexible, and it is a good thing.  The code is more robust, it can handle more cases without breaking or needing alteration.

The trick to using Ken's first and only rule of system design, "Today's Constant is Tomorrow's Variable" is to recognize the many forms of "constants" that we build into our systems in hard-to-reach places, making it hard to change them when tomorrow comes and they are no longer fixed and constant.

Another trick to using the rule is to always know what day it is.  Most of what I do today will involve features that may never change.  It is extremely easy to see how they might change, but impossible to know for sure.  So we leave them constant for today.

Back To That Meeting
Let's go back to that meeting we started with.  Here is how it goes when somebody knows that "Today's Constant is Tomorrow's Variable."


Person 1:  The customer wants a green background on this page.

Person 2: Do we know they're going to stick with green?  Maybe we need a configuration option for background color.

Our Hero:  We don't know they are going to stick with green because we never know if any customer is ever going to stick with anything, and we all know that today's constant is tomorrow's variable.  However, I hope we've put the styles into a style sheet and not embedded them directly into the HTML so we can change it later if we have to, right?


Somebody mumbles that yes in fact we do use style sheets, and the meeting moves on.

Is That  Lame Example?
That's a pretty lame example really, who doesn't use style sheets?  And who embeds constants in their code?

Well kiddies it turns out that we didn't always use style sheets.  When I got interested in web pages CSS was still optional (Yes! Believe it!) and you put your style information directly into tags, which was basically embedding constants into code, and it didn't take long before you intuitively realized this was not right, and you discovered CSS.  

It is amazing how often that basic pattern repeats itself, trying to identify what you thought was a constant, realizing it is "buried in code", and turning it into a variable.

Today's Post Is Tomorrow's Promise

I'll be posting a lot more on this subject, using a very reliable and strict schedule based on a host of variables that mostly comes down to whenever-the-hell-I-feel-like-it(TM).  

Cheers.

Categories: Development

Google Compute Engine, the compete engine

William Vambenepe - Fri, 2012-06-29 01:16

Google is going to give Amazon AWS a run for its money. It’s the right move for Google and great news for everyone.

But that wasn’t plan A. Google was way ahead of everybody with a PaaS solution, Google App Engine, which was the embodiment of “forward compatibility” (rather than “backward compatibility”). I’m pretty sure that the plan, when they launched GAE in 2008, didn’t include “and in 2012 we’ll start offering raw VMs”. But GAE (and PaaS in general), while it made some inroads, failed to generate the level of adoption that many of us expected. Google smartly understood that they had to adjust.

“2012 will be the year of PaaS” returns 2,510 search results on Google, while “2012 will be the year of IaaS” returns only 2 results, both of which relate to a quote by Randy Bias which actually expresses quite a different feeling when read in full: “2012 will be the year of IaaS cloud failures”. We all got it wrong about the inexorable rise of PaaS in 2012.

But saying that, in 2012, IaaS still dominates PaaS, while not wrong, is an oversimplification.

At a more fine-grained level, Google Compute Engine is just another proof that the distinction between IaaS and PaaS was always artificial. The idea that you deploy your applications either at the IaaS or at the PaaS level was a fallacy. There is a continuum of application services, including VMs, various forms of storage, various levels of routing, various flavors of code hosting, various API-centric utility functions, etc. You can call one end of the spectrum “IaaS” and the other end “PaaS”, but most Cloud applications live in the continuum, not at either end. Amazon started from the left and moved to the right, Google is doing the opposite. Amazon’s initial approach was more successful at generating adoption. But it’s still early in the game.

As a side note, this is going to be a challenge for the Cloud Foundry ecosystem. To play in that league, Cloud Foundry has to either find a way to cover the full IaaS-to-PaaS continuum or it needs to efficiently integrate with more IaaS-centric Cloud frameworks. That will be a technical challenge, and also a political one. Or Cloud Foundry needs to define a separate space for itself. For example in Clouds which are centered around a strong SaaS offering and mainly work at higher levels of abstraction.

A few more thoughts:

  • If people still had lingering doubts about whether Google is serious about being a Cloud provider, the addition of Google Compute Engine (and, earlier, Google Cloud Storage) should put those to rest.
  • Here comes yet-another-IaaS API. And potentially a major one.
  • It’s quite a testament to what Linux has achieved that Google Compute Engine is Linux-only and nobody even bats an eye.
  • In the end, this may well turn into a battle of marketplaces more than a battle of Cloud environment. Just like in mobile.
Categories: Other

My Oracle Support Interface Change

Michael Armstrong-Smith - Wed, 2012-06-27 19:06
If you are a use of My Oracle Support you should have received notification regarding a change to the user interface. As of July 13, 2012 Oracle will be retiring their Flash-based interface and replacing it with an improved HTML interface that has added functionality.

There is a CALL TO ACTION regarding this change. If you follow the link you will be directed to a page that will describe the changes in detail and advise what you have to do in order to take advantage of the new user interface.

Oracle ADF with SSO – The Definitive Guide

Eduardo Rodrigues - Wed, 2012-06-27 13:22
by Fábio Souza & Eduardo RodriguesIntroductionWe know. It’s been a looooooong time again. But once you read this post, we are quite sure you’ll be happy we took the time to write it. And it’s also...

This is a summary only. Please, visit the blog for full content and more.

Oracle ADF with SSO – The Definitive Guide

Java 2 Go! - Wed, 2012-06-27 13:22
by Fábio Souza & Eduardo RodriguesIntroductionWe know. It’s been a looooooong time again. But once you read this post, we are quite sure you’ll be happy we took the time to write it. And it’s also...

This is a summary only. Please, visit the blog for full content and more.
Categories: Development

Java 7-Auto-Update Warning

Gerd Volberg - Tue, 2012-06-26 06:01
It looks like, that all forms-applications run into a huge problem, starting next week, July 3rd 2012.

Oracle's Java 1.6-Updater will automatically update the JRE to 1.7 on all PC's, where auto-update is activated. And Java 1.7 is not certified with Forms 10g, Forms 11g or the E-Business-Suite (EBS-forms-components)

I try to find all relevant informations to that topic and blog them afterwards. So feel free to share this blog to all customers who may have this problem next week.


Here are the first links:

The latest news directly from E-Business Suite Development



JRE Troubleshouting Guide



OTN Forms Forum: steps to install and deinstall
Michael Armstroing describes amongst others the deinstallation of Java 1.7



And here is the description of the internal problem, why we get problems with Java 1.7



read it
Gerd

Oracle ApEx Class Online

Bradley Brown - Fri, 2012-06-22 19:17
I've been building out an Oracle Application Express class on InteliVideo.  Check out the class...I'd love to get your feedback, ideas, etc.  I'll give the first 10 people to send me an email (brad@intelivideo.com) a free class registration.


Application Express 4.2 Early Adopter and Kscope 12

Marc Sewtz - Thu, 2012-06-21 22:10

Today we released the first Early Adopter version of Oracle Application Express 4.2 – right in time for ODTUG KScope12. You can sign up and give it a try:


One of our focus areas in this release of course has been Mobile. And while we’re still actively developing many of the new features in APEX 4.2, you’ll find that you can already build pretty nice looking and usable mobile applications.

With KScope starting this weekend, I thought what better way to illustrate some of the capabilities in APEX 4.2, than to publish a very simple KScope scheduler, highlighting the sessions that are going to be presented by members of the Oracle Application Express development team:


I recommend opening this link on your mobile phone. And if you’re reading my Blog on your desktop (people still use those?), then here’s a handy QR code to save you the hassle of typing in the URL:
I list all the sessions with a simple search box and you can also drill down by presenter, or day. And if you feel like letting us know that you’ll be attending some of these sessions, feel free to leave you name and email for your session(s) of choice.

And lastly, you may have noticed I felt a bit inspired by the conference location, and colorized my app accordingly. If you’re building you apps with the APEX 4.2 EA, you’ll find you currently only have a choice of blue with different shades of gray. But jQuery Mobile offers very easy ways to customize your look & feel to your or your users’ taste. So if you want to learn more about that, and want to see mobile development in APEX 4.2 in action, stop by my session on Wednesday at 9:45am:




Application Express 4.2 Early Adopter 1

David Peake - Thu, 2012-06-21 19:00
Following on from Joel's post this morning (http://t.co/HW9dflZC) the first Early Adopter for APEX 4.2 is now available @ https://apexea.oracle.com.

A list of Feature Descriptions and Known Issues is also available @ http://apex.oracle.com/pls/apex/f?p=38997:1:0

One of the main features we are introducing in APEX 4.2 are the Packaged Applications.

Instead of having to download them from OTN and install them they are now part of the APEX installation.
Simply go to the Application Builder and click on one of the many packaged applications.



There are two main types of applications, Productivity Applications and Sample Applications. 
The productivity applications are locked by default and in their locked state are fully supported. However, these applications can also be unlocked to allow developers to customize the application or simply look at how it was made.
The sample applications are unlocked by default. You can also download the sample applications for installation into an APEX 4.1 environment from OTN: http://www.oracle.com/technetwork/developer-tools/apex/application-express/packaged-apps-090453.html.

If you have any Feature Requests then we have made one of the new productivity applications {Community Requests} available for the APEX community to use: https://apex.oracle.com/pls/apex/f?p=55447:1

Please provide feedback from within the EA Application Builder.

Regards,
David

Oracle NoSQL Database Using FusionIO ioDrive2

Charles Lamb - Thu, 2012-06-21 05:16

We ran some benchmarks using FusionIO ioDrive2 SSD drives and Oracle NoSQL Database. FusionIO has published a whitepaper with the results of the benchmarks.

"Results of testing showed that using an ioDrive2 for data delivered nearly 30 times more operations per second than a 300GB 10k SAS disk on a 90 percent read and 10 percent write workload and nearly eight times more operations per second on a 50 percent read and 50 percent write workload. Equally impressive, an ioDrive2 reduced latency over 700 percent (seven times) on inserts in a 90 percent read and 10 percent write workload and over 5800 percent (58 times) on reads in a 50 percent read and 50 percent write workload."

Clear Cache for all Pages within a Page Group

Duncan Mein - Wed, 2012-06-20 14:07
Most client sites I have been on tend to love wizards that hold the users hand through often complex business process / workflows.

As a general rule, if I have a 10 step wizard (I generally use 1 page per step) I like to ensure that all 10 pages have their cache cleared as the user enters the wizard to ensure no values from a previous attempt to complete the process are hanging around. This is typically done by enter a comma delimited string of all the page numbers you wish to clear the cache of upon branching from page to page.

In an ideal world, what I wanted to do was take advantage of the fact that I had taken to time to put all 10 pages into a page group and clear the cache of ALL pages contained within. Furthermore, using this logic, pages can come and go from the page group without the need to worry about how this effect my clearing of session state. Pretty cool huh, but wait, "APEX only allows you to enter page numbers and not page group names into the clear cache text box" I hear you say.

Not a problem. This can be achieved very simply by using an Application Item, A Single Application Process and Page Groups. Here is how:

Solution.

1. Create a Page Group with a name the logically describes the functional area it servers. In this example I will use the name: "CREDIT_CARD_APPLICATION".

2. Edit the definition of all pages (10 in my case) and them to this newly created group.

3. Create an Application Item called the same name as your group created in step 1 i.e. my Application Item was named: "CREDIT_CARD_APPLICATION".

4. Create an Application Process called: "Get CRETID_CARD_APPLICATION_PAGES" and of Process Type: "On New Instance (new session)" and add the following code to the Process Text region:

BEGIN



select LISTAGG(page_id,',') WITHIN GROUP (ORDER BY page_id)
  into :CREDIT_CARD_APPLICATION_PAGES
  from apex_application_pages where application_id = :APP_ID
   and page_group = 'CREDIT_CARD_APPLICATION';


EXCEPTION
WHEN NO_DATA_FOUND
THEN
 :CREDIT_CARD_APPLICATION_PAGES := NULL;


WHEN OTHERS
THEN


 RAISE;


END;

5. Finally, in the branch that you want to clear the cache for all pages within the page group, simply place a substitution string reference to &CREDIT_CARD_APPLICATION_PAGES. in the clear cache text box and viola!!!

Explanation.

This very simply queries the APEX Data Dictionary to work out all the pages within your names Page Group.

It then uses the XMLAGG aggregation function native to 11gR2 (I blogged about this here) to build a comma delimited string of all these pages and assigns the output to your application item. (Not is done once per session for performance reasons).

Now that you have a list of all the pages in your page group as a value in session, you can substitute this into any branch using the standard substitution syntax. Simple really but ideally, it would be nice if Oracle provided this out of the tin. Until then, this seems to be a pretty good workaround.

ODI 11g – Scripting Repository Creation

Antonio Romero - Wed, 2012-06-20 11:10

Here’s a quick post on how to create both master and work repositories in one simple dialog, its using the groovy capabilities in ODI 11g and the groovy swing builder components. So if you want more/less take the groovy script and change, its easy stuff. The groovy script odi_create_repos.groovy is here, just open it in ODI before connecting and you will be able to create both master and work repositories with ease – or check the groovy out and script your own automation – you can construct the master, work and runtime repositories, so if you are embedding ODI as your DI engine this may be very useful.

When you click ‘Create Repository’ you will see the following in the log as the master repository starts to be created;

======================================================
Repository Creation Started....
======================================================
Master Repository Creation Started....

Then the completion message followed by the work repository creation and final completion message.

Master Repository Creation Completed.
Work Repository Creation Started.
Work Repository Creation Completed.
======================================================
Repository Creation Completed Successfully
======================================================
Script exited.

If any error is hit, the script just exits and prints any error to the log. For example if I enter no passwords, I will get this error;

======================================================
Repository Creation Started....
======================================================
Master Repository Creation Started....
======================================================
Repository Creation Complete in Error
======================================================
oracle.odi.setup.RepositorySetupException: oracle.odi.core.security.PasswordPolicyNotMatchedException: ODI-10189: Password policy MinPasswordLength is not matched.
======================================================
Script exited.

This is another example of using the ODI 11g SDK showing how to automate the construction of your data integration environment. The main interfaces and classes used here are IMasterRepositorySetup / MasterRepositorySetupImpl and IWorkRepositorySetup / WorkRepositorySetupImpl.

Oracle VirtualBox... a good thing.

Duncan Mein - Sun, 2012-06-17 07:03
Now as anyone who knows me me will confirm, I have always been a long admirer of VMWare and their suite of excellent virtualisation products. I started with Workstation before switching to Fusion on OS X and finally made the jump to the way cool ESXi a few years back (I blogged about this here).

Recently however, I am finding less and less time to install guest linux OS, configuring it for use with an Oracle Database (or Application Server), making sure all the RPM's, kernel values are correct etc. Yes you can use the Oracle Validated Packages to help simplify this (see Tims comments below for how to obtain these) but what I really value these days is the simplest configuration for home / home office use that is pretty much turn on and play.

After a quick trawl of the Virtual Appliances section of the VM Market Place, I was left wanting until I remembered that Oracle were now dabbling in the Virtual Machine space. After a quick dl of VirtualBox (their virtualisation offering) and a pre-built development database, I was up an running within 30 mins. Firthermore I have it running on 2G of memory and 1 CPU locally on my MacBook Pro.

I must say I was very impressed with the build of the VM itself, the interface of VirtualBox and just how simple it was to get a "throw away" vm running that covers 99% of my day to day needs.

I have to admit, I am struggling to justify moving back to a costed option of VMWare and can only see the number of pre-built virtual machines increasing, plus it's the best price... free (however if you want to run this outside of a lab environment, I would strongly recommend joining the Oracle Premier Support program).

Good job Oracle.

Remove duplicate jars

Vattekkat Babu - Sun, 2012-06-17 02:32

Often you will find that you've multiple versions of the same dependency jars in your WEB-INF/lib or your classpath directories when you are merging multiple modules. This small shell script can be run on those directories to get rid of older versions of the same jar.

#!/bin/bash
#in a directory full of jar files, it is common to have multiple
#versions of the same jars. If versions are named with only periods
#and alphanumerics, then this groups the jars by the name, deletes
#all the lesser versions

#get a list of jars like x-1.0.0.RELEASE.jar, get only the jar name
#without version or .jar and get only non unique lines (ie., duplicate
#jars are found)
for PREFIX in `ls *.jar|sed  's/-[0-9\.a-zA-Z]*\.jar//g'|uniq -d`; do
    echo $PREFIX
    #now do a reverse sorted listing with the jar name and remove the
    #top line so that non latest versions are returned
    for FILE in `ls -r ${PREFIX}*|sed '1d'`; do
        echo "  $FILE"
        rm -f $FILE
    done
done

Creating Oracle BI Presentation Layers from Oracle Cubes

Keith Laker - Thu, 2012-06-14 15:52
Beginning with Oracle BI 11.1.1.5, the Oracle BI Administration tool has the ability to import Oracle cubes, dimensions and hierarchies into the Physical layer of the Oracle BI repository.  This provides an alternative to the Oracle BI plug-in for Analytic Workspace Manager.  Each method works somewhat differently and each has certain advantages that might make it the best choice for different situations.

The Oracle BI plug-in for Analytic Workspace Manager pushes metadata into the  Oracle BI repository using UDML code.  The result is a ready to use subject area with the Physical, Business Model and Presentation layers fully built for you.  It creates hierarchies in the Business Model layer, but it does not add hierarchical columns to the Presentation layer.  You can easily add hierarchical columns to the Physical layer by dragging hierarchies from the Business Model layer.

Hierarchical column in the channel dimension.
The Oracle BI plug-in for Analytic Workspace Manager creates a Physical layer that maps to hierarchy and cube views (these views make the dimensions, hierarchies and cubes look like a star schema to SQL).  In the Business Model, it assigns the SUM aggregation operator to measures selected from the cube view.  This approach allows SQL to aggregate data above the cube.  This is useful for queries that first filter and then aggregate and attribute break outs.  For example:

  • Report by Year where Quarter of Year is 3 and 4.  Data at the Year level will be the aggregate of child quarters 3 and 4. 
  • Report by Year, Color and Size where Color and Size are attributes of Item.  Oracle will SELECT year, color, size, SUM(sales) .... GROUP BY year, color, size.

In both cases, Oracle BI will get the highest aggregate level data it can from the cube and do some additional aggregation in SQL.

When cubes are imported using the Oracle BI Administration tool the Physical layer is mapped directly to the cube and dimensions, bypassing the cube and hierarchy views.  The SQL created in this case selects from the OLAP_TABLE table function.  Oracle BI has optimized this SQL to take advantage of some features in OLAP_TABLE, which offers better query performance with hierarchical columns in some situations.

When the cube is imported with the Oracle BI Administration tool, aggregation is set to 'External Aggregation'.  This will disable the ability to create queries that require aggregation above the cube.  This is good in that it prevents users creating queries that might not work as they expect in some cases, but it prevents filter before aggregate and attribute break out queries.

Also, the import method only creates the Physical layer.  It does not create the Business Model and Presentation layers.  You do that by dragging the Physical layer to the Business Model layer and then dragging the Business Model to the Presentation layer.  That's all quick and easy, but there will be some things you will want to update in the Business Model and Presentation layers.  For example, deleting some columns you don't really need and arranging columns in hierarchical order.  I've posted the paper Creating an Oracle BI Presentation Layer from Oracle Cubes on OTN.  This paper will walk you through the process of refining the Business Model and Presentation layers.

My recommendation is to try each method, learn about the strengths of each and choose which is best for any particular application.  Since all the data comes from the same cube, there's nothing wrong with using both methods.
Categories: BI & Warehousing

Warning concerning Java 7 and E-Business Suite

Michael Armstrong-Smith - Thu, 2012-06-14 13:10

This notification is being posted at the request of Oracle Corporation

All E-Business Suite desktop administrators must disable the JRE Auto-Update for their end users immediately to stop it updating to Java 1.7.

URGENT BULLETIN:  Disable JRE Auto-Update for All E-Business Suite End-Users.
The following link from my fellow blogger Steve Chan explains more:

So why is this required?
If you have Auto-Update enabled, your JRE 1.6 version will be updated to JRE 7.  This may happen as early as July 3, 2012.  This will definitely happen after Sept. 7, 2012, after the release of 1.6.0_35 (6u35).

Oracle Forms is not compatible with JRE 7 yet.  JRE 7 has not been certified with Oracle E-Business Suite yet.  Oracle E-Business Suite functionality based on Forms -- e.g. Financials -- will stop working if you upgrade to JRE 7.

There is also a known issue with WebLogic 10.3.6 and JDK 1.7 and you must use JDK 1.6 for that. I will be posting shortly on this issue.

Seems to me therefore that until further notice, even for Discoverer, but definitely for E-Business Suite that you must stay on Java 1.6 

Been a while

Michael Armstrong-Smith - Thu, 2012-06-14 01:29
Hello everyone, I know it has been a little while since my last posting but I am here, alive and kicking and gearing up to get back into blogging.
In case you are not aware, I am in the process of updating my Discoverer Handbook to the latest 11g version of the product. Watch for more postings very soon.

Roku SDK

Bradley Brown - Thu, 2012-06-14 00:04
It's amazing (and pretty cool) that when you start looking around, most everyone has an SDK that allows you to integrate whatever apps you want to develop into their solution.  Sure, you can develop apps for phones - Android, Apple (iOS), and even BlackBerry phones.  Everyone's effectively  carrying pocket PCs around with them these days.

Let's say you want to develop an app to run on a connected TV.  Well, you can do that!  Yahoo (and Google) basically own that market.  Google running on LG, Sony, etc. and Yahoo on many devices too, such as Vizio and Samsung.  Google's pretty easy to develop an app for since it's powered by Android.  I already had my Android app developed, so all I had to do was add some information to my config file, choose a specific API version and I was done.  That was easy!  So now I have an app that runs on Android devices such as the MANY phones and tablets that it runs on.  Yahoo is a bit more more complicated.  You have to down a virtual machine (and a virtual machine "runner" such as Virtual Box from Oracle) and some other code.  It's not well documented either.  I have a Yahoo TV, so that's my next project.

I also have a Roku box.  Roku provides an SDK (Software Development Kit) AND they provide amazing documentation to help you write your first Roku application.  The first language that I programmed in was BASIC - it just so happens to be VERY similar to Visual BASIC, so for me, the learning curve was pretty easy.

Here's a look at the functionality I created using the Roku SDK.  First off, I published my application into the Roku private channels (public channels are apps reviewed by Roku - private are not).  If you go to https://owner.roku.com/Add/InteliVideo you'll be able to see how you can add my new channel to your Roku box.  There are 3 images below.  The image on the left, shows the link on my website to the above Roku link.  In my website, I determine what device your viewing the site from and displays the player for your device (as discussed below).  The image in the middle shows the results of the above link to Roku and the image to the right is what you'll see if you add my Roku app to your Roku device.


Here's a look at that iFrame - if you're looking at this blog from your iPad or iPhone, you'll see the iOS link (which isn't available in the marketplace yet, but will be soon).  If you're looking at it from an Android device, you'll see the link for the Android app.  If you're looking at it from a PC or desktop, you'll see the Roku link.

Once you install the Roku app, it will show up in your list of Roku apps!  This occurs very similar to how auto updates occur on iOS and Android.  You can arrow to the app and click OK / Select and it will run the InteliVideo app.  Now that you can control everything about the app - from the description showing below the icon to the icon used.



Roku has the ability to generate a unique ID.  So I display this unique ID to the user and tell them to go to the InteliVideo website to link their authentication to the Roku device.  This way I didn't have to build an authentication page for the Roku, which is frankly painful to "type" using your arrow keys.


Once you've linked your Roku device to your InteliVideo account, my application looks up all of the categories that you've purchased or can view and it displays each of these videos in a grid.  You can move around the page to view information about each video.  When you want to select a video, you click OK and you'll see the next page.  In the application, I thought it was pretty cool that I can dynamically look up these videos (via XML), get their images (via HTTP) and display them along with descriptions, ratings, etc.


Once you select a video, I used a custom viewer to start the video.  I display the name of the video on the left side of the page and the instructions are on the right.  This is on top of the InteliVideo logo.  If you press the down button, I display the video in full screen.  These videos are streamed.  All of the buffering is done for the user automatically.  The quality even on my big screen TV is BlueRay level.


As you can see, Roku has a full SDK that allows me to authenticate users, provide only videos they have paid for, allow them to watch them, rewind, pause, etc.  It's amazing how powerful these SDKs are.  I'll talk about the Yahoo TV SDK once I've written my application for my Vizio TV with Yahoo TV in it.

Pages

Subscribe to Oracle FAQ aggregator