Iona

We took the ferry to Iona from Fionnphort which is a short 10 minute crossing - mostly passengers and a few vehicles delivering supplies to the island. First we visited the Abbey which is looked after by Historic Environment Scotland and they provide audio tours.

St. Martin's cross
St. Martin's cross
Abbey from Abbot's mound
Abbey from Abbot's mound
Maidenhair spleenwort on well
Maidenhair spleenwort on well

The monastry on Iona was founded by Colomba and his 12 companions in 563. We started the tour by going up Tòrr an Aba (Abbot’s mound) - the site where it is understood Colomba’s writing hut originally stood overlooking the Abbey.

Stained glass of Colomba
Stained glass of Colomba
Sea spleenwort in church
Sea spleenwort in church
Carved pillars
Carved pillars

Inside the abbey church there are a number of clumps of rare Sea Spleenwort (Asplenium marinum) growing around the walls. These enterted the church whilst it was open to the elements and the remaining presence of them is said to indicate that the restoration was successfully completed and the building is still breathing.

Trigpoint and cairn on Dun I
Trigpoint and cairn on Dun I
Eilean Annraidh (Island of Storm)
Eilean Annraidh (Island of Storm)

After finishing the tour of the Abbey we decided to head up to the top of Dùn Ì (Hill of Iona) which is the highest point on Iona. We stopped at the top for amazing panoramic views around the island for our picnic lunch. From here we could also see across to Eilean Annraidh (Island of Storm) and beyond to the Treshnish Isles.

We then headed down and across the island to visit the white sands of Traigh Ban nam Manach (Strand of the Monks) where there the rocks are black granite and the sand is white from crushed shells.

Traigh Ban nam Manach
Traigh Ban nam Manach
Laura & me at Traigh Ban nam Manach
Laura & me at Traigh Ban nam Manach
Kai, Jessica and Laura at Traigh Ban nam Manach
Kai, Jessica and Laura at Traigh Ban nam Manach

We then headed back across the island to get a drink and chips before catching the ferry back to Mull.

Remains of the Nunnery
Remains of the Nunnery
Iona from the ferry
Iona from the ferry

Ulva

Ulva is a community owned island with a current population of 6 people. The first experience visiting Ulva is the ferry which you summon using by sliding the indicator on the ferry board to show red. I didn’t initially spot this, but Kai and Laura did and managed to summon the ferry for us - otherwise we’d have been waiting a long time! This ferry is for passengers only and is a very short crossing across from Mull.

Summoning the ferry
Summoning the ferry
Ulva ferry
Ulva ferry
Sheila's house
Sheila's house

We started our visit with Sheila’s cottage which gave an interesting insight into life on Ulva in the past and then a stop for coffee and cakes at the Boathouse Restaurant. We then went for a walk around the near part of the island taking in some of the sights. It was really peaceful with only a couple of other groups of walkers we saw on the way around the island.

The tracks were good, the paths were well marked and the nature unspoilt.

As we reached the higher points on the route, there were fantastic views across to Mull and around the surrounding area.

Livingstone croft window
Livingstone croft window
Livingstone cave
Livingstone cave
Old ferry sign
Old ferry sign

Highland cow and Sound of Ulva
Highland cow and Sound of Ulva
Highland cattle on the path
Highland cattle on the path

We headed up to Tobermory early on Tuesday morning for the StaffaTours Staffa & Treshnish Isles wildlife tour which is only available during the summer until the Puffins leave Treshnish. We were fortunate to catch them as the guide told us it would likely only be a few more days before the pufflings fledged.

Tobermory coloured houses
Tobermory coloured houses

After we’d headed out from Tobermory the crew were alerted to a pod of dolphins a little off our route, so we took a slight detour to see them. It was amazing seeing them so close to the boat. We also saw a lot of sea birds and an otter bobbing along beside us.

Staffa

The name Staffa comes from the old Norse for stave or pillar island as the basalt columns that make up the island reminded the Vikings of their wood log houses. The island is formed by these 3-8 sided basalt columns giving it a really distinctive appearance similar to that of Giants Causeway.

Staffa
Staffa
Fingals cave
Fingals cave
Tessalating basalt columns
Tessalating basalt columns

We were dropped off at a jetty and then made our way up the stairway to the main part of the island - it was very busy around the jetty as it’s the only way onto the island and a lot of the tours stop here. Me and Kai then headed across to the cairn and trig point at the top of the island on the side of the cliff over Fingal’s cave.

After this we headed back over to meet Laura and Jessica to explore more of the other side of the island and then head down and round the coast to see the inside of Fingal’s cave.

After this it was time to head back to the jetty to reboard the boat to head across to Lunga.

Lunga

Lunga is the largest of the Treshnish isles and the name comes from Norse “longship island”. The boats pulled up against a floating jetty with a small rowing boat attached to it and we were wondering how we’d all get ashore from that, but then realised that the boat would push the floating jetty into the shore proving quite a neat set up.

Boat with floating jetty
Boat with floating jetty
Seabirds over Lunga
Seabirds over Lunga
Lunga landscapes
Lunga landscapes

From there we went up the steep path marked with a helpfully painted upward arrow to the cliff top where we found ourselves a spot to sit and have lunch just back from the puffin burrows in the long grass on the cliff edge. There we spent the rest of the afternoon puffin watching and it was magical seeing so many puffins flying in and diving into their burrows with food for their pufflings.

The presence of humans on the cliff top is apparently good for keeping the skuas away from stealing the puffins food, but we had to be careful to stay back from the burrows to avoid crushing them.

In a few days time the pufflings would fledge by jumping off the cliff in the dead of night and all of the puffins would gone - spending most of the year living out over the sea until they return again to breed next year

On the way back as we were heading in to Kilchoan (the west most village on the mainland) as the first drop off point we saw a pod of bottle nosed dolphins alongside the boat.

Central Mull

For our first day on Mull we decided we’d head out and explore the central loop of the island in the car following a route described in the brochure in the farmhouse. This gave us our first real insight to driving in Mull as most of the roads are single track with passing places - although the passing places are very frequent so you can almost always see one ahead of you. The route took us along between the mountains through forests and by lochs as we wound around the hilly landscape of central Mull.

Three lochs
Three lochs
Foxgloves
Foxgloves
Road through Glenmore
Road through Glenmore

We first went along following the valley through Glenmore and came up out of the forest to views overlooking the three lochs - Loch an Eilean, Loch an Ellen and Loch Airde - between Ben Buie and Creach Beinn.

Kai looking over Loch Beg
Kai looking over Loch Beg
Waterfall at Traigh Gheal
Waterfall at Traigh Gheal
Eorsa
Eorsa

We saw rocky shores where could imagine the otters would appear early in the day and majestic waterfalls as the water poured down from the mountains. We stopped for a lunch break near Traigh Doire Dhubhaig overlooking Eorsa and as it started to rain we had our picnic in the car.

Traigh Doire Dhubhaig
Traigh Doire Dhubhaig
Traigh Doire Dhubhaig
Traigh Doire Dhubhaig
Jessica
Jessica

We then headed back to the farmhouse for a bit, but decided as it was such a nice evening to head down the road to the local Duart Castle.

Duart Castle
Duart Castle
Deer by Duart Castle
Deer by Duart Castle

Scotland 2023

Scotland 2023

  • 28 Jul - Glasgow
  • 29 Jul - 5 Aug - Isle of Mull
  • Loch Lomond - 5 - 8 Aug
    • 6 Aug - Inversnaid

Avebury

We met my parents at Avebury and spent the day exploring the ancient landscape around the area. Avebury is one of the best preserved Neolithic monuments in Europe and is believed to have been constructed between 3100 BC - 2000 BC. The site consists of a large henge, or circular ditch, surrounded by a stone circle, two inner circles and two additional semi-circles outside the main ring.

From there we walked along the West Kennet Avenue and up over the fields. As we reached the top, we started to see a glimpse of Silbury Hill - the largest artificial mound in Europe. We then headed down towards Silbury Hill and across to the West Kennet Long Barrow which is a really impressive structure. As we took in the sights of the long barrow and the views all around the landscape we watched the swallows flying into the barrow to catch flies.

Lambda Integration in IBM API Connect on AWS

This blog post will provide you an overview of our Lambda integration in API Connect on AWS, what you could use it for and a simple worked example of setting this up. If you’d prefer you can watch me demonstrate this in our video on YouTube.

Lambda is serverless computing platform provided by Amazon Web Services (AWS) which lets you build and deploy your code in a number of different programming languages with easy integrations to AWS services without having to manage infrastructure or servers. This makes it an ideal place to build out your API implementation and when you combine this with our API Connect on AWS SaaS offering you can quickly build, manage and socialise your APIs without worrying about the infrastructure behind them.

Using our Lambda policy in the SaaS service makes this simple and straight forward to integrate these so you can build out your apis around numerous different AWS services then manage them centrally through API Connect, sharing them with consumers through our customisable developer portal.

In order to manage the integration securely we use AWS Security Token Service (STS) so there is no need for you to give API Connect the credentials for your AWS account, you can just create an IAM role and grant permission for API Connect to assume that role.

The API Connect service is running in our AWS account and we have a fixed STS role that the service uses for each region:

Region Role
US East arn:aws:iam::623947394061:role/ibm-apiconnect-us-east-a
Frankfurt arn:aws:iam::623947394061:role/ibm-apiconnect-eu-central-a
London arn:aws:iam::623947394061:role/ibm-apiconnect-eu-west-a

In your AWS account you would set up a role that has permission to invoke your Lambda function(s) and set up the principal for the trust policy to be our service role and the external ID to be your provider org ID of your API Connect service instance. You can set this role to grant permission for just a single lambda function or multiple depending on what you need.

Within API Connect you will find the Lambda policy in the API Assembly editor on the Gateway tab along with all the other policies you can use to build out your API. The preferred model is to configure the lambda policy using the STS Assume Role option, however we do also support providing an Access Key ID and Secret Access Key. Then along with the credentials you just need to specify the name of the function and the region you have the lambda function deployed in.

To do this for yourself you can follow along with my simple worked example:

1. Create Lambda function

From the AWS Console, select Lambda then Create function - either start from scratch or make use of the ‘Hello World’ blueprint example. If you start from scratch and want to use the simple echo function I demonstrate in the video, give your function a name and select NodeJS as the Runtime - you can leave all the other settings the same unless your organisation has specific requirements around roles and permissions. Then click Create function.
Here is the code for the simple example from the video, which you can copy and paste into your function - alternatively you can use an existing function or write something more useful yourself:

export const handler = async(event) => {
    // TODO implement something more interesting here!  
    const response = event;
    return response;
};

After the code is updated in the function, click Deploy. Take a note of the function name and region your function is deployed in - both are part of the displayed function ARN - arn:aws:lambda:{{region}}:{{account}}:function:{{functionName}}

2. Create a role

Now you have the function created you will need to create a role to grant API Connect permission to assume which can invoke the function - for this, go to IAM and select Roles within the AWS Console.

  • Select Create role
  • Select Custom trust policy
  • Update the trust policy to have set the Principal to the API Connect role for the region you are using (see the table above) and set the “Condition” to require an external ID of the provider org you are using in the API Connect service- you should have something like the following:
{
    "Version": "2012-10-17",
    "Statement": [
        {
            "Sid": "Statement1",
            "Effect": "Allow",
            "Principal": {
                "AWS": "arn:aws:iam::623947394061:role/ibm-apiconnect-eu-central-a"
            },
            "Action": "sts:AssumeRole",
            "Condition": {
                "StringEquals": {
                    "sts:ExternalId": "ac51909e-a379-4153-a0e8-ef4a25a83405"
                }
            }
        }
    ]
}

Next, create a permission policy for the role to allow it to invoke lambda functions - something like this (you can also specify the function within the Resource field to limit which lambda functions API Connect can invoke):

{
    "Version": "2012-10-17",
    "Statement": [
        {
            "Sid": "VisualEditor0",
            "Effect": "Allow",
            "Action": "lambda:InvokeFunction",
            "Resource": "*"
        }
    ]
}

Now you have the Lambda function and Role configured we’re ready to start making use of this function within API Connect

3. Create your API in API Connect

To do this, open API Manager - if you don’t already have a trial instance to use, you can create a free trial now.

  • Select Develop APIs and Products.
  • Create a new API using the Add button and selecting API (from REST, GraphQL or SOAP).
  • Select New OpenAPI.
  • Complete the details for the name and path and click Next.
  • Confirm the security options and click Next.

Now you have completed the guide to create the basic API you can set up the OpenAPI specification for it as you would like before moving on to configure the implementation. To configure the implementation, select the Gateway tab, remove the default Invoke policy by hovering over it until you see the bin icon - and then click it.

You can now drag the Lambda policy across in its place and fill in the details from your Lambda policy as the parameters (role, function name and region).

Now you have the Lambda policy in place you can Save the API, and toggle the Online indicator to make the API available to test and then try it out under the Test tab.

There we have an API implemented end to end from a serverless function in AWS Lambda through to defining the OpenAPI spec for it and managing it in API Connect. You could now go on to share this API with Consumers through the Developer Portal, or continue to build out the functionality with additional policies first.

Try it for yourself by signing up for our free 30 day trial today.

IBM Tech 2023 - Dubai

Just back from a fantastic time at #ibmtech2023 in Dubai, where it was great to meet with so many colleagues from across IBM, celebrate our achievements and learn together.

I was really struck by this in the welcome kickoff from Dinesh Nirmal - “For every ten excuses, find one reason to believe” - that technological advances come through out of belief in the possible even through surrounding skepticism. Meeting and chatting to so many fantastic IBMers shows how that belief can be reinforced through the many accomplishments being celebrated.

Then after a coffee break we had our first session - for me this was “AI Overview and IBM AI Technology Roadmap” which was a really well presented session with lots of useful information but I was starting to flag a bit after the late night arrival.

Welcome Kickoff
Welcome Kickoff
Dinesh's kickoff
Dinesh's kickoff
AI Session
AI Session

After the morning sessions we headed off to our recreation activity - mine was the 4x4 Desert Safari where we went off exploring the desert dunes in a 4x4, up the slopes and then along the edge of the peak before turning back round and down. This was followed by riding camels - it was really strange when they go up and kneel down and felt very high up on them! After this we had the chance to try sand-boarding, which I didn’t do very well at at all and the board kept burying itself in the sand and getting stuck rather than elegantly gliding down the slope as I was hoping for!

4x4 Desert Safari
4x4 Desert Safari
Camel Rock
Camel Rock
Camel Ride
Camel Ride

Time to refresh before the Welcome dinner where they had a buffet style meal and musicians performing in the centre.

Dubai from the roof-top bar
Dubai from the roof-top bar
Welcome Dinner
Welcome Dinner

After the dinner a group of us headed down to see the fountains in front of the Burj Khalifa.

In front of the Burj Khalifa
In front of the Burj Khalifa
Fountains and Dubai Mall
Fountains and Dubai Mall

  • Day two of sessions
  • Celebration dinner

Celebration Dinner
Celebration Dinner
With Colleagues
With Colleagues

  • Closing session with Arvind
  • Transfer back to the airport

API Days - Paris

I travelled to Paris the day before the conference with Matt and we got to the Hotel in the evening, later than expected as we’d not considered traffic when getting a taxi in to Paris from the airport, I think next time I’d probably take the train in. We then met up with Tom and found a local restaurant/bar to have dinner.

As the API Days conference started at 1 o’clock the next day and I was up early I was able to do a bit of sight-seeing before heading back to the hotel to get on with some work and make sure I was ready for my session later that day. I had breakfast and headed out on the metro across Paris to the Eifel tower.

There was a light covering of snow everywhere and it was still very cold and there was more snow coming down as I emerged from the metro, although it didn’t really show in the pictures and it was still well before sunrise so everything was quite dark. I grabbed a coffee at one of the nearby cafes and caught up on Slack.

After coffee it had brightened up a bit but was still nice and snowy all around so I walked down closer to the Eifel Tower and a little way along the Seine before heading back across to the Arc De Triomphe and back on the metro back to the hotel. I then made my way over to the Cité des Sciences et de l’Industrie where the conference was to be held. I met Tom as I left the metro station and we headed into the venue together to find the booth and meet the rest of the team.

My workshop “Applying AI to API Testing across the lifecycle” was early in the conference, starting just 30 minutes after the doors opened so I went to get set up fairly early to find that the projector in the room wasn’t working but it turned out I’d gone to the wrong room and over in the room I was in everything worked properly. My talk went well and I had some good questions from the audience at the end and was glad to have it done so I could enjoy the remainder of the conference. I spent most of the rest of the day at or around the booth meeting people; discussing API Connect with them; giving demos and guiding them through the sign up for our free 30 day trial.

In the evening of the first day of the conference there was a Speaker Soiree which a few of us headed to after dropping things back to the hotel, it was at Belushi’s on the Canal de l’Ourcq so was just a short walk from my hotel. Given the size of the conference and the number of tracks going on the event was packed with those speaking at the event and was a great oppportunity to meet some of the others and share our experiences in the API space. As the world cup game between France and Morocco was on that evening we’d been warned to expect trouble in the streets of Paris, so headed back to the hotel just after half time to avoid anything that kicked off after the match. Later on from the hotel I could hear that France had won with the jubilant sounds of car horns.

The other thing we had at the booth which was a different idea from the previous time was a series of SmartTalks - 10 minute slots scheduled throughout the event with different people giving a taster session on a topic. I had two on the schedule - “API Deployment automation with IBM API Connect and GitHub Actions” and “Lambda integration in IBM API Connect on AWS”. As we were situated by one of the coffee stations we also had a steady stream of people passing our booth so the opportunity to sit down with a coffee and listen to a short talk definitely appealed. These seemed to work really well and drew an audience, often leading to interesting one to one follow on conversations with a few of the attendees.