Latest Posts (18 found)
Jeff Quast 1 months ago

State of Terminal Emulators in 2025: The Errant Champions

This is a follow-up to my previous article, Terminal Emulators Battle Royale – Unicode Edition! from 2023, in which I documented Unicode support across terminal emulators. Since then, the ucs-detect tool and its supporting blessed library have been extended to automatically detect support of DEC Private Modes, sixel graphics, pixel size, and software version. The ucs-detect program tests terminal cursor positioning by sending visible text followed by control sequences that request the cursor position.

0 views
Jeff Quast 1 years ago

HAMURABI.BAS and its dystopian lessons

This is not financial or political advice HAMURABI.BAS The Sumerian Game was featured in David H. Ahl's book, Basic Computer Games (1973) as "Hamurabi" and was one of the first books I checked out from the school library and one of the very first computer games I played. I played it again recently on a replica of the Apple 1 computer. I then ported it to python to better understand the rules and design winning strategies, and finally, I wrote an "automatic player" to exercise those strategies.

0 views
Jeff Quast 1 years ago

Ultima IV rewrite using Terminal Graphics

Ultima IV This past year, I restored an Apple ][e computer. One of the most iconic games for Apple ][ is Ultima IV, the fourth game of the Ultima series by Richard Garriott, who has an interesting story himself to say the least. The most interesting aspect of Ultima IV is that the goal is directed internally to the character that you play. Instead of a typical "defeat this final boss" story, you must instead master the Eight Virtues for your character.

0 views
Jeff Quast 1 years ago

Terminal Emulators Battle Royale – Unicode Edition!

It turns out that Unicode support in Terminals is a lot more difficult than it first appears. A quick overview of special support for Unicode characters in Terminals: "Wide" or "Fullwidth" characters, particularly for East Asian languages and emojis, are codepoints that occupy two cells in a terminal instead of one. "Zero" width combining characters used in languages such as Arabic, Hebrew, or Hindi do not occupy any cells themselves; instead, they modify the previous character.

0 views
Jeff Quast 5 years ago

Offering a solution for Terminal Wide Character issues

Note Support for UNICODE_VERSION environment variable will likely be removed, please disregard this article. See https://github.com/jquast/wcwidth/issues/104 for more details. Quicktro The printable length of most characters are equal to the number of cells they occupy on the screen: 1 character : 1 cell. However, there are categories of characters that occupy 2 cells (full-width), and others that occupy 0 cells (zero-width). All popular terminals support displaying full and zero-width Unicode characters correctly.

0 views
Jeff Quast 9 years ago

On using tox in CI environments

From a single tox.ini file, all stages of software development may be defined and easily shared. We've removed the need of programming in any kind of OS-dependent bash, batch, or Makefile. The barriers for discovering how to prepare an environment and execute tests is reduced for newcomers, and reduces the cost of making changes in the test->build->release cycle. We may easily test new versions of python as they are released with minimal changes.

0 views
Jeff Quast 9 years ago

Technical writing with sphinx

Good technical writing for a suitably complex python project, technical guide, or even a book, will require a supporting structure to sufficiently abstract the commands needed to check and compile it. Writing a guidebook across a team of writers and developers, we can integrate sphinx, tox, and many other free tools and services. Many features of sphinx are listed on their Welcome page, but this article will focus on:

0 views
Jeff Quast 10 years ago

Terminal Output Sequences

Terminal Programming with Python series 2: Terminal Output Sequences Introduction A student new to Systems Programming will eventually stumble upon a strange method for printing color in a terminal. They might see something like the Arch Linux Color Bash Prompt guide, introducing a table of shell variables that appear something like a markup language for: magenta = '\x1b[0;35m' print(magenta + 'magenta is an original primary CGA color.') In this article we will examine how the magic string \x1b[0;35m may be constructed with some determinism.

0 views
Jeff Quast 10 years ago

Automation and pty(4)

Terminal Programming with Python series 1: Automation and pty(4) Introduction Any command-line UNIX interface may be automated. This article will demonstrate the use of pseudo-terminals, which cause programs to believe they are attached to a terminal, even when they are not! At first, fooling programs into beleiving they are attached to a terminal may not seem useful, but it is used in a wide variety of software solutions. This programming technique is indespensible in automation and testing fields.

0 views
Jeff Quast 10 years ago

Week of Apr 19, 2015

blessings Most of my time was spent working towards merging my fork of blessings upstream. Erik Rose set a high bar of standard, mostly in documentation, that cost an estimated 40 hours to fulfill. The result is PR #104, +9,541 and -1,506. Lessons with blessings: Using doc8 for style checking of reStructuredText files. Used this for the entire docs/ folder, loved it! Most unfortunate, doc8 is under the umbrella of OpenStack and suffers for it: there is no obvious place to communicate with the developers or file bug reports (issues are disabled in github).

0 views
Jeff Quast 10 years ago

Week of Feb 04, 2015

It has been a bit of a while since I last updated the OSS contributions I've made, nearly two months. I worked very hard to release x/84 which took a toll on my energy. I had a PR which I listed in my previous post accepted by paramiko. x/84 made the rounds on hacker news and reddit and even made its way into pycoder's weekly. I suggested it to pycoder's weekly last release and it was ignored.

0 views
Jeff Quast 10 years ago

Releasing x/84 v2.0

It's been a long year of contributions to my Open Source project, x/84, with well over 1,000 commits since last release. What is it? From the documentation: The primary purpose of x/84 is to provide a server framework for building environments that emulate the feeling of an era that predates the world wide web. It may be used for developing a classic bulletin board system (BBS) – one is provided as the ‘default’ scripting layer.

0 views
Jeff Quast 10 years ago

Week of Dec 07, 2014

Not much this week, just a suggestion to paramiko to remove the error channel 0: rcvd big packet 32704, maxpack 16384 written to stderr from openssh client when connecting to a paramiko server. I spent a number of hours in openssh code and ssh rfc documents. I wouldn't be surprised if it is ignored, especially as travis-ci build agent incidentally timed out making it appear as a failing test. Regardless, it does get rid of a rather annoying error on openssh client side:

0 views
Jeff Quast 11 years ago

x84 at University of Hawaiʻi

I saw an anonymous user login to my telnet host 1984.ws which is an open source Python Telnet BBS Server that I author and host. I joined him in chat, and he informed me that he didn't know where he was, but that he was instructed to telnet to this host as part of his course lab for Linux Systems Administration at the University of Hawaiʻi! I do not know the instructor, Milica Barjaktarovic, so I don't know why my system was recommended, but I'm honored to have my system as part of a University curriculum even though I dropped out of school myself :)

0 views
Jeff Quast 11 years ago

Joyent Provisioning from Custom Image

As mentioned in another blog post about abusing the Hover API, I am using joyent.com to provision a Solaris build server agent. I prepared an image with the service teamcity-agent, which, when enabled, will be ready to build any project build configurations which require SunOs. As it is quite expensive to run a Solaris host on Joyent all year-long (several hundreds of dollars), I thought it worthwhile to spend at least a few hours to provision a compute instance for testing pexpect builds on-demand through TeamCity.

0 views
Jeff Quast 11 years ago

Integrating tox and prospector for Static Analysis

My integration scheme usually works somewhat like this, though it changes in complexity per project: README.rst that suggests a Developing section, specifying that virtualenv and pip are required and instructs the developer to use prepare an existing virtualenv environment for testing using, python setup.py develop, achieved by a custom SetupDevelop command class in setup.py, that derives the run() method to assert that os.getenv('VIRTUAL_ENV') is defined (to remind you not to pollute your environment accidentally), run the baseclass setuptools.

0 views
Jeff Quast 11 years ago

(Ab)using the Hover API

I recently switched from DirecNIC to Hover as my DNS provider for two reasons. (1) DirectNIC was once a mom-and-pop shop in the late 90's from New Orleans when I first signed up, which astonishingly survived Hurricane Katrina . However, it appears they have sold out to some international conglomerate, moved their support staff overseas, and the same problems that plagued their control panel in 1997 continue to this day.

0 views
Jeff Quast 11 years ago

Week of Dec 01, 2014

Quite a lot of activity lately. This is also my first blog post, so I'm trying to catch up for more than one weeks' activity. Published a new package: ghstat: Command-line application to set or get github commit status. Released new versions: wcwidth: version 0.1.4 released. Contributions by @thomasballinger and @lmontopo Pull requests: Vagrant: Avoid double-newlines in salt-call output #4900 Prospector: Detect target file encoding in autodetect.py #71 Xmodem: Make logger bound to class instance, fix getc(1) #5 Pyroma: Use data.

0 views