Nothing can provide a more seamless, responsive, or accessible experience than a mobile app.
For consumer, social, and business productivity products, Convina can help you launch native iOS and Android apps that delight your users.
Reach millions of users by launching apps in the App Store and Google Play store.
Create internet-scale social and communications apps by leveraging Convina's deep experience in infrastructure and backend systems.
Create flawless, enchanting experiences with native access to device operating systems and hardware.
Have an idea for the next marketplace or social platform? Convina can help you architect, develop, launch, and grow your internet-scale ideas from vision to fruition.
Build a marketplace that connects buyers and sellers.
Create new intersections of value between disparate industries, markets, demographics, and locales.
Productize your concept for high-scale replication and distribution.
Convina helps businesses of all sizes transform cumbersome processes and aging legacy software into high-performance workflows that create new value and lower operating costs.
Connect disparate systems, processes, and components across every business unit. Regardless of age, platform, or geographical location, Convina can bring your entire operation into sync.
Monitor every aspect of your business with integrated activity tracking, data pipeline connections, log analysis, and streamlined input workflows.
Report custom-tailored key metrics and analyses to stakeholders, decision-makers, and workers.
React to problems and opportunities as they arise in real-time.
Automate systems, processes, workflows, data collection, reporting, and fulfillment.
Convina has pioneered a highly-tuned agile development process that centers around "micro sprints". Micro sprints enable us to launch sooner and iterate faster.
Each sprint is a complete development cycle that includes:
Prioritizing and selecting development objectives: Every sprint has a clear focus that translates into tangible progress each time we work.
Full-stack, concurrent development: Your entire team works together on your project, pushing your objectives forward each sprint.
Vigorous and efficient unit testing: We review and scrutinize the entire system as we implement new code.
Robust deployment workflows: We safely release new versions of your product.
When we first started, Convina operated like a typical, project-oriented consultancy. However, it didn't take us long to realize there are better ways to help our clients accomplish their objectives.
We launch sooner. Our goal is to get an initial version of your product in the hands of users within a few weeks. Rather than relying solely on assumptions, our process enables rapid iteration based on feedback from real users.
We iterate faster. Our development and deployment workflows allow us to ship new versions as often as weekly.
We keep pressure low. There are no sales reps at Convina. When you discuss your project with us, you're talking to the people who will work directly on your product.
We eliminate the risk. We don't require upfront deposits for projects. We get paid after we work, and you can view and experience our work before we charge you.
We're really into efficiency. We use our own skills to optimize our internal processes and workflows, which results in more value and lower costs for our clients.
Over the years, Convina has developed products on a diverse range of technologies, including .NET, php, Ruby, and many others. We also have deep experience on all major infrastructure platforms including AWS, Google, and Azure.
While no single technology is right for every scenario, our first choice of development stack is:
The majority of our clients are entrepreneurs. Many are professionals who come with decades of experience and deep expertise in their field. Their repertoire of skills provides insight and vision that few others have. These veterans of their field come to Convina with a desire to transform their knowledge into products and services that can help others create more value and lower operating costs.
We also frequently work with small business owners who have created valuable products and services that are poised to be replicated, sold, and fulfilled at scale.
In many ways, these are our favorite types of challenges. We love to dive deep into the various markets and industries that our clients expose us to. And more than anything, we love to be the solution that enables entrepreneurs to transform their vision into reality.
Over the years, Convina has worked with dozens of government entities, including agencies at the federal, state, and local/municipality level. Similar to the work we do for enterprises, Convina can help government agencies automate workflows, connect public professionals with citizens, distribute products and services, and facilitate transactions and fulfillment.
Convina helps businesses of all sizes transform cumbersome processes and aging legacy software into high-performance workflows that create new value and lower operating costs. From multi-billion dollar corporations like Nike and Citrix, to large institutions like the University of Utah, to hundreds of businesses in industries like commercial finance, healthcare, entertainment, agriculture, manufacturing, world trade, and many others... Convina has deep experience overcoming almost any technical challenge imaginable.
Software as a Service (SaaS)
SaaS is software that you use in your browser or on mobile apps (like Gmail, Office 365, and Google Docs). Each day, more and more of the software we use moves to a SaaS model. This has advantages for software makers and software users:
Software makers get the benefit of recurring revenue. Instead of making a one-time sale, they can get paid smaller amounts each month for as long as their users are happy to pay for their software.
Software users get the benefit of software that is always up-to-date with the latest features, bug fixes, and security patches. They don't have to purchase or download new versions or patches... they just pay the subscription and they always get the latest version.
Helping our customers design and execute SaaS business models is one of the favorite parts of our job. If you have an idea that can help people do more, or save time or money, Convina can help you transform that idea into a lucrative business.
Web Apps vs Native Apps
Software that is used by people (apps) can be divided into three categories:
Web apps are applications where much of the code resides in the cloud. This includes most of the data storage and much of the application logic (the code that controls how data moves between the cloud and the user). The only code that is sent to the user, is whatever is required for the user interface.
Native apps are applications where the majority of the code is installed directly on the user's phone or computer.
Hybrid apps are applications that combine the best of both worlds. The cloud is used to connect the app to data and other users, but a large portion of code runs on the device itself to facilitate the user interface and application logic.
Possible, but not in most cases.
Access to Operating System
Access to Device Hardware
Convina can help you decide on a good roadmap for your application. Often, we will recommend starting with a web app because it's the most cost-effective way to develop. As your user base grows, we can help you transition to a hybrid model that allows you to add all of the benefits of a native app.
One of the most important advantages of web-based software is that, if you build it right, a single app can be accessed and used across many platforms.
In other words, instead of having to write separate code for a Windows application, a Mac application, an iOS app, and an Android app, a skilled development team can write code once and it can be used on all of those devices.
In user-centered design (UCD), software makers focus on discovering and understanding the needs and desires of their users at each phase of the development process. Proper UCD means that your software team involves real users early, and often, in an iterative development process.
Convina's ability to launch software that your users can start testing within a few weeks, and to release new versions of your software as often as weekly, enables us to create software products that are highly usable and accessible to users.
Having a great idea for software, and designing a beautiful interface, are really important factors in software development. But just as critical, your software must perform up to your users' expectations in order to make them happy. This means:
Your software must load fast.
Accomplishing this means optimizing the code and assets (images, videos, data files) that are required to load in order for the user to start using the software. Poorly optimized apps make the user wait when the user returns to the app. Well-optimized apps load virtually instantly.
Your interface must feel fast and responsive.
Similar to how slow load times deter users from engaging with your software, a laggy, glitchy interface will have your users looking for another solution.
Your software must be bug-free.
Realistically, no software is bug-free. However, much can be done to prevent the vast majority of users from encountering maddening bugs that make them hate your software. While it may seem like the key to fewer bugs is hiring a team that can write bug-free code... the real solution is trapping, reporting, and responding to bugs.
Today, software performance requires a complex combination of considerations and work:
Every device used to access software has a CPU, memory, storage, and a network interface. These (along with many other components) determine how much "power" they have to make your software work. Low-powered devices will be easily bogged down with software that uses a lot of processing power. High-powered devices have the ability to perform more functions that make software feel fast, engaging, and fun. Good software developers can tailor the experience to different devices, depending on the processing power available in order to create an amazing experience on any device.
Your users might access your software on both a 6" phone screen and a 32" inch desktop monitor... and everything in between. A concept called "responsive design" allows developers to create software that works on any screen size. Experienced developers can create apps that work on phones, desktops, and tablets without compromising the user experience on any of them.
Sometimes your users access your software at the office or at school where they have hundreds of megabytes of bandwidth on a fiber connection. Other times, they will access your software on a sketchy LTE connection that is going on and offline. Developing software that can work well in any bandwidth environment is key to delighting users.
Over the years, most platforms and browsers have been reaching increased congruence on features and functionality. However, there are still some significant differences that must be accounted for when targeting users on a broad range of platforms. For example, there are some interface features that are supported in Chrome browser, but not Safari (and vice versa)
Convina has deep experience and an intuitive understanding of how these considerations, and many others, affect software performance.
When developers work on your project, they make changes to code and data structures. Different developers are responsible for different areas of your code (interface, application logic, input/output control, etc). Inevitably, developers make changes that introduce bugs in their own code, or create conflicts with code that others are working on.
Continuous integration is a process that mitigates those bugs. Whenever developers update the code, an automated process is triggered that "builds" and tests the entire system. This way bugs and errors are flagged as soon as they are introduced. Developers are able to respond to the bugs before they end up in a production build.
In addition to continuous integration, Convina automates a continuous delivery process that deploys code on a staging server. This enables the current development work to be used and tested in preparation for a production release.
When we talk about "internet-scale" architecture, we're talking about designing software and systems that can handle the load of an unlimited number of users.
In most cases, a simple website does not have to be designed for internet scale. Today's hardware and software platforms can handle thousands of concurrent users and a high number of requests and transactions every second. However, if your app is growing, or expected to grow, to millions of users or thousands of transactions per second, you'll need to adopt an architecture that can scale without limits.
In software, "scaling" is the process of adding more processing power, memory, storage, and network bandwidth to your app. Scaling provides two benefits: 1) it can increase the amount of activity your app can support, and 2) it can increase the reliability of your app. Both of these benefits are important because, as your app grows to support more users, downtime becomes more and more costly.
There are many different scaling strategies that can help ensure your app will perform well, and remain reliable, as it grows. Convina has years of experience creating high-performing apps that can handle thousands of transactions per second and grow to support any number of users. We can advise you on the most cost-effective way to create software that grows without limits.
One of the most challenging aspects of software development is keeping track of thousands (or even millions!) of lines of code that go into making each project work.
GitHub provides dozens of features that enable development teams to organize, control, track, and collaborate on every line of code in their projects..
Today, nearly all software projects depend on pre-existing code modules. Using existing modules, instead of writing every line of code from scratch, allows developers to work faster and write code that is more secure. We call these modules "packages".
Today's internet software depends on the cloud in order to function. AWS was one of the early cloud providers, and today they are the most widely adopted cloud infrastructure platform.
AWS offers hundreds of services, including servers, databases, network bandwidth, security, storage, and much more. Convina has been using AWS since its inception more than 15 years ago. We have deep experience launching web and mobile products that are built on AWS.
Today's software can often require large amounts of data storage. Cloud providers like AWS, Google, and Microsoft have developed robust storage solutions that allow developers to meet the following needs:
Scale: We can easily store millions of gigabytes of data and never worry about running out of storage.
Data Redundancy: We can be sure our data is backed up with multiple tiers of redundancy. Data is stored in multiple data centers, and backups can be stored in different regions around the world.
Service Redundancy: We can be sure Cloud Storage service will always be up because the service itself has many tiers of redundancy built in.
Performance: Reading and writing data to cloud storage is very fast, even under a heavy load. Files can be automatically distributed to various geographical regions to reduce latency for users anywhere in the world.
Low cost: Cloud providers provide many ways to reduce cost: low redundancy storage options, archival data tiers, automated archiving and purging of data, and more.
Security: Files can be encrypted at multiple levels, encrypted in transit, and user access can be restricted using robust identity access management schemas.
For more than 25 years, relational databases have been evolving into robust, reliable, high-performance systems. Thousands of high-profile apps, services, and platforms depend heavily on relational databases to deliver lightning-fast performance, even under heavy load.
While a single relational database is not designed to achieve true internet-scale, when properly optimized, they can handle very large loads (billions of records) that are adequate for many uses. Cloud database providers make it easy to deploy, secure, and back up relational databases. Automation enables developers to create SQL-based data strategies that can scale without limits.
Advantages of relational databases include:
Data integrity: Highly-strict transactions can be created which may be critical for commerce, banking, and gaming applications.
High-performance querying: Fast queries can be returned that filter millions of records in milliseconds.
Relational queries: A large amount of application logic is based on relationships between data (e.g. products, product categories, product features). Relational databases can be optimized to filter and analyze data with complex relationships in a very efficient way.
Consistency: The simplicity and static nature of relational schemas make adding, removing, searching, and updating data very predictable.
Document databases are modern data stores that provide flexible, scalable architectures for today's applications. They have some advantages over relational databases, in that (when properly serviced) they are able to grow without limits and without sacrificing performance.
Document databases are easy to set up and maintain. Because they don't require strict data definitions, they can be a perfect solution for new apps that are rapidly iterating on features and functionality.
Convina has deployed applications that utilize a variety of document database platforms, including the most popular platform: MongoDB.
Modern apps and platforms require response times measured in milliseconds. This means that underlying services (like databases) need to provide sub-millisecond responses to queries.
One way to achieve maximum performance is by utilizing in-memory data stores. In-memory data stores can be much faster than relational and document databases because they story the entire database in memory. On top of never requiring requests to go to disk (often the slowest component in a system), in-memory put less load on the CPU.
Today's in-memory databases are able to scale, in similar ways to document databases, without limits and without sacrificing performance. Billions and billions of datapoints can be stored and queried across large systems with sub-millisecond response times.
From the earliest iterations of in-memory databases (Memcached), to utilizing the robust features of advanced data stores like Redis, Convina has deep experience leveraging in-memory databases to achieve high performance.
Developing in NodeJS has many advantages:
NodeJS has a highly evolved, extremely deep community of open-source packages that can be easily installed and utilized to save time and money.
Convina is highly skilled in designing, building, and deploying web and mobile apps with a NodeJS backend and API.
One of the challenges of designing modern software is creating user interfaces that are clean, fluid, and dynamic. Over the years, many frameworks have evolved to help developers achieve these attributes.
React has emerged as one of the leading solutions for interface design. Some of the benefits of React include:
Reusable components make it easy to design, fork, and extend UI components that serve as simple building blocks that, together, can meet challenging interface requirements.
A stable state model means developers can structure UI components to display dynamic information, form, and function in a way that stays perfectly in-sync with the underlying data.
Because React is centered around interface rendering (and not all the other aspects of the application), it has remained relatively lightweight, easy to learn, and easy to integrate on almost any system.
React offers a highly tuned and very robust set of development and debugging tools.
Since its initial inception, Convina has built hundreds of web and mobile apps using the React framework and patterns.
Today's internet-connected apps have dozens of layers and countless moving parts. One of the pitfalls most developers eventually face is losing track of all the ways data, requests, transactions, and errors are flowing through a system. As a complex system grows, it can also become difficult to track hardware performance across all the servers and appliances that serve the app.
New Relic is an observability platform that helps mitigate this pitfall. With New Relic, you can track, monitor, and analyze data from every component of your system. This enables the ability to monitor performance, track errors, forecast resource needs, and uncover opportunities and challenges that would otherwise go unnoticed or unknown.
Convina helps our clients maximize the performance of their systems with advanced integrations of New Relic in every layer of the stack.
Understanding precisely how your users interact with your internet-connected app is paramount in software development. Mixpanel enables development teams to analyze user interaction data in real time. With Mixpanel, developers can easily identify trends, better understand user behavior, and make key decisions about their products.
"Building code" is the process of transforming "source files" (where code actually written by developers is stored) into a package of files that are ready to be executed on a server, computer, or mobile device.
Depending on the platform and software stack, this process can consist of many different steps and sub-processes. Utilizing methodologies like continuous integration allows developers to automate the build process.
In simple terms, "the cloud" is a combination of hardware, software, and network technologies that enable the development, maintenance, and growth of internet software.
For most people, understanding what the cloud is is not very important. However, it can be helpful to understand what the cloud does:
The cloud enables developers to deploy hardware on demand. This makes it easy to launch new projects, test new concepts, and utilize technology without having to invest heavily in hardware and data centers.
The cloud enables apps to scale without limits. As the number of users on an internet-connected app grows, the amount of hardware and network resources required increases. Cloud providers enable developers to continually add more "power" to their apps, virtually without limits.
The cloud enables apps to be more dependable. Cloud providers offer many different tears of redundancy. For example, they enable developers to spread their apps across multiple servers in a data center. If one server goes, down the app stays up. Likewise, cloud providers enable apps to span multiple data centers, so if a data center goes offline, the app can still function and serve users.
The cloud can be automated. Because all of the hardware, software, and network technologies offered by cloud providers can be automated, developers can create new ways to add value, reduce costs, and increase the functionality, stability, and performance of their apps.
While our early roots were in data centers, for more than 15 years now Convina has been leveraging cloud technologies to launch and grow internet-connected software. We've deployed projects on all of the Major cloud providers including Amazon Web Services, Google Cloud, and Microsoft Azure.
Today's internet software depends on the cloud in order to function. Google Cloud is one of the top cloud providers and it is widely used by developers and organizations around the world.
One of the advantages of the Google Cloud platform is its seamless integration with other Google services, like Google Docs.
Convina has been developing using cloud technologies for many years, and we've deployed many projects on the Google Cloud platform.
Today's internet software depends on the cloud in order to function. Microsoft Azure is one of the top cloud providers and it is widely used by developers and organizations around the world.
Azure is especially appealing to developers and organizations that are deeply invested in the Microsoft ecosystem. As you might expect, Azure integrates seamlessly with many Microsoft services, including Active Directory and Office365.
Convina's roots are in Microsoft technologies, and we've launched many projects on the Azure platform.