ICFP & OCaml 2014

I am fortunate enough to attend ICFP, CUFP and OCaml2014 again this year. Like last year, I’ve been accepted as a student volunteer so I’ll be running up and down with a microphone in front of hundreds of people again. Jeremy is kindly maintaining a list of this years accepted papers. I can’t wait to see you all again.


Graduation & Raspberry Pi Internship

As of Wednesday, I officially hold a BA in Computer Science. Now that the days of lectures and supervisions are up, I am in week 2 of 10, of an internship working on an education game for the Raspberry Pi.

Our open-world game teaches 11/12 years old python programming through a combination of guided challenges and independent exploration. Think Sonic Pi and the Sims, meets Minecraft Pi and Code Academy.

Lots of things to be getting on with …

Friends often wonder what I’m working (and so do I sometimes) so here’s my to-do list for the rest of this week:


  • Review some examples of ocaml code and hows its documented
  • Investigate if ocamldoc is worth implementing
  • using ocaml-dns as an example of documentation
  • put together a blog post of methods of documenting OCaml code and decide a style of documentation that you be useful in Signposts
  • Next week, work through the core signposts core, adding documentation


  • working through the process of installing signposts from a scratch, currently do as far as key generation
  • Generate the keys required for signpost and potential write a script to help automate the process
  • Run Signposts on my main machine, test client and server implementation
  • Next week, follow documentation to set up signposts on an Eee PC  
  • Produce a clear set on instruction on how to install, set up and run signposts
  • Research the UPnP interface provided by routers
  • Review the other signposts tactics to generate an outline of the API for implementing tactics
  • Next week, Write a tactic in OCaml for signposts that makes use of UPnP, use the method of documenting OCaml highlights earlier


  • finish reading and taking notes on “Usage Patterns in an Urban Wi-Fi network”
  • Produce a draft outline of the framework for analyzing urban Wi-Fi
  • Next week, reading though some other papers in the area and add detail to framework


  • once permission for the network is granted, set up the router using the provided interface
  • install and set-up OpenWRT on the router
  • Investigate best firmware for ftp, ssh and vpn on the router
  • produce results and share, before 15th Nov


  • consider the overlap of signposts & paws
  • find use cases that highlight the potential for inter connection
  • produce some slides/blog post on findings and ideas, before 15th Nov

A new week, a new approach

I’m changing my approach from using tools like Iperf and ping to collect network data and then using my java program to analyses the output to writing the scripts for myself and working from the ground up.

It is new territory for me so it really exciting but also a bit daunting. Along side this new work, I now have just 7 days left to prepare for the Google Android Development Camp in London. The next week is looking like its going busy but interesting and by the end I hope to have overcome a steep learning curve.


  • learn & practice using tcpdump
  • try using netcat to phase the output of tcpdump
  • work out which language is best for the job in hand

I’ll update you again soon…

UROP Goals

I hope the following will give you an insight into what I’m studying and where I aim to go with it.

Overall Goal for the next 10 weeks: To be of use the Signposts Project and learn some useful skills on the way

Skill Required:

  1. A solid knowledge of computer networking (in particular protocols at the network and transport layers)
  2. Familiarly and practical experience with Ocaml and (in particular Lwt and using sockets)
  3. Experience with Java on Android and the platform

How I hope to achieve a solid knowledge of computer networking ?

  • review the material from my computer networking course, mostly by re-reading Kurose, J.F. & Ross, K.W. (2009). Computer networking: a top-down approach. Addison-Wesley (5th ed.), redoing past exam questions / supervision work, doing the Wireshark Lab sheets and working through the hands on material
  • Gain a deeper knowledge of particular areas by reading RFC and academic papers, ensuring that I alway take notes so that its easy to refer back to material without re-reading all of the material
  • Get update with the latest in online anonymity and security including projects/topics such as Tor, FreedomBox, Privoxy, Hamachi, Tails, Backtrack, SSL, DNSSEC, FireFox addons like NoScript and HTTPS Everywhere etc…

How I hope to achieve familiarly and practical experience of Ocaml

  • Working through Unix system programming in ocaml by Xavier Leroy and Didier Rémy
  • Keeping upto date with Ocaml project & questions on StackOverflow
  • Build Ocaml code