Showing posts with label Application Design. Show all posts
Showing posts with label Application Design. Show all posts

Tuesday, 18 February 2020

APEX Component Settings for Switch

While I point out a 'hidden' setting for Switch items in APEX, I want to comment on two related item types found in Oracle APEX => radio buttons and checkboxes.


1) Radio button

I really think the standard Template Option for radio groups should 'Display as Pill Button'

It really provides a simple and effective UX when a small set of options are on offer. Touch devices can select the option as if it's a button, and mouse users only need one click, compared to a select list requiring two. And the click doesn't need to be precise for those tiny radio group circles. I wish the application builder adopted the pill button approach more often.

And it's real easy to hook a dynamic action on change of the radio group, perhaps to refresh a classic report with data limited to the selected option. (Don't forget to add page items to submit!)

2) Switch

The Switch item was the answer to a number of methods of deploying an "iPhone-like" on/off switch.
I actually wrote an (internal) item plugin to do just this, but I much prefer using the native option.

A frequent question relates to how switches are rendered. If you don't see what you expect, have a look in Shared Components -> Component Settings.
Application -> Shared Components -> Component Settings

Personally I prefer the 'Pill Button' look, for reasons above. I find the APEX Application Builder seems more washed out with all the Switches in the properties bar, compared to the more softened On/Off pill buttons. If I could change this at the builder level, I would.

The offerings will vary depending on your APEX version, and if the application's Universal Theme has been refreshed

Application level settings for plugins can also be found in Component Settings, in addition to built-in APEX feature tweaks. These can something you choose to review after an APEX version upgrade.

3) Checkbox

It seems the humble HTML checkbox will always be extant, regardless of the pain it brings to tabuler forms. However, it suffers the same precision requirement as the native radio group selections - though better deployments allow selection using the label as well.

Go with the Switch (as a pill).

What do you think?


Saturday, 25 February 2017

Understanding the User's Perspective

Recently I encountered what I thought was an interesting allegory in regard to software development and understanding the user experience.

My three year old approached me with her bottle of milk and requested more, insisting it was empty.

Exhibit A - One non-empty receptacle

I assessed what was presented to me:

  1. There was milk in the container
  2. The straw reached the current milk level
  3. The straw was not blocked (I didn't feel like milk. I did not enjoy this test)

It worked for me.

So I returned the bottle and went back to ... cooking dinner. Right, let's go with that.

The user child came back telling me the page bottle still wasn't working, so I asked for a demonstration.

Of course, the user was doing it wrong.

All programmers know this is the eventual outcome because the user is always clicking the wrong buttons at the wrong times. The real challenge is working out what to do next.

In this case, I filled up the bottle with more milk. Any other outcome with a boundary-pushing young child will not be acceptable.

However, once gratified, I also educated the user with not only the appropriate use but why that's the case. I think the reason "why" is as opposed to "just because" is partially what's wrong with society's ability to comprehend and assess new information.

Have you worked it out yet? 

She was turning it upside-down to have a drink. This meant thanks to gravity, the milk was no longer near the end of the straw, and it was deemed 'empty'.

I figured she turned it upside-down because that's how most of the other drink bottles work. Then I realised that's not accurate. Most of her bottles involve sucking liquid up a straw. I'm not sure why she often makes this mistake with this particular bottle, but I figure if I teach her some basic physics, not only can she potentially work out the problem herself next time, but maybe even apply the reasoning to other problems.

So perhaps two lessons

1) Watch your users. Don't be creepy about it, but somehow I'm always stunned by a number of notes I make when watching users operate software.

2) Educate your users. There are so many ways you can give your users cues as to how to use your software, but the best-designed tools don't need instructions. They're inherently intuitive.

When testing our own software, the more we can think like users instead of developers, the better our product will become.

Sounds like an old adage, but what do you think of the analogy? Have you encountered similar ways to relate to non-IT folk?

Thursday, 28 July 2016

Application Item Prefix Usage

I was constructing a fresh app for a presentation idea and I came to think about the prefix people use for Application Items in Oracle APEX.

I've seen a few variations used, and upon asking the question on Twitter (as a poll limited to 4 options), some came back with a few other suggestions.

The final tally based on the replies (we'll see how pasting from Excel goes...)

F_ 15 Inspired by APEX team, no doubt. +1 for me
APP_ 10 Fair call, but could match built-in
G_ 6 Global, clever. One person combines this with A_ for application scope.
{project} 5 To match the prefix on your tables, right?
AI_ 3 Can't deny the provenance
{none} 3 This is dangerous, potential clash with built-ins
A_ 1 Based on item scope.

I remember some chatter recently about a community sourced standards document for APEX being kicked off on StackOverflow. Perhaps mini surveys like this can help shape projects like that, or maybe it fits into the oraopensource activities.

Either way, this sort of discussion is surely healthy for the community, eking out any important considerations in sometimes seemingly trivial matters, or "bikeshedding" is a term I heard recently.

I can't say I've tried creating application items (or substitution strings for that matter) that are the same as a pre-defined substition string, but surely it would be detrimental.

You never know, even the Oracle APEX development team may decide a thing or two from community responses. I certainly know what my next poll topic will be, now the Fire on Page Load default No campaign is over ;p

ps - more 2015 survey results to come. The next question was on instrumentation, so a few juicy points to make there.

Wednesday, 4 May 2016

APEX Page Numbering

Today while perusing posts in the #orclapex hashtag, I came across this from Christina Moore.
She hasn't been blogging long but I love her style and format. I found this one on classic report templates a great resource, though I wish the Oracle team would produce content like this to accompany the documentation, or as an extension to apex.oracle.com/ut

Anyway, back to the tweet. The post she links is about planning page numbers. It had me intrigued because I do like sourcing menus with SQL direct from the APEX dictionary. My long standing top post includes a SQL pattern I use regularly to populate APEX menus.

With respect to Christina, I would like to nitpick with some points, or at least offer my perspective.

Planning page numbers

I consider myself to be a page number pedant, and why not? I'm sure we all named our Oracle Forms .fmb files in such a way to have a useful order in the folder, even though a search facility was available.

Why not do the same for APEX page numbers? I like to group my generic popups together in the lower end. Admin pages surrounding 101. Then segments of the application are grouped in 20s, 30s, 40s etc. A report/form combination is handy together since the next/previous page buttons are useful when jumping between the two, as Christina also describes.

I've even found use across applications where pages with similar functions share the same number, making it even easier to jump to the page I need. Christina mentions this when copying pages. Consistency is always a winner.

Page Grouping

Unless I've been really serious about page segmentation, I couldn't see myself applying a condition with a bounded range of page numbers such as
:APP_PAGE_ID between 100 and 200
I find this akin to hardcoding, something Steven Feuerstein could rabbit on about for days. I typically use Page Groups for times I need to identify a set of pages, in part because you're essentially documenting the pages by categorising them. Inherent, inline documentation that can be found by the next developer.

Using page groups also lends itself to building menus out of SQL, potentially in a hierarchical manner.

Conditions

I also find the use of sys.dual superfluous in cases like this, to a point where it's like rubbing hair the wrong way.  All that's required is a simple PL/SQL expression (as shown above), and declarative if possible.

The Alternative

Instead of defining a process to number your pages, you could just let APEX find the next number for you. For playpen applications or those under a hundred pages, that's probably fine. Even then there will come a day you regret not forming some assemblance in your pages.

(Bert Myers)
Organisation is only human. Such abstraction has enabled our species to plan crops, track livestock, leap ahead in our understanding of the universe. Heck, nature has been doing it for over 500 million years.



... too profound?

Wednesday, 18 June 2014

APEX 5 EA 2 is almost upon us

KScope14 is just days away from kicking off and hours after I realised the live stream of Patrick Wolf's APEX 5.0 Page Designer presentation was actually at a reasonable Perth hour (9:30pm), I found out I wasn't going to be home to watch it - darn it!

Luckily in this age of the internet there are other reasons to get excited. Tonight while I continued to write my Prezi on how APEX 5 will make us former Forms developer's even happier - I couldn't log in and I found the apexea.oracle.com login page has been updated to what looks like a very sleek Flat UI.


Flat UI is a modern design that has many merits, but I always wonder if it's just another passing phase. Here is another interesting article that includes a chat about the limits of Flat UI, and also includes a great pictoral comparison of Flat vs skeuomorphism.

I thought it might be worth plugging the contrasting designs into google trends to see what's going on, but I don't think it reflect the true history of skeuomorphism.

I'd say the searches on skeuomorphism are probably related to describing what the former technique meant in relation to Flat UI.

Anyhoo, APEX 5 Early Adopter 2 is on it's way, and I'd say expect no stone left unturned!

Friday, 2 May 2014

Thursday Thought: Are web clients getting thick?

I stumbled across this great post from a non-Oracle specific developer, and I thought I'd mention it here because it's worth a read.

http://zderadicka.eu/web-clients-are-getting-thick/

I've re-posted my comment here because they were thoughts rattling in my brain that I was going to rabble on about one day.
I've been thinking the same thing recently in regard to requests for Oracle APEX pages to not rely on connection to the database in order to operate for a time - using HTML5 storage in the meantime, then synchronising once connection is established. 
Essentially native mobile app behaviour in a web/hybrid application. 
I've also noticed issues in performance during my general mobile usage, particularly when it comes to web surfing. If you visit a news site in desktop format with your smartphone (particularly earlier models) it takes a while to render, yet open the same pages on your laptop using the phone as a data tether (to facilitate same download speed) - I've noticed rendering is much faster. 
The front end will also have to do rendering work, and browsers have been competing against each other for rendering speed for ages, but yes - they're getting thick again.

Is this the circle of life?

Friday, 7 March 2014

Off topic: If the moon were a pixel...

I love infographics that demonstrate the sheer scale of the world around us, I've posted on this topic before.

One that's been doing the rounds recently is this one from Josh Worth: If the moon were only one pixel
His website is also worth checking out, and you can find him @misterjworth

Universe Today has a nice summary of it. It reminded me of doing this Solar System Walk at the Gravity Discovery Centre in Gingin, Western Australia.

Click the icons at the top to shortcut to the celestial bodies, and look at the page source to see all the funny commentary text. Worth the 5 minutes to check it out and ponder the universe...
If you were on a road trip, driving at 75mi/hr, it would have taken you over 500 years to get here from earth
Space travel sure will be boring if we can't figure out a way to go faster...

Thursday, 13 June 2013

Thursday thought: How can you read that?

Every website that has some form of feed needs this option:

Thanks Google+
This sort of responsive web layout isn't always cool, IMHO - it's like watching a tennis match.

Google Web Designer - a HTML5 development tool

So, in the coming months Google will be launching a HTML5 web development tool targeted at creative agencies and designers.

My geeky mind thought about that, remembered geocities and thought - boy we've come a long way.

My APEX mind read that and thought - I wonder how many similarities this may have with a tool like Oracle Application Express, and I wonder what we might be able to learn from it?

I wonder what sort of databases could be attached to it, or maybe a good API into further enhanced HTML5 storage capabilities will make other databases superfluous in this instance?

There are a number of tools out there today that probably do whatever Google is going to do, but with Google's brand and inertia, we might just give the crazies an even more effective tool for duping the masses.

I'm also interested what it might mean for bloggers...?

Monday, 18 March 2013

User friendly APEX date items

Back in my Oracle Forms days, we had a library function associated with our date fields that accepted a value of "t", which then returned today's date.

We had further variations on this, but I thought I'd see how I'd go at implementing this in the APEX environment.

Update - included .change() to invoke trigger
http://stackoverflow.com/questions/8437125/jquery-invoke-change-without-user-action-but-by-val-change

First, well, second after creating some date fields on my page - I defined a dynamic action "t in date"
Event: Key release
Selection type: jQuery Selector
jQuery Selector: .hasDatepicker -- this is a class automatically assigned to my dates, found simply with right-click -> Inspect element in Chrome
Condition: equal to
Value: t

Dynamic Action definition
You only require a true action, executing some JavaScript
$(this.triggeringElement).val(return_date('-')).change();
In my case I used a function to return a date formatted nicely for my Oracle environment - more details below.
Don't fire on page load, and set "Selection Type" to "Triggering Element"
JavaScript action
I must thank Tobias in the OTN forums for to return date function, but I've extended it a little to suit my tastes.
I also added a parameter so I could define another DA that accepts "y" for yesterday - and adjust my call to return_date('-',-1)

function return_date(p_delimiter, p_offset) {
  /* with help from
   https://forums.oracle.com/forums/thread.jspa?threadID=2186734
   http://stackoverflow.com/questions/894860/set-a-default-parameter-value-for-a-javascript-function
  */
  /* Default delimiter to . */
  p_delimiter = typeof p_delimiter !== 'undefined' ? p_delimiter : '.';
  p_offset    = typeof p_offset    !== 'undefined' ? p_offset : 0;

  /* Create date object */
  var myDate = new Date(Date.now());
  myDate.setDate(myDate.getDate()+p_offset);

  /* Create output string DD.MM.YYYY */
  /* Day */
  var myStr = (myDate.getDate() < 10 ? "0" + myDate.getDate().toString() : myDate.getDate().toString()) +  p_delimiter;
  /* Month */
      myStr = myStr + (myDate.getMonth()+1 < 10 ? "0" + (myDate.getMonth()+1).toString() : (myDate.getMonth()+1).toString()) + p_delimiter;
  /* Year */
      myStr = myStr + myDate.getFullYear().toString();

  /* Set value */
    return myStr;
}
Note how much more difficult it seems to default parameters in JavaScript compared to PL/SQL.

What do you think? The only problem I've found is if you tab quick enough after typing "t", the trigger does not fire.
Oh, and IE8 seems to have a problem with the date constructor - but I've all but lost my patience pandering to IE.

An example can be found here:
http://apex.oracle.com/pls/apex/f?p=SWESLEY_FORUM:6:0::NO::P6_MODE:E

Scott

Thursday, 15 March 2012

On Oracle's statement of direction for Forms & Reports

For anyone that may have missed it, Oracle announced their current statement of direction for Oracle Application Development Tools - Statement of Direction: Oracle Forms, Oracle Reports and Oracle Designer

Statements of direction (SOD) can be fascinating reads, here is the current one for Oracle Application Express, and my thoughts on the 4.2 & 4.1 documents.

As a former (and sometimes current) Forms developer, I read this one with interest as it pertains to the pending 12c offering from Oracle.

The product strategy still oozes SOA and Fusion Middleware, but I found some interesting snippets:

Oracle has no plan to discontinue support of Oracle Forms

Which is great - as mentioned a few paragraphs earlier:
Oracle recognizes this considerable investment and remains committed to the long-term support of these product. 
It's as ubiquitous as Cobol, which fed a few jokes in the twitter world.  While there is no rush to move forward with your Forms applications, you might be up for more pain the longer you leave a plan to move on. I've worked in environments where Cobol is still around, and while the paradigm difference is a little more vast, it can make for massive migration projects.

Oracle’s strategic reporting solution is now BI Publisher

That's a shame in a way, perhaps I'm being nostalgic, but Oracle Reports was an awesome product. Reporting solutions still seem to remain a massive question mark for some sites, at least indecision on the best solution for the relevant environment. The cost seems to scare many away from using BI publisher, I guess especially when you compare the free Application Express product side-by-side. For comparison, I wouldn't like to estimate how much investment the infrastructure is for Oracle Reports, but it might be a middle-term solution for some as they migrate the application base away from Forms to ADF or Apex.

Protect the investment you have in your existing technology by upgrading to the latest release

Please do, I've been working in multiple sites still on 3.x and it's frustrating. Not only for the developer, but for what we can efficiently provide to make the application UI friendly. The same goes for your database, and of course with your Forms environment. There haven't been too many new features since Forms 6i, however advancements have been made to support newer hardware, operating systems and interfacing back to the database.

Oracle Designer 10g was the last version of this product

Move on people. I was never a big designer user - I had the pleasure of using Headstart once, but the universe has evolved. Among other options, there is SQL Developer Data Modeler.

On Oracle's recommendations for migrating from Forms and Reports, they first place your environment in context.

If you need to integrate with Fusion Applications; have extensive business rules & UI logic within the application; general preferences to Java/JEE (among others) => then move to Oracle JDeveloper with ADF.

If most of your application logic is within PL/SQL; most of the processing is within the database, and you don't favour Java => then move to Oracle Application Express.

(On a side note, Chris Muir has a good post answering the question on how much Java is needed for ADF)

It seems the two common, major factors in this decision are
1) The scale of your project and size of your team
2) Your infrastructure & processing requirements

I'm not sure I'm really convinced on the first point. I've never been involved in a JDeveloper project, however I have been in a few small & large Forms projects. I think it really depends on the application you need to build and the team you have.

For me, the most important factor is the infrastructure you currently have, and where you want to go with that. Commenting any further is tough because most of my concentration goes into development. I do listen to what those in the know have to say, though - and it seems to be key to their decision making.

Second to that, though, understanding of the capability of both products is essential. A recent discussion with someone that had little knowledge of Apex (and they are still on 3.1) had them well inside the JDeveloper fence, likening the capability of "dinky" Apex to something like MS Access.

I'm not about to defend Apex as a product, and say it's the only destination out there for migrating away from Forms - but choose the right tool for your job at hand. Chris' blog title hits the nail on the head - one size does not fit all.

Arm yourself with the right information before deciding how/where/when to move away from Forms.  Talk with people that have been involved in both types of projects; talk with experts in the relevant areas; find out the capabilities of each product; consider the infrastructure you have & the status of your databases; & consider the team of developers you already have.

And most importantly, don't forget your users. At the end of the day, they're the ones that need to use what you build, and the workflow of the application needs to suit them. Web pages can get pretty clever these days, but your are still constrained to that browser environment. Do you they need more than what a browser can provide?

Finally, take anything your local Oracle sales rep has to save with a few grains of salt ;-) I'll re-iterate a previous point - talk with the experts, the grunts in the field who are familiar with the capabilities of each product and then re-think about the big picture.

That's my 5 cents.

Tuesday, 2 March 2010

Oracle, Data-visualisation and Twitter

Recently Patrick Wolf talked about following Oracle Apex on Twitter. I still haven't decided whether I should take the plunge and open up a Twitter account - I can see the value of keeping the finger on the proverbial pulse of the industry; keeping in touch with industry colleagues that I may only normally see/catch up with at User Group events; and I'm sure the massive flow-on of connections that seems to happen when social media accounts are opened - but perhaps I keep up with all this in a satisfactory manner already, without having to subscribe to another social networking site.

For the time being I still follow some Twitter accounts with my RSS feeder. I also believe it's still a source of valuable information that's yet to be tapped to it's full extent.

In the "Explore" section of Google Reader (I recommend it - a bit like iTunes Genius for your RSS feeds), I encountered a great article illustrating Four Ways of Looking at Twitter. Immediately I saw the potential and relevance to my older post - and I think it's just a matter of finding the right keywords, or the right niche market to tap this massive social pulse.

The first two in particular caught my eye and I thought I'd have a quick play.

Twitter Venn might show some good visuals, but I think I'm yet to find some good search terms.
 
For me, Twitter Spectrum showed immediate potential. Just out of curiosity, I thought I'd see where the relevance lay between Oracle and SQL Server.
Then I wondered if you could use it as more of a marketing strategy to find how people are searching for information, or what particular key words might help your business out in regard to reaching your customers.

Hmm, does this mean Apex Training and blogging go hand in hand?

Data visualisation seems to be a growing industry. Information is Beautiful by David McCandless is a great way to illustrate "a picture paints a thousand words" - as long as the data is precise. His recent post on "When Sea Levels Attack" was criticised for it's inaccuracy. Visualisation sometimes needs a little artistic licence, but obvious mistakes can quickly cast doubt on your information - good thing our databases do a good job at maintaining integrity (as long as we have a good designer on hand).

So much data is now available for us to search, it's just a matter of harnessing it, then translating into a diagram - and even for us database developers is becoming more accessible. I've recently been having a fiddle with the Javascript InfoVis Toolkit. Using a combination of my Oracle database; Application Express; processes; shortcuts; and some basic Javascript knowledge, I've started to produce some pretty clean & nifty pages.

All this really generates more questions than answers, but for me two major questions remain
a) Should I open a Twitter account ?
b) what are some search terms that show some interesting results with these tools ?

Tuesday, 29 September 2009

Thinking differently about application design

The theme for the 2008 AUSOUG Conference series was "Oracle Software from a User's Perspective". While you could infer focus on the end user from some of the presentations, it's sometimes a difficult theme to focus on, especially when you're writing a technically heavy paper. It's more like relating yourself to your second cousin once removed (unless of course I've missed the point and we're talking about the developer/DBA as the user of Oracle development tools.)

This doesn't mean we can't maintain our awareness for our ultimate customer - the end user.

Tom Kyte recently linked to a cartoon that painted 1000 words about the way we write applications. (Thanks Eric Burke.) We've all been on projects where screens look like this, and considering we write GUI applications for databases that contain structures like this, it's an interface that's inevitable. The same reason the 747 cockpit contains 1000+ knobs and switches.

However, we can still look for opportunities to simplify. The interface to Apple's iPod - iTunes isn't exactly a dummy user's delight. There are plenty of options and interface difficulties. They've just transferred the complexity away from the entry point for 90% of the music player's use.

So what about your application. Are there points of entry that result in a large percentage of use? Is there a way to simplify the entry of key units of data? To go even more granular, are there little smarts you can add to certain types of fields, such as dates? Are there ways to minimise use of the mouse at all times? Is the first key field of your entry form user/time/context aware?

Many considerations to make. I read a lot of blogs, and I admit many of them are certainly from a technical perspective on the database, but there are a few I subscribe to that aren't even software related - but still pertain to my job. In the same way that Microsoft employ psychologists to assist with the design of the menu structure and interfaces to their ubiquitous applications such as Word & Excel, I read some blogs that encourage thinking outside the square.

One such article I came across recently was from Seth Godin - The End of Dumb Software. I can't remember where I first stumbled across his blog, but he always has interesting perspectives as a marketer that I can either apply within my job as a database developer, or even utilise in day to day life.

He was having a gripe in particular about simple calendar applications. If 2 o'clock was selected, you'd have to presume 999 times out of 1000 that 2pm would be requested. So why is that not the default? Why can't a calendar application presume most dates used are within working hours, with the option to change if required. He goes on to suggest he shouldn't need to "edit" an event to view further details, though I understand the architect's potential thinking in that scenario.

There are plenty of other quick examples he runs through that I think all developers, architects, designers should read through and consider. How many LOVs, search windows, entry points of various kinds have you created that could have been written slightly differently to save the end user some time & frustration?

A simple example I can think of in a forms application I once worked on was the ability to enter the letter "t" in a date field to represent (and be automatically translated into on when-item-validated) today's date. How many times in your application may the user want to enter today's date? Turning it into 1 keystroke has saved between 5 and 10 keystrokes, depending on date format settings (310809 to 31-AUG-2009). One keystroke vs eleven? I know what I'd prefer.

Food for thought.

If you have other blogs in your RSS feed like Seth Godin, I'd be interested to hear about them.