Posts

Remote MCP Server to access an Oracle database in Claude on iOS

Image
Think of MCP ( Model Context Protocol ) as the universal adapter for AI assistants. Just like USB-C promised to connect any device to any port, MCP lets AI models connect to virtually any data source, application, or service through a standardized protocol. Whether it's a company database, a cloud service, or a local file system, MCP bridges the gap between AI and the tools you use. The buzz around MCP isn't just hype—it's solving a real problem. Until recently, getting AI to work with your specific data and workflows meant custom integrations, API wrangling, and a lot of developer headaches. MCP changes that by creating a common 'language' that AI models can use to communicate with external systems securely and efficiently. Although MCP is relatively new (created by Anthropic in November 2024), all major players are backing the protocol.  With developers rapidly building MCP servers for everything from databases to development tools, we're witnessing the birt...

Mapping The World's Energy On The Move...

Here's a link to a nice write up in Forbes on something that I was involved with over the last few years: Thomson Reuters Eikon - Mapping The World's Energy On The Move

Oracle Locator and Spatial

If you already use Oracle Spatial or Locator then you probably already know Simon Greeners SpatialDB Advisor blog, but if not then I can recommend it as an invaluable source of Spatial nuggets.  Whether you are just starting out with Spatial or have some level of experience with it you will find something there which will knock your socks off! When I was helping a client with creating a geo-spatial database I found it confusing with regard to what is included as part of the Locator licence ('free' with Enterprise Edition) instead of the additional fee option of Spatial.  One of Simons posts  really makes it clear what is and isn't included with Locator, and thus I was able to ascertain that the client only really needed the functionality available within Locator, resulting in a considerable saving on licence fees for the Spatial extension.

APEX and Graph Visualisation Libraries

Image
I was recently asked by a client to create a quick POC in APEX to demonstrate how relationships between physical assets (in this case oil refineries) could be maintained using a graphical tool.  So I looked at a number of different Javascript graphing libraries  and chose MXGraph from JGraph  which seemed to have the most features and looked relatively easy to integrate.   It's worth mentioning that it is not Open Source and has a fairly hefty licence fee. The requirement was to be able to show the process flow between units in a particular oil refinery with relationships representing the refined output from one processing unit and the input into another.  The idea is to build out quite detailed maps of the process flows within refineries and then use this with other 3rd party outage data to predict the affect on production and thus ultimately the change in price of crude and refined oil products. The POC was quite simple, as you can see from the scree...

Work Yourself Fitter

Image
It's been a while since my last blog post but as I'm now looking for my next Oracle contract (hopefully APEX again purrrlease) I've a little time on my hands.  So I thought I would share with you my latest creation.  It's a variation on the Treadputer which is basically a treadmill adapted for use as a standup desk - you simply work and walk at the same time.  Yes I know it seems a little crazy but here's a picture of mine. Just working on this thing for around 3 hours a day at something like 1.5 miles per hour means I walk about 4.5 miles and burn around 600 extra calories. This is a home-brewed effort.  I already had the treadmill, so I added a shelf for the keyboard and mouse, plus a wall shelf to hold my laptop.  Of course I've tried to be as ergonomic as possible and placed the wall shelf so that my eye level is at the centre of the laptop screen, and the keyboard shelf is at the correct height so my forearms are horizontal. Now considering I've...

APEX 4.0: SQL in Plugins and seeing Stars.....

Image
This is my first post in a few weeks as I've been a little busy with work recently, which is just criminal as I really just want to play with APEX 4 EA2.  Oh well, bills have to be paid and children fed I suppose. Anyway, let's cut to the chase.  There is a nice feature of APEX 4 plugins (which I'm pretty sure wasn't working correctly in EA1) where you can create a custom attribute of type 'SQL Query'.  I've added this to the Range Slider plugin I use on my Online Store demo for the min and max default range values, as you can see below: Anyone using the plugin can write SQL statements for these attributes, and the good part is that they will be parsed when the changes are saved.  You can see in the screenshot below that I have set the Default Range Min Value to the mimimum selling price and the Default Range Max Value to maximum selling price.  I should, of course, set the Minimum Value and Maximum Value to also be 'SQL Query' attribute types a...

APEX EA2 update

To see the new style Plugins use this link to the Plugins Application provided by Patrick Wolf: Plugins Application I've managed to copy the syntax used in some of these plugins to update those on my Online Store demo. I've still need to upload some images and it looks like there are a few issue with my schema, but generally the app appears to be working.  So, in general it looks like EA1 apps can be imported into EA2 with little need to change anything.

APEX EA2 is now available

The good news is that it appears that applications exported from Early Adopter Phase 1 import ok in the new EA2. The bad news is that plugins have had a bit of an overhaul. It looks like the PL/SQL code used to construct a plugin now uses functions rather than procedures. So back to the drawing board for some of my online store demo plugins! Can anyone from the team shed some light on what I do with 'apex_plugin.t_page_item_render_result' or 'apex_plugin.t_page_item_validation_result', please?