Our Services

Fire and Light LLC offers a number of services to design, build, and maintain successful software projects, as well as ways to integrate existing technologies. Though we like to learn about technologies on the "bleeding edge" our focus is on tools that are relatively time-tested and that we believe have staying power, and hence are most likely to benefit our clients.


Consultation

Looking to license or acquire a software product? Perhaps customize an existing product to your organization's needs? Are you wondering what ways, if any, software can help you or your organization with important work? With the range of available products, finding the right fit for your purpose can be daunting.

Whatever your depth of knowledge, we can assist in valuable ways. We know quality code and tooling, and can assist you in the process of finding a new product, customizing an existing product, or building your own custom application.

Unsure? This would be the place to start. If we can't help you, we might be able to find someone who can.


Solution Architecture

Quality software is synonymous with quality design. Experienced developers are hard to find, and those experienced in software architecture and best practices even harder. Standing up a demo app is easy. Creating a product that is scalable, extendable, and maintainable over time is in a league of its own. You'll need experience to create both a workable and sustainable solution architecture for a quality product that lasts.


Application Development

It is difficult for organizations to find experienced developers who can either hit the ground running or who can produce quality long-term code. Moreover, a good developer needs to work well within a team and be familiar with project management and delivery processes. Whether you're looking for an experienced developer or for leadership in working with teams on best process and practice, we can deliver quality results.

See below for some Fire and Light's proficiencies.

Languages

C#

The primary language for coding .NET applications. However, with Microsoft going open-source, newer versions of .NET are fully portable to other operating systems, such as Linux.

A great language for rapidly developing performant back-end services, such as RESTful APIs and Messaging services, it can also be used for standing up fully integrated web applications with its ASP.NET framework and front-end technologies like Razor and Blazor.

Python

A very popular and versatile language for creating all types of software applications thanks to its it's relative ease to learn compared to other languages.

Thanks to its dedicated and experienced open-source community, the language continues to evolve and can be useful for both small and complex problems. For example, Python is one of the most used languages for AI and Machine Learning.

JavaScript

A long-time favorite for front-end technologies running in the browser, such as Angular, React, and Ember, the JavaScript ecosystem has also scaled to the server-side with the widely used Node.js.

JavaScript can be used to create both front-end or back-end applications of, but is certainly required for any rich functionality running in a web browser.

HTML and CSS

Though they are technically different technologies they are the primary languages for structuring (HTML) and styling (CSS) today's modern web pages.

CSS is generally used in conjunction with particular libraries or frameworks that simplify complex styling, such as Bootstrap, Sass, and Tailwind.

SQL

The primary language used in relational database systems, there are different SQL implementations, such SQL Server, MySQL and PostgreSQL. Any data that needs to be stored with a relational structure, which is a common use case for business-critical applications, will require some SQL data storage.

NoSQL

With more flexible schemas than SQL, NoSQL databases such as MongoDB and CosmosDB are popular tools for storing application ready data, such as JSON. NoSQL can be used as an alternative SQL, but is often used in conjunction with SQL databases for application purposes.

YAML

Cheekily, the name was initially an acronym for Yet Another Markup Language. Cheeky still, it is now a recursive acronym YAML Ain't Markup Language, kind of like how GNU means GNU's Not Unix! However, YAML's declarative syntax allows for seriously awesome tooling in the Development Operations world. Primarily, we use it for setting up CI/CD pipelines and containerizing applications.

Frameworks and Libraries

.NET

The time-tested Microsoft framework for creating Windows-based and now cross-platform applications using powerful Integrative Development Environments (IDEs) such as Visual Studio and VS Code.

Angular

An "opinionated" open source JavaScript framework developed by Google that includes all the necessary architecture for building quality front-end applications, including integrated testing.

React

A very popular open source JavaScript library developed by Facebook for creating web-based user interfaces.

Ember

Another full-on JavaScript framework, like Angular, it provides all the necessary tools and architecture (including testing) for building front-end web applications. Ember is not developed under any particular corporate umbrella and is fully supported by its open-source community.


Cloud Native and Dev Ops

With the advent of "the cloud" terms like Cloud Native and Dev Ops are intimately linked as they determine to what extent you take advantage and implement cloud concepts – Infrastructure as as Service (IaaS), Platform as a Service (PaaS), Software as a Service (SaaS), and what strategies you use to develop, deploy, and host your various applications.

Moving services to the cloud will not always be a possible, or even ideal, scenario, and many organizations have a mixture of cloud and "on-prem" services. We have experience these types of hybrid environments as well. Whether you're new to cloud and dev ops concepts, or seeking developers experienced in their implementation, we can help you develop your applications and strategies.

We understand cloud and dev ops concepts and can help you in any of your preferred systems, but below are the toolsets we have most experience with.

Cloud and Dev Ops Tools

Azure

When it comes to cloud computing platforms, we are most experienced with Azure, Microsoft's huge and powerful suite of tools for delivering cloud services. It is not just for Microsoft native technologies, but works and integrates well with both Windows and Linux OS environments.

Kubernetes

An extremely powerful open-source software platform for container orchestration. It has become the leading tool for managing, deploying, and scaling microservices, and is compatible with most cloud platforms out there.

Not sure if microservices are for you? If you need the ability to rapidly scale your applications up or down, it's likely you'll need to implement them in an OCI (Open Container Initiative) technology. This is OS-level virtualization that includes building a container image with a tool like Docker, and spinning up as many containers as needed. As the number of containers scales up, possibly into the hundreds or thousands, an orchestration tool like Kubernetes will be essential.

Azure Dev Ops

Microsoft's project management tool for housing code repositories, tracking progress, and building and deploying applications in what's come to be known as CI/CD (Continuous Integration, Continuous Deployment) pipelines. It integrates seamlessly with Git version control and the Azure cloud platform, tied together with AzDo's project management and testing tools.

Git

A version control system is essential for any software development. No software product will last without the ability to track changes over time. Git is here in the dev ops category because of its key role for any CI/CD process. Git is the most popular source control system by far, and we have valuable experience in branching strategies, resolving merge conflicts, and other source control concepts that greatly help team projects.


Quality Assurance

Testing is a must with today's demanding market and the complexity of software systems. The design and development practices behind a software product is key to its testability. We can help create testable applications and develop sustainable test suites, whether unit tests, integration tests, or more extensive automation like browser suites.

See below for our automated testing experience.

QA Tools

XUnit and NUnit

Both powerful tools for creating code-based solutions to test modular code. Though they are usually associated with unit testing, they can also be used to set more higher level scenarios like integration testing and system testing.

However, unit testing is the gold standard when it comes to automated tests, as it helps to encourage and enforce good design practices, and the presence or absence of unit tests is almost always a good indicator of code quality.

Selenium

Selenium is an open-source tool for creating full automation tests targeting specific devices or browsers. It can be implemented in a number of languages, including Java, C#, and Python, and is great for testing scenarios that need to imitate more detailed user interaction.

Postman

Though often used as a tool for developers building APIs, it can also a really good tool for testing API functionality.