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…


Image for post
Image for post
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…


Image for post
Image for post
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. …


Image for post
Image for post
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…


Image for post
Image for post

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.


Image for post
Image for post

JavaScript developers are probably familiar with object literal notation:


Understanding how property getting, property assignment, property deletion, and this-binding are all related

In a lot of programming languages, the dot-operator (.) is commonly referred to as the property accessor operator. We see this in C, Java, Python, and JavaScript, among others. For instance, the consequence of the statement

Image for post
Image for post

is to get the current value of the "foo” property on x and put it in the variable y.

In JavaScript, in particular, the dot-operator is a little more nuanced than simple property getting, and this nuance is the driver behind the delete operator and this-binding, among other things.

In JavaScript…


When dealing with conditionals (for example, if statements), we often think in terms of Booleans: a value that is either true or false. However, JavaScript conditionals are not so strict as to require an actual value of type boolean. Instead, JavaScript conditionals operate based on the truthiness of the value.

Image for post
Image for post

Every value in JavaScript has an inherent truthiness to it: it is either “truthy” or “falsy”. It’s the truthiness of the value that conditionals in JavaScript care about: this includes if statements, but also exit conditions on constructs like for and while. By extension, “predicate” functions, like those passed to…

Brian Mearns

Software Engineer since 2007 ・ Parent ・ Mediocre Runner ・ 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