I’m proficient in Angular.js according to PluralSight (tl;dr – I’m not)
February 25, 2018
I know that this kind of thing is very subjective – but I took some online tests to see how I would perform. I particularly enjoyed
TestDome which involves live coding. It’s a challenge doing something against the clock – even when all of the usual lookups and documentation are available. These tests were not easy. There is enough time to look up specific references or syntax – but you have to know what to look up. That seems fairly real world.
Meanwhile – I found out about
PluralSight via their tie-in with StackOverflow. I have been following various of their ‘paths’ (courses) recently as a way of consolidating / structuring / revising some of what I know – and learning some new stuff. The courses seem mostly very good.
But I was less sure about their testing. The first surprise was when I scored ‘Proficient’ on
Angular.js. I got a badge. Yay! Ok – so it’s a
Design Patterns which helped. But I haven’t ever used
Angular.js so far and I am definitely not proficient. I just tried to choose feasible answers.
These are multiple choice tests against the clock. There is no time to Google the answers. But if you read the questions carefully and have a good general knowledge of web technologies in general then many of the answers will come. You can have two goes at the tests – but you’ll get different questions.
I wasn’t surprised to do ok at the
jQuery test – or that I scored relatively low on
CSS. I always have to refer the documentation for CSS – even though I have used it a lot. But I was definitely surprised to score higher on
node.js than on
node.js locally as a test environment. I am definitely much more familiar with regular
And apparently I’m an ‘Expert’ with MySQL. In reality I’m a competent beginner and I get stuff done by reading the documentation or carefully looking at
Stack Overflow answers. I’m actually quite weak on using SQL in general – although I have no doubt that I would be quickly up to speed if that was what I was doing every day.
My other proficiencies apparently include
React, ‘Security For Hackers & Developers’ and
ASP.NET MVC5. In reality I know about the same re
React as I know about
AngularJS. And I haven’t written any
C++ for maybe 20 years. I would have to start again with that. I currently know very little about the world of Microsoft solutions in general (things have moved on a bit since I was programming Visual Basic). I’m just not ‘Proficient’ in all of these technologies. I wish that I were. And everything I know about security is from recipes, checklists and podcasts.
Sulby Theme Slider
February 23, 2018
I built this simple slider for my standalone
In several past projects we used a well known third-party slider. Now I wanted something more minimal, lightweight and extensible. If we want to change the look and feel then we can do that that in CSS. If we want different functionality then let’s do it in the code. It’s much simpler than trying to work out how to achieve a result via a convoluted plugin interface or restrictive settings.
The PHP creates a WordPress Shortcode. The WordPress Shortcode API can be used to create macros which can be added to a Post or a Page – or to a PHP template using the
do_shortcode() function. Eg the slider shown here is added like this:
[insertSulbySlider images=1005,992,1003,1002,993 message-title="Slider Demo" message-body="stock images from my legacy portfolio at Getty Images & iStockPhoto" slider-caption="Bunhill / Getty Images" slider-caption-link="https://www.gettyimages.com/search/photographer?excludenudity=true&family=creative&phrase=bunhill&photographer=bunhill&sort=best" delay=8 aspect-padding=56.25 header-bool=false]
The images are added by ID. The
$custom_aspect variable allows me to specify the aspect ratio of the slider. The TL;DR:
eg – 100 = 1:1 / 75 = 4:3 / 66.66 = 3:2 / 56.25 = 16:9
We need to be able to specify the aspect ratio every time. The slider is a div background image but there is not currently a way in CSS to set
height such that it is dynamically proportional to
calc only works with
width to 100% and
height to 0 (in the CSS). Then use padding-top as a percentage. The method is described here at w3schools.com.
$header_bool variable flags a specific exception – if the slider is at the top of the page then it wants to be approaching full height relative to the device or browser window –
$custom_aspect variable is effectively ignored.
Each slider needs a unique #ID – because elements must be unique per page and potentially we may have more than one slider per page with different properties. That means naming them dynamically. PHP’s
uniqid() is a perfectly adequate solution here.
February 9, 2018
node.js & npm. Install node.js locally using the pkg. The npm package manager is installed as part of that. We then use npm to install ESLint globally (
sudo npm install -g eslint).
eslint --init from the root directory of any project where you want to use ESLint to validate the code. That will create a project specific configuration file.
Google Maps: from XML with Marker Clustering
January 2, 2018
This is something I was working on recently. We wanted to use Google Maps to show the location of the client’s many distributors and agents. And we wanted to implement
marker clustering. You can use the
I have defined the markers as XML elements with properties defined as attributes. Apart from latitude and longitude – the other properties define how I have chosen to implement the
Info Windows – what a user sees when they click on a marker. In this example simply the business name, address and telephone number. But an Info Window can potentially provide much more detailed or layered information. Obviously in a real implementation of this example the name and address info would be different for each marker:
... <marker name="Business Name" address="Street Address Line 1, Street Addresss Line 2, City, Country, Code" tel="+XX 123 456 7890" lat="-36.7624557" lng="144.2874504" /><marker name="Business Name" address="Street Address Line 1, Street Addresss Line 2, City, Country, Code" tel="+XX 123 456 7890" lat="51.555386" lng="5.082930000000033" /><marker name="Business Name" address="Street Address Line 1, Street Addresss Line 2, City, Country, Code" tel="+XX 123 456 7890" lat="51.2164861" lng="4.4046062" /> ...
I am using the browser’s
HTML5 Geolocation feature to attempt to locate the user on the map. That’s going to be confusing if your corporate network is routed through another jurisdiction. The user will be asked to allow the site to use their position. NB: Browsers including Chrome no longer support obtaining the user’s location using the HTML5 Geolocation API from pages delivered by non-secure connections. This means that the page making the Geolocation API call must be served from a secure context – eg HTTPS.
In this example I have implemented the map using the
WordPress Shortcode API. We can simply add
[insertSulbyMap] to the page or post where we want it. But it could equally be contained as a plugin or coded into a PHP template (which is how I did it in the version we built for the client).
The takeaway from this, for me, was that it was simple to code my own implementation using the Google documentation. Better than being an additional third party dependency by using a commercial plugin. Google already make it easy.