Cooper Conrad Software Engineering specializes in creating custom software and providing software related training and services.
We have expertise in creating web-based, desktop, and embedded software solutions.
We are customer focused and believe that close customer interaction is the best way to create truly great software. We are always looking for interesting problems to solve.
Cooper Conrad was founded by an engineer and an educator. We simply love to analyze, design, and write code. We get the same joy from teaching others to do the same.
Cooper Conrad is located in the Northern Suburbs of Chicago but provides services throughout the country.
Mark Mahoney is the founder and chief software architect.
Mark was a senior software engineer for several years at a large telecommunications company before becoming a college professor of Computer Science. He received a Bachelors, Masters, and PhD in Computer Science.
Dr. Mahoney is active in the field of Computer Science research and has over ten years of experience creating and teaching about the development of complex software systems.
The best way to reach him is at . Or, give us a call at .
Cooper Conrad offers consulting services to those who need custom software. We are accomplished in the fields of software design, design patterns, object-oriented analysis and design, cloud computing platforms, relational database analysis and design, test-driven development, and web frameworks.
We have been following the latest trends in object-oriented software development in the last fifteen years and have experience coding in C/C++, Java, Ruby, and C#.
We welcome customers with interesting problems who need rock solid implementations. What makes us stand apart is our willingness to work closely with the customer. We know that most software projects fail because of a lack of communication between the developers and the customer. Our goal is to always be honest with our customers so that there are very few surprises about what to expect from our team. We are straight shooters and will be upfront with the issues that inevitably arise when creating complex software.
We have expertise developing cloud computing solutions using Google's App Engine and the Google Datastore. Technologies like these are important for web sites and web services that need to scale. We can design and implement sophisticated back-end solutions for your business critical needs.
Cloud computing solutions are particularly attractive because host server maintenance is taken care of by Google. Google's infrastructure is proven to be highly available and fault tolerant. You will not have to worry about purchasing additional hardware and hiring more system administrators. All App Engine apps scale up and down on demand and you only pay for what you use. This is an exciting paradigm shift and we have a head start in the tools and techniques to successfully deploy these apps.
We are proponents of Agile Development and offer coaching services to organizations looking to explore the benefits of this style of development. Having a coach guide a development team through the core practices of Agile Development ensures maximum productivity while minimizing the learning curve. We have the skills to make the transition an enjoyable, enlightening experience. Our goal is to transfer those skills to your team.
Cooper Conrad was founded by an engineer and an educator and offers training services in the area of software development. We offer training in the latest technologies as well as in the field of software analysis, design, and testing. We offer limited enrollment, intense sessions on a customer's site or at an independent site. We offer discounts for large groups.
Cooper Conrad is building the next generation of tools for developers. Our primary research interest is in making tools that promote learning among developers. We believe that existing tools make it difficult for programmers to learn from each other. Average programmers generally don't get to see how great developers do their work. We want to change that!
Traditional version control systems like CVS, Subversion, Git, and Mercurial store snapshots of code at programmer defined 'commit points'. The entire state of the code is stored at these commit points. The problem with this approach, however, is that a lot of interesting things happen in between commits. The time in between commits is usually too long to tell meaningful stories. These systems do not animate the changes they store.
Tools like 'diff' can highlight the differences between two commits, but they do not animate them over long periods of time. Commit logs also don't help very much because it can be as hard to write a descriptive commit message as it is to write the code itself. One can write comments in the code but often the context of the changes is not relevant to everyone who might read the comments.
The Storyteller Version Control System records all programming information. Every new character, delete, copy and paste, and all file operations are recorded. It allows one to playback all of these programmer interactions with a set of code. The tool allows one to record these playbacks for others to see how a set of code has evolved. Further, developers can write comments that are specific to a playback. This allows truly accurate and descriptive logging of changes in a version control system.
Armed with this additional information the team can go back in time and see how a set of code has evolved. There are filters to limit the amount of information in a playback. For example, one can ask to see what changes developers Bob and Sally made to files prog1.java and prog2.java last week. Or, one can ask to see what code of Bob's has Sally deleted in the last month. Even after short periods of time the context information about why a set of code has changed is lost. We are not good documenters of this information. Storyteller allows one to describe the important reasons why we make changes and makes these stories easily searchable from code, by developer, by feature, etc.
The tool promotes learning in a software development team. Programming is a solitary activity. It is difficult to become a better programmer because we cannot easily see how better programmers go about writing code. It is important for less experienced developers see more experienced programmers make good decisions, recover from bad decisions, and hear the reason why changes are being made in the first place.
This kind of information can be spread in code reviews, pair programming sessions, and in daily stand up meetings. None of this information, however, is stored and made searchable for later. So, inevitably it gets lost as well. The Storyteller tool automates the recording of this important context information while giving the team a full featured version control tool.
Visit the website for more information.