Site Map

Writing & Software

Commercial Software

Our commercial software is no longer for sale.

Free Open Source Software

  1. 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.
  2. clip—a Go library providing a command line parser.
  3. cx—a C library providing some basic collections and conveniences. (For self-education; passively maintained.)
  4. 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.)
  5. 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.)
  6. Gravitate — an online tilefall/samegame-like game. Some unmaintained desktop versions are also available written in D/Gtk, Nim/NiGui, Rust/FLTK (the version I use), Tcl/Tk, and C++/wxWidgets.
  7. ini—a Go library providing simple .ini configuration file reading and writing.
  8. MiniCalc—a little GUI tool (expression evaluator, regex evaluator, accel hints, etc.)
  9. murmur—an Unlimited Register Machine (URM) emulator with optional extensions (indirect addressing and some extra convenience commands).
  10. set—a Go library providing a Set type using generics based on a map[E]struct{}
  11. sortedmap—a Go library providing a SortedMap type using generics based on a red-black tree.
  12. sortedset—a Go library providing a SortedSet type using generics based on a red-black tree.
  13. ufunc—a Go library providing generic range functions including Map, Reduce, Zip, and ZipLongest.
  14. 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.)
  15. 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.

Books

  1. Python in Practice (ISBN 978-0321905635) by Mark Summerfield—all the examples and a sample chapter are available for free download. Q&A with 2014 Jolt Award Winner: "Python in Practice" Author.
  2. Programming in Go: Creating Applications for the 21st Century (ISBN 0321774639) by Mark Summerfield—all the examples and a sample chapter are available for free download
  3. Advanced Qt Programming (ISBN 0321635906) by Mark Summerfield—all the examples and a sample chapter are available for free download
  4. Programming in Python 3: A Complete Introduction to the Python Language (Second Edition) (ISBN 0321680561) by Mark Summerfield—all the examples and a sample chapter are available for free download
  5. Programming in Python 3: A Complete Introduction to the Python Language (First Edition) (ISBN 0137129297) by Mark Summerfield. Hungarian, Portuguese, Russian, and Spanish translations are now available, with Chinese and Japanese translations in the works. (Superceded by the Second Edition.)
  6. Rapid GUI Programming with Python and Qt: The Definitive Guide to PyQt Programming (ISBN 0132354187) by Mark Summerfield. A Chinese translation is in the works.
  7. C++ GUI Programming with Qt 4 (2nd Edition) (ISBN 0132354160) by Jasmin Blanchette & Mark Summerfield. Chinese, German, Korean, Russian, and Turkish translations are now available. All the examples and the entire book in HTML are available free from InformIT. For the book itself click the Sample Content tab. This page has links to the entire book as HTML pages (but in the wrong order!). If you scroll down you will see a table of contents so that you can see the correct order. I'm sorry it is so inconvenient, but I have no control over the publisher's web sites. Walter Dale has ported the book's examples to Qt 5. If you like this book, please consider buying Advanced Qt Programming.
  8. C++ GUI Programming with Qt 4 (First Edition) (ISBN 0131872494) by Jasmin Blanchette & Mark Summerfield. This book is available in PDF format under the Open Publication License. Chinese, French, German, Japanese, and Russian translations are available. (Superseded by the Second Edition.)
  9. C++ GUI Programming with Qt 3 (ISBN 0131240722) by Jasmin Blanchette & Mark Summerfield. This book is available in PDF format under the Open Publication License, PDF (22 MB). German, Japanese, and Russian translations are available.

A Selection of Other Writings

  1. Python Programming Tips—A small collection of short useful ideas and snippets.
  2. Code Tip: Booleans—Why you shouldn't use Boolean arguments for functions that have two or more parameters and what to do instead.
  3. Programming Books—Book's I've bought and recommend.
  4. No Blink—how to stop blinking or flashing cursors.
  5. Go Tutorial a five part introduction to Go on Dr. Dobbs journal..
  6. Concurrent Programming with Go the ACCU's Overload journal's issue 106 containing this article introducing concurrent programming in Go
  7. Moving from Python 2 to Python 3 a "cheat sheet" for Python 2 programmers written for InformIT (4 page PDF, 676K)
  8. Python Descriptors an InformIT article
  9. A Practical Introduction to PyQt's Undo/Redo Framework an InformIT article—see also, Witold Wysota's Using Undo/Redo with Item Views article
  10. 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)
  11. Libraries and Plugins a Qt 4 article in Qt Quarterly
  12. Data Models: SQL Table vs. Flat File a Qt 4 article in Qt Quarterly
  13. Guarded Pointers in Qt 3 and Qt 4 a Qt 3 and Qt 4 article in Qt Quarterly
  14. Automatic Dialogs a Qt 3 article in Qt Quarterly (The ideas in this article are still applicable in Qt 4)
  15. Optimizing with QPixmapCache a Qt 3 article in Qt Quarterly (The ideas in this article are still applicable in Qt 4)
  16. Mandatory Fields a Qt 3 article in Qt Quarterly (For Qt 4, see the QAbstractItemModel's setData() and flags() methods)
  17. A String List Editor a Qt 3 article in Qt Quarterly (For Qt 4, see the QStringListModel class)
  18. Laying out MDI Children a Qt 3 article in Qt Quarterly (The ideas in this article are still applicable in Qt 4)
  19. Fancy List Items a Qt 3 article in Qt Quarterly (For Qt 4, see the QAbstractItemModel's data() method)
  20. Implementing a Popup Calendar a Qt 3 article in Qt Quarterly (For Qt 4, see the QCalendarWidget class)
  21. 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 com­pare­pdf­cmd 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.

  1. 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.
  2. amp— a basic audio player GUI application. For a player than can also manage playlists, see TLM (Track List Manager)
  3. CharFind— An application for finding Unicode characters.
  4. comparepdf, a command line tool for comparing PDF files, either textually or by their appearance.
  5. diffpdf, a GUI application for comparing PDF files page by page, either textually or by their appearance.
  6. 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.
  7. Notebox — a simple GUI application for creating, editing, and finding notes.
  8. 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.
  9. 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.
  10. TLM (Track List Manager)— an audio player and track list manager.
  11. unz—a small Go application for unpacking zip files and tarballs, creating at most one file or folder in the current folder.
  12. ViewPDF a GUI application for viewing PDF files that clearly indicates annotations and possible mistakes (such as spelling errors).

Top