Aspect oriented programming is a relatively recent paradigm, centered on the idea of separation of concerns. Its early focus was on so-called cross-cutting concerns, that is, concerns that tend to be scattered in different classes and methods and can’t be easily modularised. The most frequent example is logging, which tends to be a rather pervasive concern when we program in traditional OO languages. We design software by making decisions, and we often make those decisions according to habits – or patterns. That might be efficient, but in a sense is also constraining: there is a huge design space out there, and we keep exploring just a small portion. Sure, we may play around with ideas on toy projects, but toy projects are not necessarily good models of real-world development. With that in mind, I started the Aspectroid project, as a way to explore the AOP+OOP design space within the context of small-scale, but realistic Android applications, using AspectJ.
Navigating the AngularJS landscape can be a daunting experience. While the library itself is fairly robust, choices early in the adoption process can have drastic long-term effects on your software development process. Below we present five things that you should know about AngularJS. This information won’t solve every problem you’ll have with the library, but it can help you get off on the right foot.
The recent article of Anthony Ferrara explaining how disabling garbage collection improved the performance of Composer exposed how certain programming styles can hurt PHP code performance. That was one of the main topics discussed by Manuel Lemos and Cesar Rodas in the episode 54 of the Lately in PHP podcast. They also discussed proposed features for PHP 7 like built-in annotation support, Unicode character escaping, the removal of PHP 4 constructor style, among other related topics. Now listen to the podcast, or watch the hangout video, or read the transcript to learn about the details of these interesting PHP discussions.
In the first part of this article where we first visited the CPU Ready Queue, we discussed the impact of CPU Ready Queue and what factors can be involved in creating contention. The focus of what we saw there was that these are preventable conditions where CPU Ready Queue percentage can rise significantly. Not only did we see that CPU affinity and multi-CPU configurations can lead to challenges, but we touched on the overall issue of understanding how to effectively right-size the virtual instances in general. Beyond CPU affinity and multi-CPU, we talked about the other two conditions that could lead to a climbing Ready Queue percentage: CPU oversubscription and CPU reservations. So, let’s consider these and then talk about mitigation of all of these potential conditions to help us better control our application experience.