Diving into information security principles
I'm interested in how information security can be better integrated into software development, and how services can be developed in a way that makes good security a natural part of the process. It'll take a lot of effort to get there, but continual improvement in security is achievable at any scale.
There are new skills to develop and many segmented fields to learn from, which is both exciting and challenging, but the good thing is that there've been many lessons learned that we can take advantage of to develop more secure systems today.
Staging environments and deployment pipelinesA staging environment mimics the environment our users interact with as closely as possible, so that we can verify changes and catch issues that may not occur on a local developer environment before promoting changes to production.
Enabling regular expressions in SQLite with Rails
Recently I was looking into writing custom functions for SQLite in a Rails application, specifically to support regular expressions. It took a few attempts to find a good solution, so I thought it might be worth posting the end result.
Setting HTTP security headers in Rails
HTTP security headers are easy to configure, and provide a flexible way to mitigate several types of cross-site scripting and sniffing attacks.
What's risk management?
Risk management is one of the topics covered in the introductory computer security course at UBC, and it's relevant to many other fields including finance, engineering, and project management.
The main idea is simple: when a project involves high-value assets, an effective approach is to identify all of the relevant risks and evaluate their impact and likelihood in order to prioritize them and determine appropriate countermeasures.
Improving authentication usability
Usable security has become a more explicit goal, now that we've recognized that tools that are too challenging to use will not be widely accepted, no matter their utility. Usability and security in practise have become a mainstay at security conferences, and we can see some of the results in industry.
For instance, we're seeing more experimentation with authentication methods that make passwords easier to use, or that do away with them entirely.
Waiting until Docker containers are initialized
An issue that a lot of people run into when automating Docker builds is in figuring out how to wait for services to be set up before running subsequent commands.
Dijkstra's algorithm for finding the shortest path to other nodes
Dijkstra's algorithm is a simple, elegant graph algorithm, and one of my favourites.
The problem it solves is the following: given a graph with non-negative edge weights and a start node, how can we find the shortest path to other nodes in the graph?
subscribe via RSS