BlueFletch and Community Outreach

By | Ideas For Your Business | No Comments

The democratization of technology means that technology is becoming accessible to the masses. According to the Pew Research Center, roughly 77% of all Americans own a smart phone. Each of these smart phones can easily out compute NASA’s Apollo Guidance Computer, the machine that put humans on the moon. Apollo 11’s on board computer had only 3.8KB of RAM. For comparison, an iPhone 7 Plus sports 3GB of RAM. That’s 3 trillion bytes versus 3000 bytes. The difference is vast.

More powerful technologies are available to more members of the public. Access to technology is becoming more widespread. But what about education and exposure to technology in schools? Some students can learn about computer science and get involved with technology in high school. For some students, their exposure to technology is limited. In 2013, there were 11 states that had 0 black participants. That same year, 3 states had no female students take the exam. There is still a disparity between the availability of computing resources. Here are some organizations that are attempting to bridge the gap:

Black and College Bound & GitHub Scholars

GitHubPictured: BlueFletch and Black and College Bound in the office

Deana Ervin, Phd, MBA
Angela Holcomb, LCSW

About the organization and BlueFletch’s Involvement

Black and College Bound is focused on providing preparation, guidance, and support to students of color throughout the college admission process. Black and College Bound provides a cavalcade of resources to help students secure their futures at higher learning institutions. These resources range from standardized test prep; financial aid and literacy; college fairs and tours; and finally, academic preparedness.

This past summer, Black and College Bound partnered with GitHub to form the GitHub Scholars Program. Students had opportunities to learn technology and interpersonal skills. All of the students formed teams and synthesized these skills to order to create business plans for social impact projects.

BlueFletch was excited to host these students in our office. We are enthusiastic about sharing our love for technology. Representation in tech matters. For a group of students of color, seeing people that look like them in tech re-affirms the notion that a career in tech is not only accessible but attainable.

GitHub Scholars

Pictured: Girl Scouts of East Atlanta alongside Angels N Tech at the Lenox Square Microsoft Store

Angels N Tech

Angela Chambliss, MS, PMP
Tarenia Carthan, BS

About the organization and BlueFletch’s Involvement

Angels N Tech is an organization dedicated to stimulating interest in STEAM (Science Technology Engineering Arts and Mathematics) amongst girls and young women. Angels N Tech strives to promote these fields through a series of hand-ons events. Thus far, Angels N Tech has hosted workshops and hackathons in the Atlanta area.

Angels N Tech recently partnered with the Girl Scouts of East Atlanta to hold the More than Cookies HackAThon. The troop was separated into two groups that tackled social issues involving mental health and implicit stereotyping. The hackathon was hosted by Microsoft at the Lenox Square location. The day was split into two pars. In part one, the teams focused on using the design thinking methodology to ideate and plan their ideas. In part two, the teams implemented their solutions.

Again, representation matters! The troop was able to work alongside their mentors. These women represented professionals in various fields like public health, psychology, engineering, computer science, and data science. The scouts felt passionate and empowered to solve problems that were important to them with the aid of technology. It is refreshing to represent as a developer at BlueFletch and tell these girls: “I am a black woman in technology. You can be too”.

Education for underrepresented groups in STEM and STEAM is far from perfect. Organizations and initiatives like the aforementioned help target groups that are typically left out of the tech conversation. That is true power of technology democratization: making opportunities available for all with the aid of technology.

Take aways from a Friday Code Review

By | Android, Ideas For Your Business, Mobile Development | No Comments

Do you do code reviews? If so, why? What do you benefit from your code reviews?

Most companies do code reviews to prevent future program errors, but in my opinion a major benefit of code reviews is to ensure the code is maintainable, that others can read and follow the code.

If you have not read the book Clean Code by Bob Martin, I highly recommend it, as it will give you techniques for writing maintainable code.

code reveiwCode Review Fridays

Here at BlueFletch we have a standing weekly code review meeting.  The engineers meet as a group and review some portion of code from a current project.  This meeting does not replace individual project code reviews, but is meant to benefit everyone in the company not working on the project.

Some of the benefits are:

1. See what others in the company are working on
2. Get insight into different technologies
3. Get help with a tricky piece of code
4. Ideas on doing a project differently

During our code reviews we look for the following items:

1. Readability — is the code easy to read / follow
2. Maintainability — can our customers easily maintain it
3. Usability — are the classes easy to use, are they overly complicated?
4. Does the code make sense?

Additional items we look for can be found here

A Recent Review

On a recent Friday we reviewed a couple of Android projects we inherited from other companies. As per our practice, we reviewed the code from the aspect of clean code and best practices, discussing how we would make the code maintainable and easier to read.

During the review four major issues jumped out:

1. Pyramid of doom
2. Project organization
3. Code Reuse
4. Hardcode Strings

code reviewPyramid of doom (or Callback Hell)

Every engineer has run into this, regardless of the language or platform, you have a function that has many, many levels of indention. This could a HUGE if statement with many conditions or a series of callbacks within callbacks. The deeper the code, the harder it is to follow and maintain.


if ( conditionA) {
    if ( conditionB ) {
        if ( conditionC ) {
            block of code doing something 1
         } else {
            if ( conditionD ) {
                block of code doing something 2
            } else {
                block of code doing something 3
    } else {
       if ( conditionE ) {
            block of code doing something 4
       } else {
            block of code doing something 5


Tip: If you find yourself coding such a monstrosity, STOP! Refactor the code. Start with the inner code and place the code into separate methods. Yes, you end up with more methods, but the code will be more readable, and with smaller methods you get code that is easier to write unit tests.

A possible rewrite (one of many ways, but easier to write unit tests):

 if ( conditionA) {

methodConditionA() {
   if ( conditionB ) {
   } else {
methodCondtionB() {
    if ( conditionC ) {
       methodHandlerProcssingLogic1 ()
    } else {
methodCondtionD() {
    if ( conditionD ) {
    } else {
methodCondtionE() {
    if ( conditionE ) {
    } else {
methodHandlerProcssingLogic1() {
    block of code doing something 1
methodHandlerProcssingLogic2() {
    block of code doing something 2
methodHandlerProcssingLogic3() {
    block of code doing something 3
methodHandleProcssingLogic4() {
    block of code doing something 4
methodHandlerProcssingLogic5() {
    block of code doing something 5


Project organization

Within one of the projects we reviewed, there were 67 fragments, all within one package. For non-Java programmers, imagine 67 code files within one folder, with the files having similar names.

There were 11 fragments referring to devices; 4 related to signing in; various fragments for product registration, and 2 About fragments.

How are these 67 fragments related? Which ones need to be looked at when enhancing a feature of the application? Where do we start?

Tip: How you organize your code can help those that follow. If you make it easier to identify features and/or the process flow, then those that follow will be able to understand your project.

If the engineer building the project had separated the fragments out by features or relating the code in some manner, then working with the project would be easier.

Some suggestions for organization include placing all the “User” related (sign in, forgot password, account creation) into one package.   Place settings related fragments into another package.  Place device related fragments into another package.

Get the idea? Organize the project by context.

Code Reuse

Within one of the projects we reviewed the code utilized simple REST API calls to gather data. A simple pattern of URL creation with HttpUrlConnection classes and code to handle the result.

After some research we noticed the same endpoint was used in multiple places. Then we found the same exact code pattern, almost line for line, in 15 other places.  The code had been copied from place to place, with minor changes to suit the need.

And there was a bug within the code that required a major change within each piece of code. Yuck!

Another project we reviewed had a common error message display, but the display code was copied into each Activity (25 code files). Imagine if they decided to change the look/feel of the error display, 25 code files would have to be updated and tested. Dooh!

Yes, as software developers we need to get things done fast, but the consequences of copying code from one part of the project to another will cause you headaches down the road. As no code is perfect, at some point it will need to be fixed or enhanced, how many places do you want to make changes?

Tip: if you find yourself copying a block of code from one part of the project to another, almost line for line, then build a reusable code object, either a new method, a new base class, something common. This will reduce the amount of code to maintain, and if a bug does arise, you have one location to fix it.

Hardcode Strings

Imagine opening a code file for the main activity of a project and having to scroll through 1,300 lines of hardcoded string literals? Yes, we had to do that during our code review.

We as engineers get lazy, we need to add a new UI label or a new error message, instead of doing it correctly we put the text directly in code. It never fails, later the project needs to be localized and now you have to pull all the strings out to a string resource file. How time consuming! How much time does it take to add the initial string to the resource file, less than a minute?

Tip: Take the time up front, do it right, and for the sanity of the engineer that follows you into the code base, do not hard code 1,300 lines of string literals into the main activity.


As software developers/engineers, we should take pride in our code. We should build our code to be readable, maintainable, and testable. Doing code reviews either as a group or individually will help you and others to learn and improve code.

And please: organize your code, write reusable modules, do not hard code strings, and break down your large unruly code blocks into smaller methods.

BlueFletch Honored with Floor & Decor’s IT Vendor of the Year Award

By | Ideas For Your Business | No Comments

Atlanta, GA – July 14, 2017   BlueFletch is proud to announce it is the recipient of Floor & Decor’s annual IT Vendor of the Year Award, in recognition of BlueFletch’s commitment to excellence and dedication to providing leading enterprise mobility solutions. Floor & Decor, a specialty retailer of hard surface flooring, uses BlueFletch’s solutions to improve efficiencies for employees to streamline store processes.

“The team from BlueFletch has been an integral part of our mobile initiatives. They have worked side-by-side with our internal teams to help us keep up with the pace of growth over the last few years” said John Adamson, Chief Information Officer, Floor & Decor.

“It has been our pleasure to work with Floor & Decor’s exceptional team. Together we have tackled some of the more complex challenges facing retailer today.  It’s awesome to work with them on some of the technological demands of the retail landscape” said Brett Cooper, Partner at BlueFletch. “We are honored to be named IT Vendor of the Year and look forward to continuing to help in the future.”

Floor & Decor gives its IT Vendor of the Year Award to the company it believes demonstrates exceptional performance and dependability on a consistent basis. BlueFletch has been assisting Floor and Decor with its mobile initiatives since 2012.

About BlueFletch
BlueFletch is team of mobile development experts dedicated to helping our enterprise clients solve business problems using mobility. Since 2008 BlueFletch has grown into a widely trusted mobile company in the enterprise space by developing high value line-of-business apps for companies in Retail, Consumer Goods, Healthcare, and Transportation & Logistics. For more information, please visit

iOS 11 Features for the Enterprise

By | Ideas For Your Business | No Comments

WWDC has wrapped up and so now it is up to us in the world of iOS to make sense of all these newly unveiled features. Now, being a developer who is often working in the enterprise realm, I tend to look at many of these features from a slightly different angle. When people hear about ARKit adding augmented reality to iOS, they probably think about the implications for games like Pokémon GO and interior decorating apps that allow you to see a fake end table super imposed next to their couch. My first thoughts are about it’s possible use in retail and warehousing to help highlight objects of interest or present additional information for the user. With this post, I’ll be going over some of the new features and SDKs in iOS 11, and how they relate to the enterprise and working world.

ARKit, iOS11ARKit – Previously developers had to do all of this by hand, and truth be told, it’s not easy. Super imposing into an image isn’t very difficult, but however, super imposing graphics in a 3-dimensional space with depth, that is also moving, is extremely difficult. ARKit does the heavy lifting for developers by locating features and planes, and it allows you to create 2d or 3d objects via SceneKit or SpriteKit to super impose onto these features and planes. As stated earlier AR can be useful to locating and highlighting items, but when combined with some other technologies it can be so much more. For example, when paired with iOS 11’s Machine Learning and Vision frameworks, mechanic might be able to have their device see an unknown engine part, detect what part it is, and then super impose the documentation for that part on half of their screen. Obviously, this technology on a phone or tablet has some limitations, but as smart glasses become more mature they will be a fantastic candidate for augmented reality in the enterprise. Read More

TAG Announces Diversity Game Changers in Tech Industry

By | Ideas For Your Business | No Comments

Atlanta, GA – June 19, 2017 The TAG Human Resources and Diversity society and TAG’s publication, Hub Magazine, today announced the GameChangers that will be recognized at the 7th Annual TAG Diversity Awards.

The event is made possible by Platinum Sponsor, Google and Silver Sponsors, Manhattan Associates, SunTrust, and Turner and will be held Tuesday, June 27th at the Morehouse School of Medicine NCPC Auditorium.

This year, The TAG Diversity Awards will recognize a select group of industry GameChangers along with the recipient of the prestigious Diversity Leadership Award. The work and achievements of these outstanding individuals are helping to advance diversity and inclusion in Georgia’s technology community.

Read More

ag Grid

Choosing a Data Grid Component For Your React Project

By | Ideas For Your Business | No Comments

In a React application I am working on we are using the Material UI component library, but immediately realized it’s table component did not have the features we needed. Many of the available grid components had the features we needed like sorting, filtering, search, and adjusting column order and size. However, there were only a few components that had the features we needed like exporting to excel and row grouping. Of those few, only ag-Grid had a built-in option for material theme styling. With a little css the grid was styled very similar to the Material UI table.

Top: Material-UI Table Component
Bottom: ag-Grid with material theme and some css

Another stand-out feature was the ability to pass through the gridOptions a context object that would be available to any custom cell renderer that you implement. This enabled us to pass props that included event handlers that could update the state of a parent component or launch async actions thus giving us the ability to make the grid even more interactive. For example, we were able to integrate commenting through the grid. Here is the table component code and the result.

import React from 'react';
import {AgGridReact} from 'ag-grid-react';
import 'ag-grid/dist/styles/ag-grid.css';
import 'ag-grid/dist/styles/theme-material.css';
import { columnDef } from '../table_util.js';
import DescriptionCellRenderer from '../descriptionCellRenderer.jsx';

const columnWidths = {
  'description': 400

class ExampleTable extends React.Component{
    super(props); = || [];
    this.columnDefs = this.columnDefs.bind(this);
    this.onGridReady = this.onGridReady.bind(this);
    this.gridOptions = {
      rowHeight: 56,
      headerHeight: 55,
      enableColResize: true,
      groupUseEntireRow: true,
      groupDefaultExpanded: -1,
      groupSuppressAutoColumn: true,
      groupSuppressRow: true,
      animateRows: true,
      suppressRowClickSelection: true,
      onRowClicked: this.onRowClicked,
      rowSelection: 'single',
      suppressMenuMainPanel: true,
      context: {
        currentUser: this.props.currentUser.user,
        handleCommentSave: this.props.handleCommentSave

    let columns = Object.keys([0]);
    let cols = [];
    columns.forEach((name, i) => {
      let col = columnDef(name.toUpperCase(), name);

      if (name === 'description') {
        col.cellRendererFramework = DescriptionCellRenderer;

      if (columnWidths[name]) {
        col.width = columnWidths[name];

      col.headerClass = 'table-header';

    return cols;

  onGridReady(params) {
    this.api = params.api;
    this.columnApi = params.columnApi;

<div style={{height: '770px', width: '100%', backgroundColor: 'white'}} className="ag-material">


Integrating comments into an ag-Grid table.

Ag-Grid is an excellent choice to use as your data grid component. It has all the powerful features you would expect from a solid grid component such as multi-sort and search and essentially every aspect of the grid is customizable so it was easy to adapt to design changes. If you choose ag-Grid you are likely to have a smoother development process.

BlueFletch Named Atlanta’s Best & Brightest Companies to Work For

By | Ideas For Your Business | No Comments

Atlanta, GA – May 15, 2017  BlueFletch, award-winning leader in innovative mobile technology solutions is proud to announce it has been selected as 2017’s Atlanta’s Best and Brightest Companies to Work For. Atlanta’s Best & Brightest is awarded by the National Association of Business Resources (NABR).

The Best and Brightest Companies to Work For® competition identifies and honors organizations that display a commitment to excellence in their human resource practices and employee enrichment. Organizations are assessed based on categories such as communication, work-life balance, employee education, diversity, recognition, retention and more.

At BlueFletch, we’re thrilled to be named one of Atlanta’s Best and Brightest for the third year in a row. It’s a testament to our leadership, our amazing team and our commitment to keeping innovative HR initiatives as a touchstone of our corporate culture. BlueFletch’s dedication to employee excellence includes flexible work hours and the ability to work at home, a commitment to continuing education and team outings organized for maximum fun and team bonding. Communication is king at BlueFletch and the secret to our success. We’re proud to know that listening to and learning from our team members is the reason we’ve been awarded this honor.

BlueFletch will be honored at the Best & Brightest Awards Gala will be held June 28th at the Atlanta Marriott Marquis.


About the National Association of Business Services

Established in 1996, the National Association of Business Services (NABR) fosters a collaborative environment in which companies and leaders learn best practices, trends and vital information benefiting the company and its employees well beyond the finances. Through the Best and Brightest programs, the National Association for Business Resources provides specialized business services, education and resources for businesses throughout the United States.

5 Essential React Native Libraries

By | Ideas For Your Business | One Comment

React Native is an increasingly popular framework for building cross-platform mobile apps. Unlike other cross-platform development frameworks, React Native compiles down to true native instead of running Javascript inside web views. On its own, React Native is powerful, and with the introduction of a few great libraries it becomes even more valuable.

React Native Maps
1. React Native Maps

In many apps it is helpful to have a map component that shows location pins, user location, tooltips, etc. React Native Maps removes the complications of dealing with both Apple and Google maps in cross-platform applications. With just one simple <MapView> tag, you have a flexible, customizable map that can be zoomed and panned with markers that can capture touches to show callouts, navigate to detail views, or even link out to the user’s native map system. The maps rendered by this library feel native, smooth, and highly performant.

React Navigation2. React Navigation

React Navigation allows developers to quickly and easily configure the navigation scheme for the entire application all from the main app file. Stack Navigators, Drawer Navigators, and Tab Navigators can be nested and combined to accommodate both horizontal and vertical navigation structures. For example, a Material Design compliant bottom tab bar can be combined with a stack to allow for master-detail flows inside the tabs. This centralized navigation control keeps your component files clean and prevents you from directly manipulating state to navigate through the app. Additional bells and whistles of this library include built-in transition animations, flexible header components, and Redux integration capabilities.

react Native vector icons3. React Native Vector Icons

This library is a streamlined way to include icon fonts in React Native applications. It come pre-bundled with over 3,000 icons, including some of the most popular icon libraries like Font Awesome and Google’s Material Icons. Need custom icons from a design or unique logos? No problem. React Native Vector Icons supports Fontello ( configs so all you need is an svg file. With this library, a simple, one-line import statement gives you access to style-able Icon and Icon.Button components to polish and brand your app.

react native communication4. React Native Communications

One of the pain points in creating React Native apps is integrating with the native systems (phone calls, push notifications, etc.). React Native Communications relieves some of that stress by providing a cross-platform solution for placing phone calls, sending text messages, opening web URLs, and composing emails directly from your app. Once a few dependencies are linked in Xcode and Android Studio, your app is just 1 line away from communication functionality.

React, react native material kit5. React Native Material Kit

React Native Material Kit is an awesome time-saver for Material Design themed apps. The library provides components for buttons, cards, loading indicators, floating label text fields, sliders, and toggles, each with configurable themes and options. You can use the included Material-inspired color palette or use all custom colors to style each component. Additionally, there are multiple ways to construct each component: choose either the constructor or JSX technique to best fit the structure of your project. This library is sure to save a ton of time and styling effort for any developer with app designs rooted in Material guidelines.

The Apple Car: What We Know(ingly) Assume

By | Ideas For Your Business | No Comments

While Apple hasn’t officially confirmed the existence of a research and development project for an automobile, I’ve heard a lot of rumors and rumblings out of Cupertino. To be dubbed the “Apple Car”, it in fact has more in common with the iPhone than a traditional car.

First, Apple Car’s body will be fully made of Gorilla glass and will withstand 80% of collisions at 5.9 mph or less. The increased weight and fragility over traditional steel cars is completely ignored to prioritize aesthetics. Sure, the body looks great and will resist finger prints, but are you be brave enough to drive without additional protection or a cover?

AppleIn an effort to reduce the number of physical buttons on board, the gas and brake pedals will be replaced with capacitive sensors. This will allow infinitely variable throttle and braking, as long as you are barefoot. All other buttons and toggles will be controlled by shouting commands at Siri. Charging the Car battery at existing public charging stations will require an additional adapter to interface between the plug and the Car. This included $9 adapter allows Car to be backwards compatible while also putting pressure on charging stations to adopt proprietary technology.

Innovation isn’t always easy to swallow!

AppleAll this technology was developed to provide the purest driving experience ever created. The interface simplifies driving so much that even a child can hop in Car and intuitively take off down the road.

AppleAnd for the first time ever, Siri can pilot you to a destination using Apple Maps’ default, convoluted routing. We’re keeping fingers crossed that support for Google Maps will be available on release day. Should you prefer hands-on manual steering then simply swipe left and right on the steering wheel. No moving parts = nothing to break!

Apple, siriPre-orders for Car are set to begin Early 2018, and will ship in 5-6 years. The base model will start in the low $100,000s while the Plus model is much too expensive for anyone reading this.

As for the range, Car will come off the lot capable of travelling 400 miles on a single charge. Initial testing of the battery has shown that range will decrease with regular use within the first year. Apple is also struggling with battery life after upgrades to Car’s firmware. Each major software release is said to greatly impact performance and battery life on all prior year models.

Disclaimer: All this intel was obtained when an engineer from Apple left his prototype Car at a bar after a night of drinking. He chose to take an Uber home rather than trust Siri auto-pilot.

Working in a Learning Environment – and a Shout Out to Spinal Tap

By | Ideas For Your Business | No Comments

Finding the right workplace setting for yourself is entirely subjective. There’s no doubt that certain career paths are better than others, but if you’re not personally in a position to capitalize on what is before you, then opportunity is wasted.

What have I found that works for me?

David St. Hubbins and Nigel Tufnel may have put it best – “It’s such a fine line between stupid and clever.”

While this might not sound applicable to the world of company culture, all of us have worked in situations where the knife’s edge of this line is traveled repeatedly.

At various times in my past I’ve worked at organizations where the leaders had a 3-strike policy on typos, claimed (in all seriousness) that they could outbox Mike Tyson in his prime, and staged impromptu spelling bees during work hours.

I’d like to think the intention behind all of these actions came from a good place – attention to detail, encouragement, self-discipline and fun. But it was never really made clear. Guiding principles and core purpose can’t be derived from spelling or eating donuts for cash (something I’ve also witnessed).

The manner in which these policies or statements manifested themselves in culture didn’t really do much to foster a culture of substance or put a unified direction on an approach to how its employees should strive to improve or work the greater good of the organization.

Read More