Foxhound Systems
Software development company that builds reliable, high performance web applications. We specialize
Foxhound Systems is a software development company that specializes in building reliable, high performance web applications with superior security. We can help your organization develop a technical strategy and build software it can depend on. Creating reliable, fast, and secure web applications is at the core of what we do, but our expertise extends past just building software. We’re experts at s
12/15/2023
It's time to start seeing Technical Debt for what it is.
https://www.foxhound.systems/blog/technical-debt-is-not-real/
Technical Debt is not real – Foxhound Systems It's a metaphor for the accumulated consequences of past decisions and shortcuts we make in software development
It's always disappointing to come onto a project that a client hires us for and see a path of over-engineered solutions that feel like resume-building projects left in the wake of past developers.
Everyone has programming languages they prefer, default choices when it comes to choosing a database, and deployment methods they like. However, the decision of what technologies to use should depend on the job and the person or organization paying for it. Moreover, tool choice should be made in consideration of the eventual hand off and who will have to maintain the system long after the initial project is over.
At Foxhound Systems, we have consistently gotten outstanding results using the Haskell programming language, but we won't even think about suggesting Haskell if our client doesn't have the team to support it and isn't prepared to commit to ongoing support from us. Maintenance and ongoing development in Haskell is easier than most languages, but only if you have access to staff with a solid knowledge of Haskell. In such situations, we use a different language that we think is a better fit for the project and the client.
Beyond language selection—and arguably even more costly—it's far too often that we see what resembles a bespoke framework or all encompassing library that has poor or zero documentation and introduces nearly incomprehensible complexity while also being more rigid than off-the-shelf options. I say this is more costly because, for example, an experienced developer can quickly come up to speed with Django (a Python framework) even if they have only limited experience with Python/Django. This is because there's excellent documentation available for both the language and the framework. Unfortunately, the same cannot be said for an over-engineered and undocumented custom framework, even if the developer has used the language before.
If you're hiring developers, whether it be contractors, freelancers, or employees, you should be thinking and asking questions about maintainability and what will come after a project ends. Unfortunately, for non-technical leaders, it's hard to know if you're wasting money on over-engineered solutions being built on your dime. In such a situation, it's a good idea to hire a third party to act as a consultant, evaluate your project, and advise you.
If you find yourself in this position, we can help. Read more about how and when we can provide technical guidance. Questions? Post below or reach out to us directly: [email protected]
11/28/2022
Server side caching is a technique that improves performance of an application by reducing the need to run expensive queries and computations.
There's several facets to consider when designing caching in a system: correctly handling both cache hits and cache misses, cache invalidation, and selecting a cache data store, amongst others.
Learn more about how server side caching works and the its key design considerations in the latest post on the Foxhound Systems blog, a part of our "Essential elements of high performance applications" series.
Essential elements of high performance applications: Server side caching – Foxhound Systems Server side caching can be used to cut down the time required to return the results of expensive queries by orders of magnitude.
08/01/2022
In 2002, Martin Fowler warned that "databases are optimized to handle up to three or four joins per query. Beyond that, performance suffers."
In 2002, 1GB of RAM was considered to be a lot of memory and multi-core processors were brand new.
In 2022, a machine with 1GB of RAM and 2 CPUs is considered a hobbyist machine.
In 2022, consider using your database to its fullest potential, don't be hamstrung by advice from 20 years ago.
Don't know where to start? Check out our article on getting the most out of your database.
Essential elements of high performance applications: Offloading work to the SQL database – Foxhound Systems Offloading work from the application server to the database through the effective use of advanced SQL features can greatly improve application performance.
05/24/2022
We're kicking off a series that covers essential elements of building high performance web applications.
One of the biggest boons to performance in an application is effective use of SQL indexes. We'll examine several types of indexes as well as how to use them in this post.
Essential elements of high performance applications: SQL indexes – Foxhound Systems Effectively using SQL indexes is a huge boon to performance of a web application.
10/31/2021
Christian Charukiewicz, Co-Founder & Partner at Foxhound Systems, will be giving a talk titled "Why You Should Consider Haskell for Your Next Production System" at Haskell eXchange 2021. This is a virtual conference, and you can sign up for free for the Novice track (which includes all the talks on the first day, including the aforementioned, on November 15th).
In this talk he will be discussing some of the defining features of Haskell that make it an excellent, industrial-strength programming language that is well-suited for building commercial software. You'll learn why we consider it our first choice for new projects at Foxhound Systems, and why you should too.
https://events.skillsmatter.com/haskellx2021
07/27/2021
We recently worked on a project where we were tasked with creating a highly configurable rules engine.
In order to solve this problem, we created an eDSL in Haskell to enable writing composable data validation rules in a declarative manner.
Composable Data Validation with Haskell – Foxhound Systems Creating and extending an eDSL for highly configurable and performant data validation.
05/27/2021
A common misconception is that using a final tagless encoding means writing code against typeclasses. In this post we discuss the not-so-complicated idea behind "final tagless" and how we can achieve many benefits with simple code.
Final tagless encodings have little to do with typeclasses – Foxhound Systems Using a final tagless encoding does not require typeclasses, and we can achieve many of the same benefits with simpler code.
03/19/2021
Everyone who writes SQL occasionally encounters poorly performing queries. SQL's UNION operation isn't typically employed for performance optimization, but it can be used to both simplify and radically improve query speed.
Speeding up SQL queries by orders of magnitude using UNION – Foxhound Systems SQL's UNION operation isn't usually regarded as a way to optimize query performance, but in many cases it can be used to achieve massive improvements in speed.
01/12/2021
The programming language Haskell has many distinguishing features that make it an excellent, industrial-strength tool that is well-suited for real world use. Here's why it is our first choice for building production software systems.
Why Haskell is our first choice for building production software systems – Foxhound Systems Haskell's features enable rapid development, easy maintainability, and excellent performance, making it a top choice as an industrial-strength programming language.
12/09/2020
We've just published a new blog post: Using the strengths of Haskell's type system to improve the process of grouping SQL query results.
Reducing the pain of grouping SQL query results using Haskell – Foxhound Systems Semigroups allow us to transform the denormalized results of our SQL queries into a structure that models parent-child relationships by focusing on the types we want to achieve rather than by writing tedious merge operations.
12/06/2020
We started Foxhound Systems because we care about great software, and having worked as professional software engineers for a long time, we believe we can help other organizations grow by creating fast, reliable, and well-designed software systems. We have both seen and had our hands in creating a wide variety of software and products, and one trait that we’ve shared along the way is that we’ve always been on the lookout for ways to learn, improve, and help others.
Who is Foxhound Systems? – Foxhound Systems Software doesn't have to be mediocre. We started Foxhound Systems to build something great. Let us introduce ourselves to you and share why we do what we do.
Click here to claim your Sponsored Listing.