We recently had David Luecke in our virtual studio to live-code a new version of feathers-batch! If you’re interested in seeing a bit behind the scenes, follow us on YouTube and read more about the specifics on the latest version of feathers-batch in the latest article from the FeathersJS blog here: read more

Originally published at https://aquil.io on October 5, 2020.


Image for post
Image for post

We have designed a number of t-shirts for FeathersJS, available in our new store. At Aquil.io, we use Feathers on a daily basis. This is a choice we evaluate at the start of every project we onboard. Feathers has consistently enhanced our ability to deliver quality software with greater efficiency. The swag store is one aspect of an avenue where we strive to give back and keep the community thriving.

All profits, which is the remainder from the cost of the item plus our cost of design (and the store itself), are donated to the Feathers project for future development. A more important takeaway, than purchasing a t-shirt, is to donate to open source projects you use, if you can. Convince your company, managers, or peers to donate if they can. Contribute to docs, submit bugs or patches, or advocate. …


Screenshot of feathersresources.dev
Screenshot of feathersresources.dev

As any JavaScript framework community grows, it becomes difficult to navigate which avenues developers have to look for solutions to problems they have encountered. FeathersJS has continually been at the forefront of JavaScript discussions since its inception, as illustrated in the annual State of JS survey. We created FeathersJS Resources as a hub, or rather a starting point, to assist people in the Feathers community find what they may be searching for.

There are many resource lists available, however, we noticed a lacking of curated examples. Our goal with this list is to provide an up-to-date account of which libraries are maintained, projects are active, and examples of FeathersJS in the wild. …


A woman welding
A woman welding
Photo by Chris Ralston on Unsplash

Recently, our own Curtis Cummings was featured in an interview by the folks at Integromat on our work in the No-Code space. One of the reasons we develop software is we generally enjoy solving problems, but there’s an added fulfillment when a problem is solved in the best interests of a client. We recognize our industry does not come with a cheap price tag and the No Code movement is one avenue we believe can bring modern solutions to clients at a much more rapid pace.

If you’re interested in what that looks like, contact us or tweet at us. Also, be sure to read more about Curtis in the interview.


Image for post
Image for post
Photo by Dan Meyers on Unsplash

In this Wild West era of software development, rules are few and far between on how we choose tech stacks, architect applications, or manage teams. Anyone who has spent time on more than one team witnesses a wide variance of philosophies and approaches. Throughout our careers as software developers, one goal should remain constant: “Do the right thing.”

Making the right choice can be difficult. As developers, we boast about choosing the right tools or taking the right direction, but easily fall prey to shortcuts when under pressure. These shortcuts are almost always more expensive in the end.

In medicine and law, professionals are heavily penalized for taking shortcuts. With a mere accusation, a doctor may be fined or lose business due to reputational harm. If a medical board proves malpractice, it may revoke that doctor’s license, ending a career. However, in the software industry, we face little to no ramifications. We see it as a right of passage for software developers to make a big mistake in production or a fail during a demonstration. …


Image for post
Image for post
How ReleaseHawk works

In late 2017 we started working on a side project which had a unique requirement: monitor a dependency that is not an NPM module. In our specific case, we needed to monitor a GitHub repository for changes. If you are familiar with projects such as Dependabot, the requirement is identical. ReleaseHawk was born out of these efforts and published to the GitHub marketplace.

The project we were primarily using ReleaseHawk for was an analytical app to process replay files for a popular and competitive game, Heroes of the Storm. As of late 2018, Blizzard announced a lowering the priority for this game’s development in a blog post. …


Image for post
Image for post

Behind the scenes at Aquil.io, we are avid gamers. Heroes of the Storm is a game we are quite fond of and have put a bit of time into, both on the play aspect as well as game analysis. Being able to automate specific analysis, whether it is general stats or individual gameplay, is a topic many gamers in the software-development industry subscribe to.

With the release of Blizzard’s heroprotocol scripts in 2015, we are able to parse *.StormReplay files. As we are primarily JavaScript developers, we had a need to parse a replay file and use the data from NodeJS. Thus, we wrote heroprotocol-node. There were a couple of existing Node ports of the heroprotocol library. …


Implementing authentication may seem daunting with the number of libraries and modules available today. By understanding the purpose of each module, an OAuth 2.0 flow can be created with minimal configuration. The following is an implementation of the OAuth 2.0 authentication flow using Google and FeathersJS. The example being constructed will:

  • Expose an endpoint to begin OAuth flow;
  • Allow a user to confirm which Google account will be used;
  • Create a user based on requested Google account data;
  • Create a JWT for use in future requests.

Although a boilerplate project can be created using the FeathersJS CLI, all files in this article are created manually to illustrate each step. …


Image for post
Image for post
Puk Patrick | Unsplash

This article aims to compare differences in performance, with regards to current “real-time” behaviors in a Web browser. For the purposes of this article, “real-time” refers to server pushing notifications to a client, removing the need for a page refresh. HTTP long-polling, HTTP short-polling, WebSockets, and server-sent events are avenues to accomplish this behavior and will be compared in different scenarios to measure data transfer costs. With the advent of HTTP/2 support in Node.js core, these comparisons will be done in both HTTP/1.1 and HTTP/2.

The inspiration for this comparison is to investigate the viability of using server-sent events as opposed to WebSockets without impacting performance. In real-world applications, performance can be a major factor. Reducing bytes across the wire has implications in financial tech as well as social applications. However, a balancing act exists between developer cost, application maintenance, and performance. Utilizing existing HTTP methods such as server-sent events may reduce overall project cost while meeting “real-time” behaviors. …

About

Alexis Abril

CEO and developer at Aquil.io, writing software and riding the open road.

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