Instantly share code, notes, and snippets.


Keybase proof

I hereby claim:

  • I am bag-man on github.
  • I am bag_man ( on keybase.
  • I have a public key ASDcVWpn_Gzg_zivsjlklILaFDKNDBCaRxiwJdJvvdMIdQo

To claim this, I am signing this object:

View find-coding-range.js
module.exports = function findCodingRange (codingSeq, contig, reverse) {
let codingLength = codingSeq.length
, start = 0
, end = 0
, selector = 12
, fail = false
start = contig.indexOf(codingSeq.substring(0, selector))
end = contig.indexOf(codingSeq.substring(codingLength - selector, codingLength)) + selector

I've always had fzf and ripgrep on my radar, and I've finally gotten around to using them together. Good lord it makes a world of difference, especially when added to Vim as well as Bash.

Add the following snippet to your ~/.bashrc, this add's fzf keybindings to bash and gets fzf to use ripgrep by default for faster searching.

[ -f ~/.fzf.bash ] && source ~/.fzf.bash
export FZF_DEFAULT_COMMAND='rg --files --no-ignore --hidden --follow --glob "!.git/*"'
bind -x '"\C-p": vim $(fzf);'

Okay now what can you do?


This is an assessed reflection on some workshops that we did for Agile Methodologies

Agile Workshop Reflections

As part of the course we have done three two hour workshops on Agile methodologies. These have been interesting as they have formalised the practises that I had been doing previously in my industrial year.

For example I wasn't aware that pair programming, test driven development, and continuous integration were part of extreme programming, however I had been using them all year. It was also interesting to see that other practices I had been trained in were closely related to the agile manifesto, such as creating and weighting stories, but we weren't following agile in any formal way.

Pair Programming

Pair programming is an excellent tool and from experience of the workshops, personal projects and my industrial year, I can argue that working as a pair is a lot more efficient than working individually. The caveat for this is that both partners are at the same level of familiarisation

import praw
import random
import os
from urllib.request import urlretrieve
r = praw.Reddit(user_agent='wallpapergrabber')
submissions = r.get_subreddit('offensive_wallpapers').get_hot()
urls = []
View database.js
'use strict'
const MongoClient = require('mongodb')
class Database {
constructor (uri) {
this.uri = uri
this.db = {}
return this
View find-domain-and-port.js
'use strict'
const url = require('url')
function getUrl (dataUrl) {
if (dataUrl.split('://').length === 1 || dataUrl.startsWith('://')) {
dataUrl = `http://${dataUrl.replace('://', '')}`
return dataUrl

MongoDB Performance on ZFS and Linux

Here at Clock we love ZFS, and have been running it in production on our Linux file servers for several years. It provides us with numerous excellent features, such as snapshotting, incremental send/receive, and transparent compression. With the recent release of Ubuntu Xenial 16.04 official support for ZFS is now here, and we are keen to integrate it fully into our next generation hosting stack.

As a Node.js and MongoDB house, one of our main concerns has been how MongoDB will perform on ZFS on Linux, especially after reading about potential problems other people have faced. There really isn't much data out there to put our minds at rest.

We decided to setup a method of benchmar

formatDrives() {
mkfs.ext4 /dev/sdc
mkfs.xfs /dev/sdd
createZFS () {
sleep 30
zpool destroy tank
zpool create -f -m /zfs tank /dev/sde
if [ $1 ]; then
View fugitive.patch
index a2cb700..2c44b3d 100644
--- a/plugin/fugitive.vim
+++ b/plugin/fugitive.vim
@@ -3012,7 +3012,7 @@ function! fugitive#statusline(...) abort
if &statusline =~# '%[MRHWY]' && &statusline !~# '%[mrhwy]'
return ',GIT'.status
- return '[Git'.status.']'
+ return ' '.status