Windows

You are currently browsing the archive for the Windows category.

Among all of the things that I have learned while working as a professional game dev, two very important things are 1) how to document and test bug fixes and 2) the importance of having a sane build process. I didn’t have a terribly good handle on either of these things when I first created Minim and as a result pushing out a release was a very painful process.

Bug Fixing

I’ve not always been good about keeping track of exactly which bugs I’ve fixed in a release, or which new features I’ve added. No longer! The past two days have seen verbose comments in my check-ins, which means I should be able to create a pretty exact changelog for the next release. Here’s my most recent check-in comment, to give you an idea of the kinds of things coming up:

FourierTransform:

	- added freqToIndex method for converting a frequency to an index (duh)

	- added getAverageCenterFrequency to get the center frequency of an average band from an index

	- added forward(float[], int) and forward(AudioBuffer,int) so an offset into the array of floats can be provided, in case a user has a large buffer they want to analyze only parts of.

JSMinim:

    - added setInputMixer(Mixer) so users can specify which Mixer to use when getting TargetDataLines

    - added setOutputMixer(Mixer) so users can specify which Mixer to use when getting SourceDataLines

Minim:

	- added getServiceProvider() so that you can get a handle on the implementation being used by Minim.

	- added createSample functions to get an AudioSample using a buffer(s) of floats.

MinimServiceProvider:

	- added getAudioSample(float[], AudioFormat, int) and getAudioSample(float[], float[], AudioFormat, int) interface functions for requesting AudioSamples with buffers instead of from files.

Build Process

Creating and uploading new JAR files is not the hard part of doing a release. No, the hard part is making sure all of my online examples are up-to-date and making sure the Manual reflects any additions or changes to the API. The biggest pain with the examples is that the directory structure that I use on the website does not match the local directory structure, so it’s not just an easy drag-and-drop. I have my examples set up as a subdirectory in my Processing sketch folder, but what actually gets uploaded to the website are the contents of the applet directory that is generated for each sketch when I export it. Man, I would love to know a way to tell Processing to export an applet to a location other than the sketch folder, because then I could export to a directory structure that is the same as what’s on the web.

In any event, that’s a pain, and I need to figure that out, but I also finally got around to creating a subversion repository for all of the example source files. This will at least make it easier for me to tell at a glace which sketches need to have applets re-exported and uploaded. Maybe I can even figure out how to create an automated process for this. But, one thing I had to do before I could commit all of the examples, was delete all of the applet directories. To do that, I googled around and found this totally helpful batch file:


FOR /F "tokens=*" %%G IN ('DIR /B /AD /S *.svn*') DO RMDIR /S /Q %%G

That particular code will delete all subdirectories that match the name “*.svn*” under the directory it is executed in. All I had to do was change the name to match to “applet”. It’s all really clearly explained in this forum post and worked liked a charm.

So, that’s at least one part of my build process that’s been sanitized (by which I mean: made sane)!

Ever since reading this post about moving the Start menu to the top of the screen, I’ve occassionally considered it. I’ve also often found myself wishing that the Quick Launch toolbar in Windows behaved a bit better so that I could actually have it set on auto-hide and not have it jump out every time I try to use the scroll bar on a full screen program. In fact, I found myself wishing it would behave more like the Dock on a Mac. Well, recently I came across a program called RocketDock that emulates the Dock on a Mac and also is as customizable as the Quick Launch toolbar (moreso, actually).


My new desktop configuration.

It hasn’t broken my computer yet, so I feel pretty good about recommending it to people who maybe wish their PC was more like a Mac. One nice feature is that you can set it so that when you minimize something it becomes an icon in the dock and disappears from the Start bar. This helps keep the Start bar uncluttered when there are a lot of programs open but many of them are minimized. One down side to this is that when an icon does the little bounce thing to get your attention, it doesn’t bounce onto the screen. This means you have to periodically check the dock to see if any of your minimized windows are trying to get your attention, like an IM window or something.

Since I now I have Dock-like shortcut bar, I thought I’d just go whole hog and move the Start bar up to the top of the screen. It’s a little strange, but not so bad. I’ve locked it so it doesn’t have the funky looking beveled edge that it does when it’s resizable. The other thing I’m trying to retrain myself on is using the button on the side of my mouse to bring up an the application switcher instead of mousing up to the top of the screen and clicking on the program tab, or worse, mousing over to make the dock appear so I can click on a minimized window. If I’m switching back and forth between two programs, which is often the case when I’m working on the port or the unit test suite for the port, all it takes is two clicks of the mouse button to switch to the window I want.

I’m not entirely sure what it means to be rocking such a faux-Mac desktop. Maybe it just means that OSX has a better UI. In any event, it’s a nice change of scene and will hopefully reduce some unecessary mousing around and clicking.