For our engineers we support the following platforms:
- MacOS 9+
- Windows 10+
- iOS 9+
- Android 5+
(Current as of: June 2017)
Any other environments can be used, but we do not centrally support them - you are on your own!
We are moving towards container-based development methods for future projects, but despite the burst of growth around products like Vagrant, Docker, and Otto we do not think they are quite ready for prime-time development purposes just yet.
In some situations, we may accommodate additional support requests at additional cost. We are not in business of building or supporting legacy software unless it is prohibitive for the customer to upgrade.
We generally use 3 environments:
These make up a fixed flow.
Some projects may have additional environments, but we’ve found that simplicity often wins here.
We script the setting up of environments to different degrees. Currently we do this with bash scripts, Heroku Toolbelt and AWS CLI. Ideally we would use a single and compact tool such as Terraform or Cloudformation. We feel that the current state of the technology does not allow us to do this yet. It is an ideal we shall work towards as cloud-interoperability matures.
We are a cloud-first company. We are not in the business of managing hardware.
Our most used services are Heroku and AWS. We believe that using these cloud services increases efficiency and helps us focus on writing code rather than doing system admin.
Cloud services generally have the following advantages rolled into them:
- Disaster recovery
- Automatic software updates
- Lower capital expenditure
- Increased collaboration
- Improved security
It is better to log than not log. There are many tools for filtering and making sense of logs, but nothing will let you see something that was not logged in the first place!
For logging our preferred tool is Papertrail.
We move long term backups to S3. Some customers have very long or even indefinite data retention protocols driven by a need to achieve compliance with their industry bodies.
At any one time, Purepoint has access to varying quantities of confidential customer information. Protecting the confidentiality of that information is of the utmost importance. To handle this, Purepoint has implemented several different processes. First, we train all staff members how to handle confidential information. Second, we operate a strict ‘need-to-access’ basis policy. Third, when possible data is encrypted at rest if we are holding it on behalf of a customer.
We previously talked about keeping your personal to-do lists and checklists in a public Trello. The same applies here.
When undergoing unusual or critical tasks such as ‘go live’ or system migrations, build a pre-flight checklist. Run through the entire process end-to-end and create a checklist. Have a co-worker check it for you. Do not begin until you have done this step. It acts as both a guide and an audit trail of what you have done in the case something does not go to plan and other people must jump in midway.