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 Kinesis stream. C’est la vie. …
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 patterns for its use. …
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. …
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 on my other responsibilities (by autonomy, I mean specifically some share of the decision making that is involved in the functioning of the organization). …
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. …
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.
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 an
Animal, you can upcast a
Dog 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
Understanding how property getting, property assignment, property deletion, and
this-binding are all related
In a lot of programming languages, the dot-operator (
is to get the current value of the "foo” property on
x and put it in the variable
delete operator and
this-binding, among other things.
When dealing with conditionals (for example,
if statements), we often think in terms of Booleans: a value that is either
if statements, but also exit conditions on constructs like
while. By extension, “predicate” functions, like those passed to the
find methods of Arrays, also operate based on truthiness. …