Posted in Software Engineering, Technology
Monday, March 7, 2005
I have come to realize the complete joy it is to work with the bash shell. When forced to work in Unix in some other shell — lets say C shell — I quickly discover all of the features to which I have grown accustomed. Features such as file completion, job control and command history make a developer’s life so much easier.
Posted in Software Engineering, Technology
Friday, September 17, 2004
To the improve the performance of Web applications I have five ideas that will help.
1) Determine your metric. In order to improve performance you have to be able to measure your changes. Pick your metric, or unit of measure, whether it is packet throughput, perceived response time or number of visits by cannibal pygmies.
2) Synchronize the clocks. This may seem obvious. But it is often overlooked. If the web server, proxy server, database server and client PCs have the same time, it is easier to establish a timeline of events. Spikes of activity in a timeline can help identify performance hot spots. Your task will be complicated if you need to compensate for late clocks. Pity that, White Rabbit!
3) Log it. Most web servers have log files. Write your application to log information, too. Log files with timestamps not only aide with debugging, but help measure performance.
4) Establish a baseline. Run an unmodified version of your application. Take a measurement. This is the baseline you can use for future comparisons. Scientists call this a control experiment.
5) Change one item at a time. If you do not limit your changes to a single item and your changes actually hurt performance, it is difficult to determine which item is the problem. Ambitious mega-patches can cost you hours of changes and re-tests.
The topic of improving software performance has and will continue to fill volumes of books. I hope these ideas will help you as you tackle your performance challenge.
Posted in Software Engineering, Technology
Tuesday, January 2, 2001
I sorted through GNU’s automake and autoconf utilities. They are used to automate the installation and compiling of source code distributions. It is sparsely documented. But I got it to work. Now lets see if I can figure out how to add Windows portability and support for static libraries.
Posted in Computer Games, Software Engineering, Technology
Monday, January 10, 2000
I know somebody is reading this because I received the most cryptic email yesterday. *shrug* If you send me questions, please be more specific than “show me how to program”.
CODING TIP: Do Not Fear the Profiler. So now that you have written your program, you would like to optimize it to run better. A profiler tool helps identify the areas in which you spend the most time and of which you call most often. These areas are good candidates for optimization. As an aside I would love to see debuggers and profiling tools for the next generation of in-game scripting languages.
Profiling tools work by doing two things. First of all code is automatically added by the tool to the prologue of each function. When the calling program enters a function, the function name and program time are recorded in a file. Secondly, a profiler has a clock-driven information gatherer. At regular intervals the profiler examines the location of the program instruction pointer and records the function in which it is located to a file. This data is then analysed to produce a call graph and do statistical analysis.
Armed with this analysis you can target those functions where optimization will give you the best payoff. I will mention optimization techniques in future plan updates. For a good discussion of graphic code optimization check out M. Abrash’s Black Book of Graphics Programming.
Posted in Computer Games, Software Engineering, Technology
Thursday, January 6, 2000
Last night I compiled and ran Unreal Tournament in Linux on my TNT2. I have to say I was not impressed. I have to agree with whoever at Epic said, “[Linux UT] does not rock.” My Linux game session was stripped of its windows header and a stuck at the absolute upper left hand corner of the screen. Whenever I was shot in the game, my screen turned black for a few seconds. Also, the intro fly-by showed mostly blackness until about five seconds into it. I think there might be issues with texture management. Alas, I already have too much on my plate to consider fixing it. *sweats*
Our quota issue was worked out quickly. So far I am pleased with the service we have received from dreamhost.com.
Flu? We are experiencing an outbreak of the flu here. My mother called me yesterday to see if I had picked it up. Fortunately I have not yet. But I am not out of the woods, so to speak. Flu season lasts until March. *crosses fingers*
CODING TIP: Write debug code. Experienced developers know what I mean by this one. It is a fairly common mistake for inexperienced software hackers to produce code that does not have debugging statements. Retrofitting debugging code can be a chore. You can save time and suffering by writing error handling into code as you develop your software.
Posted in Computer Games, Software Engineering, Technology
Wednesday, February 10, 1999
I wrote a tutorial, crushtut.zip (250 kb), showing step-by-step the process of exporting a model from Crusher and importing it into Unreal.
Blitz asks: Unreal demands that the dimensions of skin textures be equal to a power of two. If anyone knows a good way of addressing this problem, please send me email at blitz (at) gazpacho (dot) .net.