Bike prices

name href product_id product_sku price date
0 Superlite V27 Disc 2021 https://www.12gobiking.nl/sensa-superlite-v27-disc-2021 131077 Superlite V27 Disc 2021 1074 2021-10-11 05:00:1633928405
1 Travel Lite Disc 2021 https://www.12gobiking.nl/sensa-travel-lite-disc-2021 131171 Travel Lite Disc 2021 549 2021-10-11 05:00:1633928405
2 Solero SL 24V 2021 https://www.12gobiking.nl/solero-sl-24v 142109 Solero SL 24V 2021 629 2021-10-11 05:00:1633928405
3 Strong SL 27v 2021 https://www.12gobiking.nl/pegasus-strong-sl-27v-2021 127861 Strong SL 27v 2021 1049 2021-10-11 05:00:1633928405
4 Campagna 24 2021 https://www.12gobiking.nl/sensa-campagna-24-2021 129315 Campagna 24 2021 949 2021-10-11 05:00:1633928405
5 Crossbike 2 2021 https://www.12gobiking.nl/bulls-crossbike-2-2021 134040 Crossbike 2 2021 699 2021-10-11 05:00:1633928405
6 Common Basic 3v 2021 https://www.12gobiking.nl/cortina-common-basic-3v-2021 78324 Common Basic 3v 2021 519 2021-10-11 05:00:1633928405
7 Crossway 100 2021 https://www.12gobiking.nl/merida-crossway-100-2021 122649 Crossway 100 2021 849 2021-10-11 05:00:1633928405
8 Speeder 200 2021 https://www.12gobiking.nl/merida-speeder-200-2021 124253 Speeder 200 2021 849 2021-10-11 05:00:1633928405
9 Common Transport 3v 2021 https://www.12gobiking.nl/cortina-common-transport-3v-2021 94663 Common Transport 3v 2021 579 2021-10-11 05:00:1633928405
10 Superlite 24 2021 https://www.12gobiking.nl/sensa-superlite-24-2021 139052 Superlite 24 2021 829 2021-10-11 05:00:1633928405
11 Wildcross 2021 https://www.12gobiking.nl/bulls-wildcross-2021 134024 Wildcross 2021 549 2021-10-11 05:00:1633928405
12 Crossway 40 2021 https://www.12gobiking.nl/merida-crossway-40-2021 122641 Crossway 40 2021 619 2021-10-11 05:00:1633928405
13 Quick Disc 3 2021 https://www.12gobiking.nl/cannondale-quick-disc-3-2021 108421 Quick Disc 3 2021 999 2021-10-11 05:00:1633928405
14 Crossbike 1 2021 https://www.12gobiking.nl/bulls-crossbike-1-2021 134032 Crossbike 1 2021 649 2021-10-11 05:00:1633928405
15 Savoie Gent 2021 https://www.12gobiking.nl/stevens-savoie-gent 148467 Savoie Gent 2021 919 2021-10-11 05:00:1633928405
16 Cross Bike Street 2021 https://www.12gobiking.nl/bulls-cross-bike-street-2021 126284 Cross Bike Street 2021 699 2021-10-11 05:00:1633928405
17 Sub Cross 20 2022 https://www.12gobiking.nl/scott-sub-cross-20 126560 Sub Cross 20 2022 899 2021-10-11 05:00:1633928405
18 Endeavour 8 2022 https://www.12gobiking.nl/kalkhoff-endeavour-8 144303 Endeavour 8 2022 1149 2021-10-11 05:00:1633928405
19 Piazza 21V 2022 https://www.12gobiking.nl/pegasus-piazza-21v 143932 Piazza 21V 2022 549.95 2021-10-11 05:00:1633928405
20 Piazza 21V Disc 2022 https://www.12gobiking.nl/pegasus-piazza-disc 143941 Piazza 21V Disc 2022 649.95 2021-10-11 05:00:1633928405
21 Crossbike 1 2022 https://www.12gobiking.nl/bulls-crossbike-1 143775 Crossbike 1 2022 649.95 2021-10-11 05:00:1633928405
22 Street Mover 2022 https://www.12gobiking.nl/bulls-street-mover 144784 Street Mover 2022 1199 2021-10-11 05:00:1633928405
23 Crossbike 2 2022 https://www.12gobiking.nl/bulls-crossbike-2 143783 Crossbike 2 2022 749.95 2021-10-11 05:00:1633928405

Short holiday in Provence during Corona (COVID-19) times

My trusted Specialized AWOL

This year we all will probably remember as “The Corona year”. Everything we used to has changed in just a few days. Our way of working, how we approach other people and what I like to write about the way we spend holidays.

After a week in south France in early summer we come back somehow unsatisfied. The accommodation was not what we expected and Provence as the rest of World was different. You could not feel like you are on holidays when at every occasion you are reminded about pandemic. Going out to restaurant is not what we used to, having a chat with locals feels awkward sometimes simply not right. Most of good restaurants are booked few days in advance which is difficult if staying only a few days in a place.

Anyways cycling was the general idea for the 2020 summer holidays. We have not cycled to much this time in France (Provence) but one scenic ride will always remind me of this beautiful area. The route goes along the mighty river Rhone.

Rhone at Donzere
River Rhone near Donzere

The GPX track can be downloaded here.

Elapsed Time Moving Time Distance Average Speed Max Speed Elevation Gain Calories Burned
05:06:12
hours
03:43:11
hours
50.23
km
13.50
km/h
38.88
km/h
219.00
meters
1,510
kcal

On the road we have passed nice castle few lovely villages and follow a road wher Tour de France was going later in September 2020.

Samen fietsen in Provence

Another interesting place is the bicycle suspension bridge build on remains of older bridge which was bombarded during World War 2. The place is now called “Passerelle himalayenne” and is a bridge especially build for cyclist. After riding it I noticed warning sign informing that it is prohibited to ride a bike on the bridge, you can only walk it with a bike.

The suspension bridge of the type developed by Marc Seguin was built in 1858 and is a listed historic monument. After being severely damaged in the 20th century, it was restored as a Himalayan footbridge in 2013, enabling the ViaRhôna cycle path to cross from Ardèche to Drôme.

Python code to download DMS Task Logs using the AWS DMS Task ID

Surece: https://idk.dev/python-code-to-download-dms-task-logs-using-the-aws-dms-task-id/

Slightly modified script still need to fix the datetime issue and adat for AWS Lambda.

import boto3, json, sys, time
from os import environ
import datetime

def start_time_milliseconds_since_epoch():  #time_string):
    ts = int(time.time()*1000) - 8640000
    print('Start time', ts)
    return(ts)


def end_time_milliseconds_since_epoch():
    ts = int(time.time()*1000)
    print('End time  ', ts)
    return(ts)


def get_replication_tasks():
    client = boto3.client('dms')

    response = client.describe_replication_tasks(Filters=[
        {
            'Name': 'replication-task-id',
            'Values': [
                replication_task_id,
            ]
        },
    ],
    MaxRecords=100,
    Marker='')

    return response['ReplicationTasks']

def get_replication_instance_arn():
    for ReplicationTasks in get_replication_tasks():
        ReplicationInstanceArn = ReplicationTasks['ReplicationInstanceArn']

        return ReplicationInstanceArn

def get_replication_instances():
    client = boto3.client('dms')    
    response = client.describe_replication_instances(Filters=[
        {
            'Name': 'rep-instance-arn',
            'Values': [
                rep_instance_arn,
            ]
        },
    ],
    MaxRecords=100,
    Marker='')
    
    
    return response['ReplicationInstances']

def get_replication_instance_id():
    for ReplicationInstances in get_replication_instances():
     ReplicationInstanceIdentifier = ReplicationInstances['ReplicationInstanceIdentifier']

     return ReplicationInstanceIdentifier

def get_cloudwatch_log_events(log_group):
    
    client = boto3.client('logs')
    kwargs = {
        'logGroupName': log_group,
        'limit': 1000,
        'startTime': start_time,
        'endTime': end_time
    }
    while True:
        response = client.filter_log_events(**kwargs)
        yield from response['events']
        try:
            kwargs['nextToken'] = response['nextToken']
        except KeyError:
            break

replication_task_id = 'celonis-dms-s3publish-part1'
rep_instance_arn = get_replication_instance_arn()

start_time = 1596672000000  #start_time_milliseconds_since_epoch()
end_time = 1596758400000  #end_time_milliseconds_since_epoch()

log_group = "dms-tasks-" + get_replication_instance_id()

# print(end_time - start_time)

def main():
    for event in get_cloudwatch_log_events(log_group):
        sys.stdout.write(event['message'].rstrip() + 'n')

if __name__ == '__main__':
    main()