YACA-Monitor 3.0 - Do you Know What Happens in Your Java EE Application Server? The new version 3.0 of YACA-Monitor is a Java EE 6 Web Application that visualizes the current activities in a running server. Just drop the yaca-monitor-jee.war into auto deploy folder of your application server, start the monitor and see the call graphs of your applications.
Extremely Fast and Simple WebGL Motion Detector to Rotate 3D Graphic
This experiment demonstrates how the browser captures the video signal and compares subsequent frames to detect motion of the user. With this signal the program finds the viewpoint and rotates the 3D cube.
This experiment demonstrates how to visualize the method calls of a running Java application with a web client. The application uses THREE.js to render the graphic with webGL.
Finite Element Method Running in the Browser and Uses Device Orientation
The experiment demonstrates the implementation of a minimal Finite Element Method (FEM) Simulation running in a web browser and uses device orientation signals. This works on mobile devices.
Simulated Annealing the Swiss Army Knife of Global Optimization
This article describes the use of Simulated Annealing for global optimization problems using the example of Java. The application reads a caller-callee-graph, some initial cluster information and makes a cluster analysis.
More how to's:
A Library to Empirically Estimate Big-O Time Efficiency and Check Results of Analysis in JUnit Tests
The library BigOTest.jar provides support to measure the big-o time efficiency and checks results of this analysis in standard JUnit tests. The key approach is to call the system under test (method of a class) several times and fit possible functions to the measured data points.
It is commonly assumed that Bubble-Sort is an extremely poor sort algorithm and gets really slow with larger number of input data. In the following a small Java implementation shows some Use Cases where Bubble-Sort can even be faster than Heap-Sort and/or Quick-Sort
Memory and Runtime Analysis for the removeAll() Method of Java TreeSet and ArrayList
This article describes the differences between using the removeAll() method of TreeSet and ArrayList class. Both implementations of removeAll() show quiet different behavior in respect to run time and memory consumption. It is important to know the behavior of collection classes of Java.
Lessons Learned from GPU Experiments with Aparapi
In the following you can read about some experiments with Aparapi for GPU programming - the results of these experiments have not been completely satisfying, but after all very insightful. In the lessons learned and recommendations paragraph of this article you may find some conclusions.
More performance & frameworks:
Top 12 Selected Unit Testing Best Practices
Writing just another best practice list about unit testing is easy, but working according these recommendations is a more difficult task. In the project described in 'A Library to Empirically Estimate Big-O Time Efficiency and Check Results of Analysis in JUnit Tests' I followed my own tips. All the source code in this project has been developed with 100% TDD and applied most of the best practices.
The Best Code Review Tool is a Simple Ball Pen and a Listing on Paper
The continuously increasing need for more and more speed in software development fosters the use of static and dynamic code analysis tools. Code analysis tools are great, but don't think that static and dynamic code analysis tools can substitute the old fashioned peer review between humans.
How Much JUnit Test Code is Needed for a Basic HashMap Implementation in Java?
This article describes a basic implementation of a HashMap and demonstrates the minimal needed test code. You will see that with an 100% line and branch coverage approach for unit tests - the implementation of utility and/or framework classes should have a ratio of ~60% test code and ~40% production code.
More static and dynamic code analysis:
Top 10 Things Software Developers Can Learn from Martial Arts
Practicing martial arts and working in software development has more in common than you may think. The following list is a collection of my personal lessons learned from training martial arts.
How to Reduce Waste with Clever Communication?
A lot of time and energy is wasted every day in development projects, maintenance teams and IT operations units - due to inefficient communication. Many developers tend to write unnecessary, bad structured and to long mails.
Selected Rules of Thumb in Software Engineering
The following rules of thumb should be helpful to get quick effort estimations. They explain typical scenarios in software development projects and/or maintenance tasks. Collecting just some quotations is always dangerous - because of missing context information - but I tried here to select more likely true numbers.
This article describes how to write unmaintainable code and have an excellent paid job for the rest of your life. Obfuscation of the code - besides poor design, no test cases and overly complex algorithms
Source: Wikipedia - TOS-day of the dove klingons.png; fair use rationale;
How to Reduce the Hidden Factory in Software Development?
This article describes the hidden factory in software development projects & maintenance and ways to reduce the hidden factory. The size of the hidden factory is different in organizations and teams, but something between 20 and 65 percent of total work capacity is not unusual.
Source: Wikipedia; Standard YouTube License
The Dunning-Kruger-Effect in Software Engineering
In this short article you may read that low-skilled developers tend to mistakenly overrate their own and others abilities. They even are not able to recognize what they do something wrong.
Periodic Table of Software Engineering - Top 118 Fundamental Elements of Software Engineering
Collection of most important and fundamental elements of software engineering. It may serve as a guideline what a software engineer or programmer should learn, know and most of them practice.
More skills & management:
There are many more other helpful techniques to get more freedom in work. The most important rule is: "Work hard, be clever and fast if you work - then allow yourself to do what you like to do in the remaining time."
An Unfair and Incomplete Comparison between Spring 3 Framework and Java EE 6
From the architectural point of view the models of Spring and Java EE are competitors. Depending on the strategy and constraints of your organization both show strengths and weaknesses. Spring Framework is not a standard - it is a product and an implementation of a framework. This means, there is no alternative vendor. Please, keep this always in mind.
More controversial & fun: