Programs written by Ben Jos Walbeehm

Here are a few of the many many things I have written over the (also many many) years. The actual things I make available are subject to change. Programs (such as BJWFlate, FixReg, UU.COM, and Win9xNTVer) and webpages (such as my Windows 95 Update Page) I have written that were available in the past may no longer be available now.

Here is the current selection of programs I have written that I have chosen to make publicly available:

BJWzipFE

  Current version    1.06  
  Date    20-Nov-2006  
  Program type    Win32 command line  
  Download size    10,603 bytes  
  Download link    BJWzipFE106.7z  

BJWzipFE is meant as a front-end for DOS-based packers that create files in ZIP-compatible format. Using this front-end, the files stored inside the ZIP file will retain their exact names, including capitalisation, including names longer than the 8.3 DOS format, and including names containing spaces. So BJWzipFE adds long filename support to DOS-based ZIP programs.

From a command line, run BJWzipFE without any parameters to get help.

Calendar

  Current version    1.3  
  Date    17-May-1993  
  Program type    DOS16 command line  
  Download size    1,999 bytes  
  Download link    Calendar13.7z  

Calendar performs calculations on dates. I wrote this tiny little program (executable size: 2,585 bytes, and half of that is just text) entirely in assembly back in 1993 and still use it every now and then. Despite the fact that it is a 16-bit DOS program, it runs perfectly from a command line in Windows 95/98/Me/2000/XP. For a given date, it will calculate the day of the week, it calculates the difference in days between two dates, it calculates the dates of Easter for a given range of years, it calculates all Friday the 13ths for a given range of years, and it calculates the resulting date when adding/subtracting a number of days to/from a given date.

Side note: Back when I wrote this program, it made me suspect that every year has at least one and at most three Friday the 13ths, and I then quickly came up with an elegant proof of this fact.

From a command line, run Calendar without any parameters to get help. Alternatively, type "type calendar.com". :)

DeflOpt

  Current version    2.07  
  Date    05-Sep-2007  
  Program type    Win32 command line   Linux command line available upon request... and maybe more...
  Download size    27,870 bytes  
  Download link    DeflOpt207.7z  

DeflOpt tries to reduce the size of GZIP (extensions .gz and .tgz), PNG, and ZIP files. Regardless of which programs/settings were used to create them, DeflOpt will be able to reduce these files by at least a few bytes more than 95% of the time.

A little bit of history: Back in March of 2003, I finally decided to write something I had been wanting to write for many years: My own ZIP program. So I wrote a program called BJWFlate. However, once I had written it, once I had "solved the puzzle", I quickly lost interest. Every now and then, I still see people looking for BJWFlate. Don't. At the time, BJWFlate was pretty good in terms making smaller ZIP files than other "zippers" did, but now, several years later, even I myself might not use it anymore if I wanted to use the ZIP format and make a ZIP file smaller than what any other zippers out there do. Back in the day, BJWFlate could compete with (even custom-compiled versions of) 7-zip (in its ZIP mode) and kzip. Since then, kzip has been updated several times and can beat all other zippers (in terms of smallest resulting size) more than 90% of the time.

If you are very stubborn and still want to get BJWFlate, try the following page on Roman Scherzer's site: www.clrmame.com/download.htm#zipmax. For historical purposes, as well as because some of the information may still be useful, here is my old page on BJWFlate and DeflOpt. Please keep in mind that several things on that page are outdated and that I have stopped all development on BJWFlate.

DeflOpt is just something I wrote while I was developing BJWFlate. I found that one of the ideas I used in BJWFlate was not used by any other zipper. Even if another zipper could compress a file to a size that was smaller than what BJWFlate did, I could still apply that idea to that other zipper's ZIP file and make it smaller. So while DeflOpt started its life as just a small piece of code within BJWFlate, it survived while the rest of BJWFlate did not.

I have to give an acknowledgement here: When I started writing BJWFlate, I was stuck at some point in my understanding of the Deflate specification. A few email exchanges with Ken Silverman, who was working on kzip at the time, made me understand the one thing I had not understood about the Deflate specification, and so I wrote BJWFlate. DeflOpt grew from that, as mentioned.

Contrary to what I have seen mentioned on some pages, DeflOpt does not just remove garbage from deflated files, but actually optimises the structures created by deflate programs and then recodes the files using those optimised structures. It performs a few other tricks too that are not "just removing garbage". It will make a file smaller more than 95% of the time, even if that file was created by a deflate program that does not generate "garbage", and even if it was created by Ken Silverman's kzip or pngout programs.

DeflOpt should be used as the final step in getting files smaller. First use other programs (I recommend kzip for ZIP files and pngout for PNG files), then run DeflOpt on the resulting files.

I have recently made some modifications that will allow DeflOpt to be compiled using GCC. This means that native executables of DeflOpt could be made for pretty much every platform. In fact, I already have a native i386 Linux executable of DeflOpt. I am just looking for people to test that Linux version. So if you are running Linux on an i386-compatible box, contact me. For those who want a native executable for other platforms, contact me too. Read the DeflOpt.txt file for instructions on how to contact me.

From a command line, run DeflOpt without any parameters to get help.

Sorting Demonstration

  Current version    1.09  
  Date    23-Mar-2004  
  Program type    Win32 GUI  
  Requires DirectX 7.0 or higher  
  Download size    11,453 bytes  
  Download link    SortingDemo109.7z  

Sorting Demonstration gives a visually attractive demonstration of a lot of different sorting algorithms. As a student, over 20 years ago, I was pretty much being thrown to death with sorting algorithms, so I wrote a much simpler similar program for the Commodore 64 to actually see all those sorting algorithms in action. Then, in 2001, I decided to write a much nicer looking version for Windows. Over the years since then, I have occasionally made additions and improvements to this little project.

In the main menu of Sorting Demonstration, use the up and down arrow keys to go from item to item, and the left and right arrow keys to modify the currently selected item. If a given algorithm's demonstration takes too long for your taste, hit the Escape key and in the main menu, change the number of frames per second and/or the number of frames it actually draws. Note that increasing the scaling factor (which requires a restart of Sorting Demonstration) can also be used to make things faster.

Finally note that in most cases, if Sorting Demonstration takes longer for sorting algorithm A than for sorting algorithm B, then this actually also reflects the difference in efficiencies of those algorithms. There are one or two exceptions, though.

Zip Manager

  Current version    1.05  
  Date    20-Nov-2006  
  Program type    Win32 GUI  
  Download size    18,489 bytes  
  Download link    ZipMgr105.7z  

Zip Manager is a two-pane GUI. Load (or drag) a ZIP file into one pane, load a ZIP file into the other pane (or not). Then manipulate them. Copy files from one ZIP file to the other, delete files within a ZIP file, rename them, and some more things. All without recompression. For people who remember Norton Commander, this program should feel very intuitive. But even for those who don't know Norton Commander, just being able to drag & drop, copy things back and forth, delete, rename, and so on makes this a very valuable utility.

Rubik's Cube solvers

Finally, I'd like mention something else I have written: Ken Silverman's Rubix. Ken wrote all the code for displaying cubes, making turns, animations, sounds, and so on. I, Ben Jos Walbeehm, wrote the solvers that are now integrated into Rubix. I wrote 3 different solvers from scratch. That means I did not borrow anyone's ideas. I developed everything on my own. Writing a (3x3x3) Rubik's Cube solver was something I had been wanting to do for more than 20 years. When I finally started on it, I found that I had a need for displaying the actual cube and the results of the turns my program made. Not wanting to spend a lot of time writing code to display the cube, I browsed the web and found Ken's Rubix program. I contacted Ken and since he was very interested in integrating my solver into Rubix, he sent me the source code for it. That made writing my solvers a lot easier and I kept sending Ken updates of my solvers and making suggestions to him to make Rubix even better.

Once I had finished the 3x3x3 solver, Rubix could solve 3x3x3 cubes as well as the trivial 1x1x1 cubes. I did not like that "hole" between the 1x1x1 and 3x3x3 and browsing the web a little taught me that the 2x2x2 could always be solved in at most 11 turns. It took me only 2 days to write an optimal 2x2x2 solver, one that uses brute force to find an optimal solution for any given situation in a fraction of a second.

Around 20 years ago, after having manually solved 4x4x4 and 5x5x5 cubes, I realised that I understood enough about the cube that I could solve cubes of any size. So when my 2x2x2 solver for Rubix was finished, I finally decided to put that knowledge into source code and so I wrote another solver for Rubix, one that can solve any NxNxN cube for N >= 4. So Rubix currently contains 3 different solvers written by me. In chronological order: (1) A "pretty good" 3x3x3 solver. (2) An optimal 2x2x2 solver. (3) A solver that solves any NxNxN cube for N >= 4. It can solve 4x4x4, 5x5x5, 10x10x10, 64x64x64, ... cubes. Although Rubix has an upper limit now of 64x64x64, this can be trivially increased. I have used my own code to solve 160x160x160 cubes.

Contacting me

Since I receive well over one hundred spam emails every day, my own SpamKill program uses very aggressive settings. So unless you are on my "safe list" or follow the instructions I have given in DeflOpt.txt, I may never see your email. So read DeflOpt.txt and follow its instructions when contacting me. Even if it is not about DeflOpt. ;)

LINKS

This is a list of links to sites that I find valuable. This list is not complete and I intend to add to it whenever I find the time and inclination. In alphabetical order:

SONGS

A great song performed by a great friend of mine: Anders Svensson. I didn't write this song. Just a great traditional song performed in a great way by Anders. Ye Jacobites By Name.

FINALLY

If you feel you should be linked here as well, do not hesitate to contact me. I am sorry that I made contacting me a bit hard, but the amount of spam I receive every day has made that necessary.


Copyright © 2012 Ben Jos Walbeehm.
All rights reserved.

gipoco.com is neither affiliated with the authors of this page nor responsible for its contents. This is a safe-cache copy of the original web site.