Introducing ReleaseHawk

Today we’re launching ReleaseHawk— a GitHub app that manages your dependencies that live outside your package manager. In today’s environment, we’ve grown accustomed to having our dependencies come from a package manager, such as NPM, Maven, or NuGet.

There are existing GitHub apps, such as Greenkeeper, to keep your dependencies within your package manager up to date. What if you want the same convenience for an open data set, an important flat-file, or a GitHub repository? ReleaseHawk to the rescue!

For GitHub dependencies, you can choose to be updated on every release, tag, or commit. For URL dependencies, you’ll be updated when the checksum changes. You can even run a local script as part of the update process.

Watching a GitHub Repository
ReleaseHawk was originally conceived while building the heroprotocol-node project. heroprotocol-node depends on a GitHub repository that doesn’t use tags or releases, and is vital to stay up to date. With ReleaseHawk, a pull request is opened every time a new commit on the underlying repository is available. ReleaseHawk is configured using a YAML file. Here’s the .releasehawk.yml configuration used in the heroprotocol-node:

destination: ./heroprotocol
type: commit
script: ./bin/

Here’s an example of a pull request ReleaseHawk created:

Watching a URL

Let’s say I want to build a project that depends on data within a CSV hosted at some URL. In this scenario, we want to update our application whenever the CSV data changes. For example, the city of Waterloo exposes parking ticket data via a hosted CSV file. The data set in question is around 28 MB, making this an expensive request in the browser. After downloading this file, I want to execute a script to parse the data.

With ReleaseHawk I can use a .releasehawk.yml like this:

destination: ./data
type: file
script: ./bin/

Anytime the CSV file is updated, ReleaseHawk will:

  1. clone my repository
  2. download the updated data
  3. run ./bin/
  4. create a pull request.

Get started

To try out ReleaseHawk in your project, install it on GitHub now.

We’d love to get your feedback! Tell us about your experience by dropping us a line or opening an issue in the ReleaseHawk repository

Archiving the ReleaseHawk project

Published August 12, 2019 by Alexis Abril in ReleaseHawk, NodeJS
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. Due to the changes, we had no immediate need for the project, but still can see uses in the future, such as a project monitoring changes in flat files.

As a result, we’re leaving ReleaseHawk available to be forked and continuing to host the documentation, however, we have removed the application from the GitHub marketplace and are archiving the project. If you find the need to monitor dependencies that are not traditionally covered, feel free to host the ReleaseHawk service in your own infrastructure. If you have any issues setting this up, be sure to reach out to us and we are happy to assist.

We may unarchive this project in the future if there is a demand, but until then, code responsibly!

Karma Driven Development

Published April 15, 2020 by Alexis Abril in Karma Driven Development
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.

Whether I’m advising a client or writing code, I constantly ask myself: What is the best, right now? This may be choosing an older library or pattern to maintain consistency. And doing that would immediately lower the cost of future development since the patterns in the code base would be clearly defined. Similarly, as a consulting agency, we’ve turned down business when we don’t have the expertise our clients need. We don’t pretend to have skills we lack. We only accept jobs we know we can complete to the highest standard.

I leave you with this one takeaway: You have the power. Only you. If a supervisor asks you to do something that doesn’t make sense, you can push back. In software development, we often are told to keep our heads down or do as we’re told. However, you are the expert in a field with no governing body. Take ownership, use your power, be responsible.

Claude says, “You reap what you sow.” I call this idea karma, that what goes around comes around.

– Anthony Walton

Karma | Definition of Karma by Merriam-Webster
We Need To Work Harder To Make Software Engineering More Ethical

Making of a Maker: Integromat Interview

Published August 19, 2020 by Alexis Abril in No-Code
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 below or tweet at us. Also, be sure to read more about Curtis in the interview.