Skip to content

Instantly share code, notes, and snippets.

Owen Garland bag-man

Block or report user

Report or block bag-man

Hide content and notifications from this user.

Learn more about blocking users

Contact Support about this user’s behavior.

Learn more about reporting abuse

Report abuse
View GitHub Profile
@bag-man
bag-man / XMLReader.ts
Last active Jul 11, 2019
A class wrapper around libxmljs, for reading values with XML namespaces
View XMLReader.ts
import { Document, Element, parseXml } from 'libxmljs';
import { VError } from 'verror';
export class XMLReader {
private document: Document;
private namespaces: Record<string, string>;
constructor(inputXml: string) {
try {
this.document = parseXml(inputXml);
@bag-man
bag-man / test.ts
Last active Apr 16, 2019
1 + 1 = 2 testing antipattern
View test.ts
// Avoid generating expected results as they are not testing your logic independently
describe('1+1=2 testing antipattern', () => {
describe('add', () => {
const add = (a: number, b: number): number => a + b;
const expected = 1 + 1;
it('should add two numbers', () => {
// This is testing two sets of logic, and doesnt guarantee the correctness of the function
// as the output of expected could also be wrong
expect(add(1, 1)).toEqual(expected);
@bag-man
bag-man / log
Last active Apr 10, 2019
nave debug log
View log
+ '[' -z /bin/bash ']'
++ basename /bin/bash
+ shell=bash
+ case "$shell" in
+ shopt -s extglob
+ NODEDIST=https://nodejs.org/dist
+ NAVE_CACHE_DUR=86400
++ curl --version
++ head -n1
+ NAVEUA='nave/curl 7.64.1 (x86_64-pc-linux-gnu) libcurl/7.64.1 OpenSSL/1.1.1b zlib/1.2.11 libidn2/2.1.1 libpsl/0.20.2 (+libidn2/2.1.1) libssh2/1.8.1 nghttp2/1.36.0'
View keybase.md

Keybase proof

I hereby claim:

  • I am bag-man on github.
  • I am bag_man (https://keybase.io/bag_man) on keybase.
  • I have a public key ASDcVWpn_Gzg_zivsjlklILaFDKNDBCaRxiwJdJvvdMIdQo

To claim this, I am signing this object:

@bag-man
bag-man / find-coding-range.js
Created Apr 21, 2017
Find a coding sequence in a contig
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
@bag-man
bag-man / post.md
Created Feb 4, 2017
fzf + rgrep + vim mini tutorial
View post.md

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?

@bag-man
bag-man / reflections.md
Last active Dec 7, 2016
Agile Reflections
View reflections.md

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

@bag-man
bag-man / get_wallpaper.py
Created Oct 19, 2016
Select and set a random offensive wallpaper
View get_wallpaper.py
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 = []
@bag-man
bag-man / database.js
Last active Jul 22, 2019
Connect and use MongoDB with ES6 in Node 4
View database.js
'use strict'
const MongoClient = require('mongodb')
class Database {
constructor (uri) {
this.uri = uri
this.db = {}
return this
@bag-man
bag-man / find-domain-and-port.js
Last active May 20, 2016
[NodeJS] Evaluate a URL to get it's domain and port, HTTP(s) only
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
}
You can’t perform that action at this time.