<?xml version="1.0" encoding="UTF-8"?><rss version="2.0"
	xmlns:content="http://purl.org/rss/1.0/modules/content/"
	xmlns:wfw="http://wellformedweb.org/CommentAPI/"
	xmlns:dc="http://purl.org/dc/elements/1.1/"
	xmlns:atom="http://www.w3.org/2005/Atom"
	xmlns:sy="http://purl.org/rss/1.0/modules/syndication/"
	xmlns:slash="http://purl.org/rss/1.0/modules/slash/"
	>

<channel>
	<title>Richard Archives | Bairwell PHP and WordPress Development</title>
	<atom:link href="https://www.bairwell.com/project_category/websites-by-richard/feed/" rel="self" type="application/rss+xml" />
	<link>https://www.bairwell.com/project_category/websites-by-richard/</link>
	<description>WordPress and PHP development services</description>
	<lastBuildDate>Thu, 21 Sep 2017 12:54:44 +0000</lastBuildDate>
	<language>en-GB</language>
	<sy:updatePeriod>
	hourly	</sy:updatePeriod>
	<sy:updateFrequency>
	1	</sy:updateFrequency>
	<generator>https://wordpress.org/?v=6.8.5</generator>

<image>
	<url>https://www.bairwell.com/wp-content/uploads/2017/02/bairwell.png</url>
	<title>Richard Archives | Bairwell PHP and WordPress Development</title>
	<link>https://www.bairwell.com/project_category/websites-by-richard/</link>
	<width>32</width>
	<height>32</height>
</image> 
	<item>
		<title>Inspector Gadget</title>
		<link>https://www.bairwell.com/project/inspector-gadget/</link>
		
		<dc:creator><![CDATA[Richard Bairwell]]></dc:creator>
		<pubDate>Wed, 28 Jun 2017 11:35:57 +0000</pubDate>
				<guid isPermaLink="false">https://www.bairwell.com/?post_type=project&#038;p=605</guid>

					<description><![CDATA[<p>The post <a href="https://www.bairwell.com/project/inspector-gadget/">Inspector Gadget</a> appeared first on <a href="https://www.bairwell.com">Bairwell PHP and WordPress Development</a>.</p>
]]></description>
										<content:encoded><![CDATA[<p><div class="et_pb_section et_pb_section_0 et_section_regular" >
				
				
				
				
				
				
				<div class="et_pb_row et_pb_row_0">
				<div class="et_pb_column et_pb_column_4_4 et_pb_column_0  et_pb_css_mix_blend_mode_passthrough et-last-child">
				
				
				
				
				<div class="et_pb_module et_pb_post_title et_pb_post_title_0 et_pb_bg_layout_dark  et_pb_text_align_left"   >
				
				
				
				
				
				<div class="et_pb_title_container">
					<h1 class="entry-title">Inspector Gadget</h1>
				</div>
				
			</div><div class="et_pb_module et_pb_text et_pb_text_0  et_pb_text_align_left et_pb_bg_layout_dark">
				
				
				
				
				<div class="et_pb_text_inner"> Inspector Gadget allowed text, image and element highlighting of web pages. </div>
			</div>
			</div>
				
				
				
				
			</div><div class="et_pb_row et_pb_row_1">
				<div class="et_pb_column et_pb_column_1_3 et_pb_column_1  et_pb_css_mix_blend_mode_passthrough">
				
				
				
				
				<div class="et_pb_module et_pb_gallery et_pb_gallery_0  et_pb_bg_layout_light et_pb_slider et_pb_gallery_fullwidth et_slider_auto et_slider_speed_2500 clearfix">
				<div class="et_pb_gallery_items et_post_gallery clearfix" data-per_page="4"><div class="et_pb_gallery_item et_pb_bg_layout_light et_pb_gallery_item_0_0">
				<div class='et_pb_gallery_image landscape'>
					<a href="https://www.bairwell.com/wp-content/uploads/2017/07/inspectorGadget3.png" title="inspectorGadget3">
					<img fetchpriority="high" decoding="async" width="2274" height="1340" src="https://www.bairwell.com/wp-content/uploads/2017/07/inspectorGadget3.png" class="wp-image-607" />
					
				</a>
				</div></div><div class="et_pb_gallery_item et_pb_bg_layout_light et_pb_gallery_item_0_1">
				<div class='et_pb_gallery_image landscape'>
					<a href="https://www.bairwell.com/wp-content/uploads/2017/07/inspectorGadget.png" title="inspectorGadget">
					<img loading="lazy" decoding="async" width="2252" height="1104" src="https://www.bairwell.com/wp-content/uploads/2017/07/inspectorGadget.png" class="wp-image-606" />
					
				</a>
				</div></div><div class="et_pb_gallery_item et_pb_bg_layout_light et_pb_gallery_item_0_2">
				<div class='et_pb_gallery_image landscape'>
					<a href="https://www.bairwell.com/wp-content/uploads/2017/07/inspectorgadget2.png" title="inspectorgadget2">
					<img loading="lazy" decoding="async" width="2268" height="1440" src="https://www.bairwell.com/wp-content/uploads/2017/07/inspectorgadget2.png" class="wp-image-608" />
					
				</a>
				</div></div></div></div>
			</div><div class="et_pb_column et_pb_column_2_3 et_pb_column_2  et_pb_css_mix_blend_mode_passthrough et-last-child">
				
				
				
				
				<div class="et_pb_module et_pb_text et_pb_text_1  et_pb_text_align_left et_pb_bg_layout_light">
				
				
				
				
				<div class="et_pb_text_inner"><p>An ECMAScript 6 (Javascript) based text, element and node highlighter &#8211; this base project allowed for certain criteria to be passed to the script and it would then highlight the relevant sections in supplied HTML pages. Multiple highlights were allowed per page (and item), tool tips were automatically added and users could click on the relevant highlighted sections to be returned to the reason of highlighting.</p>
<p><strong>Example usage:</strong><br />
Highlight Text starting `this` exactly 31 characters long as a `Grammar` test with a tool tip of `Exactly 31 characters long`:<br />
<code><br />
"test": "Grammar",<br />
"status": "unconfirmed",<br />
"title": "Check this grammar",<br />
"tooltip": "Exactly 31 characters long",<br />
"highlight": {<br />
"regexp":"this.*",<br />
"minLength":30,<br />
"maxLength":32<br />
}<br />
</code></p>
<p>All links going to example.com (http or https)<br />
<code><br />
"highlight": {<br />
"querySelector": "a[href=\"http://example.com/\"],a[href=\"https://example.com/\"]"<br />
}<br />
</code></p>
<p>All links with the text &#8220;sixth&#8221;<br />
<code><br />
"highlight": {<br />
"querySelector": "a[href]",<br />
"word":"Sixth"<br />
}<br />
</code></p>
<p>Bad capitalization of Facebook:<br />
<code><br />
"highlight":[<br />
{<br />
"word":["facebook","faceBook","FaceBook","Face-book","face-book","Face-book"],<br />
"caseSensitive":"true"<br />
},<br />
{<br />
"querySelector": "img[alt=\"facebook\"]"<br />
},<br />
{<br />
"querySelector": "img[alt=\"face-book\"]"<br />
},<br />
{<br />
"querySelector": "a[href*=\"face-book.com\"]"<br />
}<br />
]<br />
},<br />
</code></p></div>
			</div>
			</div>
				
				
				
				
			</div><div class="et_pb_row et_pb_row_2">
				<div class="et_pb_column et_pb_column_1_4 et_pb_column_3  et_pb_css_mix_blend_mode_passthrough">
				
				
				
				
				<div class="et_pb_module et_pb_blurb et_pb_blurb_0  et_pb_text_align_center  et_pb_blurb_position_top et_pb_bg_layout_light">
				
				
				
				
				<div class="et_pb_blurb_content">
					<div class="et_pb_main_blurb_image"><span class="et_pb_image_wrap"><span class="et-waypoint et_pb_animation_off et_pb_animation_off_tablet et_pb_animation_off_phone et-pb-icon et-pb-icon-circle">&#xe023;</span></span></div>
					<div class="et_pb_blurb_container">
						<h4 class="et_pb_module_header"><span>Date</span></h4>
						<div class="et_pb_blurb_description"> June 2017 </div>
					</div>
				</div>
			</div>
			</div><div class="et_pb_column et_pb_column_1_4 et_pb_column_4  et_pb_css_mix_blend_mode_passthrough et_pb_column_empty">
				
				
				
				
				
			</div><div class="et_pb_column et_pb_column_1_4 et_pb_column_5  et_pb_css_mix_blend_mode_passthrough">
				
				
				
				
				<div class="et_pb_module et_pb_blurb et_pb_blurb_1  et_pb_text_align_center  et_pb_blurb_position_top et_pb_bg_layout_light">
				
				
				
				
				<div class="et_pb_blurb_content">
					<div class="et_pb_main_blurb_image"><span class="et_pb_image_wrap"><span class="et-waypoint et_pb_animation_off et_pb_animation_off_tablet et_pb_animation_off_phone et-pb-icon et-pb-icon-circle">&#xe101;</span></span></div>
					<div class="et_pb_blurb_container">
						<h4 class="et_pb_module_header"><span>Technologies</span></h4>
						<div class="et_pb_blurb_description"> Javascript </div>
					</div>
				</div>
			</div>
			</div><div class="et_pb_column et_pb_column_1_4 et_pb_column_6  et_pb_css_mix_blend_mode_passthrough et-last-child et_pb_column_empty">
				
				
				
				
				
			</div>
				
				
				
				
			</div>
				
				
			</div><div class="et_pb_section et_pb_section_1 et_section_regular" >
				
				
				
				
				
				
				<div class="et_pb_row et_pb_row_3">
				<div class="et_pb_column et_pb_column_4_4 et_pb_column_7  et_pb_css_mix_blend_mode_passthrough et-last-child">
				
				
				
				
				<div class="et_pb_module et_pb_cta_0 et_hover_enabled et_pb_promo  et_pb_text_align_center et_pb_bg_layout_dark">
				
				
				
				
				<div class="et_pb_promo_description"><h2 class="et_pb_module_header">Want us to build or design your site?</h2></div>
				<div class="et_pb_button_wrapper"><a class="et_pb_button et_pb_promo_button" href="/contact-us/">Get in touch!</a></div>
			</div>
			</div>
				
				
				
				
			</div>
				
				
			</div></p>
<p>The post <a href="https://www.bairwell.com/project/inspector-gadget/">Inspector Gadget</a> appeared first on <a href="https://www.bairwell.com">Bairwell PHP and WordPress Development</a>.</p>
]]></content:encoded>
					
		
		
			</item>
		<item>
		<title>Chrome Headless Driver</title>
		<link>https://www.bairwell.com/project/chrome-headless-driver/</link>
		
		<dc:creator><![CDATA[Richard Bairwell]]></dc:creator>
		<pubDate>Sun, 28 May 2017 15:43:30 +0000</pubDate>
				<guid isPermaLink="false">https://www.bairwell.com/?post_type=project&#038;p=610</guid>

					<description><![CDATA[<p>The post <a href="https://www.bairwell.com/project/chrome-headless-driver/">Chrome Headless Driver</a> appeared first on <a href="https://www.bairwell.com">Bairwell PHP and WordPress Development</a>.</p>
]]></description>
										<content:encoded><![CDATA[<p><div class="et_pb_section et_pb_section_2 et_section_regular" >
				
				
				
				
				
				
				<div class="et_pb_row et_pb_row_4">
				<div class="et_pb_column et_pb_column_4_4 et_pb_column_8  et_pb_css_mix_blend_mode_passthrough et-last-child">
				
				
				
				
				<div class="et_pb_module et_pb_post_title et_pb_post_title_1 et_pb_bg_layout_dark  et_pb_text_align_left"   >
				
				
				
				
				
				<div class="et_pb_title_container">
					<h1 class="entry-title">Chrome Headless Driver</h1>
				</div>
				
			</div><div class="et_pb_module et_pb_text et_pb_text_2  et_pb_text_align_left et_pb_bg_layout_dark">
				
				
				
				
				<div class="et_pb_text_inner"><p>Using Chrome Dev Tools with Node JS to emulate user interactions on a web page and extract the data, screenshots and page source.</p></div>
			</div>
			</div>
				
				
				
				
			</div><div class="et_pb_row et_pb_row_5">
				<div class="et_pb_column et_pb_column_1_3 et_pb_column_9  et_pb_css_mix_blend_mode_passthrough">
				
				
				
				
				<div class="et_pb_module et_pb_gallery et_pb_gallery_1  et_pb_bg_layout_light et_pb_slider et_pb_gallery_fullwidth et_slider_auto et_slider_speed_2500 clearfix">
				<div class="et_pb_gallery_items et_post_gallery clearfix" data-per_page="4"><div class="et_pb_gallery_item et_pb_bg_layout_light et_pb_gallery_item_1_0">
				<div class='et_pb_gallery_image landscape'>
					<a href="https://www.bairwell.com/wp-content/uploads/2017/07/propulsion5.png" title="propulsion5">
					<img loading="lazy" decoding="async" width="2290" height="1464" src="https://www.bairwell.com/wp-content/uploads/2017/07/propulsion5.png" class="wp-image-611" />
					
				</a>
				</div></div><div class="et_pb_gallery_item et_pb_bg_layout_light et_pb_gallery_item_1_1">
				<div class='et_pb_gallery_image landscape'>
					<a href="https://www.bairwell.com/wp-content/uploads/2017/07/propulsion4.png" title="propulsion4">
					<img loading="lazy" decoding="async" width="2298" height="1470" src="https://www.bairwell.com/wp-content/uploads/2017/07/propulsion4.png" class="wp-image-612" />
					
				</a>
				</div></div><div class="et_pb_gallery_item et_pb_bg_layout_light et_pb_gallery_item_1_2">
				<div class='et_pb_gallery_image landscape'>
					<a href="https://www.bairwell.com/wp-content/uploads/2017/07/propulsion3.png" title="propulsion3">
					<img loading="lazy" decoding="async" width="2300" height="1458" src="https://www.bairwell.com/wp-content/uploads/2017/07/propulsion3.png" class="wp-image-613" />
					
				</a>
				</div></div><div class="et_pb_gallery_item et_pb_bg_layout_light et_pb_gallery_item_1_3">
				<div class='et_pb_gallery_image landscape'>
					<a href="https://www.bairwell.com/wp-content/uploads/2017/07/propulsion2.png" title="propulsion2">
					<img loading="lazy" decoding="async" width="2304" height="1458" src="https://www.bairwell.com/wp-content/uploads/2017/07/propulsion2.png" class="wp-image-614" />
					
				</a>
				</div></div><div class="et_pb_gallery_item et_pb_bg_layout_light et_pb_gallery_item_1_4">
				<div class='et_pb_gallery_image landscape'>
					<a href="https://www.bairwell.com/wp-content/uploads/2017/07/propulsion1.png" title="propulsion1">
					<img loading="lazy" decoding="async" width="2292" height="1428" src="https://www.bairwell.com/wp-content/uploads/2017/07/propulsion1.png" class="wp-image-615" />
					
				</a>
				</div></div></div></div>
			</div><div class="et_pb_column et_pb_column_2_3 et_pb_column_10  et_pb_css_mix_blend_mode_passthrough et-last-child">
				
				
				
				
				<div class="et_pb_module et_pb_text et_pb_text_3  et_pb_text_align_left et_pb_bg_layout_light">
				
				
				
				
				<div class="et_pb_text_inner"><p>A client had the requirement that they wanted to be able to capture screenshots of web pages, emulate user interactions (such as scrolling, key presses and mouse interactions), record all images and other assets transferred and have all the data returned to a PHP backend.</p>
<p>For this end, an approach to use NodeJS with the Google Chrome Headless web driver kit was made ( a previous incarnation of the project was using PhantomJS) with excellent results.</p></div>
			</div>
			</div>
				
				
				
				
			</div><div class="et_pb_row et_pb_row_6">
				<div class="et_pb_column et_pb_column_1_4 et_pb_column_11  et_pb_css_mix_blend_mode_passthrough">
				
				
				
				
				<div class="et_pb_module et_pb_blurb et_pb_blurb_2  et_pb_text_align_center  et_pb_blurb_position_top et_pb_bg_layout_light">
				
				
				
				
				<div class="et_pb_blurb_content">
					<div class="et_pb_main_blurb_image"><span class="et_pb_image_wrap"><span class="et-waypoint et_pb_animation_off et_pb_animation_off_tablet et_pb_animation_off_phone et-pb-icon et-pb-icon-circle">&#xe023;</span></span></div>
					<div class="et_pb_blurb_container">
						<h4 class="et_pb_module_header"><span>Date</span></h4>
						<div class="et_pb_blurb_description"><p>May 2017</p></div>
					</div>
				</div>
			</div>
			</div><div class="et_pb_column et_pb_column_1_4 et_pb_column_12  et_pb_css_mix_blend_mode_passthrough et_pb_column_empty">
				
				
				
				
				
			</div><div class="et_pb_column et_pb_column_1_4 et_pb_column_13  et_pb_css_mix_blend_mode_passthrough">
				
				
				
				
				<div class="et_pb_module et_pb_blurb et_pb_blurb_3  et_pb_text_align_center  et_pb_blurb_position_top et_pb_bg_layout_light">
				
				
				
				
				<div class="et_pb_blurb_content">
					<div class="et_pb_main_blurb_image"><span class="et_pb_image_wrap"><span class="et-waypoint et_pb_animation_off et_pb_animation_off_tablet et_pb_animation_off_phone et-pb-icon et-pb-icon-circle">&#xe101;</span></span></div>
					<div class="et_pb_blurb_container">
						<h4 class="et_pb_module_header"><span>Technologies</span></h4>
						<div class="et_pb_blurb_description"><p>Chrome Headless</p>
<p>NodeJS</p></div>
					</div>
				</div>
			</div>
			</div><div class="et_pb_column et_pb_column_1_4 et_pb_column_14  et_pb_css_mix_blend_mode_passthrough et-last-child et_pb_column_empty">
				
				
				
				
				
			</div>
				
				
				
				
			</div>
				
				
			</div><div class="et_pb_section et_pb_section_3 et_section_regular" >
				
				
				
				
				
				
				<div class="et_pb_row et_pb_row_7">
				<div class="et_pb_column et_pb_column_4_4 et_pb_column_15  et_pb_css_mix_blend_mode_passthrough et-last-child">
				
				
				
				
				<div class="et_pb_module et_pb_cta_1 et_hover_enabled et_pb_promo  et_pb_text_align_center et_pb_bg_layout_dark">
				
				
				
				
				<div class="et_pb_promo_description"><h2 class="et_pb_module_header">Want us to build or design your site?</h2></div>
				<div class="et_pb_button_wrapper"><a class="et_pb_button et_pb_promo_button" href="/contact-us/">Get in touch!</a></div>
			</div>
			</div>
				
				
				
				
			</div>
				
				
			</div></p>
<p>The post <a href="https://www.bairwell.com/project/chrome-headless-driver/">Chrome Headless Driver</a> appeared first on <a href="https://www.bairwell.com">Bairwell PHP and WordPress Development</a>.</p>
]]></content:encoded>
					
		
		
			</item>
		<item>
		<title>Open Source &#8211; Emoji Calculator</title>
		<link>https://www.bairwell.com/project/emoji-calculator/</link>
		
		<dc:creator><![CDATA[Richard Bairwell]]></dc:creator>
		<pubDate>Sun, 29 Jan 2017 15:13:39 +0000</pubDate>
				<guid isPermaLink="false">https://www.bairwell.com/?post_type=project&#038;p=336</guid>

					<description><![CDATA[<p>The post <a href="https://www.bairwell.com/project/emoji-calculator/">Open Source &#8211; Emoji Calculator</a> appeared first on <a href="https://www.bairwell.com">Bairwell PHP and WordPress Development</a>.</p>
]]></description>
										<content:encoded><![CDATA[<p><div class="et_pb_section et_pb_section_4 et_section_regular" >
				
				
				
				
				
				
				<div class="et_pb_row et_pb_row_8">
				<div class="et_pb_column et_pb_column_4_4 et_pb_column_16  et_pb_css_mix_blend_mode_passthrough et-last-child">
				
				
				
				
				<div class="et_pb_module et_pb_post_title et_pb_post_title_2 et_pb_bg_layout_dark  et_pb_text_align_left"   >
				
				
				
				
				
				<div class="et_pb_title_container">
					<h1 class="entry-title">Open Source &#8211; Emoji Calculator</h1>
				</div>
				
			</div><div class="et_pb_module et_pb_text et_pb_text_4  et_pb_text_align_left et_pb_bg_layout_dark">
				
				
				
				
				<div class="et_pb_text_inner"> Want to calculate with Emoji instead of the tried and tested traditional +, -, divide and multiply signs? Why&#8230; </div>
			</div>
			</div>
				
				
				
				
			</div><div class="et_pb_row et_pb_row_9">
				<div class="et_pb_column et_pb_column_1_3 et_pb_column_17  et_pb_css_mix_blend_mode_passthrough">
				
				
				
				
				<div class="et_pb_module et_pb_image et_pb_image_0">
				
				
				
				
				<span class="et_pb_image_wrap "><img loading="lazy" decoding="async" width="922" height="394" src="https://www.bairwell.com/wp-content/uploads/2017/02/emojicalculator.jpg" alt="" title="" class="wp-image-337" /></span>
			</div><div class="et_pb_button_module_wrapper et_pb_button_0_wrapper et_pb_button_alignment_center et_pb_module ">
				<a class="et_pb_button et_pb_button_0 et_hover_enabled et_pb_bg_layout_light" href="https://github.com/bairwell/emojicalc" target="_blank">Download Emoji Calc</a>
			</div>
			</div><div class="et_pb_column et_pb_column_2_3 et_pb_column_18  et_pb_css_mix_blend_mode_passthrough et-last-child">
				
				
				
				
				<div class="et_pb_module et_pb_text et_pb_text_5  et_pb_text_align_left et_pb_bg_layout_light">
				
				
				
				
				<div class="et_pb_text_inner"> As a proof-of-concept, we were asked to come up with a &#8220;simple web based emoji calculator&#8221; (where the operators were emoji characters/symbols instead of the traditional +, &#8211; etc signs). The condition is that, apart from the frontend (powered by jQuery and Bootstrap), all of the code had to be developed by us &#8211; so this meant no using frameworks (such as Slim or Silex) or third party code. It also had to show quite a large degree of &#8220;best practice&#8221; usages: oh, and it had to be written within 4 hours: making what would be a very simple quick project into one that took the whole four hours to write a PSR-7 style &#8220;request/response&#8221; system, with MVC pattern usage, a container (following the PSR-11 container-interop style) and routing. After this we spent a few hours writing lots of unit tests for it and generally bringing it up to an even higher standard. </div>
			</div>
			</div>
				
				
				
				
			</div><div class="et_pb_row et_pb_row_10">
				<div class="et_pb_column et_pb_column_1_4 et_pb_column_19  et_pb_css_mix_blend_mode_passthrough">
				
				
				
				
				<div class="et_pb_module et_pb_blurb et_pb_blurb_4  et_pb_text_align_center  et_pb_blurb_position_top et_pb_bg_layout_light">
				
				
				
				
				<div class="et_pb_blurb_content">
					<div class="et_pb_main_blurb_image"><span class="et_pb_image_wrap"><span class="et-waypoint et_pb_animation_off et_pb_animation_off_tablet et_pb_animation_off_phone et-pb-icon et-pb-icon-circle">&#xe023;</span></span></div>
					<div class="et_pb_blurb_container">
						<h4 class="et_pb_module_header"><span>Date</span></h4>
						<div class="et_pb_blurb_description"> January 2017 </div>
					</div>
				</div>
			</div>
			</div><div class="et_pb_column et_pb_column_1_4 et_pb_column_20  et_pb_css_mix_blend_mode_passthrough">
				
				
				
				
				<div class="et_pb_module et_pb_blurb et_pb_blurb_5  et_pb_text_align_center  et_pb_blurb_position_top et_pb_bg_layout_light">
				
				
				
				
				<div class="et_pb_blurb_content">
					<div class="et_pb_main_blurb_image"><span class="et_pb_image_wrap"><span class="et-waypoint et_pb_animation_off et_pb_animation_off_tablet et_pb_animation_off_phone et-pb-icon et-pb-icon-circle">&#xe100;</span></span></div>
					<div class="et_pb_blurb_container">
						<h4 class="et_pb_module_header"><span>Budget</span></h4>
						<div class="et_pb_blurb_description"> £200-£500 </div>
					</div>
				</div>
			</div>
			</div><div class="et_pb_column et_pb_column_1_4 et_pb_column_21  et_pb_css_mix_blend_mode_passthrough">
				
				
				
				
				<div class="et_pb_module et_pb_blurb et_pb_blurb_6  et_pb_text_align_center  et_pb_blurb_position_top et_pb_bg_layout_light">
				
				
				
				
				<div class="et_pb_blurb_content">
					<div class="et_pb_main_blurb_image"><span class="et_pb_image_wrap"><span class="et-waypoint et_pb_animation_off et_pb_animation_off_tablet et_pb_animation_off_phone et-pb-icon et-pb-icon-circle">&#xe101;</span></span></div>
					<div class="et_pb_blurb_container">
						<h4 class="et_pb_module_header"><span>Technologies</span></h4>
						<div class="et_pb_blurb_description"> PHP </div>
					</div>
				</div>
			</div>
			</div><div class="et_pb_column et_pb_column_1_4 et_pb_column_22  et_pb_css_mix_blend_mode_passthrough et-last-child et_pb_column_empty">
				
				
				
				
				
			</div>
				
				
				
				
			</div>
				
				
			</div><div class="et_pb_section et_pb_section_5 et_section_regular" >
				
				
				
				
				
				
				<div class="et_pb_row et_pb_row_11">
				<div class="et_pb_column et_pb_column_4_4 et_pb_column_23  et_pb_css_mix_blend_mode_passthrough et-last-child">
				
				
				
				
				<div class="et_pb_module et_pb_cta_2 et_hover_enabled et_pb_promo  et_pb_text_align_center et_pb_bg_layout_dark">
				
				
				
				
				<div class="et_pb_promo_description"><h2 class="et_pb_module_header">Please don't ask us to make an Emoji calculator again.</h2><div> </div></div>
				<div class="et_pb_button_wrapper"><a class="et_pb_button et_pb_promo_button" href="/contact-us/">Get in touch if you want something else built though!</a></div>
			</div>
			</div>
				
				
				
				
			</div>
				
				
			</div></p>
<p>The post <a href="https://www.bairwell.com/project/emoji-calculator/">Open Source &#8211; Emoji Calculator</a> appeared first on <a href="https://www.bairwell.com">Bairwell PHP and WordPress Development</a>.</p>
]]></content:encoded>
					
		
		
			</item>
		<item>
		<title>Comprobo &#8211; Facial Comparison</title>
		<link>https://www.bairwell.com/project/comprobo-facial-comparison/</link>
		
		<dc:creator><![CDATA[Richard Bairwell]]></dc:creator>
		<pubDate>Wed, 14 Sep 2016 11:42:52 +0000</pubDate>
				<guid isPermaLink="false">https://www.bairwell.com/?post_type=project&#038;p=309</guid>

					<description><![CDATA[<p>The post <a href="https://www.bairwell.com/project/comprobo-facial-comparison/">Comprobo &#8211; Facial Comparison</a> appeared first on <a href="https://www.bairwell.com">Bairwell PHP and WordPress Development</a>.</p>
]]></description>
										<content:encoded><![CDATA[<p><div class="et_pb_section et_pb_section_6 et_section_regular" >
				
				
				
				
				
				
				<div class="et_pb_row et_pb_row_12">
				<div class="et_pb_column et_pb_column_4_4 et_pb_column_24  et_pb_css_mix_blend_mode_passthrough et-last-child">
				
				
				
				
				<div class="et_pb_module et_pb_post_title et_pb_post_title_3 et_pb_bg_layout_dark  et_pb_text_align_left"   >
				
				
				
				
				
				<div class="et_pb_title_container">
					<h1 class="entry-title">Comprobo &#8211; Facial Comparison</h1>
				</div>
				
			</div><div class="et_pb_module et_pb_text et_pb_text_6  et_pb_text_align_left et_pb_bg_layout_dark">
				
				
				
				
				<div class="et_pb_text_inner"><p>With Facial Detection working, there was then a need to actually see if two faces were of the same person.</p></div>
			</div>
			</div>
				
				
				
				
			</div><div class="et_pb_row et_pb_row_13">
				<div class="et_pb_column et_pb_column_1_3 et_pb_column_25  et_pb_css_mix_blend_mode_passthrough">
				
				
				
				
				<div class="et_pb_module et_pb_image et_pb_image_1">
				
				
				
				
				<span class="et_pb_image_wrap "><img loading="lazy" decoding="async" width="1466" height="839" src="https://www.bairwell.com/wp-content/uploads/2017/02/facial_comparison.jpg" alt="" title="" class="wp-image-310" /></span>
			</div>
			</div><div class="et_pb_column et_pb_column_2_3 et_pb_column_26  et_pb_css_mix_blend_mode_passthrough et-last-child">
				
				
				
				
				<div class="et_pb_module et_pb_text et_pb_text_7  et_pb_text_align_left et_pb_bg_layout_light">
				
				
				
				
				<div class="et_pb_text_inner"><p>Once Comprobo had their facial detection system in place (also developed by Bairwell), they then wanted a way of being able to compare two faces to each other an receive back a &#8220;match confidence&#8221; as to how identical they were.</p>
<p>This information needed to be &#8220;called back&#8221; to the main Java based workflow system using a JSON API, but also be available for simple testing on a &#8220;test harness&#8221; &#8211; necessitating a simple front end.</p>
<p>Using OpenBr (also known as OpenBiometrics) and some C++ code in the background, we developed a Slim3 Framework driven PHP application to handle the input and output of the data.</p></div>
			</div>
			</div>
				
				
				
				
			</div><div class="et_pb_row et_pb_row_14">
				<div class="et_pb_column et_pb_column_1_4 et_pb_column_27  et_pb_css_mix_blend_mode_passthrough">
				
				
				
				
				<div class="et_pb_module et_pb_blurb et_pb_blurb_7  et_pb_text_align_center  et_pb_blurb_position_top et_pb_bg_layout_light">
				
				
				
				
				<div class="et_pb_blurb_content">
					<div class="et_pb_main_blurb_image"><span class="et_pb_image_wrap"><span class="et-waypoint et_pb_animation_off et_pb_animation_off_tablet et_pb_animation_off_phone et-pb-icon et-pb-icon-circle">&#xe023;</span></span></div>
					<div class="et_pb_blurb_container">
						<h4 class="et_pb_module_header"><span>Date</span></h4>
						<div class="et_pb_blurb_description"><p>September 2016</p></div>
					</div>
				</div>
			</div>
			</div><div class="et_pb_column et_pb_column_1_4 et_pb_column_28  et_pb_css_mix_blend_mode_passthrough et_pb_column_empty">
				
				
				
				
				
			</div><div class="et_pb_column et_pb_column_1_4 et_pb_column_29  et_pb_css_mix_blend_mode_passthrough">
				
				
				
				
				<div class="et_pb_module et_pb_blurb et_pb_blurb_8  et_pb_text_align_center  et_pb_blurb_position_top et_pb_bg_layout_light">
				
				
				
				
				<div class="et_pb_blurb_content">
					<div class="et_pb_main_blurb_image"><span class="et_pb_image_wrap"><span class="et-waypoint et_pb_animation_off et_pb_animation_off_tablet et_pb_animation_off_phone et-pb-icon et-pb-icon-circle">&#xe101;</span></span></div>
					<div class="et_pb_blurb_container">
						<h4 class="et_pb_module_header"><span>Technologies</span></h4>
						<div class="et_pb_blurb_description"><p>PHP (with Slim3 framework)</p>
<p>C/C++</p>
<p>OpenBR/OpenBiometrics</p>
<p>JSON API</p></div>
					</div>
				</div>
			</div>
			</div><div class="et_pb_column et_pb_column_1_4 et_pb_column_30  et_pb_css_mix_blend_mode_passthrough et-last-child et_pb_column_empty">
				
				
				
				
				
			</div>
				
				
				
				
			</div>
				
				
			</div><div class="et_pb_section et_pb_section_7 et_section_regular" >
				
				
				
				
				
				
				<div class="et_pb_row et_pb_row_15">
				<div class="et_pb_column et_pb_column_4_4 et_pb_column_31  et_pb_css_mix_blend_mode_passthrough et-last-child">
				
				
				
				
				<div class="et_pb_module et_pb_cta_3 et_hover_enabled et_pb_promo  et_pb_text_align_center et_pb_bg_layout_dark">
				
				
				
				
				<div class="et_pb_promo_description"><h2 class="et_pb_module_header">PHP or C++ development skills needed?</h2><div> </div></div>
				<div class="et_pb_button_wrapper"><a class="et_pb_button et_pb_promo_button" href="/contact-us/">Get in touch and C what we can do!</a></div>
			</div>
			</div>
				
				
				
				
			</div>
				
				
			</div></p>
<p>The post <a href="https://www.bairwell.com/project/comprobo-facial-comparison/">Comprobo &#8211; Facial Comparison</a> appeared first on <a href="https://www.bairwell.com">Bairwell PHP and WordPress Development</a>.</p>
]]></content:encoded>
					
		
		
			</item>
		<item>
		<title>Specification &#8211; High Availability Safety System</title>
		<link>https://www.bairwell.com/project/specification-high-availability-safety-system/</link>
		
		<dc:creator><![CDATA[Richard Bairwell]]></dc:creator>
		<pubDate>Sun, 21 Aug 2016 09:56:50 +0000</pubDate>
				<guid isPermaLink="false">https://www.bairwell.com/?post_type=project&#038;p=590</guid>

					<description><![CDATA[<p>The post <a href="https://www.bairwell.com/project/specification-high-availability-safety-system/">Specification &#8211; High Availability Safety System</a> appeared first on <a href="https://www.bairwell.com">Bairwell PHP and WordPress Development</a>.</p>
]]></description>
										<content:encoded><![CDATA[<p><div class="et_pb_section et_pb_section_8 et_section_regular" >
				
				
				
				
				
				
				<div class="et_pb_row et_pb_row_16">
				<div class="et_pb_column et_pb_column_4_4 et_pb_column_32  et_pb_css_mix_blend_mode_passthrough et-last-child">
				
				
				
				
				<div class="et_pb_module et_pb_post_title et_pb_post_title_4 et_pb_bg_layout_dark  et_pb_text_align_left"   >
				
				
				
				
				
				<div class="et_pb_title_container">
					<h1 class="entry-title">Specification &#8211; High Availability Safety System</h1>
				</div>
				
			</div><div class="et_pb_module et_pb_text et_pb_text_8  et_pb_text_align_left et_pb_bg_layout_dark">
				
				
				
				
				<div class="et_pb_text_inner"><p>A company approached us about a &#8220;safety product&#8221; they were providing which connected to servers in the event of a problem. They wanted a brief specification as to what a high availability system would look like for it.</p></div>
			</div>
			</div>
				
				
				
				
			</div><div class="et_pb_row et_pb_row_17">
				<div class="et_pb_column et_pb_column_1_3 et_pb_column_33  et_pb_css_mix_blend_mode_passthrough">
				
				
				
				
				<div class="et_pb_module et_pb_image et_pb_image_2">
				
				
				
				
				<span class="et_pb_image_wrap "><img loading="lazy" decoding="async" width="684" height="623" src="https://www.bairwell.com/wp-content/uploads/2017/04/peoplesafe.png" alt="" title="" class="wp-image-591" /></span>
			</div><div class="et_pb_button_module_wrapper et_pb_button_1_wrapper et_pb_button_alignment_center et_pb_module ">
				<a class="et_pb_button et_pb_button_1 et_hover_enabled et_pb_bg_layout_light" href="/wp-content/uploads/2017/04/peoplesafe_hasystemspec.pdf" target="_blank">View PDF</a>
			</div>
			</div><div class="et_pb_column et_pb_column_2_3 et_pb_column_34  et_pb_css_mix_blend_mode_passthrough et-last-child">
				
				
				
				
				<div class="et_pb_module et_pb_text et_pb_text_9  et_pb_text_align_left et_pb_bg_layout_light">
				
				
				
				
				<div class="et_pb_text_inner"><p>A UK company approached us asking for a brief specification document to support their range of low-powered GRPS based Identicom Lone Worker Device products. These are safety lanyards which when activated, communicate with a central server to indicate help is required and the urgency of that help.</p>
<p>The specification was 10,000 units communicating at least every 30 minutes (to &#8220;check-in&#8221;/location updates): a minimum of 20,000 requests per hour: our specification would safely handle 360,000 messages an hour but could theoretically go up to 61,200,000 messages an hour.</p>
<p>Within a day, a basic document detailing the proposed load balancers, receiving stations, message brokers (using Redis) and file/data storage was put together as a topic of discussion.</p></div>
			</div>
			</div>
				
				
				
				
			</div><div class="et_pb_row et_pb_row_18">
				<div class="et_pb_column et_pb_column_1_4 et_pb_column_35  et_pb_css_mix_blend_mode_passthrough">
				
				
				
				
				<div class="et_pb_module et_pb_blurb et_pb_blurb_9  et_pb_text_align_center  et_pb_blurb_position_top et_pb_bg_layout_light">
				
				
				
				
				<div class="et_pb_blurb_content">
					<div class="et_pb_main_blurb_image"><span class="et_pb_image_wrap"><span class="et-waypoint et_pb_animation_off et_pb_animation_off_tablet et_pb_animation_off_phone et-pb-icon et-pb-icon-circle">&#xe023;</span></span></div>
					<div class="et_pb_blurb_container">
						<h4 class="et_pb_module_header"><span>Date</span></h4>
						<div class="et_pb_blurb_description"><p>August 2016</p></div>
					</div>
				</div>
			</div>
			</div><div class="et_pb_column et_pb_column_1_4 et_pb_column_36  et_pb_css_mix_blend_mode_passthrough">
				
				
				
				
				<div class="et_pb_module et_pb_blurb et_pb_blurb_10  et_pb_text_align_center  et_pb_blurb_position_top et_pb_bg_layout_light">
				
				
				
				
				<div class="et_pb_blurb_content">
					<div class="et_pb_main_blurb_image"><span class="et_pb_image_wrap"><span class="et-waypoint et_pb_animation_off et_pb_animation_off_tablet et_pb_animation_off_phone et-pb-icon et-pb-icon-circle">&#xe100;</span></span></div>
					<div class="et_pb_blurb_container">
						<h4 class="et_pb_module_header"><span>Budget</span></h4>
						<div class="et_pb_blurb_description"><p>&lt; £350</p></div>
					</div>
				</div>
			</div>
			</div><div class="et_pb_column et_pb_column_1_4 et_pb_column_37  et_pb_css_mix_blend_mode_passthrough">
				
				
				
				
				<div class="et_pb_module et_pb_blurb et_pb_blurb_11  et_pb_text_align_center  et_pb_blurb_position_top et_pb_bg_layout_light">
				
				
				
				
				<div class="et_pb_blurb_content">
					<div class="et_pb_main_blurb_image"><span class="et_pb_image_wrap"><span class="et-waypoint et_pb_animation_off et_pb_animation_off_tablet et_pb_animation_off_phone et-pb-icon et-pb-icon-circle">&#xe101;</span></span></div>
					<div class="et_pb_blurb_container">
						<h4 class="et_pb_module_header"><span>Technologies</span></h4>
						<div class="et_pb_blurb_description"><p>High Availability Load Balancers (HAProxy)<br />
C++<br />
Redis<br />
PHP<br />
MySQL<br />
NFS</p></div>
					</div>
				</div>
			</div>
			</div><div class="et_pb_column et_pb_column_1_4 et_pb_column_38  et_pb_css_mix_blend_mode_passthrough et-last-child et_pb_column_empty">
				
				
				
				
				
			</div>
				
				
				
				
			</div>
				
				
			</div><div class="et_pb_section et_pb_section_9 et_section_regular" >
				
				
				
				
				
				
				<div class="et_pb_row et_pb_row_19">
				<div class="et_pb_column et_pb_column_4_4 et_pb_column_39  et_pb_css_mix_blend_mode_passthrough et-last-child">
				
				
				
				
				<div class="et_pb_module et_pb_cta_4 et_hover_enabled et_pb_promo  et_pb_text_align_center et_pb_bg_layout_dark">
				
				
				
				
				<div class="et_pb_promo_description"><h2 class="et_pb_module_header">Need requirements or specifications writing or an entire application?</h2></div>
				<div class="et_pb_button_wrapper"><a class="et_pb_button et_pb_promo_button" href="/contact-us/">Ask Bairwell to help on all parts of your development cycle</a></div>
			</div>
			</div>
				
				
				
				
			</div>
				
				
			</div></p>
<p>The post <a href="https://www.bairwell.com/project/specification-high-availability-safety-system/">Specification &#8211; High Availability Safety System</a> appeared first on <a href="https://www.bairwell.com">Bairwell PHP and WordPress Development</a>.</p>
]]></content:encoded>
					
		
		
			</item>
		<item>
		<title>Comprobo &#8211; Video Transcoder</title>
		<link>https://www.bairwell.com/project/comprobo-video-transcoder/</link>
		
		<dc:creator><![CDATA[Richard Bairwell]]></dc:creator>
		<pubDate>Mon, 15 Aug 2016 19:41:40 +0000</pubDate>
				<guid isPermaLink="false">https://www.bairwell.com/?post_type=project&#038;p=461</guid>

					<description><![CDATA[<p>The post <a href="https://www.bairwell.com/project/comprobo-video-transcoder/">Comprobo &#8211; Video Transcoder</a> appeared first on <a href="https://www.bairwell.com">Bairwell PHP and WordPress Development</a>.</p>
]]></description>
										<content:encoded><![CDATA[<p><div class="et_pb_section et_pb_section_10 et_section_regular" >
				
				
				
				
				
				
				<div class="et_pb_row et_pb_row_20">
				<div class="et_pb_column et_pb_column_4_4 et_pb_column_40  et_pb_css_mix_blend_mode_passthrough et-last-child">
				
				
				
				
				<div class="et_pb_module et_pb_post_title et_pb_post_title_5 et_pb_bg_layout_dark  et_pb_text_align_left"   >
				
				
				
				
				
				<div class="et_pb_title_container">
					<h1 class="entry-title">Comprobo &#8211; Video Transcoder</h1>
				</div>
				
			</div><div class="et_pb_module et_pb_text et_pb_text_10  et_pb_text_align_left et_pb_bg_layout_dark">
				
				
				
				
				<div class="et_pb_text_inner"><p>Videos for the web need to be transcoded into multiple different formats</p></div>
			</div>
			</div>
				
				
				
				
			</div><div class="et_pb_row et_pb_row_21">
				<div class="et_pb_column et_pb_column_1_3 et_pb_column_41  et_pb_css_mix_blend_mode_passthrough">
				
				
				
				
				<div class="et_pb_module et_pb_gallery et_pb_gallery_2  et_pb_bg_layout_light et_pb_slider et_pb_gallery_fullwidth et_slider_auto et_slider_speed_2500 clearfix">
				<div class="et_pb_gallery_items et_post_gallery clearfix" data-per_page="4"><div class="et_pb_gallery_item et_pb_bg_layout_light et_pb_gallery_item_2_0">
				<div class='et_pb_gallery_image landscape'>
					<a href="https://www.bairwell.com/wp-content/uploads/2017/02/transcode_inprogress.jpg" title="transcode_inprogress">
					<img loading="lazy" decoding="async" width="1374" height="798" src="https://www.bairwell.com/wp-content/uploads/2017/02/transcode_inprogress.jpg" class="wp-image-464" />
					
				</a>
				</div></div><div class="et_pb_gallery_item et_pb_bg_layout_light et_pb_gallery_item_2_1">
				<div class='et_pb_gallery_image landscape'>
					<a href="https://www.bairwell.com/wp-content/uploads/2017/02/transcode_results.jpg" title="transcode_results">
					<img loading="lazy" decoding="async" width="1443" height="946" src="https://www.bairwell.com/wp-content/uploads/2017/02/transcode_results.jpg" class="wp-image-462" />
					
				</a>
				</div></div><div class="et_pb_gallery_item et_pb_bg_layout_light et_pb_gallery_item_2_2">
				<div class='et_pb_gallery_image landscape'>
					<a href="https://www.bairwell.com/wp-content/uploads/2017/02/transcode_upload.jpg" title="transcode_upload">
					<img loading="lazy" decoding="async" width="1457" height="952" src="https://www.bairwell.com/wp-content/uploads/2017/02/transcode_upload.jpg" class="wp-image-463" />
					
				</a>
				</div></div><div class="et_pb_gallery_item et_pb_bg_layout_light et_pb_gallery_item_2_3">
				<div class='et_pb_gallery_image landscape'>
					<a href="https://www.bairwell.com/wp-content/uploads/2017/02/transcode_thumbnails.jpg" title="transcode_thumbnails">
					<img loading="lazy" decoding="async" width="1454" height="754" src="https://www.bairwell.com/wp-content/uploads/2017/02/transcode_thumbnails.jpg" class="wp-image-465" />
					
				</a>
				</div></div></div></div>
			</div><div class="et_pb_column et_pb_column_2_3 et_pb_column_42  et_pb_css_mix_blend_mode_passthrough et-last-child">
				
				
				
				
				<div class="et_pb_module et_pb_text et_pb_text_11  et_pb_text_align_left et_pb_bg_layout_light">
				
				
				
				
				<div class="et_pb_text_inner"><p>Comprobo needed the ability to be able to accept user uploaded videos and ensure the later playback of them on a variety of browsers in different video encoding methods.</p>
<p>We constructed for them a Slim3 Framework (PHP) powered API microservice, which accepted JWT (JSON Web Token) signed JSON requests which included an input video location, video output location and additional various parameters. This information was then taken and the video fetched, analysed for length, resolution, name etc (with this information being able to be &#8220;called back&#8221; at this point) and then encoded using ffmpeg to the various output video parameters. Once completed, thumbnails were automatically generated at key parts of the video (such as 5 seconds in and every 10%) and then all these files were then pushed to the output location before a further callback for &#8220;completion&#8221; was made.</p>
<p>This project involved a custom ffmpeg build script (to cope with the variety of video encodings).</p></div>
			</div>
			</div>
				
				
				
				
			</div><div class="et_pb_row et_pb_row_22">
				<div class="et_pb_column et_pb_column_1_4 et_pb_column_43  et_pb_css_mix_blend_mode_passthrough">
				
				
				
				
				<div class="et_pb_module et_pb_blurb et_pb_blurb_12  et_pb_text_align_center  et_pb_blurb_position_top et_pb_bg_layout_light">
				
				
				
				
				<div class="et_pb_blurb_content">
					<div class="et_pb_main_blurb_image"><span class="et_pb_image_wrap"><span class="et-waypoint et_pb_animation_off et_pb_animation_off_tablet et_pb_animation_off_phone et-pb-icon et-pb-icon-circle">&#xe023;</span></span></div>
					<div class="et_pb_blurb_container">
						<h4 class="et_pb_module_header"><span>Date</span></h4>
						<div class="et_pb_blurb_description"><p>August 2016</p></div>
					</div>
				</div>
			</div>
			</div><div class="et_pb_column et_pb_column_1_4 et_pb_column_44  et_pb_css_mix_blend_mode_passthrough et_pb_column_empty">
				
				
				
				
				
			</div><div class="et_pb_column et_pb_column_1_4 et_pb_column_45  et_pb_css_mix_blend_mode_passthrough">
				
				
				
				
				<div class="et_pb_module et_pb_blurb et_pb_blurb_13  et_pb_text_align_center  et_pb_blurb_position_top et_pb_bg_layout_light">
				
				
				
				
				<div class="et_pb_blurb_content">
					<div class="et_pb_main_blurb_image"><span class="et_pb_image_wrap"><span class="et-waypoint et_pb_animation_off et_pb_animation_off_tablet et_pb_animation_off_phone et-pb-icon et-pb-icon-circle">&#xe101;</span></span></div>
					<div class="et_pb_blurb_container">
						<h4 class="et_pb_module_header"><span>Technologies</span></h4>
						<div class="et_pb_blurb_description"><p>PHP</p>
<p>FFmpeg</p>
<p>Slim3</p></div>
					</div>
				</div>
			</div>
			</div><div class="et_pb_column et_pb_column_1_4 et_pb_column_46  et_pb_css_mix_blend_mode_passthrough et-last-child et_pb_column_empty">
				
				
				
				
				
			</div>
				
				
				
				
			</div>
				
				
			</div><div class="et_pb_section et_pb_section_11 et_section_regular" >
				
				
				
				
				
				
				<div class="et_pb_row et_pb_row_23">
				<div class="et_pb_column et_pb_column_4_4 et_pb_column_47  et_pb_css_mix_blend_mode_passthrough et-last-child">
				
				
				
				
				<div class="et_pb_module et_pb_cta_5 et_hover_enabled et_pb_promo  et_pb_text_align_center et_pb_bg_layout_dark">
				
				
				
				
				<div class="et_pb_promo_description"><h2 class="et_pb_module_header">Want us to build or design your site?</h2><div> </div></div>
				<div class="et_pb_button_wrapper"><a class="et_pb_button et_pb_promo_button" href="/contact-us/">Get in touch!</a></div>
			</div>
			</div>
				
				
				
				
			</div>
				
				
			</div></p>
<p>The post <a href="https://www.bairwell.com/project/comprobo-video-transcoder/">Comprobo &#8211; Video Transcoder</a> appeared first on <a href="https://www.bairwell.com">Bairwell PHP and WordPress Development</a>.</p>
]]></content:encoded>
					
		
		
			</item>
		<item>
		<title>Comprobo &#8211; Facial Detection</title>
		<link>https://www.bairwell.com/project/comprobo-facial-detection/</link>
		
		<dc:creator><![CDATA[Richard Bairwell]]></dc:creator>
		<pubDate>Tue, 14 Jun 2016 11:30:35 +0000</pubDate>
				<guid isPermaLink="false">https://www.bairwell.com/?post_type=project&#038;p=305</guid>

					<description><![CDATA[<p>The post <a href="https://www.bairwell.com/project/comprobo-facial-detection/">Comprobo &#8211; Facial Detection</a> appeared first on <a href="https://www.bairwell.com">Bairwell PHP and WordPress Development</a>.</p>
]]></description>
										<content:encoded><![CDATA[<p><div class="et_pb_section et_pb_section_12 et_section_regular" >
				
				
				
				
				
				
				<div class="et_pb_row et_pb_row_24">
				<div class="et_pb_column et_pb_column_4_4 et_pb_column_48  et_pb_css_mix_blend_mode_passthrough et-last-child">
				
				
				
				
				<div class="et_pb_module et_pb_post_title et_pb_post_title_6 et_pb_bg_layout_dark  et_pb_text_align_left"   >
				
				
				
				
				
				<div class="et_pb_title_container">
					<h1 class="entry-title">Comprobo &#8211; Facial Detection</h1>
				</div>
				
			</div><div class="et_pb_module et_pb_text et_pb_text_12  et_pb_text_align_left et_pb_bg_layout_dark">
				
				
				
				
				<div class="et_pb_text_inner"> A company needed the ability to check a users face was visible in a web cam picture. </div>
			</div>
			</div>
				
				
				
				
			</div><div class="et_pb_row et_pb_row_25">
				<div class="et_pb_column et_pb_column_1_3 et_pb_column_49  et_pb_css_mix_blend_mode_passthrough">
				
				
				
				
				<div class="et_pb_module et_pb_gallery et_pb_gallery_3  et_pb_bg_layout_light et_pb_slider et_pb_gallery_fullwidth et_slider_auto et_slider_speed_2500 clearfix">
				<div class="et_pb_gallery_items et_post_gallery clearfix" data-per_page="4"><div class="et_pb_gallery_item et_pb_bg_layout_light et_pb_gallery_item_3_0">
				<div class='et_pb_gallery_image landscape'>
					<a href="https://www.bairwell.com/wp-content/uploads/2016/06/multiplefaces.jpg" title="multiplefaces">
					<img loading="lazy" decoding="async" width="855" height="1031" src="https://www.bairwell.com/wp-content/uploads/2016/06/multiplefaces.jpg" class="wp-image-459" />
					
				</a>
				</div></div><div class="et_pb_gallery_item et_pb_bg_layout_light et_pb_gallery_item_3_1">
				<div class='et_pb_gallery_image landscape'>
					<a href="https://www.bairwell.com/wp-content/uploads/2016/06/facial_detection_points.jpg" title="facial_detection_points">
					<img loading="lazy" decoding="async" width="660" height="490" src="https://www.bairwell.com/wp-content/uploads/2016/06/facial_detection_points.jpg" class="wp-image-324" />
					
				</a>
				</div></div><div class="et_pb_gallery_item et_pb_bg_layout_light et_pb_gallery_item_3_2">
				<div class='et_pb_gallery_image landscape'>
					<a href="https://www.bairwell.com/wp-content/uploads/2017/02/facial_detect.jpg" title="facial_detect">
					<img loading="lazy" decoding="async" width="1411" height="813" src="https://www.bairwell.com/wp-content/uploads/2017/02/facial_detect.jpg" class="wp-image-306" />
					
				</a>
				</div></div><div class="et_pb_gallery_item et_pb_bg_layout_light et_pb_gallery_item_3_3">
				<div class='et_pb_gallery_image landscape'>
					<a href="https://www.bairwell.com/wp-content/uploads/2016/06/facial_detection_cropped.jpg" title="facial_detection_cropped">
					<img loading="lazy" decoding="async" width="675" height="427" src="https://www.bairwell.com/wp-content/uploads/2016/06/facial_detection_cropped.jpg" class="wp-image-325" />
					
				</a>
				</div></div></div></div>
			</div><div class="et_pb_column et_pb_column_2_3 et_pb_column_50  et_pb_css_mix_blend_mode_passthrough et-last-child">
				
				
				
				
				<div class="et_pb_module et_pb_text et_pb_text_13  et_pb_text_align_left et_pb_bg_layout_light">
				
				
				
				
				<div class="et_pb_text_inner"> Comprobo had the requirement that, for user identification purposes, somebody should sit in front of a web camera and have their picture taken. The system then should check the picture to see if there was a human face in it, how confident it was in finding the face, and return various biometric details about the face. This should be returned in a JSON API format for consumption by the rest of the system. Working on a microservices development pattern and integrating with both a Java based workflow engine, an Amazon S3 data store (accessed via another microservice), JSON Web Tokens (JWT) for authentication and Javascript for the frontend: we developed a Slim3 framework based PHP application which validated the request, fetched the image, passed it to the C/C++ facial detection system and returned the results using a JSON callback (along with caching the results) </div>
			</div>
			</div>
				
				
				
				
			</div><div class="et_pb_row et_pb_row_26">
				<div class="et_pb_column et_pb_column_1_4 et_pb_column_51  et_pb_css_mix_blend_mode_passthrough">
				
				
				
				
				<div class="et_pb_module et_pb_blurb et_pb_blurb_14  et_pb_text_align_center  et_pb_blurb_position_top et_pb_bg_layout_light">
				
				
				
				
				<div class="et_pb_blurb_content">
					<div class="et_pb_main_blurb_image"><span class="et_pb_image_wrap"><span class="et-waypoint et_pb_animation_off et_pb_animation_off_tablet et_pb_animation_off_phone et-pb-icon et-pb-icon-circle">&#xe023;</span></span></div>
					<div class="et_pb_blurb_container">
						<h4 class="et_pb_module_header"><span>Date</span></h4>
						<div class="et_pb_blurb_description"> June 2016 </div>
					</div>
				</div>
			</div>
			</div><div class="et_pb_column et_pb_column_1_4 et_pb_column_52  et_pb_css_mix_blend_mode_passthrough et_pb_column_empty">
				
				
				
				
				
			</div><div class="et_pb_column et_pb_column_1_4 et_pb_column_53  et_pb_css_mix_blend_mode_passthrough">
				
				
				
				
				<div class="et_pb_module et_pb_blurb et_pb_blurb_15  et_pb_text_align_center  et_pb_blurb_position_top et_pb_bg_layout_light">
				
				
				
				
				<div class="et_pb_blurb_content">
					<div class="et_pb_main_blurb_image"><span class="et_pb_image_wrap"><span class="et-waypoint et_pb_animation_off et_pb_animation_off_tablet et_pb_animation_off_phone et-pb-icon et-pb-icon-circle">&#xe101;</span></span></div>
					<div class="et_pb_blurb_container">
						<h4 class="et_pb_module_header"><span>Technologies</span></h4>
						<div class="et_pb_blurb_description"> PHP with Slim3 Framework C/C++ dLib JSON </div>
					</div>
				</div>
			</div>
			</div><div class="et_pb_column et_pb_column_1_4 et_pb_column_54  et_pb_css_mix_blend_mode_passthrough et-last-child et_pb_column_empty">
				
				
				
				
				
			</div>
				
				
				
				
			</div>
				
				
			</div><div class="et_pb_section et_pb_section_13 et_section_regular" >
				
				
				
				
				
				
				<div class="et_pb_row et_pb_row_27">
				<div class="et_pb_column et_pb_column_4_4 et_pb_column_55  et_pb_css_mix_blend_mode_passthrough et-last-child">
				
				
				
				
				<div class="et_pb_module et_pb_cta_6 et_hover_enabled et_pb_promo  et_pb_text_align_center et_pb_bg_layout_dark">
				
				
				
				
				<div class="et_pb_promo_description"><h2 class="et_pb_module_header">Want to see smiling faces when people come to your website?</h2><div> </div></div>
				<div class="et_pb_button_wrapper"><a class="et_pb_button et_pb_promo_button" href="/contact-us/">Get Bairwell to develop your PHP driven application or website!</a></div>
			</div>
			</div>
				
				
				
				
			</div>
				
				
			</div></p>
<p>The post <a href="https://www.bairwell.com/project/comprobo-facial-detection/">Comprobo &#8211; Facial Detection</a> appeared first on <a href="https://www.bairwell.com">Bairwell PHP and WordPress Development</a>.</p>
]]></content:encoded>
					
		
		
			</item>
		<item>
		<title>Comprobo &#8211; Authentication</title>
		<link>https://www.bairwell.com/project/comprobo-authentication/</link>
		
		<dc:creator><![CDATA[Richard Bairwell]]></dc:creator>
		<pubDate>Tue, 15 Mar 2016 20:20:37 +0000</pubDate>
				<guid isPermaLink="false">https://www.bairwell.com/?post_type=project&#038;p=469</guid>

					<description><![CDATA[<p>The post <a href="https://www.bairwell.com/project/comprobo-authentication/">Comprobo &#8211; Authentication</a> appeared first on <a href="https://www.bairwell.com">Bairwell PHP and WordPress Development</a>.</p>
]]></description>
										<content:encoded><![CDATA[<p><div class="et_pb_section et_pb_section_14 et_section_regular" >
				
				
				
				
				
				
				<div class="et_pb_row et_pb_row_28">
				<div class="et_pb_column et_pb_column_4_4 et_pb_column_56  et_pb_css_mix_blend_mode_passthrough et-last-child">
				
				
				
				
				<div class="et_pb_module et_pb_post_title et_pb_post_title_7 et_pb_bg_layout_dark  et_pb_text_align_left"   >
				
				
				
				
				
				<div class="et_pb_title_container">
					<h1 class="entry-title">Comprobo &#8211; Authentication</h1>
				</div>
				
			</div><div class="et_pb_module et_pb_text et_pb_text_14  et_pb_text_align_left et_pb_bg_layout_dark">
				
				
				
				
				<div class="et_pb_text_inner"><p>OAuth, OpenId or Email login &#8211; it&#8217;s all the same to me&#8230;</p></div>
			</div>
			</div>
				
				
				
				
			</div><div class="et_pb_row et_pb_row_29">
				<div class="et_pb_column et_pb_column_1_3 et_pb_column_57  et_pb_css_mix_blend_mode_passthrough">
				
				
				
				
				<div class="et_pb_module et_pb_image et_pb_image_3">
				
				
				
				
				<span class="et_pb_image_wrap "><img loading="lazy" decoding="async" width="1107" height="878" src="https://www.bairwell.com/wp-content/uploads/2017/02/comprobo_auth.jpg" alt="" title="" class="wp-image-470" /></span>
			</div>
			</div><div class="et_pb_column et_pb_column_2_3 et_pb_column_58  et_pb_css_mix_blend_mode_passthrough et-last-child">
				
				
				
				
				<div class="et_pb_module et_pb_text et_pb_text_15  et_pb_text_align_left et_pb_bg_layout_light">
				
				
				
				
				<div class="et_pb_text_inner"><p>Comprobo needed a simple way of allowing users to login to their system using either email authentication or OpenId/OAuth with Facebook, Google, Bitbucket, LinkedIn or Microsoft Live. Users then had to be assigned a time limited signed JWT (JSON Web Token) which could be renewed until their login expired &#8211; this allowed them to authentication themselves against other parts of the system without information needing to be passed from one part of the system to another.</p>
<p>This system used the PHP libraries &#8220;PHP League/OAuth2&#8221; for the main authentication, but then integrated that with a custom written email authentication system, form validation and JWT creation (all using the Slim3 framework as a backend and documented in Swagger/OpenAPI standards).</p></div>
			</div>
			</div>
				
				
				
				
			</div><div class="et_pb_row et_pb_row_30">
				<div class="et_pb_column et_pb_column_1_4 et_pb_column_59  et_pb_css_mix_blend_mode_passthrough">
				
				
				
				
				<div class="et_pb_module et_pb_blurb et_pb_blurb_16  et_pb_text_align_center  et_pb_blurb_position_top et_pb_bg_layout_light">
				
				
				
				
				<div class="et_pb_blurb_content">
					<div class="et_pb_main_blurb_image"><span class="et_pb_image_wrap"><span class="et-waypoint et_pb_animation_off et_pb_animation_off_tablet et_pb_animation_off_phone et-pb-icon et-pb-icon-circle">&#xe023;</span></span></div>
					<div class="et_pb_blurb_container">
						<h4 class="et_pb_module_header"><span>Date</span></h4>
						<div class="et_pb_blurb_description"><p>March 2016</p></div>
					</div>
				</div>
			</div>
			</div><div class="et_pb_column et_pb_column_1_4 et_pb_column_60  et_pb_css_mix_blend_mode_passthrough et_pb_column_empty">
				
				
				
				
				
			</div><div class="et_pb_column et_pb_column_1_4 et_pb_column_61  et_pb_css_mix_blend_mode_passthrough">
				
				
				
				
				<div class="et_pb_module et_pb_blurb et_pb_blurb_17  et_pb_text_align_center  et_pb_blurb_position_top et_pb_bg_layout_light">
				
				
				
				
				<div class="et_pb_blurb_content">
					<div class="et_pb_main_blurb_image"><span class="et_pb_image_wrap"><span class="et-waypoint et_pb_animation_off et_pb_animation_off_tablet et_pb_animation_off_phone et-pb-icon et-pb-icon-circle">&#xe101;</span></span></div>
					<div class="et_pb_blurb_container">
						<h4 class="et_pb_module_header"><span>Technologies</span></h4>
						<div class="et_pb_blurb_description"><p>PHP</p>
<p>Slim3</p>
<p>oAuth</p>
<p>OpenID</p>
<p>Swagger/OpenAPI</p></div>
					</div>
				</div>
			</div>
			</div><div class="et_pb_column et_pb_column_1_4 et_pb_column_62  et_pb_css_mix_blend_mode_passthrough et-last-child et_pb_column_empty">
				
				
				
				
				
			</div>
				
				
				
				
			</div>
				
				
			</div><div class="et_pb_section et_pb_section_15 et_section_regular" >
				
				
				
				
				
				
				<div class="et_pb_row et_pb_row_31">
				<div class="et_pb_column et_pb_column_4_4 et_pb_column_63  et_pb_css_mix_blend_mode_passthrough et-last-child">
				
				
				
				
				<div class="et_pb_module et_pb_cta_7 et_hover_enabled et_pb_promo  et_pb_text_align_center et_pb_bg_layout_dark">
				
				
				
				
				<div class="et_pb_promo_description"><h2 class="et_pb_module_header">Want us to build or design your site?</h2><div> </div></div>
				<div class="et_pb_button_wrapper"><a class="et_pb_button et_pb_promo_button" href="/contact-us/">Get in touch!</a></div>
			</div>
			</div>
				
				
				
				
			</div>
				
				
			</div></p>
<p>The post <a href="https://www.bairwell.com/project/comprobo-authentication/">Comprobo &#8211; Authentication</a> appeared first on <a href="https://www.bairwell.com">Bairwell PHP and WordPress Development</a>.</p>
]]></content:encoded>
					
		
		
			</item>
		<item>
		<title>Un.Titled &#8211; Clarks International</title>
		<link>https://www.bairwell.com/project/un-titled-clarks-international/</link>
		
		<dc:creator><![CDATA[Richard Bairwell]]></dc:creator>
		<pubDate>Tue, 17 Feb 2015 15:14:23 +0000</pubDate>
				<guid isPermaLink="false">https://www.bairwell.com/?post_type=project&#038;p=531</guid>

					<description><![CDATA[<p>The post <a href="https://www.bairwell.com/project/un-titled-clarks-international/">Un.Titled &#8211; Clarks International</a> appeared first on <a href="https://www.bairwell.com">Bairwell PHP and WordPress Development</a>.</p>
]]></description>
										<content:encoded><![CDATA[<p><div class="et_pb_section et_pb_section_16 et_section_regular" >
				
				
				
				
				
				
				<div class="et_pb_row et_pb_row_32">
				<div class="et_pb_column et_pb_column_4_4 et_pb_column_64  et_pb_css_mix_blend_mode_passthrough et-last-child">
				
				
				
				
				<div class="et_pb_module et_pb_post_title et_pb_post_title_8 et_pb_bg_layout_dark  et_pb_text_align_left"   >
				
				
				
				
				
				<div class="et_pb_title_container">
					<h1 class="entry-title">Un.Titled &#8211; Clarks International</h1>
				</div>
				
			</div><div class="et_pb_module et_pb_text et_pb_text_16  et_pb_text_align_left et_pb_bg_layout_dark">
				
				
				
				
				<div class="et_pb_text_inner"><p>A massive build of many international sites with data import and deployment requirements</p></div>
			</div>
			</div>
				
				
				
				
			</div><div class="et_pb_row et_pb_row_33">
				<div class="et_pb_column et_pb_column_1_3 et_pb_column_65  et_pb_css_mix_blend_mode_passthrough">
				
				
				
				
				<div class="et_pb_module et_pb_gallery et_pb_gallery_4  et_pb_bg_layout_light et_pb_slider et_pb_gallery_fullwidth et_slider_auto et_slider_speed_2500 clearfix">
				<div class="et_pb_gallery_items et_post_gallery clearfix" data-per_page="4"><div class="et_pb_gallery_item et_pb_bg_layout_light et_pb_gallery_item_4_0">
				<div class='et_pb_gallery_image landscape'>
					<a href="https://www.bairwell.com/wp-content/uploads/2017/02/clarks_productsearch.jpg" title="clarks_productsearch">
					<img loading="lazy" decoding="async" width="773" height="588" src="https://www.bairwell.com/wp-content/uploads/2017/02/clarks_productsearch.jpg" class="wp-image-533" />
					
				</a>
				</div></div><div class="et_pb_gallery_item et_pb_bg_layout_light et_pb_gallery_item_4_1">
				<div class='et_pb_gallery_image landscape'>
					<a href="https://www.bairwell.com/wp-content/uploads/2017/02/clarks_homepage.jpg" title="clarks_homepage">
					<img loading="lazy" decoding="async" width="781" height="594" src="https://www.bairwell.com/wp-content/uploads/2017/02/clarks_homepage.jpg" class="wp-image-535" />
					
				</a>
				</div></div><div class="et_pb_gallery_item et_pb_bg_layout_light et_pb_gallery_item_4_2">
				<div class='et_pb_gallery_image landscape'>
					<a href="https://www.bairwell.com/wp-content/uploads/2017/02/clarks_overview.jpg" title="clarks_overview">
					<img loading="lazy" decoding="async" width="776" height="590" src="https://www.bairwell.com/wp-content/uploads/2017/02/clarks_overview.jpg" class="wp-image-532" />
					
				</a>
				</div></div><div class="et_pb_gallery_item et_pb_bg_layout_light et_pb_gallery_item_4_3">
				<div class='et_pb_gallery_image landscape'>
					<a href="https://www.bairwell.com/wp-content/uploads/2017/02/clarks_category.jpg" title="clarks_category">
					<img loading="lazy" decoding="async" width="776" height="592" src="https://www.bairwell.com/wp-content/uploads/2017/02/clarks_category.jpg" class="wp-image-534" />
					
				</a>
				</div></div></div></div>
			</div><div class="et_pb_column et_pb_column_2_3 et_pb_column_66  et_pb_css_mix_blend_mode_passthrough et-last-child">
				
				
				
				
				<div class="et_pb_module et_pb_text et_pb_text_17  et_pb_text_align_left et_pb_bg_layout_light">
				
				
				
				
				<div class="et_pb_text_inner"><p>Clarks Shoes needed 36 (initially 32) different WordPress sites for different geographical regions setup with slightly varying content depending on shoe availability and locality targeting. This information came from many different Excel spreadsheets (each could contain 800+ different products) and a file storage of images (with many images per shoe).</p>
<p><a href="http://un.titled.co.uk">Un.titled</a> asked us to design and build a &#8220;multi-site data importer&#8221; to read in the multiple spreadsheets, validate the data therein (in case of transcript/export errors), resized the &#8220;print ready&#8221; images to &#8220;web ready&#8221; sizes (and automatically upload them to Amazon S3) and then populate the sites with the appropriate categories, page data and product data.</p>
<p>We also took the supplied web page designs from Un.titled and made the responsive functional WordPress templates from them to allow this easy deployment of many sites into many regions (powered by Amazon Web Services running on RDS, EC2 and S3): along with the flexibility to create a &#8220;static&#8221; version of the site to be able to be easily deployed into a web host in China for the local market there.</p>
<p>They also required easy uploads for the biannual seasonal refreshes,&nbsp;country specific marketing imagery and multi language content, consolidating the British manufacturer’s international reach.</p></div>
			</div>
			</div>
				
				
				
				
			</div><div class="et_pb_row et_pb_row_34">
				<div class="et_pb_column et_pb_column_1_4 et_pb_column_67  et_pb_css_mix_blend_mode_passthrough">
				
				
				
				
				<div class="et_pb_module et_pb_blurb et_pb_blurb_18  et_pb_text_align_center  et_pb_blurb_position_top et_pb_bg_layout_light">
				
				
				
				
				<div class="et_pb_blurb_content">
					<div class="et_pb_main_blurb_image"><span class="et_pb_image_wrap"><span class="et-waypoint et_pb_animation_off et_pb_animation_off_tablet et_pb_animation_off_phone et-pb-icon et-pb-icon-circle">&#xe023;</span></span></div>
					<div class="et_pb_blurb_container">
						<h4 class="et_pb_module_header"><span>Date</span></h4>
						<div class="et_pb_blurb_description"><p>May 2015</p></div>
					</div>
				</div>
			</div>
			</div><div class="et_pb_column et_pb_column_1_4 et_pb_column_68  et_pb_css_mix_blend_mode_passthrough et_pb_column_empty">
				
				
				
				
				
			</div><div class="et_pb_column et_pb_column_1_4 et_pb_column_69  et_pb_css_mix_blend_mode_passthrough">
				
				
				
				
				<div class="et_pb_module et_pb_blurb et_pb_blurb_19  et_pb_text_align_center  et_pb_blurb_position_top et_pb_bg_layout_light">
				
				
				
				
				<div class="et_pb_blurb_content">
					<div class="et_pb_main_blurb_image"><span class="et_pb_image_wrap"><span class="et-waypoint et_pb_animation_off et_pb_animation_off_tablet et_pb_animation_off_phone et-pb-icon et-pb-icon-circle">&#xe101;</span></span></div>
					<div class="et_pb_blurb_container">
						<h4 class="et_pb_module_header"><span>Technologies</span></h4>
						<div class="et_pb_blurb_description"><p>WordPress</p>
<p>PHP</p></div>
					</div>
				</div>
			</div>
			</div><div class="et_pb_column et_pb_column_1_4 et_pb_column_70  et_pb_css_mix_blend_mode_passthrough et-last-child et_pb_column_empty">
				
				
				
				
				
			</div>
				
				
				
				
			</div>
				
				
			</div><div class="et_pb_section et_pb_section_17 et_section_regular" >
				
				
				
				
				
				
				<div class="et_pb_row et_pb_row_35">
				<div class="et_pb_column et_pb_column_4_4 et_pb_column_71  et_pb_css_mix_blend_mode_passthrough et-last-child">
				
				
				
				
				<div class="et_pb_module et_pb_cta_8 et_hover_enabled et_pb_promo  et_pb_text_align_center et_pb_bg_layout_dark">
				
				
				
				
				<div class="et_pb_promo_description"><h2 class="et_pb_module_header">Want us to build or design your site?</h2></div>
				<div class="et_pb_button_wrapper"><a class="et_pb_button et_pb_promo_button" href="/contact-us/">Get in touch!</a></div>
			</div>
			</div>
				
				
				
				
			</div>
				
				
			</div></p>
<p>The post <a href="https://www.bairwell.com/project/un-titled-clarks-international/">Un.Titled &#8211; Clarks International</a> appeared first on <a href="https://www.bairwell.com">Bairwell PHP and WordPress Development</a>.</p>
]]></content:encoded>
					
		
		
			</item>
		<item>
		<title>Comprobo &#8211; ViewAssure</title>
		<link>https://www.bairwell.com/project/comprobo-viewassure/</link>
		
		<dc:creator><![CDATA[Richard Bairwell]]></dc:creator>
		<pubDate>Fri, 18 Jul 2014 18:22:49 +0000</pubDate>
				<guid isPermaLink="false">https://www.bairwell.com/?post_type=project&#038;p=545</guid>

					<description><![CDATA[<p>The post <a href="https://www.bairwell.com/project/comprobo-viewassure/">Comprobo &#8211; ViewAssure</a> appeared first on <a href="https://www.bairwell.com">Bairwell PHP and WordPress Development</a>.</p>
]]></description>
										<content:encoded><![CDATA[<p><div class="et_pb_section et_pb_section_18 et_section_regular" >
				
				
				
				
				
				
				<div class="et_pb_row et_pb_row_36">
				<div class="et_pb_column et_pb_column_4_4 et_pb_column_72  et_pb_css_mix_blend_mode_passthrough et-last-child">
				
				
				
				
				<div class="et_pb_module et_pb_post_title et_pb_post_title_9 et_pb_bg_layout_dark  et_pb_text_align_left"   >
				
				
				
				
				
				<div class="et_pb_title_container">
					<h1 class="entry-title">Comprobo &#8211; ViewAssure</h1>
				</div>
				
			</div><div class="et_pb_module et_pb_text et_pb_text_18  et_pb_text_align_left et_pb_bg_layout_dark">
				
				
				
				
				<div class="et_pb_text_inner"><p>Recording a users interaction with a web site that is shown exactly how they saw it.</p></div>
			</div>
			</div>
				
				
				
				
			</div><div class="et_pb_row et_pb_row_37">
				<div class="et_pb_column et_pb_column_1_3 et_pb_column_73  et_pb_css_mix_blend_mode_passthrough">
				
				
				
				
				<div class="et_pb_module et_pb_gallery et_pb_gallery_5  et_pb_bg_layout_light et_pb_slider et_pb_gallery_fullwidth et_slider_auto et_slider_speed_2500 clearfix">
				<div class="et_pb_gallery_items et_post_gallery clearfix" data-per_page="4"><div class="et_pb_gallery_item et_pb_bg_layout_light et_pb_gallery_item_5_0">
				<div class='et_pb_gallery_image landscape'>
					<a href="https://www.bairwell.com/wp-content/uploads/2017/02/viewassure_screenshot_2.jpg" title="viewassure_screenshot_2">
					<img loading="lazy" decoding="async" width="1525" height="766" src="https://www.bairwell.com/wp-content/uploads/2017/02/viewassure_screenshot_2.jpg" class="wp-image-546" />
					
				</a>
				</div></div><div class="et_pb_gallery_item et_pb_bg_layout_light et_pb_gallery_item_5_1">
				<div class='et_pb_gallery_image landscape'>
					<a href="https://www.bairwell.com/wp-content/uploads/2017/02/viewassure_screenshot.jpg" title="viewassure_screenshot">
					<img loading="lazy" decoding="async" width="1520" height="770" src="https://www.bairwell.com/wp-content/uploads/2017/02/viewassure_screenshot.jpg" class="wp-image-549" />
					
				</a>
				</div></div><div class="et_pb_gallery_item et_pb_bg_layout_light et_pb_gallery_item_5_2">
				<div class='et_pb_gallery_image landscape'>
					<a href="https://www.bairwell.com/wp-content/uploads/2017/02/viewassure_advanceddetails.jpg" title="viewassure_advanceddetails">
					<img loading="lazy" decoding="async" width="1522" height="769" src="https://www.bairwell.com/wp-content/uploads/2017/02/viewassure_advanceddetails.jpg" class="wp-image-548" />
					
				</a>
				</div></div><div class="et_pb_gallery_item et_pb_bg_layout_light et_pb_gallery_item_5_3">
				<div class='et_pb_gallery_image landscape'>
					<a href="https://www.bairwell.com/wp-content/uploads/2017/02/viewassure_playback.jpg" title="viewassure_playback">
					<img loading="lazy" decoding="async" width="1519" height="746" src="https://www.bairwell.com/wp-content/uploads/2017/02/viewassure_playback.jpg" class="wp-image-551" />
					
				</a>
				</div></div><div class="et_pb_gallery_item et_pb_bg_layout_light et_pb_gallery_item_5_4">
				<div class='et_pb_gallery_image landscape'>
					<a href="https://www.bairwell.com/wp-content/uploads/2017/02/viewassure_pagedetails.jpg" title="viewassure_pagedetails">
					<img loading="lazy" decoding="async" width="1520" height="771" src="https://www.bairwell.com/wp-content/uploads/2017/02/viewassure_pagedetails.jpg" class="wp-image-550" />
					
				</a>
				</div></div><div class="et_pb_gallery_item et_pb_bg_layout_light et_pb_gallery_item_5_5">
				<div class='et_pb_gallery_image landscape'>
					<a href="https://www.bairwell.com/wp-content/uploads/2017/02/viewassure_listransactions.jpg" title="viewassure_listransactions">
					<img loading="lazy" decoding="async" width="1533" height="768" src="https://www.bairwell.com/wp-content/uploads/2017/02/viewassure_listransactions.jpg" class="wp-image-547" />
					
				</a>
				</div></div></div></div><div class="et_pb_module et_pb_video et_pb_video_0">
				
				
				
				
				<div class="et_pb_video_box">
				<video controls>
					<source type="video/mp4" src="https://www.bairwell.com/wp-content/uploads/2014/07/viewassure.mp4" />
					
				</video></div>
				<div style="background-image:url(https://www.bairwell.com/wp-content/uploads/2017/02/viewassure_pagedetails.jpg)" class="et_pb_video_overlay"><div class="et_pb_video_overlay_hover"><a href="#" class="et_pb_video_play"></a></div></div>
			</div>
			</div><div class="et_pb_column et_pb_column_2_3 et_pb_column_74  et_pb_css_mix_blend_mode_passthrough et-last-child">
				
				
				
				
				<div class="et_pb_module et_pb_text et_pb_text_19  et_pb_text_align_left et_pb_bg_layout_light">
				
				
				
				
				<div class="et_pb_text_inner"><p>ViewAssure was a &#8220;proof of concept&#8221; project for Comprobo. It was, in its essence, a &#8220;web browser recorder&#8221; &#8211; allowing clients to record user interactions (and load times) of their website for later playback and monitoring (such a scenario being of a user reading through a terms and conditions agreement).</p>
<p>It achieved this by allowing either a single Javascript file being included on the client&#8217;s website, the user having the &#8220;ViewAssure Chrome Extension&#8221; enabled (allowing &#8220;injection&#8221; of the Javascript file into any website of the users choosing) or the user having the ViewAssure server configured as a web browser proxy (which then injected the Javascript file). The Javascript then recorded page load information and &#8220;browser profile&#8221; information (user agent, IP address and cookie information) and all mouse/touch-pad/pointer and keyboard interactions with the website and recorded it (along with generating screenshots at the same time) for later playback.</p>
<p>Richard Bairwell constructed this entire project from scratch using a combination of the PHP Symfony2 framework, hand-coded Javascript, WKHTMLtoImage (for screenshot generation), ImageMagick for image resizing, Beanstalkd Queue Manager to enable fast responses/queuing system and a custom written Chrome extension.</p></div>
			</div>
			</div>
				
				
				
				
			</div><div class="et_pb_row et_pb_row_38">
				<div class="et_pb_column et_pb_column_1_4 et_pb_column_75  et_pb_css_mix_blend_mode_passthrough">
				
				
				
				
				<div class="et_pb_module et_pb_blurb et_pb_blurb_20  et_pb_text_align_center  et_pb_blurb_position_top et_pb_bg_layout_light">
				
				
				
				
				<div class="et_pb_blurb_content">
					<div class="et_pb_main_blurb_image"><span class="et_pb_image_wrap"><span class="et-waypoint et_pb_animation_off et_pb_animation_off_tablet et_pb_animation_off_phone et-pb-icon et-pb-icon-circle">&#xe023;</span></span></div>
					<div class="et_pb_blurb_container">
						<h4 class="et_pb_module_header"><span>Date</span></h4>
						<div class="et_pb_blurb_description"><p>July 2014</p></div>
					</div>
				</div>
			</div>
			</div><div class="et_pb_column et_pb_column_1_4 et_pb_column_76  et_pb_css_mix_blend_mode_passthrough et_pb_column_empty">
				
				
				
				
				
			</div><div class="et_pb_column et_pb_column_1_4 et_pb_column_77  et_pb_css_mix_blend_mode_passthrough">
				
				
				
				
				<div class="et_pb_module et_pb_blurb et_pb_blurb_21  et_pb_text_align_center  et_pb_blurb_position_top et_pb_bg_layout_light">
				
				
				
				
				<div class="et_pb_blurb_content">
					<div class="et_pb_main_blurb_image"><span class="et_pb_image_wrap"><span class="et-waypoint et_pb_animation_off et_pb_animation_off_tablet et_pb_animation_off_phone et-pb-icon et-pb-icon-circle">&#xe101;</span></span></div>
					<div class="et_pb_blurb_container">
						<h4 class="et_pb_module_header"><span>Technologies</span></h4>
						<div class="et_pb_blurb_description"><p>PHP</p>
<p>Symfony2</p>
<p>WKHTML</p>
<p>ImageMagick</p>
<p>Chrome Extensions</p></div>
					</div>
				</div>
			</div>
			</div><div class="et_pb_column et_pb_column_1_4 et_pb_column_78  et_pb_css_mix_blend_mode_passthrough et-last-child et_pb_column_empty">
				
				
				
				
				
			</div>
				
				
				
				
			</div>
				
				
			</div><div class="et_pb_section et_pb_section_19 et_section_regular" >
				
				
				
				
				
				
				<div class="et_pb_row et_pb_row_39">
				<div class="et_pb_column et_pb_column_4_4 et_pb_column_79  et_pb_css_mix_blend_mode_passthrough et-last-child">
				
				
				
				
				<div class="et_pb_module et_pb_cta_9 et_hover_enabled et_pb_promo  et_pb_text_align_center et_pb_bg_layout_dark">
				
				
				
				
				<div class="et_pb_promo_description"><h2 class="et_pb_module_header">Want us to build or design your site?</h2><div> </div></div>
				<div class="et_pb_button_wrapper"><a class="et_pb_button et_pb_promo_button" href="/contact-us/">Get in touch!</a></div>
			</div>
			</div>
				
				
				
				
			</div>
				
				
			</div></p>
<p>The post <a href="https://www.bairwell.com/project/comprobo-viewassure/">Comprobo &#8211; ViewAssure</a> appeared first on <a href="https://www.bairwell.com">Bairwell PHP and WordPress Development</a>.</p>
]]></content:encoded>
					
		
		
			</item>
	</channel>
</rss>

<!--
Performance optimized by W3 Total Cache. Learn more: https://www.boldgrid.com/w3-total-cache/?utm_source=w3tc&utm_medium=footer_comment&utm_campaign=free_plugin

Page Caching using Disk: Enhanced 
Minified using Disk
Database Caching 62/157 queries in 0.086 seconds using Disk

Served from: www.bairwell.com @ 2026-04-30 15:28:38 by W3 Total Cache
-->