As responsible programmers we like to write programs to the best of our ability. As our profession has evolved so too have our languages and the tools we use. We identify around concepts, patterns and principles.
Software development is all about managing complexity. We employ tools like automated testing to guard existing functionality from regression.
‘Streams’ and ‘pipes’ have been an essential part of *nix systems since the 1970s, when Doug McIlroy introduced them into the first version of Unix. The story goes that he threatened to leave the project if they weren’t implemented, he felt so strongly that they were a cornerstone of an effective modular operating system, and key to interoperability. They facilitate the Unix philosophies of ‘do one thing and one thing well’ and ‘write programs that speak to other programs.’ A small Unix program like ‘cat’, which concatenates the contents of one or more files and prints out the buffer, is able to communicate with other programs through piping. You could ‘cat’ a file containing a list of words, pipe that to a sorting program, and then finally to a text file. You could write this complex operation more simply than you could explain it.
The value of a test suite can easily go down when complexity goes up, and a lot of the time this complexity can be prevented. There is a great discussion on SO about this.
We love writing tests at Made HQ. They are part of the foundation on which we work to provide our clients with stable deliveries. We work fast and deploy daily so we test vital paths of our applications using feature tests. We also unit test, albeit less, when we need to cover a range of edge cases.
When designing software, you would typically use classes, modules and patterns like SRP to separate concerns and isolate functionality within your codebase.
Spree makes it easy to take payments from any Payment Service Provider, and in this post I will briefly walk you through the process of creating and using your own custom gateway.
A couple of weeks ago we had our first ever Made Hackathon day, where we built a product—based on an existing idea—from scratch, and had it launched by 5pm. It was great fun, and very rewarding for the whole team.
A lot of our projects include some sort of manageable content, whether it be landing pages, blog postings or news articles, so it’s important for us to be able to provide our clients with an interface that allows them to easily create content that looks great.
If you write code you write bugs. It is a fact of life as a developer. The more code you write, the more complicated it gets and the more likely it will contain bugs. Consider this logic: