Category

Development

What does it mean to be in a Disconnected, Intermittent, Limited bandwidth (DIL) Environment?

By Development, Mobile, Xamarin

What is a DIL Environment?

Disconnected, Intermittent, Limited bandwidth (DIL) environments can occur more often than you think. In a tunnel, elevator, or driving down a scenic country road are all places where you are likely to experience this condition. Your mobile device is either out of range or simply blocked from connecting to the nearest cellular tower or wifi network. You have now entered a DIL environment. So what does that mean for your mobile device? A loss of network and internet connectivity makes your web browser useless, but does it have to render your mobile applications useless as well? This is an important question to consider when designing and building your mobile app.

Why is it Important for Mobile Developers to Consider?

Most mobile applications are designed to utilize various web based services – and for good reason. The native resources of a mobile device are limited in both processing power and data storage capacity. It is only natural to want to connect to a web service to access superior resources remotely in order to enhance the capabilities of an application beyond what the mobile device can provide on its own. We often take for granted that there will be a fast and robust connection to the internet available to the user at any given time, but what about when it is not?

Thinking About Strategies

There are strategies that can be implemented in order to mitigate the effects of this loss in resources when entering a DIL environment. The U.S. Department of Defense has attempted to tackle this problem with a variety of techniques. Sophisticated software and hardware solutions have been devised to enable mission critical applications and resources to remain available for military personnel to utilize on their mobile devices in hostile territory where secure and reliable connections to their tactical cloud resources are non-existent. One solution calls for the implementation of forward-deployed, discoverable, virtual-machine-based tactical cloudlets that can be hosted on vehicles or other platforms which provide a limited substitute for normal network connectivity.

Military hardware solutions are impractical to implement in support of consumer applications in a normal civilian environment. But are there ways to mitigate the limitations of a DIL environment without utilizing costly and impractical hardware solutions? As a Xamarin mobile developer at Bytelion, I will explore this issue further in my next post. Stay tuned, and thanks for reading!

Upgrade Python to support Django 2.0

Upgrading Python To Support Django 2.0

By Agile, Development, DevOps, Django, Python

Across the land, there are many developers, dev ops, and software delivery managers are terrified of the big move from Python 2.7 to Python 3.6 (at the time of writing this).  You can see all of the versions from the beginning of time.    I am going to walk you through why it is happening, how to plan, and more importantly, how to upgrade your infrastructure in a systematic manner.

Assumptions:

  • There are multiple developers on the team
  • There are multiple Django instances in your organization

Why move? Django

The answer is pretty easy… Django, the core web platform programming framework associated with the Python  programming language won’t support future releases in Python 2.7 any more. In fact, the Django 1.11.x series is the last to support Python 2.7.

Django 2.0 supports Python 3.4, 3.5, and 3.6. We highly recommend and only officially support the latest release of each series.

Note according to PEP 373, Python 2.7 is currently expected to remain supported by the core development team (receiving security updates and other bug fixes) until at least 2020 (10 years after its initial release, compared to the more typical support period of 18–24 months).

How to Plan?

When it comes time to plan for an event like this, it is important that you identify the critical components of your infrastructure.

Sample User Story

As a developer, would like to have a complete list of technical assets that use Python so I can generate an upgrade plan that reduces risk to the company.

Acceptance Criteria: Generate a list of the following assets which include:

  • Your Django platforms to include, dev, test, and production instances.
  • Other internal platforms ( AWS lambdas, small flask instances)
  • External/Internal libraries
  • Cronjob or schedule tasks running Python
  • Continuous Integration systems that build  (ie Jenkins)
  • Unit testing
  • QA regression testing scenarios
  • Code repositories
  • Your development team list (each one of them will have to complete upgrades)

Step 1 – Select Your First System

Pick your first system to do an end to end test.  If you only have one single platform of Django, then… you are done.  We recommend that you clone your dev instance for your first test.  If you don’t have a dev instance, stop reading this and make sure that you do have a dev, test and production version of your platform!

If you have multiple systems, we recommend that you select one that is much smaller in scope and will have as little impact on your operations as possible.

Sample User Story:

As a developer, I would like to select my first computing environment to upgrade Python on so I can minimize the impact on our operations.

Acceptance Criteria:

  • You selected one of the least impactful systems in your eco-systems
  • You clone a working environment that it identical to this instance.
  • You notify the team of what you are doing and discuss any impacts that your testing might have with them.

Step 2 – Start your documentation

If you have other people on the team, you will want to make sure that you can guide them along the path of upgrading their computing environments and be able to discuss problems that you had.

Sample User Story:

As a developer, I would like to document the upgrade process steps that  I took so I can help others on the team upgrade their computing environments to Python 3.6 with Django.

Acceptance Criteria:

  • Document your finding in confluence.

Step 3 – Review external dependencies

Not all pypi libraries are Python 3.6.3 compliant.  Many are only built on Python 2.7.  The good news however, is that most major libraries have been ported to 3.6.x.  The complete list of PyPi libraries per version is listed here.

Individual Library Inspections

As a developer, you can see the details of any pip installed library by calling this command: pip show LIBRARYNAME –verbose

Example:

(bytelion_env)~>pip show requests –verbose
Name: requests
Version: 2.13.0
Summary: Python HTTP for Humans.
Home-page: https://python-requests.org
Author: Kenneth Reitz
Author-email: me@kennethreitz.com
License: Apache 2.0
Location: /Users/terrancemacgregor/.virtualenvs/bytelion_env/lib/python2.7/site-packages
Requires:
Metadata-Version: 2.0
Installer: pip
Classifiers:
Development Status :: 5 – Production/Stable
Intended Audience :: Developers
Natural Language :: English
License :: OSI Approved :: Apache Software License
Programming Language :: Python
Programming Language :: Python :: 2.6
Programming Language :: Python :: 2.7
Programming Language :: Python :: 3
Programming Language :: Python :: 3.3
Programming Language :: Python :: 3.4
Programming Language :: Python :: 3.5
Programming Language :: Python :: 3.6
Programming Language :: Python :: Implementation :: CPython
Programming Language :: Python :: Implementation :: PyPy

Sample User Story

As a developer, I would like to know which PyPi libraries are not supported by my current system so I can determine a migration strategy.

Acceptance Criteria

  • List is generated and shared with the team
  • For each library that is not supported, identify an alternative.

 

Remember the 80/20 rule?

Many of the upgrades from 2.7 to 3.6 can be safely automated, some other changes (notably those associated with Unicode handling) may require careful consideration, and preferably robust automated regression test suites, to migrate effectively.

 

Upgrading Server Code

 

Programming Language :: Python

Here is a list of what some other people experienced:

https://www.calazan.com/upgrading-to-ubuntu-1604-python-36-and-django-111/

https://blog.thezerobit.com/2014/05/25/python-3-is-killing-python.html

Enabling PostGIS on PostgreSQL with Amazon Web Services(AWS) | Relational Database Service(RDS)

By AWS, Databases, GIS

Part 1 of our PostGIS series is to help developers enable PostGIS for a PostgreSQL database in AWS.

Amazon’s Relational Database Service (RDS) allows users to launch PostgreSQL databases easily and quickly. PostgreSQL allows developers to extend the functionality of the core database via extensions.  For this reason, extensions loaded into the database can function just like features that are built in.

Because this database is on Amazon’s servers, they have limitations on what extensions the will allow to be hosted on their service.  These limitations are mostly for performance reasons.

PostGIS Version

By default, the database has PostGIS installed on it. This isn’t critical to run, but it may be helpful in your troubleshooting efforts.

To get the current version, use this:

SELECT PostGIS_full_version();

Result:

POSTGIS=”2.3.2 r15302″ GEOS=”3.5.1-CAPI-1.9.1 r4246″ PROJ=”Rel. 4.9.3, 15 August 2016″ GDAL=”GDAL 2.1.3, released 2017/20/01″ LIBXML=”2.9.1″ LIBJSON=”0.12″ RASTER

Normal Installation Guidance

If you follow PostGIS’s guidance here, you will get the following error.

When you run this command:
CREATE EXTENSION postgis_sfcgal;

ERROR: Extension “postgis_sfcgal” is not supported by Amazon RDS
DETAIL: Installing the extension “postgis_sfcgal” failed, because it is not on the list of extensions supported by Amazon RDS.
HINT: Amazon RDS allows users with rds_superuser role to install supported extensions. See: SHOW rds.extensions;

AWS RDS PosGIS Installation Guidance

AWS covers enabling PosGIS via their common database administrator (DBA) tasks here.

In about 3 minutes, you can run through these commands and enable PosGIS tables in your database.

AWS Supported Extensions

This is a pretty nifty command to see what extensions are displayed on the device.

SHOW rds.extensions;

Here is a list of the Posgresql Extentions that RDS does support:

address_standardizer
address_standardizer_data_us
bloom
btree_gin
btree_gist
chkpass
citext
cube
dblink
dict_int
dict_xsyn
earthdistance
fuzzystrmatch
hll
hstore

hstore_plperl
intagg
intarray

ip4r
isn
log_fdw
ltree
pgaudit

pgcrypto
pgrouting
pgrowlocks
pgstattuple
pg_buffercache
pg_freespacemap
pg_hint_plan
pg_prewarm
pg_repack
pg_stat_statements
pg_trgm
pg_visibility
plcoffee

plls
plperl
plpgsql

pltcl
plv8
postgis
postgis_tiger_geocoder
postgis_topology
postgres_fdw
sslinfo
tablefunc
test_parser
tsearch2
tsm_system_rows
tsm_system_time
unaccent
uuid-ossp

How can I move my difficult development team to Agile?

By Agile3 Comments

How can I transition my team to Agile?

Development teams can be difficult and incredibly frustrating. Some developers believe that scrum is micromanagement and does not value transparency. Others are stuck in their ways and don’t want to change. Some development teams have had terrible agile leadership, dysfunctional project execution and therefore are far less than impressed with the entire Agile experience.

In this post, I will explain how you can guide the most difficult people through the process and make them a believer. Please note, each team is unique, which means each team requires a unique approach. If you want more information about Agile vs. Waterfall method, check out our previous post: Corporations Moving to Agile.

screen-shot-2017-09-05-at-1-24-20-pm

Become a self-taught expert

Before walking your team down the path of agile, make sure you are well read with some core agile development books. For a quick and insightful overview of the scrum process, I recommend Scrum: A Breathtakingly Brief and Agile Introduction.Team members can finish this book in under an hour. Youtube has a plethora of amazing videos like this one from Atlassian. If you prefer to read through the web, we highly recommend Mountain Goat Software (You are welcome Michael Cohn!). We have relied on their interpretation of agile roles and techniques the most. To understand agile, it is a good idea to see both sides of the story, Google “Agile sucks” or “why we quit scrum” to understand the objections.

  • Pros:  Simple, easy, low-cost.
  • Cons: Won’t pick up on many of the nuances that only real experience provides.

Demonstrate Leadership

Sit down with your team and discuss exactly why you are moving to agile. Explain how the process works, what the benefits are, and listen to their problems and concerns. Bring up your research from why “agile sucks” early on so they are aware that you understand how they might feel. You don’t have to be a developer to command the respect of your troops. You do, however, have to understand their point of view to be able to work with them. Believe it or not, software development, like product fit, involves human empathy. So try walking in someone else’s shoes.

  • Pros: Lots!
  • Cons: None. Time spent on this pays off in the (very!) near future.

screen-shot-2017-09-05-at-1-26-17-pm

Get Help: Hire An Agile Coach

There is an industry of Agile coaches that will work with your organization to spot problems, collaborate with product managers to “modify” some less desirable behaviors. Then turn the pressure on for development teams to get the most out of them.  Agile coaches have varying degrees of expertise, so you must be careful in your vetting process.  One of the best we have found is the team at Project Cooks.

screen-shot-2017-09-05-at-1-29-23-pm

Get Help: Hands on Agile Hybrid Training

If you want to train your development team, another reliable option is to have your team co-locate with a software services company that has a mixture of software development and agile training. This emerging model can be found in New York City’s Pivotal Labs. Your team works with theirs for about four months while building a product using Agile techniques. At the end of the four months, your team is capable of working out of your offices with a full and practical understanding of Agile development. Bytelion is currently implementing this model in Baltimore/Carroll County Maryland.

  • Pros: Your team works side by side with Agile experts.
  • Cons: Expensive model, Team must travel.

screen-shot-2017-09-05-at-1-31-32-pmFire Your Way Out

Let’s face it; sometimes you are going to work with some pretty difficult people. No matter what you do, they will not change. There are times that you won’t be recognized as a strong leader.  No matter how effective you are as a product owner, there can be an impediment to the relationship that will make you less efficient.  If you have either of these scenarios, it is best to cut your losses and find the right people who will fit your organization and culture of openness and accountability.

  • Pros: Confidence that you have hired the right team.
  • Cons: You will have to shed people with domain knowledge and invest in new people.

screen-shot-2017-09-05-at-1-33-22-pm

Formal Certification

You may want to consider a Scrum workshop to certify all members of your organization. These can be pretty expensive, but the benefits should far outweigh the cost. You can find team workshops/courses at scrum.org and scrumalliance.org. For more details the two, please check out our comparison.

  • Pros: All principles are covered, team has the same standard
  • Cons: Knowledge may be superficial,  time away from the office.

screen-shot-2017-09-05-at-1-34-58-pm

Final Thoughts:

Having the right Agile team and culture is critical to your product line. We hope that these options are helpful to you as you move forward. As always, nothing beats engaging at networking events to meet other leaders including conferences and events to hear how they solved their problems.

If you were curious about Bytelion’s agile development process, we are happy to chat.
Feel free to email us at info@bytelion.com

 

Why building an admin panel should be in your first sprint

By Agile, DevelopmentOne Comment

Overlooking small aspects is the nature of starting a software development project. From how much time a feature will take to the Mythical Man Month Mistake; eventually a team runs into all of these. One area that’s commonly forgotten and can make a big difference in the performance of an application is the admin panel. In my opinion, few features are as important and useful as an admin panel. More often than not, developers and project managers don’t take the time to plan, design, and implement. Often, projects can run over because of this. With a little up front work, you can cut this friction down dramatically and help your company drive revenue faster.

mythic-man-month

Insight into user behavior:

What is an admin panel you may ask? It’s an admin-specific platform in an application that allows for access and manipulation of data within the user interface of the site. The admin panel can help user-related functions, such as providing insight into user behavior, dealing with profiles that violate the site’s terms and conditions, and tracking transactions. But you should know that admin sites are not just limited to user-related tasks.

A well-built admin panel can be turned into a dashboard to either display business metrics and analytics without the viewer writing a single bit of code, or to export weekly data which can be used to create reports. Add to the list that any QA member of the team will love an admin panel for the ease it gives them in verifying data, quickly entering or deleting data, and determining if an issue is in the frontend or the backend. Functioning without an admin panel can lead to a lack of insight into your data, and add greater difficulty for the testing team.

wordpress-admin-panel

Examples of Web Frameworks

Most web frameworks have plugin libraries that make the creation of an admin panel much easier. For example, PHP/Laravel has LaraAdmin (https://laraadmin.com/), Ruby/Rails has ActiveAdmin (https://activeadmin.info/)and my favorite backend framework, Django (https://docs.djangoproject.com/en/1.11/ref/contrib/admin/), has an admin panel by default!

this VVVV is a pic of a dashboard modification of the Django admin panel to provide some analytical functionality

This is a pic of a dashboard modification of the Django admin panel to provide some analytical functionality

Limitations:

While out-of-the-box admin panels are wonderful, we have to work around some limitations. Most plug-and-play admin panels accomplish two goals: to manipulate data and to display data. These are crucial parts of any data-driven apps.

Can we push it further? Yes we can! Your customer doesn’t need to see a graph of quarterly earnings or the number of visits of repeat customers, but I bet you do.

How about the average purchase per transaction? If these metrics appeal to you, I suggest expanding the limited admin panel functionality to include business analytics. There are other sites out there that can build admin panels, but they may not have the custom features your team needs.

Final Thoughts:

A well-built admin panel will increase productivity, give insight into data, and help you catch bugs; adding up to greater revenue for your business. By investing in the admin panel early, you are going to build your application much more efficiently and allow your team to do what they need to make your business grow.

Do you need help building our your next admin control panel? Our expert backend teams are happy to help! Contact us at  info@bytelion.com.

Need to build out your Agile Team? Think Veterans

By AgileNo Comments

As a product manager, when I go to networking events I often get asked, “What did you do in the past?” Most people are not surprised when I tell them I served eight years in the Marine Corps. What is surprising for many is when they find out I served in the infantry. Many people have a preconceived idea that the infantry does not provide transferable skills to the tech world. In this article, I’m going to explain reasons why veterans make ideal team members for the Agile process and benefit your organization as a whole.

Logs Fitness Exercise Teamwork Training Cooperation

  1. Veterans Know Their Team

    Being a scrum master or product manager is a lot like being a fire team leader. A fire team leader is usually in charge of 3-4 other teammates. Each member of the fire team has a unique skill. It is the job of the fire team leader to know how to maximize each individual team’s skills and exploit their capabilities to crush their objectives.

    Similarly, a scrum master is part of a small team of people with unique skills. Whether it’s a frontend, backend, or quality assurance engineer, a scrum master needs to know the unique capabilities of each member and how that role affects the team. Knowing how each team member approaches problem solving from their unique perspective allows the scrum master to execute better sprint cycles, reduce stress on teammates and allows them to perform at an optimal level.

    Agile Team

  2. Veterans and Scrum Masters Excel at Removing Impediments

    In the military, I was occupied with the concerns of my team’s welfare and the three B’s: Beans, Bullets, and Bandages. Beans meant you made sure they were well fed, paid and that their basic necessities were taken care of. Bullets meant a person was well supplied with the right tools for the job. Bandages refer to a member’s health. If a member was sick, I made sure they went to medical. The concept that was drilled into me was the necessity to take care of your people and help them remove the roadblocks from their life.

    In an Agile environment, scrum masters are also obsessed with similar concerns. For example, when my team works overtime for weeks on end, it is my responsibility as the project manager to make sure they get the breaks they need to recharge. If a teammate has an issue with their pay, I will stop everything I am doing and resolve it right then and there. I do this simply because they would be preoccupied otherwise. Having distracted workers who cannot focus on the ticket in front of them brings down the whole team.

  3. Veterans and Agile Team Members are Adaptable

    Veterans were trained to be adaptable in any environment and under extraordinary situations. The field phrase often used is “improvise, adapt, and overcome.” The Agile process is designed to be flexible to adapt to the complex and ever-changing environment of the market and stakeholders. Given a two-week sprint, most teams can accomplish a lot of work. If a change occurs, the team is well poised to regroup and begin work on the priority almost immediately. Adaptability for an agile team is a key skill needed to survive in any environment, especially in the hostile free market.

    yoda

  4. No is not an Option

    Military members are trained as a group to understand the concept of mission first. Once the goal is clear, the finish line will be crossed. This means they will stop at nothing to do what is necessary to succeed. Often in the military plans go wrong, and it is up to the fire team to make sure that plans are executed.

    Recently, my software development team worked 70+ hours a week for several weeks through the July 4th holiday. It was necessary to launch our client’s web platform. Military people understand this concept and experience of grit at a level that most do not. Sacrifice during critical times may make the difference between success and failure.

    military_men__flag

Final Thoughts

I’ve only discussed a few of the things that make a service member an ideal teammate in an agile process. In my experience with careers in both the military and in the software development world; knowing your team, removing impediments, being adaptable, and having grit are the transferable skills that most employers want in all of their employees. It just so happens you don’t have to look far for a veteran, even if their background is from the infantry. Oorah!

If you have questions, please contact us: info@bytelion.com

 

 

 

What are the benefits of a Single Page App?

By DevelopmentNo Comments
A Single Page App (SPA) is a type of web application for fast, responsive, and easy-to-maintain websites. This can benefit any entrepreneur who needs to develop a fast website for their clients. A SPA loads a single file and builds on that singular file as the user traverses your site. 

What does this mean for you?

Faster and more efficient applications compared to traditional websites.
How is this possible? Well, for most traditional websites, whole pages are loaded and reloaded continuously which causes a slow, frustrating user experience and also places unnecessary strain on your server. SPAs quickly solve this problem by only loading small entities of a web page at a time. By utilizing a SPA, you are essentially decreasing the server load and increasing site speed for a better user experience. This blog article discusses the time loading difference between traditional web applications and Single Page Applications with Angular JS.
singular page app

An example of technology used to build single page applications is AngularJS which is a Front-End Javascript Framework. Think of AngularJS as the scaffolding that surrounds your new website. Preferhired is an example of a single page app

 

It provides the fast and efficient functionality that gives your website the edge over outdated web page development.

singular page app

Web Applications

The term “Web Application” may confuse some and with good reason. When the average person hears the term “app,” they usually think of phone apps. This is a common misconception that comes with web applications. Gmail is one of the most commonly used and well-known web apps, but most wouldn’t know it’s a single page web application built with AngularJS. Single page apps are becoming the new standard for the modern web. Using these practices increases the efficiency of development by ensuring you write less code that does more. This not only increases development but more importantly, improves your user’s experience while they use your website.

Single Page Apps and SEO

Nothing is flawless, and single-page-apps are no exception to that rule. These types of web applications aren’t known for being the most friendly to search engines. The “single page” aspect of the site causes search engines to do a little more work and requires a helping hand before they can grab what you need them to. But no need to worry; though right out of the box SPAs are not favored for SEO, they are still configurable to do just that. All it takes is a little finesse on our end, and you’ll be at the top of Google search results in no time.

The result?

Website users will attest to a flawless and efficient user experience which leads to higher user retention and contributes to your business’ success. Here are a couple of our favorite single page applications: https://everylastdrop.co.uk;  https://www.panarama.fr/ ; https://www.officeline.se/kampanj/  For further reading, this article goes into depth about the advantages of SPAs.

 

medical app develop

7 Tips to Consider When Developing a Medical App: From Integration to Security

By DevelopmentNo Comments
As Featured in the SoPE Newsletter

Creating a medical app is no easy task. There are many stages of development that can influence the final result of your product. As a medical entrepreneur, investing your money wisely is crucial. Choosing the right software developers can also impact the success of your product. In this article, I have selected 7 valuable tips for the development of your medical app. I hope some of my advice can guide you, let me know in the comments what you think!

https://www.peerbits.com/blog/native-mobile-apps-vs-hybrid-mobile-apps.html

  1. We are now in the Age of the Hybrid Mobile App

Up to this point, most medical entrepreneurs have to decide which platform to invest their money (IOS, Windows, Android or MacOS).  Today, hybrid apps allow developers to write code on one platform with minimal effort and port it into another. I believe this is a key factor for any medical entrepreneur. No matter what device users use, the app will look and feel the same with great functionality.  Many aspects of hybrid app development are similar to Native apps. But what I like most about hybrid apps are how they are better at preserving time and capital for the stakeholders. By leveraging hybrid apps, developers can share a backend. This will bring the app to market faster and reduce overhead costs. 

  1. EMR integration – New options

Electronic Medical Record (EMR) integration is a required for many medical apps. Integrating the EMR with the data in apps have been problematic for developers. Some EMR’s charge developers to connect to their system. Others will not cooperate without requesting permission from specific medical organizations. Startups like Redox may be instigating change. Currently, Redox is offering a Health IT Interoperability API to over 120 apps. This will help coordinate data with other EMR providers.

  1. Mobile-minded from the Start

Funding challenges and the desire to get an excellent beta version in the hand of testers means many startups begin with web-only solutions. Web-only solutions are certainly acceptable in the beginning as you develop your platform. But be aware that most users expect access to the site through their mobile device. As I mentioned before, hybrid apps allow developers the flexibility to focus on a website first and then go back later and make a mobile solution. Mobile accessibility is now an essential part of your app development. According to comScore, “71% of American’s mobile minutes are spent online.”

  1. Minimum Viable Product (MVP) and your Future Releases

The MVP is the most basic product that functions in a production setting. It is the core purpose of the app. But it is important not to place all of your funds into the MVP because more work remains. A crucial aspect of the MVP technique is receiving customer feedback. All software should be considered as a work in progress. You should gear the product to what the customer truly desires. Do not assume what they want with a single wish list of expensive, potential features. To find out more about how to adapt to your customer’s need read this article about customer personas.  

  1. mobile-ux-ui-design-1030x532-1030x532 UI/UX focused – World Class Usability, or it won’t be Used

User Interface/ User Experience are two software design specialties that make your customers enjoy using your application and return for more. Your application needs to have a comparable experience to the best the web offers. Branding, clarity, and ease of use will impact your customer and profitability. 

  1. Develop Iteratively

The world delivers the best software via iterations.  By iterations, I mean to build a product, get people to use it, then slowly add features. The best way to manage this process is through Agile Software development practices. The Agile program is a simple management system that helps your developers deliver working code in a repeatable fashion. Before the development effort starts, I recommend that you take the time to learn more about agile developmentIf you are interested in reading more, I recommend this book:  The Art of Agile Development.

  1. Security and HIPAA Compliance- PHI= HIPAA

For your medical app, security is a priority, not only due to medical regulations but threats of malware and ransomware. Hence, there are many security requirements which creators must fulfill in order to publish their content. For example, Health Insurance Portability and Accountability Act of 1996 (HIPAA) compliance and FDA registration for a medical device.

-HIPAA compliance:

If you gather, store or send protected medical information, you need to be HIPAA compliant. You need to plan for encryption, protected data centers, high levels of security, etc. While there are platforms to support you, including Amazon’s cloud infrastructure via Aptible, it is your responsibility to ensure that your team is implementing the proper protocols.

-FDA Registration:

The FDA has rules on their site on what makes up a medical device and what does not. It is important to become familiar with both sets of rules and build the appropriate capabilities from the very beginning. You can find out more by reading through FDA’s regulations here.

thumbing-technology-phone

Constructing a medical app goes far beyond budgeting wisely, and balancing grant funds. If you take your time, make smart decisions, and consistently get advice from those who have been successful, you will be well on your way.  I wish you the best of luck, as you start developing your application! If you have any more questions email us at info@bytelion.com

 

Oh No! Your Website is down! Did you forget to renew the SSL Certificate?

By DevelopmentNo Comments
It’s an early Tuesday morning, and you stroll into the office pleasantly and leisurely since it’s a beautiful day. You stop at the coffee station and pour yourself a cup of reheated, lukewarm, leftover coffee from yesterday’s late afternoon brew. After you go back to your computer, you stumble upon the fact that your website is down.  You immediately start to go into crisis mode trying to find out why. 
Despite multiple reminders and emails informing your team that it was due to expire, you discover that your team did not renew their SSL certificate in time. In this pinch, one would have a thousand questions, and I hope to answer the big ones.  

screen-shot-2017-07-25-at-3-39-58-pm

What is an SSL Certificate?

SSL stands for Secure Socket Layer. It is the SSL which enables the encryption of your data and securely transfers it from one device to another. Every time you use a web browser and want to visit a website, your computer (the sender) will submit a request to the web server (the recipient) for that website.  

The web server receives the request and generates a public key (a way of encrypting the data) and replies back to the sender saying, “Ok go ahead and send your traffic with this code!” The sender transmits the data using the public encryption provided by the web server. The web server receives the encrypted message and then uses its internal private key (unique to that device) to decrypt the code. SSL and TLS (Transport Layer Security) are both recognized standards to implement this encrypted process.  

Why is it important?

To those not in the tech world, an SSL simply means that your data is encrypted as best as humanly known and ensures that the websites that you are visiting are secured. The emails you send are transmitted safely, and you can even purchase your dachshund’s cute hot dog bun Halloween costume in a secured manner.

screen-shot-2017-07-25-at-3-41-03-pm

What happens if/when it expires?

Well, it depends on if you planned for it to expire or not. If you have a new site, which requires its certificates, then you can let the previous certificate expire. There will be no issues provided the new site launched before the certificate expires on the old site (more on that a little later). If you did not plan on it expiring, in most cases you will simply renew with the vendor you currently have the certificate with. You can also have your developer install the newly purchased certificate on the server. This can usually be done in under an hour for someone who is inexperienced.

Many complications can arise to include your website hosting. They may have been sold and bought by other third party companies. Or perhaps you can’t verify the domain name with the set of email addresses because the owner of the account is out of town.  

screen-shot-2017-07-25-at-2-48-41-pm
What Kind of Problems can arise? 

Consequently, replacing a certificate can involve many steps: one being the tracking down of who has bought the domain. This can usually be discovered by talking with customer service representatives at your hosting company or with your IT staff. It may take several customer service representatives and a huge time commitment to track down the information, to set up new admin accounts, and to provide the right privileges. If you do not adequately plan for these contingencies, it is possible you may run out of time, and, at best, the site will go down and be unavailable to the user until the new certificate can be put into place. Further complicating the issue, the new third party vendor you just recently discovered may not even have normal operating business hours to help. In short, many of problems can arise that you may or may not have thought about initially.

Small vs. Large Businesses

If this is a small company, then the business loss will be minimal. But it is embarrassing for you as a professional that this was allowed to happen. In the case of a huge organization, a site being down could result in the loss of a considerable amount of money due to losses in opportunity and operational costs (per hour!). It is imperative that a detailed plan is pursued to ensure this process is not costly.

man-using-digital-tablet

How to prevent it from expiring

  1. Document your process. This process should not be underestimated. Many companies start out with a plan and never update their system plans and documentation. A company that sells ice cream makes its money producing and selling ice cream, not updating their network documentation. You will inevitably need to dig into the process deeper than you anticipate.
    Three days may not be enough time, and for a larger organization, a week may not even be sufficient. Even if all goes well, the process should take approximately an hour. It is possible to spend upwards of 20 hours with multiple people over many days if things are not straightforward.
  2. Have clear and well-defined practices documented and laid out for employees to follow. It is important that this documentation is reviewed and updated accordingly as time and technology changes.
  3. Know the vendor and what they are capable of handling. Plans to use a wildcard certificate may fall flat if the company hosting the website does not support a wildcard certificate “at this time.”  This one issue could cost the team already in crisis at least an hour to resolve the issue.
  4. Be nice to the customer service representatives. They have an enormous task of helping people every day. Most of the time people will be angry when they call. You will get far better service and support if you are friendly, proactive and helpful. Finally, remember they are the only way you will get the solutions to your problems.

 

Have any more questions about the exciting world of website certificates? Was our advice helpful?  Please let us know. We are happy to help at info@bytelion.com

 

Application Program Interface: The Hidden Brain behind your Application

By Development3 Comments
You have a genius idea. You map your brilliant plan, create a beautiful design, and hire a developer or two to build out your site. Your application looks amazing! Here is a typical and simple web architecture.

screen-shot-2017-07-24-at-3-23-30-pm
As you release your first version of the product, a potential customer  says, “Hey, how can I integrate with your application?” or “Will this work with Salesforce?” Now you realize you have no way of manipulating data behind the scenes.  You can’t integrate other services quickly or let customers embed your services in their application. You missed the key component, your Application Program Interface (API).

In a well-architected application, the API is the brain of your application. It is hidden but remains crucial to the success of your product. It lets many different users, companies, and applications use your platform securely.

screen-shot-2017-07-24-at-3-25-30-pmWhat is It?

An API is a software-to-software interface, not a user interface. It is for this reason that no one ever talks about APIs. Users might never know an API exists, but without it, your system is not flexible enough to meet more modern requirements.

What Does it Do?

The API is a middle layer between the user interface and the database. Like the brain of the application, it contains the business logic. Are you logging on to a site? The API ensures your credentials are valid. Purchasing an item? The API determines if the item is available, if you have the necessary funds, and it will adjust the values after the purchase. Here is an example:

api-photo
Prefer videos? Check out this youtube video from MuleSoft Videos. We highly recommend it!

How does this pertain to me?

As a product owner, it is important that you know that your API serves as highly scalable and flexible communication point that lets the world interact with your product. This flexibility enables you to scale your development teams, improve performance, and most importantly, provide your organization with additional revenue streams.

Need help establishing an API in your application? Don’t hesitate to email us at info@bytelion.com