Bruce and Pu
Bruce Blacklaws |
Request interview
Remote 🌎
Cape Town
Bangkok, Chiang Mai
Git commit viewer
View the commits in my private repositories without needing access to them
Repository count: 18
Total commits: 257 💪
Repository Commit Author Date Keeping this the same as LinkedIn 24-Jun-21
Updating current job title 21-Jun-21
Adding Node.js and Gradle tech stack PNG images to CV 13-Jun-21
Adding PF to CV (cv-companies and work array), pre-loading exclamation mark for chat application, updating Hire DevOps app URI in locationRedirector, adding max-width to chat messages 12-Jun-21
Adding latest app screenshot, updating README markdown 08-Jun-21
Adding additional useful JS libraries, forgot to import the utilities module with RequireJS, fading out the initial message in the chat app 26-May-21
Removing RequireJS from the onload event listener (causes issues on mobile) 23-May-21
Allowing the chat app on mobile/tablet, scoping Google Analytics and exposing enableGoogleAnalytics() method 23-May-21
Preloading the images used in the chat application, setting the title for the formatted error webpages 17-May-21
Connecting the WebSocket client to the production endpoint 16-May-21
Adding profile pictures to the chat application 16-May-21
Pulling in the Google Fronts PT Sans font and styling 15-May-21
Implementing RequireJS on the frontend and completely removing the need for the original globals, created modules for: alerting, chat, recaptcha, websocket, pulled Sweetalert2 internally and not using the JS CDN 14-May-21
implementing reCaptcha for the chat application 14-May-21
getting the chat app working 10-May-21
heck of a lot is being worked on here (not live yet) 08-May-21
Dynamically setting the input width and preventing overflow 05-May-21
Hiding the chat scrollbar in webkit, Updating SMS client to v1.2, Updating CS client to v1.1 03-May-21
The websocket server does not work in Cloud Run yet, catching websocket onerror event 02-May-21
only rendering the alerting element on desktop, moving more styling to the shared stylesheet 01-May-21
I'm leaving the WebSocket server on Knative for now 30-Apr-21
fixing up issues on mobile, starting to build the chat application (not deployed yet) 25-Apr-21
implementing no modal for certain apps, improving usability on mobile and tablet, adding cv button on mobile and tablet 15-Apr-21
updating apps techstack descriptions 10-Apr-21
using Hire DevOps webpage screenshot with the shell improvements 09-Apr-21
adding Hire DevOps side-project and adding it to the location redirector 08-Apr-21
appevolved-fe Adding a placeholder for the customer logos, using a tick for the comany logo, generally improving the styling 24-Jun-21
go production 06-Apr-21
envoyproxy SSL was failing because the hostname is case-sensitive (it's a bug: 06-Apr-21
input autocomplete password --> current-password 03-Apr-21
input type changed to password 03-Apr-21
adding Google Analytics, adding loading for the control panel, adding styling when JS disabled 03-Apr-21
scaling to zero, cleaning up 02-Apr-21
go production 02-Apr-21
Updating API endpoint hostname 02-Apr-21
WIP: godev 02-Apr-21
WIP: dynamic form validation, updated images 02-Apr-21
WIP: adding icons, JS form submission and validation, Knative deployments, etc 01-Apr-21
WIP: Systems automation experts 31-Mar-21
Configuring deployments into 22-Nov-20
adding a lang attribute 31-May-20
getting w3c compliant 31-May-20
Update semaphore.yml 31-May-20
Update package.json 31-May-20
Update package.json 31-May-20
Update package.json 31-May-20
install uglify-js 31-May-20
adding apps and aws services 31-May-20
adding LinkedIn preview (Open Graph Protocol) 27-Apr-20
removing app portfolio for now 22-Mar-20
Update semaphore.yml 21-Mar-20
Update semaphore.yml 21-Mar-20
chat-app-ionic I need to learn a lot about frontend frameworks but this is really cool 22-Jun-21
Initial commit 21-May-21
Initial commit 21-May-21
github-commits [ImgBot] Optimize images *Total -- 709.80kb -> 590.44kb (16.82%) /screenshot-static.jpg -- 210.60kb -> 155.96kb (25.94%) /screenshot.png -- 499.20kb -> 434.48kb (12.96%) Signed-off-by: ImgBotApp <> 20-Jun-21
Updating the Open Graph screenshot, adding screenshot to 20-Jun-21
Updating image-processor endpoint 02-May-21
appending latest tag to container image, updating image-processor endpoint 30-Apr-21
position fixed for the git stats, keeping the colours consistent 15-Apr-21
cleaning up 02-Apr-21
scaling to zero (attempting to reduce resources) 02-Apr-21
Updating the CI pipeline 30-Mar-21
Google Cloud Run --> DigitalOcean Knative, updating image-processor URI 30-Mar-21
removing cache (accidentally commited the API response cache) 28-Mar-21
fixing up the Earth emoji 28-Mar-21
Changing the request interview URI (using my new locationRedirector class 23-Mar-21
improving the styling 21-Mar-21
using a shortened date, fixing the styling on Firefox/Quantum 21-Mar-21
adding request interview with preferable work locations tooltip, adding emojis, improving the styling 21-Mar-21
Updating the title 14-Mar-21
changing the app description 08-Mar-21
keeping the ASCII art the same across all my apps 22-Feb-21
update image URI (using the new image processor microservice 22-Feb-21
Ensuring Docker entrypoint is consistent across all my containerised apps 21-Feb-21
Increasing the repository commit count 13-Feb-21
shortening the date column 12-Feb-21
app is completely containerised now and hosted with Google Cloud Run 28-Dec-20
tracking the Let's Encrypt working directory (contains TLS public-keys) 28-Dec-20
Incrementing the repository and commit display counts (I'm working on more projects now) 07-Nov-20
adding background color 25-Oct-20
image-processor Updating git contributions calendar (I've being working like hell) 19-Jun-21
Updating CS client to v1.1 03-May-21
Using latest container image tag, updating WEB_ALIAS_DOMAIN, CI/CD pipeline deploying into Cloud Run 03-May-21
scaling to zero, cleaning up 02-Apr-21
updating the correct kn service name 29-Mar-21
Google Cloud Run --> DigitalOcean Knative 29-Mar-21
Adding screenshot of OS X Dock (just fun stuff) 17-Mar-21
Reszing PHP.png 14-Mar-21
Reszing PHP.png 14-Mar-21
Adding IDE screenshot of PHP code (from Carbon) 14-Mar-21
Ensuring Docker entrypoint is consistent across all my containerised apps 21-Feb-21
Adding more personal images 14-Feb-21
Complete app re-write, uses the imageStore instead of a class name, can check Cloud Storage too 14-Feb-21
Initial commit 09-Feb-21
hiredevops-fe Adding latest app screenshot 08-Jun-21
Adding latest app screenshot 08-Jun-21
Updating og:url, changing backend API endpoint 28-May-21
fixing the stray tags, adding additional meta tags 28-May-21
go live build, updating the open graph screenshot 26-May-21
go live build, updating the open graph screenshot 26-May-21
Adding company button colour scheme and font, making the technical test more complicated and increasing the timer, using the web server to prevent access to the development JavaScript 26-May-21
Adding sweetalert2 for popup modals, getting the application form URI from the backend API, testing the backend production API endpoint 26-May-21
I'm verifying the SMS token on the backend asynchronously 25-May-21
Restricting the shell until the SMS token is validated, implementing of the XtermFitAddon constructor function, added company branding 25-May-21
using a screenshot that does not show the completed test result :-) 09-Apr-21
added clear command, improved the shells appearance, corrected open graph url, added google analytics 09-Apr-21
updating Dockerfile and 08-Apr-21
initial release of the app (probably has a lot of bugs) 08-Apr-21
Initial commit 06-Apr-21
hiredevops-be Changing permissions on the document root directory (/path/) so that the PHP-FPM user can write to the directory 28-May-21
Sending the apps auth token via SMTP 26-May-21
Storing the application form URI on the backend (this API call still needs authentication) and adding a note regarding the persistent storage for the known candidates 26-May-21
Removing the test knownCandidates.json data 25-May-21
Adding newCandidate and validateToken API calls (the BE API needs to do multiple things now) 25-May-21
Built the basic framework, can successfully validate a candidate, need to integrate into an SMS gateway (not using my SMS API microservice because this is going to be hosted by the company) 25-May-21
Initial commit 25-May-21
messaging-wss Changing messengerServer::userOffline constant 16-May-21
Using v1.5 of the PHP WebSocket server 16-May-21
Built validChatBot interface (might use another chatbots), creating associations between the registered application class name and the DialogFlow agent name 16-May-21
Starting the integration into Google Dialogflow 15-May-21
adding addContact and removeContact for the admin panel, associating the admin registered app with the connected client apps, letting the user know if the default user is offline 10-May-21
heck of a lot is being worked on here (not live yet) 08-May-21
still a lot to do here 05-May-21
Implementing Sentry, composer install on container image build, updating WEB_ALIAS_DOMAIN 04-May-21
moving back to bloatless/php-websocket (I'm not using Envoy anymore) 02-May-21
a yeck of a lot has been completed here... 18-Apr-21
the basic concept works but this app needs a lot of work still 17-Apr-21
Initial commit 21-Mar-21
bloatless-php-websocket Only printing the logs if it's enabled 10-May-21
Correction: I thought it was camel case 05-May-21
Referencing both assoc array keys (depending on which one exists) 04-May-21
And the assoc array keys have changed again (this time it's because of Google Cloud Run) 04-May-21
The assoc array keys are case-sensitive (the keys are incorrect because of the bug in Envoyproxy) 18-Apr-21
reverting back to v2.1.0 18-Apr-21
update composer.json 18-Apr-21
update composer.json 18-Apr-21
private fork of bloatless/php-websocket 18-Apr-21
terraform-digitalocean Removing (the relational database server) because I'm using Google Cloud SQL now 04-May-21
tracking Terraform state and backup 26-Feb-21
adding db server type, adding manual installation type, adding rdb-01-lon 26-Feb-21
Deprecating frontend and backend webservers (this server infrastructure is replaced by containerisation) 24-Feb-21
Tracking the Terraform state 22-Nov-20
Terraform is managing all the DNS zones for my apps 22-Nov-20
Update 15-Nov-20
I'm working on the deployment shell script that automatically prepares the initial configuration and invokes Puppet 08-Nov-20
I'm getting this project off the ground 07-Nov-20
Initial commit 07-Nov-20
request-interview Updating SMS client to v1.2, updating CS client to v1.1 03-May-21
Updating the comment in 03-May-21
Updating relational database API client (v4.2 --> v4.3), updating WEB_ALIAS_DOMAIN 03-May-21
Configuring 30-Apr-21
Updating relational-database-client to v4.2 30-Apr-21
cleaning up 02-Apr-21
scaling to zero 02-Apr-21
Google Cloud Run --> DigitalOcean Knative 29-Mar-21
using v4.1 of the relational database api client 05-Mar-21
updating relational database api client to release v4 26-Feb-21
Ensuring Docker entrypoint is consistent across all my containerised apps 21-Feb-21
returning HTTP status 200 OK on OPTIONS request, allowing OPTIONS request in preflight 18-Feb-21
Initialising the pipeline 14-Feb-21
Setting Content-Type header, changing the company pitch, activating SemaphoreCI 14-Feb-21
This server API works and can successfully process interview requests 11-Feb-21
Adding database procedures getPreviousInvitations() and logInterviewRequest() 11-Feb-21
Adding a simple database schema 11-Feb-21
relational-database-client and cs-client composer packages installed, LOTS to do 09-Feb-21
Initial commit 09-Feb-21 Updating CS client to v1.1 03-May-21
Updating relational database API client (v3.2 --> v4.3) 03-May-21
Updating the image-processor endpoint (using cloudrun wildcard DNS zone) 02-May-21
Updating image-processor endpoint, using latest container image tag 01-May-21
fixing open graph (the envoyproxy case-sensitivity TLS bug), implementing Google Analytics 10-Apr-21
using php7.3 07-Apr-21
scaling to zero, cleaning up 02-Apr-21
removing unused JS - Twig fixed this issue 29-Mar-21
Google Cloud Run --> DigitalOcean Knative, updating styling, updating hrefs 29-Mar-21
update URIs 21-Feb-21
Ensuring Docker entrypoint is consistent across all my containerised apps 21-Feb-21
Keeping the ASCII art the same on all my apps 18-Feb-21
Updating the Image Processor URI 14-Feb-21
adding additional permissions 13-Feb-21
fixing the IAM service account deployment permissions 13-Feb-21
Performing the gcloud components updated outside the installation directory 13-Feb-21
Getting SemaphoreCI to deploy new Cloud Run service revisions 13-Feb-21
deleting old stuff 12-Feb-21
Password protecting the admin panel using the web server 12-Feb-21
completely rewritten (CS API and Client for file storage, Twig for SSR) and app containerised and ready for Cloud RUN 12-Feb-21
Update index.php 20-Oct-20
Update mobile.css 20-Oct-20
adding Prism.js for syntax highlighting 20-Oct-20
Excluding latest.json-exclude 17-Oct-20
Update index.php 17-Oct-20
Update index.php 17-Oct-20
appevolved-be Updating SMS client to v1.2, updating CS client to v1.1 03-May-21
Updating relational database API client (v4.2 --> v4.3) 03-May-21
Bump up the relational database client, add, adding GCP IAM service account 30-Apr-21
scaling to zero, cleaning up 02-Apr-21
init the pipeline, built requestQuote and authenticateUser API calls 02-Apr-21
WIP: basic app framework up, PSR-4 class autoloader, requestQuote logic 01-Apr-21
Initial commit 12-Mar-20
CS-Client Updating API endpoint hostname 03-May-21
apiClient build, static methods apiClient::readFile() and apiClient::writeFile() built, needs a lot of work but the basic logic does what it needs to 09-Feb-21
Initial commit 09-Feb-21
SMS Using cloudrun wildcard DNS zone, --> 03-May-21
Ensuring Docker entrypoint is consistent across all my containerised apps 21-Feb-21
Update 29-Sep-20
implementing appClassLoader 13-Sep-20
Update index.php 12-Sep-20
Initial base idea, still a lot to do 12-Sep-20
adding a .gcloudignore and updating 31-Aug-20
Initialize the app 31-Aug-20
Merge pull request #1 from bruceblacklaws/set-up-semaphore Update Semaphore configuration 31-Aug-20
Update Semaphore configuration 31-Aug-20
Initial commit 31-Aug-20
SMS-Client Updating API endpoint hostname 03-May-21
fixing the broken JSON in the POST request Body and throwing an exception if the response JSON is unparsable 11-Feb-21
The SMS API client is a relatively small project 11-Feb-21
Initial commit 11-Feb-21
relational-database-api Using cloudrun wildcard DNS zone 03-May-21
Connecting to Cloud SQL via UNIX domain sockets (reduces the cost because no serverless VPC connector required) 30-Apr-21
Configure CI/CD for Cloud Run 30-Apr-21
Moving to Google Cloud Run (DigitalOcean is to expensive) 30-Apr-21
scaling to zero 02-Apr-21
updating annotations: preventing scaling to zero, autoscaling on connection concurrency 29-Mar-21
Setting kn binary to executable 06-Mar-21
Installing kn binary in the pipeline, Updating Knative service image URL to latest 06-Mar-21
Adding Sentry to the project 06-Mar-21
using a kube config that does not require doctl 05-Mar-21
adding database connection string as global environment variable in docker container, getting SemaphoreCI deployments to work with Knative on DO 05-Mar-21
changed the incorrect variable name and json key references 20-May-20
Update mysql.php 04-May-20
don't using caching for SQL multi-queries 04-May-20
awe 03-May-20
Update json.php 03-May-20
Update json.php 03-May-20
Update json.php 03-May-20
Update memcached.php 03-May-20
Update json.php 03-May-20
Update json.php 03-May-20
awe 03-May-20
awe 03-May-20
Update functions.php 02-May-20
Update json.php 02-May-20
Update json.php 02-May-20
CS Deleting old Google IAM service account 03-May-21
Using latest container image tag, --> 03-May-21
Changing Sentry projet name (DSN) 06-Mar-21
adding the Google IAM service account (not sure what deleted it) 05-Mar-21
Init the pipeline 05-Mar-21
Initialising Semaphore on this project 05-Mar-21
Using Sentry to display exceptions (debugging issues in Cloud Run is actually quite difficult) 05-Mar-21
Ensuring Docker entrypoint is consistent across all my containerised apps 21-Feb-21
setting Cache-Control header to 'no-store' (client API calls were receiving old/cached data) 12-Feb-21
The basic app framework works (allows reading and writing objects for Google Cloud Storage) 31-Dec-20
Adding logic for app containerisation 31-Dec-20
Adding the Google IAM service account 31-Dec-20
Initial commit 28-Dec-20