Introduction into Design Points for File Systems

I’ve been working around storage and file systems within my PhD for the last 3 years, and ended up even creating my own in kernel file system in FreeBSD. From this experience I would like to try and summarize the learning I’ve done throughout as an exercise for myself and hopefully help others in this space.

File systems are difficult as they interact both with chaotic users, and chaotic storage devices. Users often execute actions in sequences not anticipated by developers and devices often lie whether these actions even occur, and data is even saved to disk.

Failures like misdirected…

A more in depth look at caching and when to use it written in python

This article is a more updated version of this article.

You can find the code for this article here.

Caching is a wonderful tool in a modern world where memory is cheap and computation is less so. It is found in literally every level of our computer, from the hardware caches of the L1–3, and TLB of each of our CPU’s, the page cache we use in the operating system level, to the very browser you are viewing this on. Caching is obviously something incredibly useful, but understanding when we can or can’t use them is incredibly important. A cache…

Lessons from the continual creation of a CRUD Framework — FRUD

You can find the project I will talking about here.

I’ve been working with Node.JS for the past couple years as it was the language of choice for many developers around me. I’m not particularly attached to any language as long as the said language allows me to work with data and web effectively. I’ve been looking around at random projects on Github and found more often than not many new projects were adopting Golang. After a couple weeks of seeing it always pop up I decided to try it out to see how I liked it. I started work…

Preface — Grad School

I will be going to graduate school at the University of Waterloo in the Spring. I will be (attempting) to get my Master’s in Mathematics and Computer Science, and being supervised under a Professor in systems and distributed systems. This is super exciting for me not only for the challenge, but because a year ago I didn’t really expect this. I was mostly looking for a challenge within the tech industry but when I was invited to Waterloo to see their grad programs I completely shifted gears.


The Abstraction of Math

Software Engineers LOVE abstraction, and I mean its really really really worked out…

I’ll give a little preamble that this is something quite personal and not related to learning a new fantastic framework or language but rather just something I felt I wanted to write about. It has tie ins to my love for learning but other than that this is a more just a piece of writing, an experience put to ink (or to bits rather)

On October 25th, 2016 I lost my father, or rather I lost what little of my father was left after Parkinson’s took hold. It was a disease that slowly took every part of his being away…

Creating a CI Environment with AWS, Docker, and GitLab CI

For the past couple months I have been exploring and learning all about the wonderful world of continuous integration. I must say, it’s incredible. I may be putting my voice into a crowd of thousands of developers on this one, but it truly is something I believe most applications should be doing. Maybe it’s just my soft spot for creating and learning automatic processes but man this stuff is cool. I don’t want this tutorial to be a verbose monster and just say that tasks that need to be completed and point towards documentation and tell you my insights when…

Thoughts, goals, and updates.

UPDATE: This project is now open source

It’s been awhile since I’ve posted, part of the reason being I traveled to Europe recently and it was fantastic! It was an amazing trip and I loved every second of it, but that being said — I missed programming. Those two weeks were the longest I went without actively working in Computer Science, although a nice break, I am glad to be back working with the stuff I love to do.

Adventures in Berlin!

With this post I just want to put on paper the adventures and thoughts I’ve had working on a work project…

An Explanation of Python Generators and Combinatorial Explosion

I’m excited to show you all a whole new world of Generators in Python and hopefully inject a little bit of math into all your lives (cause everyone always needs a bit more math in their life), and also explain why counting problems are really hard for computers to do as they lead to such massive outputs with incredibly small changes to the input (see CHAOS). Mathematicians have found ways to make it easier (looking at you coefficients and infinite series) but that’s more complex than needed for our purpose. …

Finding Knowledge Within My Mistakes

When I was first introduced to the concepts of data structures years ago, instructors would go through structures like stacks, queues, mutable and immutable lists, and trees. Touching on the complexity of insertion, removal, find, deletion, etc. for each. Really a data structure is just the summation of these operations. The purpose of me writing this is just to share an experience when I was solving a Project Euler problem. An experience that I learned to look more deeply at the implementations of these functions in the specific language I was writing in.

I started my adventure perusing Project Euler…

We grow up striving to be correct and get comfortable because it is rewarded. Remember those Quick Math sheets we would get in Elementary school? You were rewarded for doing very simple math quickly. Rewarded for practicing speed over learning newer harder material. I obviously learned new material or else no progress would be ever made, but I was always rewarded for staying within my own comfort zone of gradual learning. We always build upwards rather than starting with a hard concept and diving down. …

Ryan Hancock

My goal is to share my life, experiences, knowledge, and passion with anyone who cares to read. Currently a PhD student at the University of Waterloo.

Get the Medium app

A button that says 'Download on the App Store', and if clicked it will lead you to the iOS App store
A button that says 'Get it on, Google Play', and if clicked it will lead you to the Google Play store