Archive for the ‘Development’ Category

New(?) sorting algorithm

February 25th, 2007 by Sjan Evardsson

George Papadopoulos has released BitFast – a linked list sorting algorithm with examples written in C and C++. He claims sort performance 10 times faster than the MergeSort Algorithm. (But where is the Big O notation?)

You can see the project site, which has a download link for the C and C++ source code. The explanation is fairly clear, although it seems a little sparse to me. The source code lacks in comments, and has been written as proof of concept only, but it will provide the experienced C or C++ developer with a better understanding of what he is doing.

Mostly, it looks like he is applying the Radix Sort Algorithm to linked lists of integers or floats. This does nothing for strings, and the proof-of-concept code is only set up to handle 32 bit number values only. Perhaps the only difference between Radix and BitFast, is that Papadopoulos claims that BitFast is an in-place algorithm and an online algorithm.

Technorati Tags: , ,

Rosetta Code: A Call for Editors

January 25th, 2007 by Sjan Evardsson

Rosetta Code has put out a call for editors. The idea is ingenious in its simplicity: a Wiki that shows how to do the same tasks in a wide variety of languages. For anyone who learns best by example this is a no-brainer.

Stop by, create an account and help out!

Technorati Tags:

Music from chaos

July 15th, 2006 by Sjan Evardsson

A conversation with a coworker the other day got me thinking about ways to make our “noodling” a reality. We were trying to come up with a way to generate random music (defined by octave, step, and duration), while maintaining harmonic relevance. (In other words, we want to create music, not noise.)

We decided we should start with the following propositions:

  • limiting the tones to a pentatonic scale
  • limiting the octave range to that audible to humans
  • limiting the duration of tones to a maximum of one or two whole notes

Beyond that, the discussion turned to how to generate the random values. Since I have been reading about the history of Nonlinear Dynamics (chaos) lately, my first thought was, of course, to generate the values for octave, step and duration by using a set of non-linear equations. So, of course, the first choice would have to be the Lorenz “butterfly” equations .

So, the plan is to calculate the values, convert them to MIDI values and write them out to a file using Python. Since the outcome of the equations relies on the starting conditions (Sensitive Dependence on Initial Conditions – also called the “Butterfly Effect” ) we thought that we could use starting values such as the current Temperature, Barometric Pressure and Humidity, or perhaps Date, Time and processs number, or counting Buicks, Chevys and Fords in the parking lot. Pretty much any 3 starting numbers.

Smart Testing

May 30th, 2006 by Sjan Evardsson

Scott Sehlhorst ()has written a concise article on how to do smart software testing. While I have worked with non-technical people who wanted “full-coverage” testing of all builds, and have also worked with non-technical people who wanted to skip testing and just go live and “fix it in the field,” I have not previously had the numbers to say “yes, this has been tested and we are 99% confident that the application is 99% bug free.” Without having the numbers and formulae at hand the best I could previously say was “I am pretty confident that it is mostly bug-free.” Well, I know that the 99/99 numbers sound a lot more confident than that, and I am less likely to spend a week running tests to get as close to full coverage as possible now that I have this bit in my tool-belt.

When to upgrade?

March 27th, 2006 by Sjan Evardsson

I have a minor (or possibly major) problem with my favorite Java IDE, . It seems that even though version 5.5 Q-build has been promoted to Build 1, I still have issues with using version 4.

I was much more comfortable with the workings of version 3 and earlier, where setting up projects and working within projects seemed much simpler. I still find myself frustrated with version 4 and the need to explicitly import the libraries I routinely use. With version 3 and earlier I imported those libraries generically for all projects. I still haven’t figured out how to do that in version 4 or 5. So now that the world is moving on what am I to do? I guess I will just have to upgrade and bite the bullet.