Month: May 2014
Link: A Hacker’s Guide to Git
From the post:
Complex systems like Git become much easier to understand once you figure out how they really work. The goal of this post is to shed some light on how Git works under the hood. We’re going to take a look at some of Git’s core concepts including its basic object storage, how commits work, how branches and tags work, and we’ll look at the different kinds of merging in Git including the much-feared rebase. Hopefully at the end of it all, you’ll have a solid understanding of these concepts and will be able to use some of Git’s more advanced features with confidence.
It’s worth noting at this point that this guide is not intended to be a beginner’s introduction to Git. This guide was written for people who already use Git, but would like to better understand it by taking a peek under the hood, and learn a few neat tricks along the way.
logstash: Open source centralized log/event management tool
The logstash mascot has to be a contender for best logo for an open source project ever.
Siteleaf: Platform agnostic lightweight commercial CMS service
I have long been a web content management system nerd and Siteleaf seems like a decent little CMS, especially if you need to provide a CMS for clients.
Spark: Java micro web framework “inspired by” Sinatra
Looks like another option for implementing very basic REST micro services.
Octotree: Chrome Extension to display GitHub code in tree format
pjax: Load HTML from server into current page without a full page load, written in Ruby
pjax loads html from your server into the current page without a full page load. It’s ajax with real permalinks, page titles, and a working back button that fully degrades.
The idea is you can’t tell the difference between pjax page loads and normal page loads. On complicated sites, browsing just “feels faster.”
Article: Parallel Change (AKA expand and contract): Pattern to safely make backward-incompatible changes to an interface
Making a change to an interface that impacts all its consumers requires two thinking modes: implementing the change itself, and then updating all its usages. This can be hard when you try to do both at the same time, especially if the change is on a PublishedInterface with multiple or external clients.
Parallel change, also known as expand and contract, is a pattern to implement backward-incompatible changes to an interface in a safe manner, by breaking the change into three distinct phases: expand, migrate, and contract.
Free Programming Book: An Introduction to Programming in Go by Caleb Doxsey
The book cover makes me smile every time I see it.