Back to Silas S. Brown's home page
C Vu articles
I wrote for the ACCU.org 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 later being misjudged by an overly-hasty potential employer or similar). The journal's style has changed a bit since the early days. Here is a list of my articles for reference.- The Full-Time Fallacy
- C Vu, 36(6):4-5, January 2025.
- Eleven C++11 Features Worth Knowing About
- C Vu, 36(5):6-7, November 2024.
- Blaming Organisational Incompetence on Inclusivity?
- C Vu, 36(4):7-9, September 2024. (Crowdstrike, care in coding, Twitter/X toxicity & unintended consequences of engagement optimisation)
- Adding Python Scripts to PyPI.
- C Vu, 36(3):8, July 2024.
- Long Lines of Python.
- C Vu, 36(3):3, July 2024.
- Mental models in design.
- C Vu, 35(5):3-4, November 2023.
- Standard libraries are faster than you think.
- C Vu, 35(3):10, July 2023. (vector implementations and Box64-style emulation)
- Avoiding 4 in Customer-facing Numbers.
- C Vu, 35(2):5-6, May 2023. (modifying C++17
charconv
base-9 for tetraphobia) - Developing on a Chromebook.
- C Vu, 34(5):8, November 2022.
- On Code Optimisation Part 1 in CVu 34.3.
- C Vu, 34(4):9, September 2022.
- Inline Confusion.
- C Vu, 34(3):7, July 2022. (why use
static
inlines in plain C) - A C++ Quiz.
- C Vu, 33(6):9-10, January 2022.
- Working for Equity.
- C Vu, 33(4):7, September 2021. (on entrepreneurs' recruitment issues)
- The Tips Jar.
- C Vu, 33(3):13, July 2021. (`fix a class of faults' + partial Python 3 on RISC OS)
- Avoid "proofreading golf".
- C Vu, 33(2):8, May 2021.
- Revival of RISC OS?
- C Vu, 33(2):6, May 2021. (for introductory coding on low-end Raspberry Pi models, but Python still on 2 and gcc still pre-C++11)
- Machine-sensitive Makefiles.
- C Vu, 33(2):4, May 2021. (via conditional macros set by shell file-existence tests)
- Professionalism in programming: does it translate?
- C Vu, 33(2):7, May 2021. (敬业程序员协会/敬業程序員協會)
- Making a FreeBSD Port.
- C Vu, 32(6):3-4, January 2021.
- Is Gitee China's GitHub?
- C Vu, 32(5):5, November 2020.
- GPL out, Apache in.
- C Vu, 32(5):11-12, November 2020. (GPL now widely misunderstood as denying commercial use of code)
- Book review: Girl Decoded by Rana el Kaliouby and Carol Colman.
- C Vu, 32(4):23-24, September 2020.
- Jumping around in Emacs.
- C Vu, 32(4):12, September 2020.
- When Will Python 2 End: An Update.
- C Vu, 32(3):9, July 2020. (Python 2 due to be in Ubuntu 20.04 till 2025 or paid till 2030; unclear how long Pip's servers will support pip 20 after 2021; Python 2 was going to be in CentOS till 2029---update December 2020: CentOS changed this to end-2021 and RHEL8/OEL8 to 2024)
- Static analysis in GCC and Clang.
- C Vu, 32(3):11, July 2020.
- The trouble with GitHub forks.
- C Vu, 32(3):10, July 2020. (The path of least resistance is to let them go out of date. Update: by November GitHub had implemented a way to send pull requests downstream to forks, and in 2021 made "Fetch upstream" a UI option.)
- Thoughts on ``Computational Thinking''.
- C Vu, 32(2):8-10, May 2020. (Pitfalls of trying to assess it in children; see also correction in C Vu, 32(3):20, July 2020)
- Adding Python 3 Compatibility to Python 2 Code.
- C Vu, 32(1):7-8, March 2020.
- "HTTPS Everywhere" Less Harmful Now.
- C Vu, 32(1):5-6, March 2020. (A follow-up to my 2016 article. The protocol has improved and public Wi-Fi's treatment of HTTP has worsened, but low-income users on old devices are still a concern.)
- Letter to the Editor.
- C Vu, 32(1):20, March 2020.
- 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. Current streak 1517; previous streak 1026)
- 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.)
- 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. (Update: beware Thonny 4 contains a pro-Ukraine message which might get you in trouble in some countries; Thonny 3 is not affected)
- A Hollywood Take on Dangling Pointers?
- C Vu, 29(2):6-7, May 2017. (A parody film script to explain a danger of
cstr
) - 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()
vsrandom()
, 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 unexpected things happen e.g. compiler changes precision on register spill)
- 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):32, 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. (fax, SMS, textphone, dialer)
- 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):42, February 2005 (Web only; printed in C Vu, 18(3):39, April 2006).
- 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):36, 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
andshift
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):34, June 2003. (A bad book)
- 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-27, August 2002. Also: 4DML Revisited. C Vu, 14(5):23, October 2002.
- Quick thought on Ruby.
- C Vu, 14(4):11, August 2002. (it's more like Perl than Python)
- 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.
- Emacs (long-term 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.
- Apache Cocoon and XML Publishing.
- C Vu, 12(6), November 2000.
- ED: Should You Know It?
- C Vu, 12(6), November 2000. (Also correction in C Vu, 13(1), February 2001.)
- Visual Control and COM.
- C Vu, 12(5), September 2000.
- Appropriate Teaching.
- C Vu, 12(5), September 2000.
- SDF and FunnelWeb review.
- C Vu, 12(5), September 2000.
- (Shell script interfaces in) LUCI
- C Vu, 12(5), September 2000.
- Burning Your Own CDs.
- C Vu, 12(5), September 2000.
- 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.
- Book review: Business Modelling with UML by Hans-Erik Erikson & Magnus Penker
- Overload 39, 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)
- An Issue of Patents.
- C Vu, 12(3), May 2000. (on adequate disclosure to prove prior art)
- Reinventing Wheels.
- C Vu, 12(3), May 2000.
- 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.
- Domain Name Registration.
- C Vu, 12(2), March 2000. (negative experience helping a friend register a
.net
domain) - Doc++ review.
- C Vu, 12(1), January 2000.
- Is there a "best language"?
- C Vu, 12(1), January 2000.
- Syntax Highlighting.
- C Vu, 12(1), January 2000.
- Commenting Your Work.
- C Vu, 11(6):18, September 1999.
- On Configurability and Consistency.
- C Vu, 11(6):10-11, September 1999.
- Microsoft Visual Studio 6.0 Enterprise Edition review.
- C Vu, 11(6):70-76, September 1999. (Also some GNU/Linux tools that worked better)
- Book review: Lingo Sorcery (2nd ed) by Peter Small.
- C Vu, 11(6):67, September 1999.
- Difference Structures in C/C++.
- C Vu, 11(5):13-14, July 1999. (on writing C or C++ in the style of Prolog)
- A Personal View.
- C Vu, 11(5):10-12, July 1999. (on being made anxious by university careers-service rhetoric)
- What's In a Struct?
- C Vu, 11(4):23-33, May 1999.
- Using Bit Patterns.
- C Vu, 11(4):47-48, May 1999.
- Tools and Un-smart Pointers.
- C Vu, 11(4):50-51, May 1999.
- Pointers in Hyperspace.
- C Vu, 11(4):48-49, May 1999.
- Compile Time Assertions in C Revisited.
- C Vu, 11(4):51-52, May 1999. (Jon Jagger made a correction to this in C Vu 11(5):39-42, July 1999.)
- So You Want to Do Research?
- C Vu, 11(4):15, May 1999. (The 10 funniest responses to my informal enquiries)
- Writing for Voice Synthesisers.
- C Vu, 11(3):13, March 1999.
- Looking Stupid v Being Stupid.
- C Vu, 11(3):6-7, March 1999. (on admitting one has learned from mistakes rather than covering them up)
- Boolean Assumptions.
- C Vu, 11(3):18, March 1999.
- Assumptions.
- C Vu, 11(3):12-13, March 1999.
- Book review: A Programmer's Guide to Sound by Tim Kientzle.
- C Vu, 11(3), March 1999 (Web only, not in printed issue).
- Book review: Software Reliability Engineering by John Musa.
- C Vu, 11(3):64-65, March 1999.
- Book review: Interface Design: The Art of Developing Easy-to-Use Software by Peter Bickford.
- C Vu, 11(3):65-67, March 1999. (Includes some accessibility-related aggression, plus author's response. I'm glad to see Apple improved since then.)
- A Personal View of Microsoft Visual C++
- C Vu, 11(3):70-71, March 1999.
- Naming Conventions for Spoken Readability.
- C Vu, 11(2):26-28, January 1999.
- The Scope of ACCU.
- C Vu, 11(2):4, January 1999. (on a `C++ vs Java' discussion)
- letter about Japanese encodings
- C Vu, 11(2):15-16, January 1999.
- TeraTerm Pro 2.3 & Various X servers (review).
- C Vu, 11(2):70-72, January 1999.
- Security Implications of Running a Web Gateway.
- C Vu, 11(1):36-38, November 1998.
- A Letter on Java.
- C Vu, 11(1):28-29, November 1998. (Character-encoding handlers in early versions)
- Ming GNU C++ and Programmer's File Editor review.
- C Vu, 11(1):59-61, 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.
- Randomness.
- 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 at New College Worcester)
- 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.
Copyright and Trademarks
All material © Silas S. Brown unless otherwise stated.Acrobat is an Adobe trademark.
Android is a trademark of Google LLC.
Apache is a registered trademark of The Apache Software Foundation, which from February to July 2023 acknowledged the Chiricahua Apache, the Choctaw Apache, the Fort Sill Apache, the Jicarilla Apache, the Mescalero Apache, the Lipan Apache, the Apache Tribe of Oklahoma, the Plains Apache, the San Carlos Apache, the Tonto Apache, the White Mountain Apache, the Yavapai Apache and the Apache Alliance.
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.
FreeBSD is a registered trademark of the FreeBSD Foundation.
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.
RISC OS is a trademark of Pace Micro Technology Plc which might now have passed to RISC OS Ltd but I was unable to find definitive documentation.
Twitter and Tweet are trademarks of Twitter Inc.
Unix is a trademark of The Open Group.
Wi-Fi is a trademark of the Wi-Fi Alliance.
Windows is a registered trademark of Microsoft Corp.
Any other trademarks I mentioned without realising are trademarks of their respective holders.