www.Information-Cascade.co.uk
LGPL Software available for download

This is an informal collection of software written here. It ranges from the best to the oldest, from libraries to snippets. This web page was generated using SPIN_py, whilst the desktop mixer adjusts the music/tv volume.

libs_apps is a large collection of code (libraries and apps). This HTML table shows it as several sub-sections, as well as the whole. You can tell by the filename.

These packages work best on Linux, or UNIX boxes. WIN32 developers will also find them usable (maybe even useful), but they aren't .zip files. They are compressed .tgz tarballs (.tar.gz). Try http://www.7-zip.org WinZip or other.

ALL Linux/UNIX users, experienced and novice, will get good service from http://www.midnight-commander.org: a two panel file browser, and all-round swiss-army-knife. It helps you view MIME files inside .tgz files. I cannot recommend this text-based utility enough, though you do have to set a few options: pause_after_run_always, lynx_like_motion_yes, confirm_delete_yes, confirm_exit_no, internal_editor_maybe_not, save ...


Name Date Size Lang Desc
IDEAS 2011-04-19 797.8_K C++ Ideas: not quite sane ones
NOTES 2011-01-02 1.0_K LGPL NOTES for stuff to sort out TEXT scratchings for 2011
libs_apps 2010-12-21 1343.3_K C++ gtk A moderate set of libraries and apps
libs_apps::tv_rem 2010-12-21 1343.3_K C++ APP: switch tv channel
libs_apps::accts_gtk 2010-12-21 1343.3_K C++ gtk APP: A table of financial accounts data and UK reports
libs_apps::sar_plot 2010-12-21 1343.3_K C++ APP: Gather parse store and plot SAR -AMS data from Solaris, HP/UX, True64, AIX, ...
libs_apps::sar_parse 2010-12-21 1343.3_K C++ APP: parse a SAR report
libs_apps::sar_data 2010-12-21 1343.3_K C++ LIB: code concepts for the SAR data software
libs_apps::wclient 2010-12-21 1343.3_K C++ APP: client/server socket test code
libs_apps::js_many 2010-12-21 1343.3_K C++ APP: JavaScript with many plugins, such as accts_js
libs_apps::lib_base 2010-12-21 1343.3_K C++ LIB: a basic library of buffers, objects, fd, event-driven-io
libs_apps::lib_base2 2010-12-21 1343.3_K C++ LIB: extended library of specific features: js gtk pdf ssl
libs_apps::lib_play 2010-12-21 1343.3_K C++ LIB: play area - move to IDEAS
libs_apps::lib_media 2010-12-21 1343.3_K C++ LIB: access to the sound mixer, radio, infra-red, ...
libs_apps::lib_inet 2010-12-21 1343.3_K C++ LIB: internet ftp, http, ...
libs_apps::lib_accts 2010-12-21 1343.3_K C++ LIB: code concepts for the accounting software
mm3_scan 2010-08-03 24.2_K C++ Parse file.mm3 (old accounts)
utils_misc 2009-11-09 17.6_K C Misc Utils that do useful things
mp3_hissy_fit 2009-09-25 29.1_K Python process a tree of files, .wav .mp3 .cddb, least hiss, most fit
BLOG_PSG_TOKEN 2009-07-10 875.5_K utf8-en some BLOGS from whenever
SPIN_py 2008-11-24 212.6_K C++ Python Module SGML Parser 'SP' integrated as a Python module
tools_2000 2008-04-08 123.3_K ksh Build a standard GNU toolchain in a sensible prefix
PATH_TOOL 2008-03-10 3.4_K C++ change PATH or other variables
scan 2007-01-24 49.2_K C++ a parser to scan general texts
pygtk_menu_app 2006-10-30 4.2_K Python A menu of runnable buttons
lib_sudoku 2006-08-28 13.7_K C++ sudoku solver kit
NWA_parse 2005-08-06 9.9_K Python parse FullStatement.csv from Nationwide Anglia
tests 2004-12-06 5.8_K C++ test cases
sar_gather 2004-09-30 5.6_K ksh edit crontab to collect SAR -AMS data
Pythag 2004-06-12 14.1_K Python/Tk illustrate a proof of Pythagorus' triangle
YearZone 2003-08-22 13.8_K C++ cached date+time to/from int convertion
snmp1 2003-07-12 6.1_K C++ Example SNMP program in C++
web_play 2003-04-04 16.9_K PHP PHP login and session
hp_info 2001-07-04 3.3_K ksh Gather some info about an HP/UX box and its LVM layout
s_time 0 ABSENT FILE 0 C adjtime by a number of seconds
un_hex 0 ABSENT FILE 0 C convert ascii 2-byte hex numbers to bytes

IDEAS

Ideas: not quite sane ones

This is a cooking pot where there are lots of half baked ideas. libs_apps will gradually move some of its chaff here. FP256 - fixed point arith and printer. bio - ssl bio as fd_selectable_ssl. enum_group - names against ints. loob - loob is not bool (eg pointer || NULL). slog1 - beginnings of syslog client/daemon. OBJ - how a pointer to an obj might look. ping - (using gtk_main solved deafness) Open_File/Counting_in_BINARY_From_Zero

Date: 2011-04-19
Lang: C++
Size: 797.8_K
Download: IDEAS-2011-04-19.tgz


NOTES

TEXT scratchings for 2011

HAPPY NEW YEAR!! Its time to dust off SCAN, make it parse SCRIPTS, built a TREE STO that contains lots of C snippets, and generate C or C++ code from those bits (HaHa!!). Here are the latest meanderings, in .txt format

Date: 2011-01-02
Lang: LGPL NOTES for stuff to sort out
Size: 1.0_K
Download: NOTES-2011-01-02.tgz


libs_apps

A moderate set of libraries and apps

libs_apps is a code platform (libs) driven by a few tasks (apps). It has a refCounted, C++ object model, some containers, text buffers, wrapped_gtk_objects, linux device mixers (wrapped api), infra-red-api-wrapped, PDF generation, CSV accounting, JavaScript instumentation, persistent MMAP object storage, sar_parse, sar_plot display, ... all my code is moving into here (but I am going to move some of the experimental code out to ../IDEAS). The build system, is not out-of-the-box, but does cross-compile for WIN32, which is getting more api support (some kludged) these days. You're not supposed to use it all at once, I'm just pooling it so that it integrates, and grows in sync.

Date: 2010-12-21
Lang: C++ gtk
Size: 1343.3_K
Download: libs_apps-2010-12-21.tgz


libs_apps::tv_rem

switch tv channel

This is a major panel to watch TV. It uses lirc to send InfraRed to the set-top-cable-box, and the VCR. It uses /dev/radio to tune FM stations It uses xawtv to watch TV, and uses X11 atoms to send signals in the same way that xawtv-remote does. (switch channels) It uses /dev/mixer, (OSS emul if ALSA) to track volumes on a per-channel basis, and it does quite a good job at fading over the nasty CLICK that xawtv/bttv used to have when changing channel. It can run /dev/cdrom. but that needs a bit more work.

Date: 2010-12-21
Lang: C++
Size: 1343.3_K
Download: libs_apps-2010-12-21.tgz


libs_apps::accts_gtk

A table of financial accounts data and UK reports

This is a cross between a spreadsheet and a database, with the rules in the code. It produces a nifty companies house report in PDF (still with the old API, its replacement is postponed again).

Date: 2010-12-21
Lang: C++ gtk
Size: 1343.3_K
Download: libs_apps-2010-12-21.tgz


libs_apps::sar_plot

Gather parse store and plot SAR -AMS data from Solaris, HP/UX, True64, AIX, ...

sar is a standard UNIX utility on Solaris, HP/UX, ... which collects System Activity samples every 60 seconds and outputs a wierd ascii report. That can be gathered by a script, gzip compressed, and collected. (See sar_gather, tarball in ../samples/.) Another machine can then parse the text, and build up a binary array of floating points in compressed blobs in SQL tables. They can then be plotted, along with data from other data collectors. The current version works well, for several years of 'batch collected' data. Future developments will move to online collection streams with re-transmission options for LAN down times.

Date: 2010-12-21
Lang: C++
Size: 1343.3_K
Download: libs_apps-2010-12-21.tgz


libs_apps::sar_parse

parse a SAR report

sar_parse reads the ASCII and gets it to the database.

Date: 2010-12-21
Lang: C++
Size: 1343.3_K
Download: libs_apps-2010-12-21.tgz


libs_apps::sar_data

code concepts for the SAR data software

SAR data gets held in memory, in POST files, in remote SQL (MySQL or Postgres), all accessed through the dset_api.

Date: 2010-12-21
Lang: C++
Size: 1343.3_K
Download: libs_apps-2010-12-21.tgz


libs_apps::wclient

client/server socket test code

I dont do threading, mostly because of its slow-down overhead. Instead, I do event driven IO. Usually one packet contains a complete action. If that action blocks, and you have many connections, you should have many processes (apache style). wclient is a test frame for the HTTP client and server code, also a few other things in libs_apps.

Date: 2010-12-21
Lang: C++
Size: 1343.3_K
Download: libs_apps-2010-12-21.tgz


libs_apps::js_many

JavaScript with many plugins, such as accts_js

js_many is a JavaScript interpreter that can import modules (compiled in if not dynamically loaded DLL), so that you can load the ACCTS module, or the XXX module. I've written C++ modules for Tcl and Python, so why-o-why am I going down the JavaScript path? -- Tcl does have a secure model, but doesnt have struct-objects which auto-know when to call delete. Python has wonderful struct-objects, but doesnt have a secure model, and I want to be able to send scripts to the accountant that cant reformat the disk. Hindsight, says "create a Tcl struct object extension", but Tcl continues to refuse to add ClientData to Tcl_ObjType (actually two needed, ClientData_of_Module, ClientData_of_Type - or overload freeIntRepProc for the first, and extend struct for second).

Date: 2010-12-21
Lang: C++
Size: 1343.3_K
Download: libs_apps-2010-12-21.tgz


libs_apps::lib_base

a basic library of buffers, objects, fd, event-driven-io

This is a library with core types such as reference-counted objects, smart pointers to them, buffers that stretch, event-driven file-descriptors, unix-time, etc (COMING SOON: u32_hilo i32_abcd)

Date: 2010-12-21
Lang: C++
Size: 1343.3_K
Download: libs_apps-2010-12-21.tgz


libs_apps::lib_base2

extended library of specific features: js gtk pdf ssl

Things like PDF, X11, Gtk, JavaScript, OpenSSL. If your app needs JS-instrumentation-scripting, here is one way of adding it. The SSL is much stonger, now that I have a use for it.

Date: 2010-12-21
Lang: C++
Size: 1343.3_K
Download: libs_apps-2010-12-21.tgz


libs_apps::lib_play

play area - move to IDEAS

These are IDEAS that are not yet fully grown, but might have proof of concept use elsewhere within libs_apps.

Date: 2010-12-21
Lang: C++
Size: 1343.3_K
Download: libs_apps-2010-12-21.tgz


libs_apps::lib_media

access to the sound mixer, radio, infra-red, ...

This wraps the Linux kernel access to TV cards with a radio on them (the TV is viewed using xawtv, but the radio is direct). It also contains wrappers to control the sound mixer, and LIRC infra-red transmitter (I channel hop using my keypad, and pause the VCR with a mouse)

Date: 2010-12-21
Lang: C++
Size: 1343.3_K
Download: libs_apps-2010-12-21.tgz


libs_apps::lib_inet

internet ftp, http, ...

The HTTP code works well. The ftp is a bit of a placeholder. The HTTP code uses event driven IO, WITHOUT THREADS, to handle multiple connections as a client or server. A second area will be needed for servlet style.

Date: 2010-12-21
Lang: C++
Size: 1343.3_K
Download: libs_apps-2010-12-21.tgz


libs_apps::lib_accts

code concepts for the accounting software

This splits the ACCTS application(s) into its components. Thats a set of tables of rows (of spec) of cols (of spec). Its also the JavaScript API to the data, the GUI frames, reports and a possible new tbl2 format. It generates a rather smart PDF report.

Date: 2010-12-21
Lang: C++
Size: 1343.3_K
Download: libs_apps-2010-12-21.tgz


mm3_scan

Parse file.mm3 (old accounts)

Money-Manager is a proprietry (DOS) accounting program. mm3_scan parses its files to export it elsewhere. This code is old and untidy, but it retains access to legacy files, and it doesnt fall over.

Date: 2010-08-03
Lang: C++
Size: 24.2_K
Download: mm3_scan-2010-08-03.tgz


utils_misc

Misc Utils that do useful things

s_time adjusts the time, updates the hardware clock, and shows a synchronised count, perror prints errno, un_hex convers hex to binary, overwrite_file fills a file with NULs, with writes aligned at boundries, (cured a bad-block on the disk), PATH_TOOL edits shell vars like LD_LIBRARY_PATH.

Date: 2009-11-09
Lang: C
Size: 17.6_K
Download: utils_misc-2009-11-09.tgz


mp3_hissy_fit

process a tree of files, .wav .mp3 .cddb, least hiss, most fit

MP3 files are compressed WAV files. This script uses cdda2wav to put the WAV files in the right places, and get the .cddb file. It then uses the .cddb file to rename the dir/files, and tag the mp3's You can ask LAME to give you different quality levels. -V0 means bigger files with less hiss, -V9 means more will fit on your player, but sound too hissy. -V4 seems OK for non-headphones So you load the CD with cdda2wav (hissy -rip_here), and then produce different trees at different compression levels, then copy the files that fit to your player. Then change your mind, and rebuild a new tree at the new level.

Date: 2009-09-25
Lang: Python
Size: 29.1_K
Download: mp3_hissy_fit-2009-09-25.tgz


BLOG_PSG_TOKEN

some BLOGS from whenever

This is a rough collection of stuff

Date: 2009-07-10
Lang: utf8-en
Size: 875.5_K
Download: BLOG_PSG_TOKEN-2009-07-10.tgz


SPIN_py

SGML Parser 'SP' integrated as a Python module

SP is the best Open Source C++ SGML Parser http://www.jclark.com/ SPIN_py is a Python module that uses SP's generic interface to provide a SAX-like (but different) stream of events, which you can hook to Python expressions, and build a tree (not DOM). This page is generated by SPIN_py/SPIN_test_zone/test_gen_2_LGPL

Date: 2008-11-24
Lang: C++ Python Module
Size: 212.6_K
Download: SPIN_py-2008-11-24.tgz


tools_2000

Build a standard GNU toolchain in a sensible prefix

This is a collection of shell scripts that do the following: ./configure --prefix=/tools/2000/ccs The above is easy enough, but sometimes there are additional parameters, and its nice to have help putting the files into the right directories, and keeping source without objects. I use these scripts to bootstrap/build the GNU toolchain, and a list of well known + needed apps, and put them into SEVERAL DIFFERENT prefixes. That assists maintaining versions eg /live/web_one/ -vs- /test/web_two/

Date: 2008-04-08
Lang: ksh
Size: 123.3_K
Download: tools_2000-2008-04-08.tgz


PATH_TOOL

change PATH or other variables

A C program to add/del items from a PATH like variable. The program filters out duplicates, which may help speed, and it makes shell scripts a bit more readable. It now has a new option to allow duplicates, and use spaces, to build command lines. NB in order to set a variable, (not in a sub-program), you need to have 'dot-included' a function that calls the C prog.

Date: 2008-03-10
Lang: C++
Size: 3.4_K
Download: PATH_TOOL-2008-03-10.tgz


scan

a parser to scan general texts

This is a general purpose parser I attempted some 10 years ago, and has somehow bubbled back up to being active. It has the core idea, that a single pointer LEX.P is most of whats needed, and can be kept in a register, with a lot of inlining. I also have a second theory, which is an alternative to YACC, (this will never happen), and am manually generating code, that it might somehow generate. The idea would be to detect the maximum common prefix, draw a railroad, avoid ambiguity, and minimise backtracking. Dont wait up.

Date: 2007-01-24
Lang: C++
Size: 49.2_K
Download: scan-2007-01-24.tgz


pygtk_menu_app

A menu of runnable buttons

This is an initial scratch at RunOnAsIn, but thinking about it, C++ would be better.

Date: 2006-10-30
Lang: Python
Size: 4.2_K
Download: pygtk_menu_app-2006-10-30.tgz


lib_sudoku

sudoku solver kit

This is an early starting point. It manages 5000 solutions per seconds. It needs libs_apps It currently searches for "numbers for a square", later it will search for "squares for a number", then domino levels (puzzle creation) ((Not really a lib/kit))

Date: 2006-08-28
Lang: C++
Size: 13.7_K
Download: lib_sudoku-2006-08-28.tgz


NWA_parse

parse FullStatement.csv from Nationwide Anglia

Nationwide Anglia online banking service, provide a downloadable FullStatement.csv. This Python script parses the CSV, and makes a series of reductions, recognising standard string expressions. Things like standing orders, currency convertions from european ATM's, and the town for each shop.

Date: 2005-08-06
Lang: Python
Size: 9.9_K
Download: NWA_parse-2005-08-06.tgz


tests

test cases

Ever had an impossible compiler error? Creating test cases takes time, so why throw them away?

Date: 2004-12-06
Lang: C++
Size: 5.8_K
Download: tests-2004-12-06.tgz


sar_gather

edit crontab to collect SAR -AMS data

This is a simple READABLE ksh script(s) to collect stats. You can read it for security, and install it on your HP/SUN/AIX/True64/... boxes. Even if you dont have the SAR parser running (yet), get this in cron now. (You cant plot data that you dont have).

Date: 2004-09-30
Lang: ksh
Size: 5.6_K
Download: sar_gather-2004-09-30.tgz


Pythag

illustrate a proof of Pythagorus' triangle

Ever wanted to prove pythagorus? Where do you start? This script creates a little animation, that might help. --- When you see the shape, its pretty obvious that the bits add up to the whole, but you must check that what you expect is what is really there. Is it really square? --- ALSO: a tray of perfect ball bearings form a pattern, but is that approximate or exact? Do 6 exactly surround 1 without rattle or being squashed? --- (BUG: win32 draws OK but doesnt animate, run on Unix)

Date: 2004-06-12
Lang: Python/Tk
Size: 14.1_K
Download: Pythag-2004-06-12.tgz


YearZone

cached date+time to/from int convertion

This is a pre-prototype to convert time_t (signed int) to/from date/time The standard libc time functions are frankly awful. The libc functions are still used to find the edge values, where "summer-time" starts and ends, and the year starts, but after that, (which can be cached, possibly on disk or code) convertions should be much faster for values in the same year. This prototype is pre-early beta, but does NOT have a problem with 2004-01-10 causing overflow on t2 = (t1+t3)/2

Date: 2003-08-22
Lang: C++
Size: 13.8_K
Download: YearZone-2003-08-22.tgz


snmp1

Example SNMP program in C++

http://www.net-snmp.org/ is a C library for SNMP servers and clients. snmp1 is an example C++ client, its really an experimental C++ wrap, of simple gets, with asynchronous responses.

Date: 2003-07-12
Lang: C++
Size: 6.1_K
Download: snmp1-2003-07-12.tgz


web_play

PHP login and session

Some PHP scripts and MySQL tables that track a login session. The client browser keeps a single cookie, which is the session-id, and a random secret for the session. No other data is kept in the cookie, or in the URL. This allows the user to bookmark pages. If no login has happened, the user gets a new session as the 'ANON' user. If the page needs some permit that the current user doesnt have, it can fail or send what it wants (no output yet sent). With forms and functions to handle login.

Date: 2003-04-04
Lang: PHP
Size: 16.9_K
Download: web_play-2003-04-04.tgz


hp_info

Gather some info about an HP/UX box and its LVM layout

A list of commands that might tell you how an HP/UX box is configured. along with a full text dump of the LVM layout. You edit the list of commands to add any missed ones, or comment out any data that your policy says to not grab.

Date: 2001-07-04
Lang: ksh
Size: 3.3_K
Download: hp_info-2001-07-04.tgz


s_time

adjtime by a number of seconds

Currently I use the 'NET to get the time at boot, but when I was modem connected, this was very useful, as this PC's clock drifts quite a lot.

Date: 0 ABSENT FILE
Lang: C
Size: 0
Download: ABSENT: s_time


un_hex

convert ascii 2-byte hex numbers to bytes

This convert from ASCII hex dumps back to DATA.

Date: 0 ABSENT FILE
Lang: C
Size: 0
Download: ABSENT: un_hex