Site Map
Writing & Software
Free Open Source Software
New Tcl 9-based
- mdi—a module
for creating and managing Multiple Document Interface windows and their
child windows.
- altkey—a
GUI application and a command line tool for for calculating keyboard
accelerators (e.g., for menu options or dialog labels), both using the
Kuhn-Munkres optimization algorithm.
- Gravitate — an online
tilefall/samegame-like game. Desktop/laptop
Tcl/Tk 9 version. (See below for some unmaintained desktop versions.)
- Playlists—a
simple Tcl/Tk 9 GUI audio track player and playlist manager.
- Store—an
easy-to-use and simple alternative to a version control system which can
be used with equal facility via a Tcl command line tool or a
Tcl/Tk 9 GUI application.
- clop—a
Tcl command line option parser module. This is used, for example,
by the Store application’s command line tool (
str).
- eval—a
Tcl/Tk 9 GUI “calculator-evaluator” which can compute expressions,
Tcl regexps, simple conversions, and simple date expressions.
- charfind—a
Tcl/Tk 9 GUI application for finding Unicode characters.
- PlayTrack—a
simple Tcl/Tk 9 GUI audio track player.
- ste—a Tcl/Tk 9
GUI “styled text editor” application. The main purpose is as a test bed
for my custom TextEdit tk text widget “subclass”.
Occasional New Writings
- Determining Ogg Audio
Duration—A Tcl function for computing the duration (in
seconds) of an .ogg audio file.
Older
-
accelhint—a
Go library for inserting keyboard Alt-key accelerators (i.e., '&'s)
in a sequence of items (e.g., menu items or dialog labels). There's also
a Linux GUI application. Nowadays I use my Tcl 9 command line tool altkey.
- clip—a Go library
providing a command line parser.
- cx—a C library
providing some basic collections and conveniences. (For self-education;
passively maintained.)
- diff—a Go library
for finding the differences between two sequences based on the Python
difflib algorithm. I've also done one in
D ddiff, and
Nim diff-nim, and
in Rust differ.
(Go version is passively maintained; the D, Nim, and Rust versions are
unmaintained.)
- editabletuple—this
Python module provides the editabletuple() and editableobject()
functions for creating classes with a fixed sequence of fields, similar
to a namedtuple, except editable. (Unmaintained.)
- Gravitate — an online
tilefall/samegame-like game. Some unmaintained desktop versions are also
available written in
D/Gtk,
Nim/NiGui,
Rust/FLTK,
Tcl/Tk 9,
Tcl/Tk 9
(the version I use), and
C++/wxWidgets.
- ini—a Go library
providing simple
.ini configuration file reading and
writing.
- MiniCalc—a
little GUI tool (expression evaluator, regex evaluator, accel hints,
etc.)
- murmur—an
Unlimited Register Machine (URM) emulator with optional extensions
(indirect addressing and some extra convenience commands).
- set—a Go library
providing a Set type using generics based on a
map[E]struct{}
- sortedmap—a Go
library providing a SortedMap type using generics based on a
red-black tree.
- sortedset—a Go
library providing a SortedSet type using generics based on a
red-black tree.
- ufunc—a Go library
providing generic range functions including Map, Reduce, Zip, and
ZipLongest.
- UXF (Uniform
eXchange Format)—a plain text human readable optionally
typed storage format. UXF is designed to make life easier for software
developers and data designers. It directly competes with csv, ini, json,
toml, and yaml formats. One key advantage of UXF is that it supports
custom (i.e., user-defined) types. This can result in more compact, more
readable, and easier to parse data. And in some contexts it may prove to
be a convenient alternative to sqlite or xml. Python and Rust
libraries are available. (Unmaintained.)
- XindeX is
an easy to learn and use cross-platform GUI application for creating,
editing, and outputting indexes (e.g., for books). (Unmaintained.)
All the above are passively maintained unless stated otherwise.
Commercial Software
Our commercial software is no longer for sale.
- DiffPDF — compare PDF files quickly
and easily: a commercial Windows application ideal for office workers.
- comparepdfcmd — compare PDF
files: a commercial console (command line) program for Windows ideal for
testing, quality assurance, and scripted comparisons.
Books
- Python in Practice by Mark Summerfield; won the 2014
Jolt Award.
- Programming in Go: Creating Applications for the 21st
Century by Mark Summerfield.
- Advanced Qt Programming by Mark Summerfield.
- Programming in Python 3: A Complete Introduction to the
Python Language (Second Edition) by Mark Summerfield.
- Programming in Python 3: A Complete Introduction to the
Python Language (First Edition) by Mark Summerfield. (Superceded by the Second Edition.)
- Rapid GUI Programming with Python and Qt: The Definitive Guide
to PyQt Programming by Mark Summerfield.
- C++ GUI Programming with Qt 4 (2nd Edition) by Jasmin
Blanchette and Mark Summerfield.
- C++ GUI Programming with Qt 4 (First Edition) by Jasmin
Blanchette and Mark Summerfield (Superseded by the Second Edition.)
- C++ GUI Programming with Qt 3 by Jasmin
Blanchette and Mark Summerfield.
A Selection of Other Writings
- Python Programming Tips—A small
collection of short useful ideas and snippets.
- Code Tip: Booleans—Why you
shouldn't use Boolean arguments for functions that have two or more
parameters and what to do instead.
- Programming Books—Book's I've
bought and recommend.
- No Blink—how to stop blinking or
flashing cursors.
- Go
Tutorial a five part introduction to Go on Dr. Dobbs journal..
-
Concurrent
Programming with Go the ACCU's Overload journal's issue 106 containing this article introducing
concurrent programming in Go
-
Moving from Python 2 to Python 3 a "cheat sheet" for Python 2
programmers written for InformIT (4 page PDF, 676K)
-
Python Descriptors an
InformIT article
-
A Practical Introduction to PyQt's Undo/Redo Framework an
InformIT article—see also, Witold Wysota's Using Undo/Redo with
Item Views article
- Qt 4's Model/View
Delegates an ICS Whitepaper covering Generic Delegates and Abstract
Column Delegates (Qt 4.2 introduced new methods that can be
used to achieve the same effect)
-
Libraries and Plugins a Qt 4 article in Qt Quarterly
-
Data Models: SQL Table vs. Flat File a Qt 4 article in
Qt Quarterly
-
Guarded Pointers in Qt 3 and Qt 4 a Qt 3 and Qt 4 article in
Qt Quarterly
-
Automatic Dialogs a Qt 3 article in Qt Quarterly
(The ideas in this article are still applicable in Qt 4)
-
Optimizing with QPixmapCache a Qt 3 article in Qt Quarterly
(The ideas in this article are still applicable in Qt 4)
-
Mandatory Fields a Qt 3 article in Qt Quarterly
(For Qt 4, see the QAbstractItemModel's setData() and flags() methods)
-
A String List Editor a Qt 3 article in Qt Quarterly
(For Qt 4, see the QStringListModel class)
-
Laying out MDI Children a Qt 3 article in Qt Quarterly
(The ideas in this article are still applicable in Qt 4)
-
Fancy List Items a Qt 3 article in Qt Quarterly
(For Qt 4, see the QAbstractItemModel's data() method)
-
Implementing a Popup Calendar a Qt 3 article in Qt Quarterly
(For Qt 4, see the QCalendarWidget class)
-
Customizing for Completion a Qt 3 article in Qt Quarterly
(For Qt 4, see the QCompleter class)
Old Free Open Source Software
We are no longer maintaining or developing our old open source
software. The comparepdf tool has been superceded by our far superior
commercial comparepdfcmd tool, and the diffpdf
application has been superceded by the faster and superior commercial DiffPDF. See above for our current maintained
free open source software.
- Alt_Key, a GUI
application and library for calculating keyboard accelerators for menu
option texts and dialog labels. Superceded by MiniCalc's
“Accel Hints” tab.
- amp—
a basic audio player GUI application. For a player than can also manage
playlists, see TLM (Track List Manager)
- CharFind—
An application for finding Unicode characters.
- comparepdf, a
command line tool for comparing PDF files, either textually or by their
appearance.
- diffpdf, a GUI
application for comparing PDF files page by page, either textually or by
their appearance.
- Easy Play, a GUI application for playing
music—it is simple to use and remembers the current track in every
playlist, so it is easy to go from playlist to playlist from where you left
off.
- Notebox — a simple GUI
application for creating, editing, and finding notes.
- retest — a console
(command line) program for Windows and Unix for automating black box
regression testing, and a Rust library to do the same thing
programmatically.
- Tdb (Text
DataBase) Format—a plain text human readable strictly typed
alternative to CSV. In addition to the Go package, there's also a
Python library.
- TLM (Track List Manager)— an audio player and track list
manager.
- unz—a
small Go application for unpacking zip files and tarballs, creating at
most one file or folder in the current folder.
- ViewPDF a GUI
application for viewing PDF files that clearly indicates annotations and
possible mistakes (such as spelling errors).
Your Privacy •
Copyright © 2006 Mark Summerfield.
All Rights Reserved.
Top