Software Developer and Performance Engineer
Software
Thoughts, ideas, and some solutions for software development.
Security Just Keeps Getting In My Way
May 12th
One of the most difficult things to deal with when performance testing is security. It is designed to stop the very things we need to do to generate server load. Basic security protects a system from robot attacks, multiple logins, invalid permissions, and more. Many of the techniques used in performance testing are similar to attacks that attempt to compromise a system.
How do you deal with security then? I usually ask that it be turned off on the systems I am going to test. A lot of time and effort can be wasted trying to make an application play by the rules. For example, if a system allows only one login at a time and you need to simulate 1000 clients, you will need to have 1000 users defined. Worse, you will need to manage the use of all those logins across the machines being used to run the performance test. It becomes a data management nightmare and can cause endless frustration.
Some security rules only allow one instance of an application to connect to the server from an IP address. This makes it impossible to use a tool that spawns multiple threads or processes to simulate multiple clients.Now it might be impossible to turn security off or there may be rules against it. If that is the case then there are not a lot of options. But if it is at all possible, I suggest that you have security turned off while doing performance tests and avoid all of these problems entirely.
Just finished reading Joel Spolsky’s book Smart & Gets Things Done
Sep 9th
Joel Spolsky’s book about how to hire smart people should be read by management everywhere. I loved the ideas he had for how to treat developers. I once took a job with a large company and was told that I had to use a computer that was crashing without warning every 20 minutes to an hour or so. They could not replace it until all the steps for dealing with the trouble had been gone through. After 3 weeks, everything option had been exhausted and I was finally given another computer that actually worked.
At other companies I am told that larger monitors, bigger hard drives, split keyboards, and other hardware items are too expensive or are not in the budget. I don’t understand how companies can spend $60,000 per year on a developer but not spend $2000 on hardware to make sure they are productive. I can see frivolous items like 30 inch monitors costing $3000 being rejected. But if a developer says they need a 28 inch monitor that costs $500 at COSTCO, why not get it for them? If they want a $100 mouse and keyboard, why not get it for them? They will be happy to come to work using the latest and the greatest tools that can be bought, and will be that much more productive. They will definitely think twice before leaving a company that is so nice to them making sure they are being taken care of.
Now Joel goes as far as taking employees to a Broadway play, trips to scenic places, and much more. There is no way I would want to live in New York City. But I definitely like the idea of what he is trying to do and respect the reasons for him doing. My hope is that others will pick up on what they are doing, especially in the Midwest.
Technique for improving Java I/O
Sep 4th
IBM came out with an article discussing how to improve I/O performance when copying data from disk to an output stream. This looks to be very useful, especially for web services that must serve data that is relatively static. The article did not mention whether the technique could be made to work on Microsoft Windows.

New transferTo() method for copyingDisk I/O straight to Network I/O
My interest in this technique is with systems that must be updated with data from corporate servers. Pricing data, new products, inventory changes, and much more all need to be broadcast to thousands of machines across the company network. For Point of Sale (POS) machines at company stores, corporate servers have trouble handling the thousands of tiny files that must be transmitted. Eliminating the overhead of taking the data from disk to the I/O should cut in half the amount of time needed based on the performance metrics shown in IBM’s article. This could allow a machine to service double the number of clients it could serve.
Google Chrome – Shining example of Big Brother
Sep 3rd
Google Chrome is a new web browser built by people who know web services, web software, web ads, web… well, you get the picture. Why did they build yet another browser? Because in my opinion, it needed to be done. Instead of one big program that holds all the web pages, you get lots of little programs, one for each tab. The browser they build becomes essentially a manager of lots of little browsers. Why is this a good thing? Because sometimes
bad things happen when you load a web page containing say the latest mega-monster-video-game. Instead of all your tabs going away, just the one that was being bad goes away.
This might not seem like a great thing but I think it is. As a software developer and programmer of web sites, it means that the web pages I create will work better, work faster, and just plain work. I won’t get calls any more because something went wrong while someone was in the middle of using my website.
So what is this part about Big Brother you say? It has to do with the EULA. That is an acronym for End User License Agreement. When you install this great piece of software on your computer and use it, Google says they own every piece of data you look at. Everything you enter on a form. Everything you surf to is theirs. Don’t believe me? Take a look at some of the news out there. This article has a copy of the text from the EULA itself. Here’s another article, and another. If you want to see the EULA your self, then here is the location.
It is stuff like this that really gets me fuming. They come out with a great tool, but then have to mess it up with legal garbage like this. Hopefully this will get sorted out and the offending clauses get fixed. Until then though, I won’t be using this great tool.


