Derek C. Ashmore's Blog, page 3
May 27, 2018
Preparation Tips and Tactics for AWS Solution Architect Certification Exams
I've been using the AWS cloud platform since about 2010. When I embarked on the AWS certification path a couple of years ago, I knew it would be a challenge even with my experience. I knew professional level certs are some of the most challenging exams in IT. Having passed AWS Solution Architect Professional and Associate certification exams, I've been asked by several for tips on how to prepare and pass. The process is daunting given that the body of knowledge covered by the tests...
Published on May 27, 2018 08:16
August 6, 2017
Making Cloud Code Testable
Developers seem to assume that just because their application code may now interact with the cloud (e.g. read/write data from AWS S3 buckets, invoke AWS lambda functions, email via AWSD SES, send or receive AWS SMS messages, etc.) that it's no longer reasonable or easy to structure their code in a testable way without access to the cloud. Yes, my examples are AWS centric. The principles in this blog post apply to Azure or Google Cloud code as well.
By "testable" I mean unit tests that don't re...
By "testable" I mean unit tests that don't re...
Published on August 06, 2017 13:40
December 30, 2016
Making Technology Choices for Personal Growth.
When I started doing IT as a profession, the number of available, commercially used technologies was considerably less. Back then, most of IT ran on IBM mainframes. The number of tools you needed to learn to be marketable could be counted on one or two hands. Today, there are far too many technologies/products/frameworks and not nearly enough time to learn them all. Should I invest in AngularJS or React? Java8 or Scala? Amazon or Azure? Python or Node.js? The list goes on an...
Published on December 30, 2016 12:18
December 11, 2016
Automated Integration Testing in a Microservices World.
Everyone's dabbling with microservices these days. It turns out that writing distributed applications are difficult. They offer advantages to be sure. However, there is no free lunch. One of the difficulties is automated integration testing. That is, testing a microservice with all the external resources it needs including any other services it calls, the databases it uses, any queues it uses. Just setting up and maintaining these resources can be a daunting task that often takes special...
Published on December 11, 2016 09:25
November 21, 2016
Book Review: Reactive Services Architecture - Design Principles for Distributed Applications
A friend of mine gave me a copy of the new book "Reactive Services Architecture - Design Principles for Distributed Applications" by Jonas Bonér. My friend was quite taken by the content and asked me what I thought of it. Having been working with microservices architecture and writing about them for a couple of years, I was intrigued and took up the gauntlet.I was immediately struck by the word "Reactive" and wondered what was the difference between a "reactive" microservice and a non-r...
Published on November 21, 2016 02:23
September 23, 2016
Using Java Thread Dumps to Diagnose Application Performance
On a holiday weekend last year, I got an emergency call from a client. One of their Java EE applications would freeze and stop servicing users within an hour after container start-up. I was called in to help investigate. I started off by requesting a thread dump and memory dump of the container once it had stopped accepting requests. It's the thread dump that I'm focusing on today. That Java thread-dump is here (package scrubbed to protect the client).
During that exercise, I noticed tha...
During that exercise, I noticed tha...
Published on September 23, 2016 03:17
September 4, 2016
All Monoliths Are Not Created Equal
All monoliths are not created equal. That is, not all monoliths became monoliths the same way nor do they have the same root causes. With this post, I'll identify different types of monoliths I've seen. This is useful as the tactics I use to break the monolith into smaller, more manageable, pieces is different depending on which category of monolith I'm dealing with. It's worth noting that some times elements of these different categories of monoliths are used in combination.
A monolith is an...
A monolith is an...
Published on September 04, 2016 07:23
Monoliths Are Not Created Equal
All monoliths are not created equal. That is, not all monoliths became monoliths the same way nor do they have the same root causes. With this post, I'll identify different types of monoliths I've seen. This is useful as the tactics I use to break the monolith into smaller, more manageable, pieces is different depending on which category of monolith I'm dealing with. It's worth noting that some times elements of these different categories of monoliths are used in combination.
A monolith is an...
A monolith is an...
Published on September 04, 2016 07:23
August 27, 2016
A Pleasurable Journey into Text Translation using ANTLR4
For one of my clients, I needed to spec out a REST service API for developers. Although they had standardized on the API Blueprint product, I feel compelled to look for alternatives for specking out future REST APIs. The input needed for API Blueprint is just too verbose and requires far too much time. If I expected to spend less time specking out REST APIs, this might not be an issue. Or at least not as much of an issue. I also checked out Swagger and RAML and found the...
Published on August 27, 2016 06:38
July 20, 2016
A Cute Trick with Generics to Avoid Unwanted Casts
I ran into a cute trick while coding a unit test on a Spring application the other day that I'd like to share.
Consider these lines of Java code.
The first line requires a cast. the reason is that the method returns an Object. While the cast isn't the most labor intensive construct, but it makes code less clear and is inconvenient to developers.
Note that the second line does *not* require the cast making it much more convenient for developers. the secret is that Sprin...
Consider these lines of Java code.
The first line requires a cast. the reason is that the method returns an Object. While the cast isn't the most labor intensive construct, but it makes code less clear and is inconvenient to developers.Note that the second line does *not* require the cast making it much more convenient for developers. the secret is that Sprin...
Published on July 20, 2016 06:43


