Sometimes, SQL just isn’t enough. What do you do when you just can’t get the SQL to run in under an hour while a little piece of Java code does the same query in a few seconds? Put the result into a report table and then run the report against that table.
Google Relaunches Instantiations Developer Tools
29. September, 2010From the website:
In early August, Google acquired Instantiations, a company known for its focus on Eclipse Java developer tools, including GWT Designer. We’re happy to announce today that we’re relaunching the following former Instantiations products under the Google name and making them available to all developers at no charge:
- GWT Designer
Powerful Eclipse-based development tools that enable Java developers to quickly create Ajax user interfaces using Google Web Toolkit (GWT)- CodePro AnalytiX
Comprehensive automated software code quality and security analysis tools to improve software quality, reliability, and maintainability- WindowBuilder Pro
Java graphical user interface designer for Swing, SWT, GWT, RCP, and XWT UI frameworks- WindowTester Pro
Test GUI interactions within Java client rich applications for the SWT and Swing UI frameworks
I played a bit with CodePro. The tools look promising even through there were some glitches, namely:
- The JUnit editor looks cool but the table with the current unit results often hangs.
- It was more complicated than I liked to generate test cases
- I couldn’t get the code coverage tool to work
- The dependency works but didn’t play with it long enough to say for sure how useful it is
- The code analysis shows a lot of numbers but the workflow is clumsy. For example, it says that something has a cyclomatic complexity of 16 but I couldn’t find out what and where.
Related Articles
- Google Relaunches Instantiations Developer Tools – Now Available for Free (googlecode.blogspot.com)
StarCraft 2 on Linux: Sound problems
28. September, 2010If you have sound issues in StarCraft 2 on Linux, open WINE config (winecfg) and select the “Audio” tab. Make sure that the correct sound driver is selected (use “Test sound”) and then switch “Hardware Acceleration” near the bottom to “Emulation”.
Related Articles
- HOWTO: Starcraft 2 on Linux with Wine (sathyasays.com)
Thoughts on documentation
28. September, 2010Software developers believe that documentation is just another way to say code is buggy. The reasoning is like this: If the code was easy to understand and/or did what you expected, then why document it?
While this is true at the level of a code line, there should be some documentation explaining your overall view of the world.
Next, we have end user documentation. End users have no idea how software works, they just know they have to get some work done. Stat. For them, good documentation can be the difference between a nice day and weeks of overtime.
Related articles:
- The Evolution Of User Manuals (forbes.com)
LOL of the day
28. September, 2010From programmers.stackexchange.com:
Load a picture of yourself in IE6. Print screen and frame it. Give it to your grandkids to remind them that, no matter how difficult things get, they’ve got it easy compared to what you had to deal with.
Google Transparency Report
24. September, 2010Google now shows usage data by country and service and how many requests it got from where to take items out of their search indexes, blogs, YouTube, etc.
Related Articles
- Google Intros Transparency Report (marketingpilgrim.com)
- Google Transparency Reports Show Content Blocked In USA, UK And Around The Globe (socialtimes.com)
Where do Most US Presidents Come From?
18. September, 2010Every wondered where US Presidents come from (usually)? Freebase Parallax can answer that. Watch the video to get an idea. I was surprised that most presidents are from the East Coast.
When inheritance is not enough
16. September, 2010Ever had the problem that inheritance just wasn’t enough? For example in this case:
package core; public class Main { public static void main(String[] args) { sayHello(); } private static void sayHello() { System.out.println("Hello World!"); } }
Say you need to override sayHello()
. What are your options?
You could edit the source. But if you only have the bytecode?
You could decompile the bytecode. But what if you need the same change in several places?
Eventually, you’ll have to use copy more or less code around because Java just doesn’t offer enough ways to combine code. The solution? Object Teams. See this article for a solution of the problem above.
What is Object Teams?
In a nutshell, a team is a group of players which have roles. Usually, the roles are distributed by way of the strengths of your players. Slow and sturdy ones will be defense. Quick and agile players will attack. The calm ones will do tactics.
OT/J (the Java implementation of Object Teams) does just that: You define teams and roles and then apply those to existing Java code. Let’s take the Observer pattern (you know that design patterns are workarounds for flaws in the language’s design, yes?).
The problem with this pattern is that you can’t apply it retroactively. You must modify the involved classes to support the pattern even if they couldn’t care less. That leads to a lot of problems. Classes which don’t need it must still allocate resources for it. It clutters the API. You can’t add it to classes which don’t support it. If a class only allows you to observe some behavior, you can’t change that.
OT/J fixes all that. The OTExample Observer shows three classes which could make use of the Observer pattern but don’t. Instead, the pattern is retrofitted in all the places where it’s necessary. This allows for many optimizations. For example, you can create a single store for all your observers (instead of one per instance). The API isn’t cluttered. You can observe almost any change.
Evolutionary Void
13. September, 2010I just finished the third volume of Peter F. Hamilton‘s Void Trilogy: The Evolutionary Void. I feel that there isn’t as much suspense in the end as in the last books but all loose ends are tied down nicely and there are a couple of funny surprises (like the identity of The Lady). All in all, a good conclusion to story.
Go. Buy. Now.
Spoiler Warning
My main critique this time is that some guys check space for enemies all the time while some teams seem oblivious to that option. The author should at least have mentioned that they check once in a while and find nothing.
Similarly with the deterrence fleet and ANA. The idea behind the deterrence fleet is great. But I doubt that just hiding it somewhere will actually protect it against being found. Next, I wonder why redundancy was no option. When the “fleet” is rendered helpless, Kazimir’s successor is unable to call any backup. I can accept that only ANA itself knows about the fleet and since ANA is out of the game at that time, they can’t ask but I wonder why ANA exists only once. There should have been a backup. Earth is well protected but not against something like the deterrence fleet.
If something like that would wipe out Sol, they wouldn’t have a lot of pre-warning. So all in all, I like the twist when ANA is disabled but I don’t quite swallow it.
Related Articles
- Kindle Genre Watch: Sci-Fi, Romance and Western Fiction (4 Sep 2010) (kindlereader.blogspot.com)
- Excerpt: The Evolutionary Void by Peter F. Hamilton (tor.com)
- Book page on the author’s site
- Peter F. Hamilton on sfbooks.com
- My post about the previous book: The Temporal Void
Java Project Lambda
10. September, 2010It seems that someone came to reason and proposed an implementation for closures in Java that would not only work but also be useful without adding too much complexity to the language: Project Lambda.
Related Articles
- Project Lambda (slideshare.net)