If you're interested in the languageExt tutorial go to The languageExt Tutorial
I've been continuing to work on my Digital Forensics module and while I've not yet started doing the actual technical analysis, I have spent a lot of time planning for it.
One of the key parts of the assessment is performing a correct forensic investigation, meaning that there needs to be a methodic, sound and systematic way in which the investigation is carried out. I think this is where the potential for failure is the highest ie not performing due diligence. It's easy for anyone to jump straight in and start trying to solve the crime and I think this is what causes a lot of evidence to be inadmissible because there was no pre-thought and consideration for the repercussions.
So I'm slowly collecting my strategy and should hopefully have a template-checklist which will serve me well during my analysis phase.
Apart from that, I've continued to maintain my 4"30' pace every other day, 3 times a week, which is good. My weekly niggles seem to dissipate throughout the week, that is until I go to the gym again at the end of the week. I really should try not to put so much effort into one session - its probably going to cause an injury.
My last run was a bit quicker than usual at 4"30' pace:
I've had some time to work on practising and learning more about LanguageExt and I have developed a fairly wide-ranging step-by-step tutorial in github that is designed to help those uncomfortable with functional programming in C# to become better acclimatised to it. Its also helped me a great deal too.
I actually quite enjoyed doing it, and in the process, I have come to understand more than I did to begin with, which is a double-win.
I do quite enjoy the process of deconstructing ideas into their fundamentals and then building them back up again. Maybe that's why I like refactoring code and reverse engineering things. For instance, recently I've been learning about fractional powers and roots and like this tutorial, understanding the basics provides great insights when you've got to interpret something based on it and which is already at a higher, more complex/abstract level - which unfortunately is usually the preliminary view of most things.
Anyway back to my tutorial: I designed a new Monad type called a Box<T> which through iterative application of, first its construction and then its application really helps to build a good grounding of the basics. It's very much like understanding the fundamentals of anything, you need to understand them at their most essential purpose to realise their true potential and application.
This particular post on stack overflow during my research was pivotal. That being said, the layout of the tutorial looks like this:
The general tutorial is structured like this:
There are 36 tutorials and scope for more:
- Partial Functions - Allowing multiple arguments to be 'baked' in and still appear as Math like functions (pure functions)
- Immutability - Smart constructors, Immutable data-types
- Caching
- Threading and parallelism benefits
- Guidelines for writing immutable code, starting with IO on the fringes (bicycle spoke design)
- Immutable Collection types in Language Ext
- Spoke and wheel model
- Map, HashSet, Set LanguageExt collections
- Changing state over time (Fold)
- Custom useful Monad Extensions
Apart from that, I've been reading about math, and game programming.
I've bought some new books to add to my growing collection:
- Mathematics for 3D Game Programming & Computer Graphics
- Introduction to 3D game programming with DirectX10
- 3D Game programming using DirectX and OpenGL
So I'm pretty immersed in the material and this should substantially aid me in my various quests. If only I had more time. Between my digital forensics study, investment manager project, gym, running, my reading and work, there is sweet little left of it.