Site Map
Writing & Software
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.
Free Open Source Software
-
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.
- 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
(the version I use),
Tcl/Tk,
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.
Books
- 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.
- 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
- Advanced Qt Programming (ISBN 0321635906)
by Mark Summerfield—all the examples and a sample chapter are available for free download
- 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
- 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.)
- 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.
-
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.
-
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.)
-
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
- 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