Practical Scala/Java interoperability by small examples
If you try to combine Java code with Scala in your application, everything seems to go fine until you bump into big differences between Java collections and Scala collections. A Scala Traversable is not Java Iterable and vice versa; maps are different, etc. So, in practice, you have to do conversion. Fortunately, there are pretty… Read more
When Garbage Collection is Failure
For systems that absolutely require a constant responsiveness Java is generally not an option because of the pauses associated with the garbage collector. Even the alternative collectors, such as parallel and concurrent-mark-sweep, have a pause associated with them for major and minor collections. This problem can be avoided, though, by making sure the garbage collector… Read more
Keeping the trunk stable
Since the very beginning, kaChing has been trunk stable. In other words, everybody develops on the trunk and the software is stable at every point in time. Our trunk is being continuously built and tested and we cannot deploy a revision to production unless the revision has been successfully built and all the tests are… Read more
DevOps Cafe on Continuous Deployment and Operations Dashboards at kaChing
Open Mic is a new video series where John and Damon visit high performing IT operations and record an insider’s tour of the tools and processes these companies are using to solve their DevOps problems. In this episode, we visited disruptive financial services upstart, kaChing, in Palo Alto, California. David Fortunato, Pascal Perez, and Eishay… Read more
Models, they make everything look good
One of the most common best practices in Rails is to keep the controller light weight. This helps maintain the code’s readability maintainability, and refactorability (just like coding, I make stuff up). This is often done by pushing as much of the business logic as you can (where it still makes sense) down into a… Read more
Type inference puzzler
Does this compile? public class Puzzle { static Object one() { return 1; } static <T> T safeOne() { return (T) one(); } public static void main(String[] args) { int one = safeOne(); System.out.println(one); } } Take a look at it carefully and think before answering. Why or why not? Once you’ve thought it through,… Read more