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…
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…
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…
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.
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
.
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
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.
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…
Software Engineer since 2007 ・ Parent ・ Mediocre Runner ・ Tree Enthusiast ・ Crappy Wood Worker ・ he/him or they/them