Study Leave

From Matt Morris Wiki
Jump to navigation Jump to search

Introduction

As of Monday 11th May 2015 I'm only working for 2 days a week (Monday and Tuesday by default); I will be spending the other 3 days on study leave.

I need to use this time effectively; prerequisites for this are:

  • a clear sense of what I want to get out of this, and of the principles underlying my approach
  • specific guidelines as how how I will be using the time

This page covers these prerequisites, and links to subpages.

See LearningTopics for potential areas of interest: that page is relatively unstructured, holding no information on prioritisation etc

Why Am I Doing This?

I am trying to answer this question:

What kind of work should I pursue over the next 10 years (and beyond)?

Given my current state of knowledge, I have some obvious paths: automated trading, assisting with quant/tech for new/startup business areas, assisting with quant/tech to refine funding-related pricing practices, helping refactor quant library architecture to deal with Basel capital changes.

But there are plenty of new developments in technology and maths that I haven't been able to engage with as much as I would have liked, and I'll be in a better position to make a choice (and to spot other alternative paths) if I spend some time coming up to speed on it.

How Should I Approach This?

I'm going to view this as a design question. To arrive at a decent design, one needs a grasp of the trade-offs involved in the space of possible solutions.

The relevant trade-offs here are around what Gerald Weinberg calls "power conversion". An example of "power conversion" comes from a Citadel interview I had many years ago, where I had an interesting conversation about approaches to "monetizing skills". This kind of conversion (of expertise to money) is part of a more general class of conversions that people continually engage in: a physical analogy would be to think of transformation of energy between different forms (chemical, kinetic, thermal, gravitational, etc).

The kinds of "power" (perhaps "life energy" would be a better term?) that people often convert between include:

  • time availability (high when you're young, lower when you are adult - especially if you have children)
  • money
  • autonomy
  • expertise / mastery
  • a sense of purpose

The last three are often referred to as the "motivation trifecta" - you can read more about that in the book Drive: The Surprising Truth About What Motivates Us. Collectively they provide the impetus to take action (time and money without motivation are typically useless).

Like most people, my main constraint is on time. So I am converting money to time. I then want to convert time into expertise/mastery and purpose as efficiently as possible.

Time and money are relatively straightforward to convert between. But using time effectively to generate mastery and purpose requires thought and structure. Otherwise time is wasted, in the same way (coming back to the physical analogy) that an inefficient engine will do poorly at conveying input energy into useful work, throwing off useless waste heat instead.

So the next stage is to think carefully about how time is spent and accounted for.

Guidelines

  • I'll keep a journal, and update it on any day I do Study Leave related work (even if it's not a Study Leave day)
    • This is nothing intrinsically connected to studying per se: it's just a good thing to do for anyone undergoing change
  • I need to monitor what I'm doing and make changes as indicated by the evidence
    • It's OK to revise goals and guidelines, as long as I record the reasons for changing them.
    • My first Study Leave day on any month should start by generally taking stock of progress and seeing if I should revise anything
    • I should use Toggl to track the time I spend on Study Leave work
  • I should try to have multiple simultaneous streams of work with different characteristics
    • There's a limit to how much information on any stream one can absorb at a go without a pause for reflection/integration
    • Switching between streams of work can allow to you leave a gap for one stream while actively learning on another
    • Empirically I seem to learn most efficiently when I switch in this fashion
    • I should probably try and avoid combining similar workstreams (for instance, leaning many languages at once)
  • Some examples of workstreams that will probably combine well:
    • Learning a new computer language
    • Learning a new mathematical area
    • Writing up a well-defined area that I already have some idea of
    • Carrying out multiple small surveys of completely new topics to see if they are worth spending more time on
  • Any topic that I spend any time at all on will need the following:
    • Its own wiki page
    • A Toggl project code so I can track time
    • A concise description of the topic and why it's worth my looking at
    • A concrete description of the next deliverable and checkpoint time
  • I should consider external courses
    • Coursera in particular has been recommended to me by many people
    • However I don't seem to react well to structured formal training courses if my University experience is anything to go by
    • Probably best for me to try a short course out and see how it goes, then take it from there

Topics

See LearningTopics for a current list of potential areas of interest

Areas with formal wiki pages (and Toggl project codes) are below

Types of page are as follows:

  • Writeup: an overview of a field
  • Topic: a detailed treatment of a specific area
  • Project: implementing some task

The natural progression will be from writeup to topics to projects.

Immediate stack:

  • Unity Engine work for Richard (PROJECT-VIRTUALREALITY)
  • More Knuth (ALGO-SEARCHSORT)

Not started, but potential:

  • New Writeup: TECH-PROVISIONING: Puppet, Chef, Ansible, Salt
  • TECH-VAGRANT: get working with AWS account
  • TECH-KUBERNETES: need to work up something here
  • More Clojure
  • Writeup: Storage/DFS: http://en.wikipedia.org/wiki/Comparison_of_distributed_file_systems
  • Writeup: Data Grids: Confluence, Hazelcast, Memcached, EHCache, Gigaspaces
  • Writeup: NoSQL history and current state: Cassandra, MongoDB, HBase, CouchDB, Redis, ... http://kkovacs.eu/cassandra-vs-mongodb-vs-couchdb-vs-redis
  • Writeup: Current thinking on synchronisation techniques: survey of classics (including spinlocks etc), Lock-free approches, Transactional memory, Disruptor pattern and any related patterns
  • Writeup: ngrok & Javascript & associated libraries, frameworks...
  • Project: Get AMQP working with Clojure
  • Project: Get AWS provisioning working: Docker + AMQP + client library

In progress:

Resting/Parked/Done:

Checkpoints

Week 1

Languages:

  • Lisp: Racket's not the way to go, I should check out Clojure. Have ordered books & will check out on week 2
  • For ML style, perhaps I should look at Scala instead of Haskell?

Messaging:

  • RabbitMQ every bit as easy to pick up as people say.
  • ZeroMQ clearly worth checking out also.

APIs:

  • REST survey done: now should look at wider API technologies

Math:

  • Need to get every point down as I go on this, but is interleaving well with language/tech learning

Next:

  • Continue with math
  • Go into Clojure and hook up to RabbitMQ
  • Go over Microservices page and pull into cleaner categories, also LearningTopics page
    • env: Need to start checking out automated environments: Vagrant etc & also Docker
    • msg: Read first half of ZeroMQ guide and think about what next there
    • api: Look at more general API design issues with view to writeup

Week 2

Languages:

  • Lisp: Clojure is much more like it, but the syntax & JVM are warty. Continue for now.
  • Scala next

Messaging:

  • Haven't done anything here really - should read ZeroMQ guide over holiday at least
  • Should try and do Docker
    • boot2docker - get working
    • deploy RabbitMQ over Docker in an EC2 instance?

APIs:

  • Have gone through all API sources so that's well covered now

Math:

  • Have covered basic theory now - hopefully in Week3 will have homology algorithms straight

Writeups:

  • Went over Microservices page and pull into cleaner categories, also LearningTopics page

While on holiday:

  • Read Docker book
  • Read ZeroMQ guide
  • Read through Topology algorithms
  • Read through Clojure book

Next (once back):

  • Continue with math & get algos stright
  • Hook Clojure up to RabbitMQ
  • Try and get Docker on EC2 - with RabbitMQ and Clojure
  • Do at least two more general writeups