This is a quick work around until I've had a good think about a way to organise
the archive.
2019
- Adding missing functionality to Terraform - I needed to codify the creation of PostgreSQL read replicas, so I did a bit of research around ways I could do this quickly without...
- Learning about eBPF on macOS - I've created this is a short post to talk about a new GitHub repo that might be useful to some: vagrant-bcctools.
It's a simple Vagrant box...
- AWS DevOps Pro Certification Blog Post Series: Exam Time! - This is part of the blog post series: AWS DevOps Pro Certification
Caveat emptor
Using AWS costs money, some of these services may not be part of...
- AWS DevOps Pro Certification Blog Post Series: Study Gaps - This is part of the blog post series: AWS DevOps Pro Certification
Caveat emptor
Using AWS costs money, some of these services may not be part of...
- AWS DevOps Pro Certification Blog Post Series: Databases - This is part of the blog post series: AWS DevOps Pro Certification
Caveat emptor
Using AWS costs money, some of these services may not be part of...
- AWS DevOps Pro Certification Blog Post Series: Amazon Single Signon, CloudFront, Autoscaling and Route53 - This is part of the blog post series: AWS DevOps Pro Certification
Caveat emptor
Using AWS costs money, some of these services may not be part of...
- AWS DevOps Pro Certification Blog Post Series: High Availability, Fault Tolerance and Disaster Recovery - This is part of the blog post series: AWS DevOps Pro Certification
What does the exam guide say?
To pass this domain, you'll need to know the...
- AWS DevOps Pro Certification Blog Post Series: Incident and Event Response - This is part of the blog post series: AWS DevOps Pro Certification
What does the exam guide say?
To pass this domain, you'll need to know the...
- AWS DevOps Pro Certification Blog Post Series: Policy and Standards Automation - This is part of the blog post series: AWS DevOps Pro Certification
What does the exam guide say?
To pass this domain, you'll need to know the...
- AWS DevOps Pro Certification Blog Post Series: AWS X-Ray - This is part of the blog post series: AWS DevOps Pro Certification
Caveat emptor
Using AWS costs money, some of these services may not be part of...
- AWS DevOps Pro Certification Blog Post Series: CloudWatch - This is part of the blog post series: AWS DevOps Pro Certification
Caveat emptor
Using AWS costs money, some of these services may not be part of...
- AWS DevOps Pro Certification Blog Post Series: Monitoring and Logging - This is part of the blog post series: AWS DevOps Pro Certification
What does the exam guide say?
To pass this domain, you'll need to know the...
- AWS DevOps Pro Certification Blog Post Series: AWS Config and Managed Services - This is part of the blog post series: AWS DevOps Pro Certification
Caveat emptor
Using AWS costs money, some of these services may not be part of...
- AWS DevOps Pro Certification Blog Post Series: AWS ECS - This is part of the blog post series: AWS DevOps Pro Certification
Caveat emptor
Using AWS costs money, some of these services may not be part of...
- AWS DevOps Pro Certification Blog Post Series: AWS Lambda - This is part of the blog post series: AWS DevOps Pro Certification
Caveat emptor
Using AWS costs money, some of these services may not be part of...
- AWS DevOps Pro Certification Blog Post Series: OpsWorks - This is part of the blog post series: AWS DevOps Pro Certification
Caveat emptor
Using AWS costs money, some of these services may not be part of...
- AWS DevOps Pro Certification Blog Post Series: Elastic Beanstalk - This is part of the blog post series: AWS DevOps Pro Certification
Caveat emptor
Using AWS costs money, some of these services may not be part of...
- AWS DevOps Pro Certification Blog Post Series: CloudFormation - This is part of the blog post series: AWS DevOps Pro Certification
Caveat emptor
Using AWS costs money, some of these services may not be part of...
- AWS DevOps Pro Certification Blog Post Series: Configuration Management and Infrastructure as Code introduction - This is part of the blog post series: AWS DevOps Pro Certification
What does the exam guide say?
To pass this domain, you'll need to know the...
- AWS DevOps Pro Certification Blog Post Series: Code Pipeline - This is part of the blog post series: AWS DevOps Pro Certification
Caveat emptor
Using AWS costs money, some of these services may not be part of...
- AWS DevOps Pro Certification Blog Post Series: Code Deploy - This is part of the blog post series: AWS DevOps Pro Certification
Caveat emptor
Using AWS costs money, some of these services may not be part of...
- AWS DevOps Pro Certification Blog Post Series: Code Build - This is part of the blog post series: AWS DevOps Pro Certification
Caveat emptor
Using AWS costs money, some of these services may not be part of...
- AWS DevOps Pro Certification Blog Post Series: Code Commit - This is part of the blog post series: AWS DevOps Pro Certification
Caveat emptor
Using AWS costs money, some of these services may not be part of...
- AWS DevOps Pro Certification Blog Post Series: SDLC automation introduction - This is part of the blog post series: AWS DevOps Pro Certification
What does the exam guide say?
To pass this domain, you'll need to know the...
- AWS DevOps Pro Certification Blog Post Series - This is the start of a blog post series about studying for the AWS DevOps Professional certification.
Background
First a bit of background about me, I'm an...
- Gatsby and WordPress: Summary - We've reached the end of our blog series, so what have we learnt?
Gatsby has a great starter template that is highly performant (gatsby new). Whilst...
- Gatsby and WordPress: Yarr! Cutlasses and WebHooks! - We’re almost finished! All we need to do is get WordPress to tell Netlify when we’ve published any new posts. To do this, we’ll use...
- Gatsby and WordPress: Netlify or Die! - We’re done with our new site, it’s time to setup Netlify.
Install gatsby-cli in your repo (netlify needs it to build your site): npm install --save...
- Gatsby and WordPress: Creating WordPress Page Types - WordPress Pages are another Post Type, they differ from Post Post(!) Types insofar that they aren’t time-related or be assigned categories and tags. Generally, they’re...
- Gatsby and WordPress: Creating an index page - Order order! Let’s create an index to list our posts
Let’s visit http://localhost::8000/___graphql to fire up the builtin GraphQL explorer and paste the following query.
{
...
- Gatsby and WordPress: Creating Content - Pulling in content from WordPress
Now that we’ve verified that the plugin can pull in data from our WordPress site, let’s start creating static content based...
- Gatsby and WordPress: Setup - This is the start of a blog post series about creating Gatsby site with content pulled in from a WordPress site.
Setup
Create a new Gatsby site...
- Gatsby and WordPress: Keeping it cheap and staying in touch - This is the start of a blog post series about creating Gatsby site with content pulled in from a WordPress site.
Gatsby is a static site...
2018
- When is a MySQL error not a MySQL error - I came across this error recently: Mysql2::Error: Can't connect to MySQL server on 'some-db-server.example.com' (113)
A quick search on the Internet, resulted in various Q &...
- Craft as a Fox - This is part of my "Blogging my Homework" blog post series, the introductory post can be found here.
Caveat emptor: any errors or misunderstanding around concepts...
- Being a Hedgehog - Part Two - This is part of my "Blogging my Homework" blog post series, the introductory post can be found here.
Caveat emptor: any errors or misunderstanding around concepts...
- Being a Hedgehog - Part One - This is part of my "Blogging my Homework" blog post series, the introductory post can be found here.
Caveat emptor: any errors or misunderstanding around concepts...
- Blogging my Homework - The company I work for Made Tech care about their employees' personal development. They take this matter so seriously that on Friday afternoons, we spend...
- Building and installing a Ready game on iOS - I’ve been playing around with Ready which is a lovely and easy to use tool that allows you to create video games. Ready is aimed...
- Let's Encrypt certificate renewal without downtime - Warning: this blog post assumes the following:
you are running nginx in a Docker container.
Let’s Encrypt has been configured correctly in the nginx container.
You are...
- Version Management for Ruby, Python, Node and Rust - Here's a handy cheat sheet if you find yourself needing an exotic version of Ruby, Python, Node or Rust. Other version management tools are available...
- How to run Rust in OpenFaaS - I’ve been getting into Kubernetes in a big way, this is partly thanks to it being bundled in Docker for Mac Edge edition.
Once I'd learnt...
- A sketchpad project based on Sinatra, Nginx using docker-compose - I recently came across a monolithic application at work that used various frameworks, which in turn made extending existing routes very difficult to implement.
The general...
- Mozilla Global Sprint - I wanted to share my experience of participating at Mozilla's Global Sprint 2018. The Global Sprint runs once a year and is a two day...
- Tunnelling TCP over DNS in 2018 - I wrote this article after seeing that no one had written anything about tunnelling tcp traffic over dns since 2016.
A common use of this...
- Open source tools and work proxies - I often use a lot of open source tooling at work, initially I started with with node and npm (for our front end), and more...
- Rust2018 - A year of talks - Background: This my blog post for the Rust team's request for community blog posts.
Before I address my hopes for Rust in 2018, I thought I'd...
- Flocking shell - Yesterday, I had an interesting problem. My cron task spawned hundreds of copies of itself because it was blocking on a database call. If a...
2017
- Porting python turtle examples to turtle.rs - I've been tinkering around with the Rust version of Turtle graphics. Turtle graphics, was a key feature of the programming language Logo, and has frequently...
- London Perl Workshop 2017 - Almost a month a go, around the same time as Mozilla
Fest, Neil
Bowers put out a request for a Rust talk via
twitter.
I would love someone to...
- MozFest 2017 Rust Resources - Here's the websites I've been touting at MozFest:
The API documentation for the rand crate, to demonstrate the amazing detail and functionality you can add to...
- Remote speaking tips - On Monday I did my first remote talk (for the Rust
Edinburgh user group). I thought I'd share
my experience to help others who want to do...
- National Novel Generation Month 2016 Reflection - National Novel Generation Month aka NaNoGenMo is a month long contest to write code to generate a novel of 50k+ words.
Before I start talking about...
- Alexandria PL/SQL Utility Library - Imagine if BatMan was an Oracle DBA, his utility belt would be the Alexandria PL/SQL Utility Library.
How to install Microsoft Office document parsers (OOXML)
Assumptions
This has...
- Oracle tips - Hiding user input
Sometimes you need to keep something secret (shoulder surfing), this will only work in SQL/Plus or Oracle SQL Developer (F5/Run script mode aka...
- C Sharp and .NET tips - NUnit TestCases with instances of a type
public IEnumerable<TestCaseData> CanParseAsThingyTestCases
{
get
{
Setup();
...
- A developer on-boarding guide for Rust - Background: We needed a meta reference for our study group event!
Setting up your IDE/Code editor for Rust
Nick's RLS showcase blog post
booyaa's RLS talk - if...
- Troubleshooting the Rust Language Server - To understand how to troubleshoot the Rust Language Server (RLS), it helps to know what RLS is and how the components interact.
RLS is a Rust...
- Regular Expressions Miscellany - Oracle related regular expressions
regexp_count and regexp_replace functions
Let say you have a column that contains source for an Oracle object. We want to extract documentation...
- London Rust User Group Meetup No. 15 - Interwebs
Fixed as of 0.3.2 2017-08-15 on #Rocket
<Sergio> Quick announcement: latest Rust nightly breaks Rocket's lints.
Please use a nightly between 2017-08-10 and 2017-08-13 while the...
- Message Queue Miscellany - This is a bit of a hodge podge of message queue notes. Very IBM centric at the moment.
Command line tools
Cheatsheet
SET MQSERVER=CHANNEL.NAME/TCP/HOST OR IP ADDRESS(PORT)
AMQSPUTC QUEUENAME...
- Using Rust with Visual Studio Code - Which extension?
First off if you can, you should be using the Rust Language Server (RLS) extension. Yes it's beta, but the user experience has been...
- Rust Language Server and Visual Studio Code - Click here to skip the history lesson and go straight to the tips.
I first heard about the Rust Language Server (RLS), via Phil Dawes' Racer...
- London Rust User Group Meetup No. 14 - Interwebs
Cambridge Meetup No. 2
Request for Explanation Episode No. 2 - Stealing Chickens on the Internet. No. 4 landed on Monday!
RustFest Zurich CFP: closes July 23rd...
- Cargo cult - the problem with copying existing code - A quick note to myself on how to identify build errors. This is also a timely
reminder that you should create code from scratch once in...
- SSIS Variable Dispenser Template - I don't write enough SSIS script blob tasks to commit this to memory. This is the safest way to access variables without inadvertantly locking them...
- ORDS tips - XML over ORDS
Turns out you can emit XML via ORDS. I'll assume you have a working ORDS install and the schema is already enabled
BEGIN
...
- Add support for tags to Cobalt - A while back I started adding a new front matter attribute to all my posts
called tags. I initially did this to improve my site search...
- Setting up exercism python track with Visual Studio Code - Here's a fairly good setup for getting the python track of exercism working
with virtual env and Visual Studio Code.
virtual env
create one, and install the following...
- python tips - A random collection of Python tips, I also write Python code in MacOS and
raspbian so you'll see tips for those platforms.
Docker images (python related)
httpbin -...
- youtube-dl gems - A handy collection of youtube-dl incantations, remember it's not just for
youtube-dl! There's plenty more, but these are the one use I use on a...
- Adding an archive page to your Cobalt blog - To avoid slowing down the index page, there's a point where you need to limit
how many blog posts you want to appear on screen. This...
- Flashback, what did this data look like previously? - I'm only scratching the surface of what you can do with flashbacks in Oracle.
Our DBAs are absolute ninjas when it comes to using this...
- SQL Developer's new format hints - One of my favourite cool features in SQL Developer is the ability to turn a sql
query output into an entirely different format. It doesn't even...
- Bitmasks in SQL - bitmasks are really handy way to express predicates without becoming overly
verbose with parens and logical operators (AND and OR). Assume we have the
following table.
|...
- Dirty Dynamic SQL - Not all dynamic sql is strictly for immediate execution, nor is it dirty (I
needed aninteresting title). I learnt this tricks from my friend at work,...
- When XML attacks! - At some point in your xml wrangling career you will hit an node whose data is
too big for Oracle's EXTRACTVALUE (I think the upper limit...
- Bind vs Substitution variables - I always have difficulty remember the difference between these type of
variables. Although now, that I've started doing a lot of ORDS related work,
the difference...
- PL/SQL script to query a refcursor - This will probably work in pipelined functions or packages too. Note the use of
the bind variable to link the PL/SQL script variables to the out...
- Defensive coding in SQL - Always wrap ON clauses in parens to avoid predicates being deleted
accidentally. The following code will scream if you delete the AND clause.
SELECT *
FROM...
- Collapsible Sections in HTML - But first a demo...
Works great in GitHub! (click me)
Dipshit with a nine-toed woman. Dolor sit amet, consectetur adipiscing elit praesent ac...
- See hidden files in Finder - If you search for how to do this, you get a lot of nonsense involving messing with defaults write and horrific applescript bodges.
CMD + SHIFT...
- Using pre-built lunr indexes - I've implemented pre-built indexes vs. on demand i.e. generating them when the
search page is being loaded. I'm not entirely happy with the solution yet...
- Useful git commmands - Commit logs
Now that I've started adding useful commit messages
it's really use to make sense of my commits, more so when you use single line
mode.
$...
- Adding search to your cobalt site - Part Two - This will be a two part post, where I detail the steps it took to enable search on my Cobalt site.
As you may have gathered...
- Adding search to your cobalt site - Part One - This will be a two part post, where I detail the steps it took to enable search on my Cobalt site.
In this first post I...
- Useful commit messages - Keeping a copy of this excellent bit of advice until I've committed (no pun) it
to memory.
feat: add hat wobble
^--^ ^------------^
| ...
- Add reading time in Cobalt - I wanted to add an approximate reading time to each of my blog posts, like those seen in medium posts. There's a lot of really...
- Using a custom domain with GitHub Pages - It took far too long to work out how to do this on the GitHub help pages...
Assumptions:
I've only tested for personal/user domain i.e. the doc...
- Using Cobalt with GitHub pages - It turns out using Cobalt and your
personal GitHub page is a bit trickier to setup. Your personal GitHub page as
oppose to your repo...
- MacBook Air Setup - Here's my current setup for my MacBook Air Setup. I use a range of tools like
homebrew, Visual Studio Code and vim.
homebrew
brew install \
...
- Code generation scripts in PL/SQL - Flattening XML paths
The table elephant_castle has a XMLTYPE column details that we want to
get a list of distinct node paths.
WITH node_list AS (
...