Hello Idris

I heard a great podcast interview recently with Edwin Brady. He was discussing his upcoming book Type-driven development With Idris. After listening to the podcast, I immediately picked up a copy of his book. Having now completed the book (well it’s a MEAP, so what’s finished so far), I’m finding Idris the language really intriguing.

I’ve always had a preference toward statically-typed languages. I just like the ability to specify type constraints and have some level of confidence of correctness in my programs before I run them.

Continue reading “Hello Idris”

From plumatic’s schema to clojure.spec

In a previous blog post, I showed an example of using plumatic’s schema with test.check and test.chuck. With the introduction of Clojure’s new spec library, I thought it would be interesting to revisit that post and port it from schema to spec. The code from this post is available on github.

Overall, the port was relatively straight-forward, though spec took some getting used to. spec provides similar facilities for what I was using in schema. It integrated with both test.check and test.chuck with no significant modifications!

Continue reading “From plumatic’s schema to clojure.spec”

Emacs Keyboard Setup – OSX

Before you get going with Emacs on a Mac, there are a number of keyboard settings that you generally want to tweak to get the most fluid and comfortable experience. This post outlines the keyboard settings changes I’ve made that I find essential.

Note: this is targeted towards OSX users. Not all of this will apply to other systems.

Continue reading “Emacs Keyboard Setup – OSX”

Why I’m learning Emacs

Emacs is a classic piece of software that has stood the test of time. It has been around for decades and will probably be around for decades to come, so though it has a bit of a learning curve, it’s well worth the effort to learn.

Although my original motivation for learning Emacs was in pursuit of the ultimate clojure IDE experience, I’ve quickly realized it is extremely valuable as a general-purpose editor. My background has always been as an IDE guy (eclipse, IntelliJ IDEA, etc.), aside from knowing just enough vi to get around on the command-line.

Here’s some of the reasons I chose to invest in learning Emacs whole hog:

Continue reading “Why I’m learning Emacs”

Stackoverflow: Road to 5K

I recently reached 5K reputation on stackoverflow. It’s nothing mind blowing reputation-wise for sure, but it feels like a nice milestone that took some time and effort to reach. Thought I’d write a quick post summarizing my experiences on the site and share some tips & tricks I’ve found helpful along the way.

Continue reading “Stackoverflow: Road to 5K”

Making Sense of Stream Processing – A Must Read

Making Sense of Stream Processing Stumbled on this book this week, and devoured it in an afternoon.

Written by Martin Kleppmann, a distributed systems researcher and former engineer at LinkedIn (where Kafka was born), this book explores the ideas of stream processing and outlines how they can apply broadly to application architectures. It’s a small book in a report format, synthesized from a series of blog posts (linked on Martin’s website).

Continue reading “Making Sense of Stream Processing – A Must Read”

AWS Cloud Best Practices

On a bit of an AWS Whitepaper binge as of late. This post catalogs some of the important highlights and takeaways I’ve had reading through a number of them. Despite the fact that it’s all presented in the context of AWS products and services, there’s a lot of information that I think is generally applicable to any cloud architecture. Reading these are a great way to get familiar with the space as no doubt other cloud providers (Google Cloud, Microsoft Azure, etc.) will have similar offerings now and in the future.

Check out the References section at the bottom of this post. I’ve linked to some specific whitepapers that I found the most interesting/generally applicable.

Continue reading “AWS Cloud Best Practices”

New DevOps Reading List

I’ve been listening to a lot of devops cafe podcasts lately. It’s opened up a new world of reading material on various subjects, technical and non-technical.

Just writing a short post to list some books I’ve been adding to my reading queue:

The Phoenix Project: A Novel About IT, DevOps, And Helping Your Business Win

The Phoenix Project

This is a novel about a fictional IT organization called Parts Unlimited. Meant to be a cautionary tail, it follows a successful middle manager suddenly thrust into a CTO role. He’s immediately faced with daily fires, a broken IT organization and an already years-late “do or die-save the company” project way off the rails. I’ve started this one already, and so far it’s very entertaining. A plus is that it’s available as an audiobook.

Continue reading “New DevOps Reading List”

Clojure property-based testing with plumatic’s schema and test.check/chuck

In this post, I’ll give a walk-through of property-based testing in clojure with a few great tools: plumatic’s schema, clojure’s own test.check and another great alternate property-based testing library called test.chuck.

First off, schema is a very nice library. If you have not looked at it yet, you should definitely check it out as a lighter-weight alternative to a full-blown typing solution like core.typed. As of version 1.0, schema now includes support for out-of-the-box generators for any of your schemas. Though experimental, the schema generators have worked really nicely for me so far. In this post, we’ll be using the latest version of test.check (0.9.0 as of this writing). It includes a number of nice new features, so you should definitely upgrade your version if you can.

Continue reading “Clojure property-based testing with plumatic’s schema and test.check/chuck”

Resources For New Software Development Managers

Most new managers are generally ill-prepared for the job. This can be especially true at smaller companies. Even if you do get some kind of management training, it’s pretty difficult to picture a training program that would cover all the important things you would need to know to be a great software development manager. First, and most importantly, there are the things you need to know just to be a good manager of any kind, no matter what field you’re managing in. Then there’s the considerations specific to software development management.

Continue reading “Resources For New Software Development Managers”