Category software development duotone

Software Development

For the developers out there, we cover more technical topics in this section. Here’s where you will find our approach to experimentation and philosophies about different platforms.

POST DIRECTORY
 

Hello! Hi. Goodbye. Bye! I’m feeling the glow of having figured out how to do something that seemed daunting at first, and I’m here to share my findings in the hope that you’ll do it too: build a React Native app from scratch (well, almost) and publish it on the Play Store for the Android camp to use and cherish! I’m reporting back to my team about...

 

I started using Visual Studio Code about six months ago and so far I really like it. Among other things, I love the first class integration of the Language Server Protocol which allows a consistent interface for navigation, code completion, and live syntax checking regardless of what language I’m writing in.

Whenever I’m learning to use a new editor...

 

When building cross-platform React Native Apps, at some point it is very likely you will want to use a native iOS UI component that is available as a React Native component, but is not available for the Android platform, or vice versa. Design pattern differences between iOS and Android are common to say the least, and there are not always easy implemented...

 

I’m coming up on the tail end of a UI/UX rescue project that was a major overhaul. The existing codebase deviated notably from conventions, the most significant was a heavy reliance on hand-rolled JavaScript that did a lot of work you’d normally expect to find elsewhere. For example, on one page where multiple day-specific forms were displayed in...

 

This is Part 3 of a three-part guide on refactoring JavaScript from imperative and/or object-oriented patterns to declarative functional ones. For a background on the concepts used in this tutorial, refer to Part 1. In Part 2 we applied the concepts of currying, partial application and pointfree style.

Makeover Time (continued)

Recap from Part...

 

This is Part 2 of a three-part guide on refactoring JavaScript from imperative and/or object-oriented patterns to declarative functional ones. For a background on the concepts used in this tutorial, refer to Part 1. Refer to Part 3 for automated function composition.

As a reminder, the point of this series is to demonstrate how to solve a common...

 

This is Part 1 of a three-part guide on refactoring JavaScript from imperative and/or object-oriented patterns to declarative functional ones. This first part is a conceptual overview. In Part 2 we apply the concepts of currying, partial application and pointfree style and Part 3 discusses automated function composition.

As developers, it is in...

 

DRY is excellent coding advice: “Don’t Repeat Yourself.” Repetition in code means if something needs to change, all that repetition may need to change with it. This advice often comes with warnings, though, that you don’t want your code to become too DRY.

Somewhere along the way, we understood that a one-liner in our code is a liability if it’s...

 

Earlier this year, I was discussing features for a project with the team. I casually mentioned YAGNI in response to one aspect of a feature that seemed unnecessary. It had been a while since I’d brought up this term and a couple newer developers on the team were puzzled. I paused and realized this wasn’t something they were familiar with. So...

 

Self-referential Tables In SQL Are Tricky

One of the applications I work on exposes flattened reporting data as a SQL view. The systems that consume this data only support fetching it via direct database access, so I had to implement it as a read only view. The view itself is fairly complex, combining relational and summary data from 15 different...

 

Building better products faster

Prototyping early and often offers many advantages in the product development process. Creating a functional design prototype is arguably the most efficient way to make product design decisions before moving to an MVP. A prototype lets you make informed product decisions that you can present to the client stakeholders...

 

Working on the idea

Great design is born out of collaboration—when everyone is in the same room with a whiteboard and endless sticky notes. The ideas just seem to flow and communication is clear. This is how product decisions are made—working closely with your peers and stakeholders. As a team, everyone needs to tell the same product story and everyone...

 

When we are writing code for a product’s MVP, one of our core techniques is experimentation. We’ve found that frequent experimentation leads us to the quickest, most cost-effective way to dial in a product’s feature set.

Jeff Bezos, Founder of Amazon, says, “Our success at Amazon is a function of how many experiments we do per year, per month, per...

 

At Haught Codeworks the team is always working on many different projects, so it’s very important that developers can become productive quickly on any of them. This is necessary both for developers new to a project and trying to come up to speed, as well as developers familiar with a project that have been away from it for a while. We’ve found that...

 

Since Rails v4.1 is coming to its end of life, we recently upgraded one of our clients to Rails v4.2.8. And while most of the upgrade tasks were pretty straight forward, we did run into an interesting issue when using find_by_sql to execute a complex sql query. With the introduction of AdequateRecord, Rails is trying to improve query performance...

 

I’ve been working on a Rails 5 project that employs an infinite loop in conjunction with a few nested breakable loops. Code/case coverage is particularly important, as the program interacts with Cryptocurrency exchanges. Errors or unexpected behaviors can potentially result in financial loss.

I was expecting the loop tests to be convoluted, heavy...

 

I recently added file upload support to an Ember application that talks to a Phoenix API server using the JSONAPI protocol. I wanted a solution that integrated well with Ember and ember-data, supported direct uploads to S3 from the client, included drag and drop support for choosing files, and had the ability to show upload progress. After experimenting...

 

Recently, a project we’ve been working on at Haught Codeworks got to the point where we needed to add additional columns to the database for one particular model. This meant that for any future instances of this model, those columns could be populated upon creating the instance, but any past instances would not have those fields associated with them...

 

In the last article we looked at using Ecto schemas to read records and associations from a database built according to Rails naming conventions. This time we will extend the examples used in that article to see how Ecto changesets can help us write records to the database in a safe and consistent way.

The example apps can be found at PlaygroundRails

 

I recently migrated a Rails JSONAPI server to Phoenix, and in the process I learned a lot about using Ecto with a database that conforms to Rails naming conventions. It turned out that I was able to share an existing Rails database between the Rails and Phoenix implementations of the server during development, which allowed me to use a phased approach...

 

On a recent product prototype project, we introduced an experienced developer to the team. It was this person’s first time on a prototyping project. The gist of product prototypes is to take the core vision of a product and turn it into a working application in the least amount of time possible, usually 6 weeks or less. We know that these projects...

 

In Rails apps, you have probably seen ActiveRecord queries chained together in a controller action in order to determine what information from the database is presented to the view. Query methods can be chained if they are being done on an ActiveRecord relation. If a method returns an object, it has to be at the end of a chain. Most often, a query...

 

In a previous post, I described a few ways to use seeds in a Rails app. Here I want to bring to life the real challenges in using seeds and what I learned about seeds through a project’s life cycle.

As the project matured, our seeds.rb file became less used and poorly maintained. It used to be a reliable way to create a starter set of objects that...

 

I recently worked with a data heavy Ruby on Rails project where seeds became crucial to developing quickly. I came to realize there are at least two different ways to use seeds, even though little has been written about these ways and there is no prescribed Rails Way. Here I aim to clarify the approaches, and in the next post I describe how our use...

 

I spent time over the past week building a form that went through some interesting iterations. The form involved a few nested associations, and had initially been built using JavaScript to incorporate drop downs, but my team decided to go back to a simpler Rails form and rebuild functionality from there. I’ll walk through the steps I took, and the...

 

Since joining Haught Codeworks as an apprentice one month ago, I’ve spent a lot of time working with two particular gems, Administrate and Devise, in two different apps. This has led me to think about the magic and potential convenience that come with gems versus the customization and knowledge that come with building something yourself.

When it...

 

One important principle to apply when building amazing software applications is cultivating a QA Mindset while developing your product. I’m not sure where I first heard this mentioned, but Rand’s post on the subject stuck with me. The QA Mindset. If you haven’t read it, make a point to do so.

What is QA?

First, let’s cover the basics of what...

 

In the previous article I covered installing Dragula.js in an Ember project and built a simple wrapper component I could use to test basic Ember integration. This article will extend the simple component to bridge Dragula’s DOM based view of the application with Ember components and models.

Building A Bridge

Let’s start with a recap of the simple...

 

As developers, we write programs to improve the efficiency of our clients and their customers. That’s pretty well the whole goal of the software industry.

So how about putting those mad software skills to work for yourself? Clever programmers are always on the lookout for easier ways to perform repetitive tasks and find creative uses for the tools...

 

I’ve been doing a lot of work on an internal planning and organization tool for HCW. It’s an Ember application that among other things offers a simple kanban board. As you would expect of any kanban board, the interface is drag and drop heavy: cards can be sorted within their own lanes, cards can be moved between lanes, checklist items on cards can...