Author: Michael Blood
App Prototyping vs. Full App Development
When it’s time to create an app for your startup business or for an existing business, app prototyping offers an excellent starting point. The prototyping stage allows you to make changes before you get to the final stages of full app development.
It’s important to compare app prototyping and full app development before you move forward. Developing your app won’t be cheap and you want to make sure you invest your funds wisely. Let’s look at app prototyping vs. full app development to make it a bit easier to see the differences.
What is App Prototyping?
Taking an idea for an app and showing its value can be done with app prototyping. It gives you a clean tool to use when pitching investors without a completed final product.
App prototyping is basically a model of the app you want to create. It gives you the ability to test the app before you spend time and money on full app development. Many companies use app prototyping to show interested investors the concepts and ideas before complete development.
When you choose app prototyping, the cost will be lower and you will be able to see the functionality of the app. This stage in development allows for changes to the design, the functionality, and pretty much anything else involved with the app. It takes your idea from a sketch on paper to an actual visualization of the app complete with functionality through a working layout and design.
What is Full App Development?
When you choose full app development, you might have already gone through the prototyping stage in development. If not, you will likely be hiring a team of developers and going through the phases of developing, testing, and launching your app.
This is great if you already know what you want and you have the funds to support full app development. However, if your app is simply an idea and needs to be tweaked along the way, app prototyping offers a less expensive way to get a functioning prototype ready.
Benefits of App Prototyping
1. Very Cost-Efficient
When you start your project with app prototyping, you’ll be using a more cost-efficient option. The process gives you the ability to solve problems during the beginning stages of the process instead of waiting until the end.
It’s easier and less costly to make changes during the testing phase compared to making changes to a nearly finished product.
2. Ability to Pitch Investors
Maybe you have an idea, but you need funding. Using app prototyping allows you to create something you can show potential investors before going through the more expensive full app development process.
3. Exploration and Improvement
When you develop an app, you might find ways it can work better or you might want to change the functionality along the way. App prototyping offers an easier way to make changes throughout development before you’ve paid for a nearly complete app.
When looking at app prototyping vs full app development, for many, app prototyping offers a better option. You likely have the goal of developing a completed app, which app prototyping can lead to. However, starting with a cost-efficient solution like app prototyping offers a better solution for most companies looking to develop a new app.
5 Types of Application Design
5 Types of Web Application Development Programs
Shopping Applications
Portal Application
Dynamic Applications
Animation Applications
Static Applications
Sending Email on Servers on AWS (SES)
Sending email from PHP is often automatic and simple if setup on a traditional hosting account – however the mail() function in PHP does not work on AWS EC2 servers. AWS requires that you use the SES service. (Simple Email Service).
There are several tutorials that walk you through getting your account setup
To send email FROM your email domains you will need to setup and authorize the domain (See TIP #1 below)
https://docs.aws.amazon.com/ses/latest/DeveloperGuide/verify-domains.html
The step that is often missed is that outgoing email in new accounts is allowed ONLY to the email addresses you verify – to verify individual emails addresses.
https://docs.aws.amazon.com/ses/latest/DeveloperGuide/verify-email-addresses.html
To enable your account to send email from your verified domains, and to ANY email address, you will need to get the account removed from the sandbox mode (check the Email Sending -> Sending Statistics page for a message) Click the ‘Request a Sending Limit Increase’ button to ask to remove the account from the sandbox. (here is a tutorial –
https://docs.aws.amazon.com/ses/latest/DeveloperGuide/request-production-access.html )
TIP #1: I would suggest using route 53 for DNS for your domains, as it is a simple couple button clicks to authorize the domains, and get DKIM setup
TIP #2: make sure that you have posted a privacy policy or an email policy on your site – which explains how you send emails and handle their email information. Include a link to your policy in your request for removal from the sandbox.
AWS – Change your Root Password
It is not a good idea to use the Root account to manage and work with your AWS account. Ideally you have setup IAM user accounts with only the required permissions.
However occasionally you need to update your Root level account password. This video quickly shows you how to do it
(if this video is low quality, try opening it full screen and playing it again, the video is short and may be done playing before YouTube can catch up with downloading a higher quality version)
AWS – Disable IAM User access to Billing Console
In an AWS Account, Root users can create IAM Users with Account Administrator Permissions
However those users do not have access to the Billing Reporting.
A Root user can enable this though – follow the steps in this video
(if this video is low quality, try opening it full screen and playing it again, the video is short and may be done playing before YouTube can catch up with downloading a higher quality version)
AWS – Enable IAM User access to Billing Console
In an AWS Account, Root users can create IAM Users with Account Administrator Permissions
However those users do not have access to the Billing Reporting.
A Root user can enable this though – follow the steps in this video
(if this video is low quality, try opening it full screen and playing it again, the video is short and may be done playing before YouTube can catch up with downloading a higher quality version)
Matraex Launches Custom App Partner Program for Agencies and Advisors
Matraex has long provided custom app services for Marketing Agencies, Business Advisors and IT Service Companies.
These partners are an important part of our business, where we grow primarily through the referrals they bring us.
We have created a Partner Program to help formalize these relationships.
The partner program guarantees our Partners trust, a timely response, assistance identifying projects and revenue opportunities in their current client base as well as many other benefits.
To help our potential partners find out more, we launched a partner site at https://partner.matraex.com
If you’d like to find out more about the program, call Michael Blood at 208.344.1115 x 250 or email at michael@matraex.com
Moving PHP sites to php 7.2 – undefined constants used as a string
PHP7.2 and above will no longer allow Undefined Constants
According to the “Promote the error level of undefined constants” section of the PHP 7.2 Backwards Incompatible Changes Document
Unqualified references to undefined constants will now generate anE_WARNING
(instead of anE_NOTICE
). In the next major version of PHP, they will generate Error exceptions.
There have been many changes to PHP over its many versions – For Matraex’s use of PHP, each version has been mostly compatible with the previous one with only minor changes, until a major decision affected one of the ways we deliberately used what we once called a “Feature” of PHP. (For a full list of incompatible changes look at the Backwards Incompatible Changes sections in the PHP Appendices )
On March 5th, 2017, Rowan Collins proposed to deprecate bareword strings. In PHP 7.2 the messages throw an E_WARNING message and in PHP 8.0 it will through an E_ERROR.
PHP has always been a loosely typed language which allows flexibility in many ways, And we had used this flexibility in order write code in a ways that we belive made it more legible, maintainable and supportable within our coding style. With this new change, hundreds of thousands of lines of code will need to be rewrittend before we can put it on a 7.2 or above server, keys may be difficult to search, we will have inconsistencies in usage of keys depending on whether they are inside or out side of quotes.
Take this one example where lines 1, 3 and 4 below would work, but line 2 would throw a warning in 7.2 and would through an error in 8.0.
- echo “Hello, $user[firstname],”;
- echo “Hello, “.$user[firstname].”,”;
- echo “Hello, “.$user[‘firstname’].”,”;
- echo “Hello, “.$user[“firstname”].”,”;
Matraex would have previously preferred to use methods 1 and then 2, as they require fewer quotes and a search in our IDE of ‘user[first’ would have highlighted both uses.
Mr Collins did evaluate both sides of the decision and wrote a bit about it. He described that “The value of keeping the current behaviour would be for programs written to deliberately take advantage of it”, however he really dismisses that value and gave a stronger argument undefined constants can “mask serious bugs”.
I agree with each of the arguments and our 7.2 scripts will all comply with this new syntax requirement. However, I disagree with the way the solution was indiscriminately executed. A more considerate solution would have been to create a configuration option in PHP to control the requirement and allow developers and system administrators to continue to ‘deliberately’ use ‘undefined constants’. This option would also allow existing stable programs to continue to take advantage of the other features of PHP >=7.2 without a significant refactor. Perhaps the Impact section of the article could attempted to get more feedback from users that had deliberately made heavy investment in this feature.
To be more direct here is my request: PHP developers, please create / allow a configuration option in PHP which will allow undefined constants to be used as strings.
Changing existing code across the 10 + years of PHP projects will take thousands of hours to modify and test, and that is just the projects that still exist. This is a barrier to upgrading to PHP 8.0.
Arguments for a configuration option
- Millions of lines of code which deliberately use undefined constants as string (more likely billions or trillions – I probably have close to one million myself overtime)
- My random belief: PHP should enforce “standards” on those that want or need them, and allow experience users to explicitly choose to ignore them.
- The configuration option would be disabled by default to address all of the problems mentioned in ‘the problem’ section of the article
Dealing with undefined constant warnings
Now we get to more technical area where I document some of the methods we have used to find code that needs to be updated for PHP 7.2 code.
1) Use grep to find all uses of the code
This code finds ALL uses of lower case strings without quotes – because our standards do require constants to be in upper case
grep -Rne ‘\$[A-Z\_a-z]*\[[A-Za-Z\_]\{1,\}\]’ *.php
2) Suppress E_WARNING messages
This is a bad idea, while it will certainly make it so that your code continues to work in 7.2, it will not fix it going into 8.0, and this WILL mask other issues that you do need to know about.
If you want to learn mroe about this, take a look at this discussion about it on Stack Overflow. Definitely read the comments about hiding warnings to get a better feel for it.
3) Create PHP configuration options to make provisions for undefined constants
These options would require the good work of a C developer that works on the PHP source. Some of these ideas may just work as described, they really are just a good start (or continuation) of a discussion for features which could be implemented. I don’t have a ‘bounty’ system but if you are interested in creating any of these options, or would like to group together to coordinate it, please contact me.
- undefined_constants_string_level – Have a PHP directive which declares what E_ level all undefined constant warnings should – default in 8.0 can be E_ERROR
- undefined_constants_string_lowercase – Allow users to configure options which would allow only lowercase (or mixed case) constants as strings – which would allow / reserve upper case for use as constants.
- undefined_constants_string_superglobal – Allow undefined constants to be used when attempting to reference any key to a super global array (such as $_POST[mykey] or S_SERVER[HTTP_HOST]);
Matraex Releases FrameTurn SaaS
Matraex Announces the Launch of FrameTurn Application to Improve Optical Frame Sales – for BridgePoint Optics
Boise, Idaho (28 July 2018) — Matraex, Inc. (https://www.matraex.com) announces the launch of FrameTurn (https://frameturn.com) a custom application designed to help independent optometry practices use data driven techniques to enhance their business. The app was designed for Bridgepoint Optics (http://www.bridgepointoptics.com), an optical industry sales and business consultancy for independent eye care practices throughout the U.S.
Adding an on-line application provides a Software as a Service (SaaS) that extends their ability to help the optical industry, giving Bridgepoint an additional, marketable service it can provide to its own clients.
Matraex has developed a powerful on-line tool for Bridgepoint Optics that provides their clients with information that can help them make purchasing decisions in a timely and profitable manner.
“Offering a Software as a Solution (SaaS) product to its clients provides BridgePoint with additional business opportunities,” says Michael Blood, president of Matraex, Inc. “Developing a tool of this type for businesses is what drives us. We are excited to see FrameTurn go live over the next few weeks.”
From Bridgepoint’s perspective, the FrameTurn application provides an additional tool in their existing tool box of services that they can offer. It also gives them a significant edge in marketing to the vision care industry. Most importantly, however, it provides a powerful analytical tool designed to increase their clients’ bottom line at a very affordable price.
“Independents have traditionally relied on their instincts, or even guess work, rather than data to make purchasing decisions about frames for their optical shops. We’re excited to end all that! With FrameTurn, these eye care practices will have the ability to record and automatically analyze past and existing sales in various ways to determine trends that can increase their profitability,” says Dr. Rook Torres, co-founder of BridgePoint Optics and FrameTurn.
About Matraex, Inc.
Matraex, Inc. (https://www.matraex.com) is a Boise-based software and application development company. The company has served many local and national organizations for more than 15 years, including the Better Business Bureau, Hewlett Packard, Madison Square Garden, Penn State University and the Idaho Hospital Association. The services include custom designed mobile applications (iOS, Android, etc.), as well as website development and management.
About BridgePoint Optics
BridgePoint Optics (http://www.bridgepointoptics.com) is an optical industry sales and business consultancy. For more than 25-years, they have specialized in the growth and development of independent eye care practices throughout the U.S.
New Group Sales Application for Bogus Basin
Boise-based MATRAEX to Develop New Group Sales Application for Bogus Basin
12 June 2018 (Boise, Id.) — Matraex, Inc. (https://www.matraex.com), a Boise-based software and application development company, announced its most recent project with Bogus Basin Recreational Association, Inc. (https://www.bogusbasin.org) to develop a custom website application for Bogus Basin’s Life Sports and School Night programs. The website application will help Bogus Basin coordinate and manage school group functions. The project is expected to be completed in September 2018 in anticipation of the 2018-19 ski season.
“We are thrilled Bogus Basin selected us to help streamline their processes as they move forward in their quest to be one of Boise’s premier winter and summer group destinations,” said Michael Blood, President of Matraex, Inc.
According to Molly Myers, Group Sales and Event Coordinator at Bogus Basin, the website and application will replace a legacy application they have used for more than 15-years. The new site will update and streamline the booking process by providing a single repository for group information and eliminating multiple communication channels where mistakes can occur. In addition, it will ensure that information flows to the correct departments for accurate fulfillment of each group’s needs.
“Having a streamlined system that’s uniquely tailored to our needs is very appealing,” said Myers. “Anything that supports a fun and efficient visit to Bogus Basin in the long run aids in our goal of making lifelong skiers and snowboarders.”
School groups that participate in Bogus Basin’s Life Sports or School Night must provide a lot of information about the students when booking, including:
- Group size
- Age, height, weight and shoe size of each participant to ensure sufficient, well-fitting rental equipment
- Ski ability levels for each group member so that appropriate ski instructors are available
- Special needs or requests
The website application will have additional benefits for Bogus Basin, including the ability to track, process and report financial information for internal use.
Matraex’s work with Bogus Basin will also incorporate other group offerings, such as bookings for the new “Glade Runner Mountain Coaster” attraction and other “Fun Zone” activities.
The Matraex website app is projected to go “live” in September 2018, just in time for schools and other groups to book their group ski trips for the 2018-19 ski season.
About Matraex, Inc.
Matraex, Inc. is a Boise-based software and application development company. The company has served a number of local and national organizations, including the Better Business Bureau, Hewlett Packard, Madison Square Garden, Penn State University and the Idaho Hospital Association. Their services include custom designed mobile applications (iOS, Android, etc.), as well as website development and management.
About Bogus Basin Recreational Association
Bogus Basin Recreational Association, Inc. is a 501(C)(3) non-profit organization dedicated to accessible, affordable and fun year-round mountain recreation and education for the Treasure Valley Community.
For more information, please visit https://www.matraex.com or call Michael Blood at (208) 344-1115.