Skip to content

Instantly share code, notes, and snippets.

Becoming a contractor programmer in the UK

After delaying it for more than a year I have finally made the big move from a stable full time job to the dynamic world of contracting. One of the biggest reasons for delaying the move was not knowing the technicalities of getting all the machinery up and running. The main goal of this document is to provide an easily replicable process you can follow to become a contractor. I can not claim it is the best process to follow, but it has worked for me and other people who have advised me. Use my advice on your own responsibility.

I have made this a github repo with hope to receive community contributions to fix any inaccuracies, out of date information and typos.

@aphexmunky
aphexmunky / docker.cassandra1.service
Last active August 29, 2015 14:26
Cassandra docker boot script on a systemd system
[Unit]
Description=DockerCassandra1
After=docker.service
Requires=docker.service
[Service]
Restart=always
ExecStart=/usr/bin/docker start -a voyager-cassandra-1
ExecStop=/usr/bin/docker stop -t 2 voyager-cassandra-1
package actors.service
import akka.actor.{ ActorLogging, ActorRef }
import akka.persistence.PersistentActor
import akka.contrib.pattern._
import entities.dto.{TsuMovement, Tsu}
import TsuMovementCommands._
import common.GUIDCreator
import scalaz._
Attaching to application_backend_7, application_backend_6, application_backend_5, application_seed_1
backend_7 | [INFO] [07/06/2015 11:33:08.109] [main] [Remoting] Starting remoting
backend_7 | [INFO] [07/06/2015 11:33:08.242] [main] [Remoting] Remoting started; listening on addresses :[akka.tcp://krax@172.17.0.25:2551]
backend_7 | [INFO] [07/06/2015 11:33:08.251] [main] [Cluster(akka://krax)] Cluster Node [akka.tcp://krax@172.17.0.25:2551] - Starting up...
backend_7 | [INFO] [07/06/2015 11:33:08.322] [main] [Cluster(akka://krax)] Cluster Node [akka.tcp://krax@172.17.0.25:2551] - Registered cluster JMX MBean [akka:type=Cluster]
backend_7 | [INFO] [07/06/2015 11:33:08.322] [main] [Cluster(akka://krax)] Cluster Node [akka.tcp://krax@172.17.0.25:2551] - Started up successfully
backend_7 | [INFO] [07/06/2015 11:33:08.328] [krax-akka.actor.default-dispatcher-4] [Cluster(akka://krax)] Cluster Node [akka.tcp://krax@172.17.0.25:2551] - Metrics will be retreived from MBeans, and may be incorrect on some platforms. To
@aphexmunky
aphexmunky / gist:2ff1d3e56796916a15fa
Created May 19, 2015 14:13
Pattern matching regex types
val LoglevelPattern = """.*\[(DEBUG|INFO|WARN|ERROR)\].*""".r
LoglevelPattern: scala.util.matching.Regex = .*\[(DEBUG|INFO|WARN|ERROR)\].*
"""1. [INFO] starting system""" match { case LoglevelPattern(level) => level; case other => "OTHER" }
res1: String = INFO
"""1. [WARNING] starting system""" match { case LoglevelPattern(level) => level; case other => "OTHER" }
res2: String = OTHER
"""1. [WARNING] starting system""" match { case LoglevelPattern(level) => level; case other => "OTHER" }
@aphexmunky
aphexmunky / gist:ae68fab2450910ce2e94
Created May 4, 2015 21:18
My experience with Haskell
ghci> 2**2
4.0
ghci> 2**2**2
16.0
ghci> 2**2**2**2
65536.0
ghci> 2**2**2**2**2
Infinity
ghci> exit
@aphexmunky
aphexmunky / gist:e5aed266f6a868f12988
Created April 25, 2015 20:53
Functional Programming in Scala chapter 2
def fib(n: Int): Int = {
def go(first: Int, second: Int, iteration: Int): Int = iteration match {
case _ if iteration == n => first + second
case _ => go(second, first + second, iteration + 1)
}
go(0, 1, 1)
}
@aphexmunky
aphexmunky / Main.scala
Last active August 29, 2015 14:17 — forked from guenter/Main.scala
import mesosphere.mesos.util.FrameworkInfo
import org.apache.mesos.MesosSchedulerDriver
/**
* @author Tobi Knaup
*/
object Main extends App {
@aphexmunky
aphexmunky / home
Last active August 29, 2015 14:16
Josh Hesketh Public Key
-----BEGIN PGP PUBLIC KEY BLOCK-----
Version: GnuPG v1
mQMuBFT/lJYRCADL1JAd3Kink2k0di6w+jZ50VaMDAcQcRYgX5SH6aSfNHL+qZyj
s/rFa7fGDU1sJcrlqcpbasGZfFfiV7Y76509ejyoKGoHYLWK4CkLF3lkCRgTpICC
YUXp//bcdHgFKWEEMqHKQ88dc+26fkxUnWCijhFoxqTUgvDjZv/q3NlXoQZv37Ng
xlKxHJe+okjcnZRSpzwKmNYRTxBhZXOHqxo9b6i4xadL3tGo3ekKCHRQvbYjQYHR
2jSZWGd+lUv+R6yow79JS8M4BV4oEiRcSSureqmvzASJjEbK+Ql0VbD/Kggsbazl
HFXG3y6ADEL00GEDyelPX0VForGwxITAD+cbAQDgzTKCFhqm+LsLe2mCJHbT0+yk
tItvfZqM3lUxEM+c+Qf9Hz6k381lSPENm53n6gpdCUPfCECHlW+I2SiPYcae2mEF
@aphexmunky
aphexmunky / Random.scala
Last active August 29, 2015 14:16
Just somewhere to plonk some random functions that I may or may not use
import java.awt.datatransfer._
import java.awt.Toolkit
import java.util.UUID
def clipboardUUID = {
val uuid: String = UUID.randomUUID.toString()
val stringSelection = new StringSelection(uuid)
val clpbrd = Toolkit.getDefaultToolkit().getSystemClipboard()
clpbrd.setContents(stringSelection, null)
}