Setup Lightning to work with Google Calendar

Quick installation guide to setup your Google Calendar in Thunderbird 31.2 with the Lightning Calendar Addon 3.3.1. You don’t even need to install the ‘Provider for Google Calendar’:

  1. Create a new calendar by right clicking on the calendar pane, then select ‘On the Network’
  2. Select ‘CalDav’ as you remote calendar format and put the following url as the location: https://www.google.com/calendar/dav/calId/events and replace calId with your calendar id. You can find it in your calender settings after logon to calendar.google.com. It’s usually your email address.

Note: use /events and not /user in the url, otherwise it won’t work

Nikon D800/D810: Turning ISO-AUTO on/off single-handed

I love my D800, but I was always annoyed, that I could not turn on or off the ISO-AUTO setting with one hand. But after playing around with my camera settings I found the following solution:

  1. First create an new entry in your MY MENU and make sure it’s the first item at the top.
  2. Now go to CUSTOM SETTING MENU and assign a button to this new menu item:
    f Controls -> f4 Assign Fn button -> Fn button press -> Access top item in MY MENU

That’s it!

CSS Quick Tip: Line Breaks in Flexbox Multi-line mode

Took my quite a while to find this, because it’s hardly mentioned anywhere except as a note on the Mozilla Developer Network:

When you are using a flexbox layout in multi-line mode (e.g. the ‘flex-wrap’ property is set to wrap), you can force flex items to start on a new line by setting the ‘page-break-before’ property.

Boxplot renderer plugin for jqPlot

For work I needed a way to show boxplots (see diagram to the right) using the jqPlot library. All I had to do was override the draw() method of OHLCRenderer (see code below).

Update 13.10.2017: Upon request I created a working demo of the BoxplotRenderer using some helper classes to setup jqPlot charts from another project.

boxplot diagram
Example of a histogram and boxplot rendered with the jqPlot library.

Continue reading “Boxplot renderer plugin for jqPlot”

PHP Tip: Binding variables in a SQL WHERE IN clause

Have you ever wondered if it is possible to bind an unknown amount of variables in a SQL WHERE IN clause, e.g.:

SELECT id, text FROM myTable WHERE id IN (:myId1, :myId2, myId3, ...)

Use a OCI collection object and wonder no more:

$keyList = array(100, 250, 350);
$stmt = oci_parse($cnn, "SELECT id, text FROM myTable WHERE id IN (SELECT column_value from table(:myIds))");
$coll = oci_new_collection($cnn, 'ODCIVARCHAR2LIST','SYS');
foreach ($keyList as $key) {
   $coll->append($key);
}
oci_bind_by_name($stmt, ':myIds', $coll, -1, OCI_B_NTY);
oci_execute($stmt);

while($row = oci_fetch_array($stmt, OCI_ASSOC)) {
    echo "{$row['ID']}, {$row['TEXT']}";
}

I found the above solution by ThinkJet on stackoverflow.

The dawn of the Nikon 300mm f/2.8

Great Grey Owl (Strix nebulosa) in flight
A flying female Great Grey Owl (Strix nebulosa), which is wet from the rain. Nikon D800 with 300mm f/2.8, 1/3200s at f/3.2 and ISO 2500.

For a long time my Nikon lens 300mm f/2.8G ED VR II has been upstaged by the 600mm f/4G ED VR when photographing birds. But after a stupid tumble on my part which not only disabled its bigger 600mm sister, but also ripped some parts out of my camera D800 and completely destroyed the GPS, it was ready to shine.

All of the following pictures were taken with the Nikon D800 and the 300mm f/2.8 in Sweden, some in combination with the teleconverter TC 1.4 II.They are all at least 4000px wide.

Continue reading “The dawn of the Nikon 300mm f/2.8”

How to import c3.js with the dojo AMD loader

I came across the nice chart library c3.js, which is based on d3.js. In order to load it via an AMD require call with dojo, you also need to set the main property in the dojoConfig, e.g.:

dojoConfig = {
    packages: [
        { name: 'd3', location: '../../../d3', main: 'd3' }
        { name: 'c3', location: '../../../c3', main: 'c3' }
    ]
}

This will let you load c3.js in your module, e.g.:

define(['d3', 'c3', ...], function(d3, c3, ...) {
    ...
}
	

Best Vector Format to Import/Export in LibreOffice

Quip tip: When creating illustrations with LibreOffice Draw I found the format “Star View Metafile (SVM)” to be the best choice for re-import in LibreOffice Writer.

How to use Google Maps API with Dojo and AMD

If you are using AMD or RequireJS for your JavaScripts and you would also like to use the Google Maps JavaScript API you have a problem. You can’t just require in the script file and then access the google.maps object from within your script, e.g.:

require(['http://maps.googleapis.com/maps/api/js?client=YOUR_CLIENT_ID'], function() {
    var myMap = new google.maps.Map(mapDiv, mapOptions);
}

This doesn’t work because the map script itself loads another script, which might not have been loaded yet, when you access the google.maps.Map object.

But fortunately, there is a neat loader module by Corey Alix, which solves the problem:

Continue reading “How to use Google Maps API with Dojo and AMD”

List of Bird Species from Trip up to Rewa Head

Last year I traveled up to the Rewa River Head in Guyana. On the month long journey I was able to identify the following 104 bird species with the help of our guides:

Continue reading “List of Bird Species from Trip up to Rewa Head”