Back to Silas S. Brown's home page

C Vu articles

I wrote for the members-only journal "C Vu" (ISSN 1354-3164, not formally peer-reviewed but well-edited) starting from 1995. I found it to be a good learning environment: if I wrote an article with a misunderstanding, someone would correct it (and the journal being members-only reduces the odds of that situation being misjudged by an overly-hasty outside reader later). The journal's style has changed a bit since the early days. Here is a list of my articles for reference.
Why I don't develop for iOS
C Vu, 31(6):5-6, January 2020. (It costs too much just to find out if your app is allowed or not)
Python 2 has setdefault
C Vu, 31(6):9, January 2020. (I somehow missed it for 19 years)
How to stay out of a webmaster's bad books
C Vu, 31(6):13, January 2020. (Try identifying your program in the User-Agent, and save your downloads instead of hammering my server thousands of times a day)
GitHub's Crazy Contribution-Graph Game.
C Vu, 31(1):8-11, March 2019. (How I ended up playing it as a favour, with unintended consequences like delaying commits to other days.)
China's New AI School Textbooks.
C Vu, 30(6):13, January 2019. (I suspected the "AI" word was imposed on the authors by the series editor.)
When Will Python 2 End?
C Vu, 30(6):8, January 2019. (Canonical's commitment to 10 years of support for Ubuntu 18.04 meant they were promising to maintain Python 2 until 2028, but they later clarified that support after 2023 is paid-only. It's 2024 for Red Hat and probably Debian.)
Don't Brush Bugs Under The Carpet.
C Vu, 30(5):4, November 2018. (A PrimerPooler user stopped giving me details on finding a local workaround.)
One SSH Key Per Machine!
C Vu, 30(4):13, September 2018. (A common private key is a bad idea, especially if an admin's new assistant accidentally puts it on the Web)
Don't Assume Any Non-Zero exit() Will Fail!
C Vu, 30(3):8, July 2018. (Unix tools using POSIX wait() get only the low 8 bits of your exit code)
A Brief Introduction to Docker.
C Vu, 29(5):8, November 2017.
Why I Avoid PHP.
C Vu, 29(4):9-10, September 2017. (Existing PHP code tends to be worse than it looks)
Thonny: Python IDE for Beginners (review).
C Vu, 29(4):5, September 2017.
A Hollywood Take on Dangling Pointers?
C Vu, 29(2):6-7, May 2017. (A parody film script to explain a danger of cstr misuse)
Delivering Bad News from QA.
C Vu, 28(5):4-5, November 2016. (The wrong approach has cost people their careers)
Random Confusion.
C Vu, 28(4):10-11, September 2016. (BSD-manual unclarity on rand() vs random(), plus XorShift)
An Introduction to OpenMP.
C Vu, 28(4):8-9, September 2016.
Why Floats Are Never Equal.
C Vu, 28(4):5, September 2016. (Well they are sometimes, but it might not be what you expect)
How to Block Russia From Your Website.
C Vu, 28(3):9-10, July 2016. (Russia's anti-extremism law is too indiscriminate; even some ACCU code reviews could count as "extremist" by Russian standards)
Book review: Make Games With Python by Sean M. Tracey
C Vu 28(1):23, March 2016. (I'm sorry to say I couldn't really recommend giving this book to a child)
"HTTPS Everywhere" Considered Harmful.
C Vu, 27(6):8, January 2016. (Especially for people whose only connection to the Internet is via 2G GSM, reading public-service articles that could be identified by traffic-analysis anyway.)
Use the DOM Inspector.
C Vu, 27(4):22, September 2015.
WattOS R9 Worth Knowing About.
C Vu, 27(4):13, September 2015. (old hardware)
Ode to the BBDB.
C Vu, 27(4):5, September 2015.
Letter to the Editor.
C Vu, 27(3):21, July 2015.
Golang programming on AppEngine.
C Vu, 27(3):8, July 2015.
Simple Android programming with WebKit.
C Vu, 27(1):13-14, March 2015.
Using ACCU Membership for Unique IDs.
C Vu, 27(1):5, March 2015.
Perl is a Better Sed, and Python 2 is Good.
C Vu, 26(5):10-12, November 2014.
Checking Websites for Specific Changes.
C Vu, 26(3):8, July 2014.
From Raspberry Pi to the Cloud.
C Vu, 26(1):17-18, March 2014. (porting to AppEngine and OpenShift 2)
The Soundtrack to Code 2: Going Classical.
C Vu, 26(1):11, March 2014.
The Windows XP Threat: A Call to Action.
C Vu, 25(5):7-8, November 2013. (I tried to encourage webmasters to detect and warn their Windows XP visitors to upgrade to GNU/Linux)
Future-Proofing your Python Scripts.
C Vu, 20(2):18, April 2008. (Speculation on making Python 2 code compatible with Python 3 which wasn't then complete)
An NSLU2 "Slug".
C Vu, 19(5):4, October 2007.
One Laptop per Child.
C Vu, 19(5):18, October 2007.
A Brief Introduction to Cygwin.
C Vu, 19(4):8, August 2007.
Customising a Diskless Linux.
C Vu, 19(3):16-17, June 2007. (Knoppix remastering for a media-desk application)
A Python Gotcha.
C Vu, 19(1):9, February 2007. (Floating-point precision loss could lead to an infinite loop in an early version of Gradint's scheduler.)
Book review: Web Accessibility: Web Standards and Regulatory Compliance by Thatcher et al
C Vu 19(1), February 2007.
QEMU as a Means of Software Distribution.
C Vu, 18(3):20, April 2006. (At the time it could run virtual machines without needing administrator privileges)
Putting Old Modems to Use.
C Vu 18(1):17, February 2006.
ROX Filer.
C Vu 17(6):31, December 2005. (brief review)
Recycling throwaway hardware.
C Vu 17(5):39-40, October 2005. (Debian-3.1 based scripts to navigate educational recordings on a monitorless PC for a refugee)
Cross-Compiling Python Scripts into Windows Applications.
C Vu 17(3):16, June 2005. (Used by Gradint; works with Python 2.3 but not 2.5+)
Automatically Generating Word Documents.
C Vu 17(2):26-28, April 2005.
Book review: Official Eclipse 3.0 FAQs by John Arthorne and Chris Laffra
C Vu 17(1), February 2005.
Automatically-Generated Nightmares.
C Vu 16(6):30, December 2004. (on being asked to debug a 100-page printout of automatically-generated code)
Book review: Contributing to Eclipse: Principles, Patterns and Plug-ins by Erich Gamma & Kent Beck
C Vu 16(5), October 2004.
Using a Live Linux Distribution.
C Vu 16(4):19, August 2004.
I Wish They'd Use the Standard.
C Vu 15(5):23, October 2003. (Bugs in early versions of FoxMail.)
Intrusive Identifiers.
C Vu 15(3):16, June 2003. (Undefine format, divert and shift before running English text through M4.)
TCC review.
C Vu 15(3):18, June 2003.
Book review: Reader's Digest How to do just about anything on the Internet
C Vu 15(3), June 2003. Not recommended.
A Python Project.
C Vu 15(2):24-26 and 15(3):21-24, April & June 2003. (2-part article about an early version of Gradint's code)
A Programmer's View of Book Writing.
C Vu 15(1):14, February 2003.
PDF Problems---Can We Learn From Them?
C Vu 14(6):26, December 2002. (Acrobat 4 failing to properly tell users it can't handle version 5)
Don't Touch That Clock!
C Vu 14(4):17, August 2002. (overnight wget downloads crashed by NTP-sync)
An Introduction to 4DML.
C Vu 14(4):26, August 2002. Also: 4DML Revisited. C Vu 14(5):23, October 2002.
On Keeping Notes.
C Vu 14(3), June 2002.
On Re-Inventing the Wheel.
C Vu 14(2), April 2002.
My Top 25 Unix/Linux Utilities.
C Vu 14(1), February 2002.
Book review: Java and XSLT by Eric Burke
C Vu 14(1), February 2002.
Book review: Data Structures & Algorithms in Java 2ed by Michael Goodrich & Roberto Tamassia
C Vu 13(4), August 2001.
POVray review.
C Vu 13(3), June 2001.
Conference review: ACM CHI 2001.
C Vu 13(2), April 2001.
Book review: Professional Linux Programming by Neil Matthew & Richard Stones
C Vu 13(2), April 2001.
Some Thoughts on Academic Papers.
C Vu 13(1), February 2001.
Various Ergonomic Equipment.
C Vu 13(1), February 2001.
Visual Control and COM.
C Vu 12(5), September 2000. (also reviews of SDF and FunnelWeb and LUCI)
Book review: Designing Effective Speech Interfaces by Susan Weinschenk & Dean Barker
C Vu 12(5), September 2000.
Book review: Teach Yourself GTK+ Programming in 21 Days by Donna Martin et al.
C Vu 12(5), September 2000.
ISO 8601: A Standard You Should Know About.
C Vu 12(4), July 2000.
An Introduction to Fuzzy Logic.
C Vu 12(3), May 2000.
A Personal View.
C Vu 12(3), May 2000. (Fear of being criminalised by unintentional patent infringement.)
The Clock is Still Ticking.
C Vu 12(3), May 2000. (S2G in 2038 and Y2K sliding-window fixes.)
An Introduction to CGI Programming.
C Vu 12(2), March 2000.
Doc++ review.
C Vu 12(1), January 2000.
Syntax Highlighting.
C Vu 12(1), January 2000.
Commenting Your Work.
C Vu 11(6), October 1999.
On Configurability and Consistency.
C Vu 11(6), October 1999.
Microsoft Visual Studio 6.0 Enterprise Edition review.
C Vu 11(6), October 1999. (Also some GNU/Linux tools that worked better.)
Book review: Lingo Sorcery (2nd ed) by Peter Small
C Vu 11(6), October 1999.
Difference Structures in C/C++.
C Vu 11(5), August 1999. (on writing C or C++ in the style of Prolog)
A Personal View.
C Vu 11(5), August 1999. (on being made anxious by university careers-service rhetoric)
What's In a Struct?
C Vu 11(4), June 1999.
Using Bit Patterns.
C Vu 11(4), June 1999.
Tools and Un-smart Pointers.
C Vu 11(4), June 1999.
Pointers in Hyperspace.
C Vu 11(4), June 1999.
Compile Time Assertions in C Revisited.
C Vu 11(4), June 1999.
Writing for Voice Synthesisers.
C Vu 11(3), April 1999.
Looking Stupid v Being Stupid.
C Vu 11(3), April 1999. (on admitting one has learned from mistakes rather than covering them up)
Boolean Assumptions.
C Vu 11(3), April 1999.
C Vu 11(3), April 1999.
Book review: A Programmer's Guide to Sound by Tim Kientzle
C Vu 11(3), April 1999.
Book review: Software Reliability Engineering by John Musa
C Vu 11(3), April 1999.
Book review: Interface Design: The Art of Developing Easy-to-Use Software by Peter Bickford
C Vu 11(3), April 1999. (Includes some accessibility-related aggression, plus author's response. I'm glad to see Apple improved since then.)
Naming Conventions for Spoken Readability.
C Vu 11(2), February 1999.
Security Implications of Running a Web Gateway.
C Vu 11(1), November 1998.
A Letter on Java.
C Vu 11(1), November 1998. (Character-encoding handlers in early versions)
Ming GNU C++ and Programmer's File Editor review.
C Vu 11(1), November 1998.
An Overflow Problem.
C Vu 10(3):37-40, March 1998. Also: A Random Missed Message. C Vu 8(4):21-22, May 1998 (plus various responses from others in the same issue)
Symptoms of a Composer Doing Too Much With Computers.
C Vu 10(3):12, March 1998.
Why I left GeoCities.
C Vu 10(3):15, March 1998. (Their newly-added popup advertising spoiled my page's accessibility for blind people.)
Bill Gates' Lecture at Cambridge (report).
C Vu 10(2):4-5, January 1998.
A Little Thought on Qualifications.
C Vu 10(1):44-45, November 1997.
Automatic Optimisation Aids.
C Vu 10(1):45-46, November 1997.
Book review: Beyond MIDI: The Handbook of Musical Codes.
C Vu 9(6):72-73, September 1997.
Palmtop C++
C Vu 9(5):38-40, July 1997. (This was about programming the Psion Series 3a)
Dr Dobb's Journal (report).
C Vu 9(5):6-7, July 1997. Also C Vu 9(6):6-7, September 1997; C Vu 10(1):8-10, November 1997; C Vu 10(2):15, January 1998.
ACCU and the Disabled.
C Vu 9(4), May 1997.
The "Professional Touch": Using Double Bezier Cubics.
C Vu 9(4), May 1997. (Trying to improve my music program's font)
Introducing PCM.
C Vu 9(4), May 1997.
C Vu 9(3):7-9, March 1997. (Responses were in the following issue)
Automatic Calibration and "Heuristic" Programming.
C Vu 9(3):10, March 1997.
Computer Music Composition.
C Vu 8(6):40-41, September 1996.
HP LaserJet Programming (review).
C Vu 8(5):62, July 1996.
Writing Applications for the Visually Impaired.
C Vu 8(4):26-28, May 1996.
Parallel and Distributed Background Processing.
C Vu 8(4):30-32, May 1996.
Multi-Player Games.
C Vu 8(4):24-26, May 1996. (I wrote a networked text-adventure for blind students)
Using Persistent Data.
C Vu 8(3):34, March 1996.
Increase your Program's Execution Speed?
C Vu 8(1):27-32, November 1995.
Various learning discussions (in letters to the editor etc)
"Write First---Join After" C Vu 7(4), May 1995; C Vu 7(5):30-32, July 1995; C Vu 7(6):44-47, September 1995; C Vu 8(1):12-13, November 1995; C Vu 8(3):-56, March 1996; C Vu 8(4):15, May 1996; C Vu 9(2), January 1997; C Vu 9(4), May 1997; C Vu 9(6):18-19, September 1997; C Vu 10(1):16-18, November 1997.

All material © Silas S. Brown unless otherwise stated.
Acrobat is an Adobe trademark.
Android is a trademark of Google LLC.
AppEngine is possibly a trademark of Google LLC.
Apple is a trademark of Apple Inc.
Debian is a trademark owned by Software in the Public Interest, Inc.
GitHub is a trademark of GitHub Inc.
HTC and Touch are trademarks of HTC Corporation.
Java is a registered trademark of Oracle Corporation in the US and possibly other countries.
Linux is the registered trademark of Linus Torvalds in the U.S. and other countries.
Microsoft is a registered trademark of Microsoft Corp.
Python is a trademark of the Python Software Foundation.
Raspberry Pi is a trademark of the Raspberry Pi Foundation.
Windows is a registered trademark of Microsoft Corp.
Any other trademarks I mentioned without realising are trademarks of their respective holders.