Image for post
Image for post

Wanting to level up with React, Redux, Flow and Router, I found Seed’s Frontend Homework assignment describing the basic frontend to an invoice web app — and thought it was a good problem to experiment with. Below is my linked solution, and commentary on my experience working with those technologies.

Repo on GitHub:

Commentary:

React. React seems to have emerged as the most popular JS framework to date, and has deep community support. I’ve enjoyed working with it, and it’s become my goto for front end.

For comparison, there are currently more React jobs on StackOverflow Jobs than other similar frameworks (not entirely apples to apples, but close enough): ‘reactjs’ (247), ‘angularjs’ (208), ‘backbone.js’ (18), ‘ember.js’ (16), ‘vue.js’ (8), ‘knockout’ (4). This writeup by Erik Bernhardsson also does analysis on current popularity on JS frameworks: “The eigenvector of “Why we moved from language X to language…


Getting familiar with the React ecosystem

Image for post
Image for post

After reading up on React, ES6, JSX, Babel, webpack, yarn, Jest & Enzyme — I put together this Minesweeper prototype to get more limber with execution. Also leveraged TravisCI with auto deploys to GitHub Pages. See the GitHub link below.


Overview of a Rails project with user management & authentication to proxy serve a private, single-page app.

Image for post
Image for post

JFMK-Auth is an open source, personal web app that securely serves an instance of my demo work portfolio to an authenticated, private audience. While it’s not a new or unique problem, the project gave me a testing ground to work with Rails 5.0 & Docker Compose 3. This post walks through what I feel are technical takeaways from the development process.

TLDR; See github.com/jfroom/jfmk-auth for the codebase.


How to configure, run, and debug Capybara tests with a Selenium Standalone Docker Compose service.

Image for post
Image for post
VNC Viewer interfacing with Selenium standalone debug Docker Compose service (with time lapse).

TLDR; See github.com/jfroom/docker-compose-rails-selenium-example for a fully functional demo, Travis CI integration, and more documentation.

Using Capybara & Selenium to run automated tests in an actual end user browser is a great approach to CI/CD for a Ruby/Rails based web application with JavaScript. However, setting this up on a developer desktop can sometimes be tricky, and create dependencies on your local machine.

Utilizing a Docker Compose Selenium service reduces this complexity, and makes onboarding new developers easier. It can also can create parity between developer environments, and with the CI environment.

Overview

  • Example project runs a simple ‘hello world’ Rails app
  • Two Puma server instances boot up and run simultaneously for convenience: (1) ‘development’ environment at http://localhost:3000, and (2) ‘test’ environment at http://localhost:3001.


Save development time by using a Docker entrypoint & volume to persist Bundler’s cache across builds & Gemfile changes.

Image for post
Image for post
Photo Credit: Nicole Wasko

TLDR; See github.com/jfroom/docker-compose-rails-selenium-example for a fully functional demo, and more documentation.

When Bundler is involved, keeping a Docker Compose Ruby project’s build times low in a quickly changing, multi-branched development environment is not trivial. A common approach is to call a variation of RUN bundle install in the Dockerfile . That works fine until Docker services are re-built, or the Gemfile changes—which causes all the gems to be re-downloaded, which can be time consuming.

One solution is to optimize Bundler’s cache into a volume with an entrypoint to handle installs. …


My newer posts will be on Medium. My older weblogs can be found at: jfroom.com/blog.

Why the change? 1) Life is short. 2) Same rationale as DHH’s writeup: ‘Signal v. Noise moves to Medium’.


It takes a certain individual & special chemistry to make remote work successful.

Image for post
Image for post
Brian followed his dreams, and moved to the west coast.

Never Felt Out of Touch

One of my friends, and favorite developers, that I’ve had the pleasure of working with, and manage work for — is a chap named Brian.

We worked together locally in Chicago for a year. When he decided it was time to move to San Francisco, I was happy that he agreed to work with my team remotely. We then set forth organically figuring out how to best accomplish that without feeling disconnected.

Having an open channel on instant messenger was key. As well as, having set hours of shared availability. We had a good rapport over instant messenger, and we didn’t always chat tech. I tired to give him straight answers on project issues, and encouraged his opinion. I felt this helped us build a level of trust. …


How I re-establish work balance when it comes off track.

Despite my best intentions of being happy & focused while working, sometimes that zen train just comes off the tracks.

In those moments, I’ve found that by adjusting my approach with the following high-level guideposts in mind — I’m usually able to re-establish balance.

Considering that most working aged adults spend a majority of their waking hours working, I believe it is a personal responsibility to take control of my professional destiny and well-being, insomuch as I have control.

How could something as important as this be left in the hands of anyone else? Even in small measures of success, surely this intention can yield valuable results.

For reference, I’m a software developer with an 18 year history of building web applications, and occasionally lead others to do the same. Surely, as I grow and learn, my insights will grow and change as well. …

About

Jeffrey Froom

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