AWS Kinesis is probably a great tool for certain jobs, but it’s frequently used inappropriately. Its main intended use case seems to be real-time stream processing, but it’s frequently used as a pub-sub channel or message queue. A stream can function as a channel or queue, for sure. So can a database. So can a flat-file. So can a chalkboard. But that doesn’t mean those are the best solutions.

Our team was recently implementing a consumer to process events that a third party application was publishing to a Kinesis stream. We wanted a pub-sub channel, what we had was a…


From Scala package com.twitter.util

The Try type is a really useful mechanism for handling the possibility of errors in Java, Groovy, Scala, and other languages. It originates (as far as I can tell) in Scala, a functional programming language where it fits comfortably among other functors and monads (don’t worry, it doesn’t matter); it’s been incorporated into imperative languages like Java, but the procedural baggage of those languages contain hidden dragons for its use.

In this article, we’ll go over a brief explanation of the Try type then explore some antipatterns that are commonly encountered with it and wrap up with some more appropriate…


Tight coupling isn’t always a bad thing. In this article, we argue that you should keep your deployed service tightly coupled to its configuration, and provide some recommended practices for doing so.

Photo by Jan Antonin Kolar on Unsplash

For this article, we make a distinction between service configuration, and what we call user settings. This article focuses on the service configuration, which is the set of values that parameterize your application’s instances. These parameters often only have one value that will allow an instance to function correctly and usually aren’t meant to be changed during runtime.

User settings, on the other hand, are values that affect…


Example visualizations generated by D3.js, courtesy of d3js.org (https://github.com/d3/d3.github.com/tree/master/ex)

This article describes an epiphany that finally got me caught up with everyone else already successfully using D3.js. If you’ve tried using D3 but struggled to understand how it works and how you’re supposed to use it, this might help. This article does not go into details of how to write D3 code; there are lots of good tutorials and documentation for this available elsewhere online. This article will provide a mental model and clarification that should help you better understand and make use of those tutorials.

I’ve used D3.js for data-visualizations on-and-off for a few years but never considered…


Fred Rogers speaking before a United States Senate Subcommittee on Communications hearing, May 1, 1969. Photo by Robert Lerner for LOOK Magazine. Library of Congress Digital ID “ppmsca 53566".

Fred Rogers (perhaps more familiar as Mister Rogers) excelled at talking to children in a way that was clear and concise, in a way that the children could relate to, and in a way that didn’t alienate or belittle them. In short, he was able to communicate effectively with young children.

Fred’s way of speaking has been dubbed Freddish and a pamphlet created by a producer and a writer of Mister Rogers’ Neighborhood describes a sequence of nine steps for rewriting your message to make it ready for delivery to children. …


Photo by Sebastian Pichler (Unsplash):

In any power structure, there are two primary dynamics at play to hold the structure together: delegation and coercion.

We typically think of delegation as flowing downhill: a manager delegates some responsibility to someone beneath them in order to focus on other responsibilities. This type of delegation may be how the organization functions, but it’s not what defines the structure itself.

Delegation flowing uphill is one of the two dynamics that define the power structure and hold it together: as a member of the organization, I will delegate some of my autonomy to my boss so that I can focus…


Quality is our top priority for articles published on Software Ascending: quality of content, quality of writing, and quality of form. This page describes the key criteria an article will have to meet before we publish it.

If you’ve got an article you want to submit but missed a few of these points, or maybe writing just isn’t your thing, don’t worry about it: we’re happy to work with you on editing and revising and may even be able to provide a ghostwriter to help get your story out. …


What We Are

Software Ascending is a publication that aims to rise above the noise floor of Medium’s most popular software topics; not necessarily by views, reads, claps, or any other metric of popularity, but by its value to you, an experienced software developer who isn’t done growing.

Instead of one more post on how to implement FizzBuzz in language du jour or how to start a project in the latest JavaScript framework, instead of yet another hot take on how to ace a programming interview without any experience, we want to bring you interesting, compelling, informative articles that will clear out the…


You can feed anything you want to a black hole, but you shouldn’t feed broken glass to a human.

Typecasting in Java seems pretty straight forward: a Dog is a type of Animal, so anywhere you want anAnimal, you can upcast aDog to be an Animal. Furthermore, if you have an Animal that you actually know is a Dog, then you can downcast that Animal to be a Dog.


JavaScript developers are probably familiar with object literal notation:

Brian Mearns

Software Engineer since 2007 ・ Parent ・ Mediocre Runner ・ Flower and Tree Enthusiast ・ Crappy Wood Worker ・ he/him or they/them

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