Matthew R. Bisson

Interesting Links

Rather than passing bookmarks around from one browser to another, and one computer to another, I keep my most traveled resources here. I welcome anyone’s suggestions for other sites to visit on a regular basis — particularly in the C/C++ “best practices” area.

Online Software Development Tools

Every once in a while, a (web-based) tool comes along that makes software development a little easier. I don’t know how we all got by prior to the existence of these sites.

  • Godbolt Compiler Explorer has gotten so good over the years. You can enter C and C++ code, and the website compiles it as you type, using the compiler of your choice, and maps lines of source to the emitted assembly instructions. It’s amazing, and in invaluable tool for assessing if the code you write actually does what you expect.
  • C++ Insights is an amazing, and little-known tool. This takes C++ source, and translates it to C++ source with the implicit code laid out explicitly. Lambda constructors, range-based-for temporaries, and even values between designated initializers all show up on the emitted output.
  • Wandbox is a way to compile and run via a web interface. It supports a ton of different languages, so you don’t need to go about installing (for example) a Haskell compiler on your workstation, just to check someone’s code.
  • GitHub, as you probably already know, provides a cloud-based home for Git source code repositories. My account lives here.

Software Reference and Best Practices

If it’s espousing a good software engineering practice (with concrete reasons and examples), or if it’s a reference that I simply refer to often enough during development, I have placed it here.

Best Practices

Here are sets of rules to live by in the world of software engineering.

  • Between the LLVM Coding Standards and the Google C++ Style Guide, any project at least has a good starting point for how its engineers should approach the source code.
  • Abseil C++ Tips of the Week provides some excellent C++ advice, and even if you don’t agree with the advice, it’s almost always worth the read.
  • Herb Sutter’s blog, Sutter’s Mill and his Guru of the Week (GotW) sites provide valuable C++ news and insights.
  • Visit the ISO C++ landing page for various bits of C++ evangelization. This site not only has information about the Standardization Committee, but videos from C++ developer conferences, and highlighted articles.

References

This is mostly a set of API references for libraries I use all the time.

  • cppreference.com is the best, most complete C++ reference online today. It also makes attempts to do the same for C, but with slightly less success in my opinion.
  • Boost is a frequent incubator for future C++ Standard Library code, but more than that, it has some more complicated algorithms and data structures that are very important to avoid writing from scratch. More interestingly than the project landing page, the Boost Library Documentation starts here.
  • I participate both on Stack Overflow (for C and C++ questions) and Emacs Stack Exchange on occasion.
  • I refer to the Protobuf C++ API quite often. This package does a nice job of solving the tedium of packaging data and sending it over “the wire” in such a way that it addresses marshaling, version compatibility, and even permitting various programming languages.
  • The IBM AIX Documentation is incredibly complete, and useful for basically any *NIX operating system for the most part. For example, if you look at man pages for shell commands, they are often quite lacking, but these AIX documents provide practically all the details you need.

Open Source Software

Here, I group links to open source projects that I use on a daily basis. The documentation is probably less traveled than the sections above, but no less important.

  • I love Gentoo Linux both because it’s incredibly flexible and optimizable, and because I learn so much about how Linux works by administering it.
  • GNU Emacs is my editor of choice. Here is the Windows installer (if you don’t have Visual Studio installed), and the MacOS version is pretty easy to install with Homebrew.
  • I can’t decide if I like (security-centric) OpenBSD or (easy to use) FreeBSD best.
  • The Pro Git book is available for free online, and it’s often pretty informative — especially if you’re just getting started with Git.
  • I try to use Doxygen for every project I write. When documentation is separate from the code, it has a higher likelihood of becoming incorrect, and Doxygen helps keep everything close to the code.
  • On the topic of documentation, you can embed UML diagrams and more in your Doxygen output with PlantUML.
  • As I have mentioned many times: typeset a document properly if you actually expect it to be read by someone else. I use LATEX for this purpose.
  • FVWM is my preferred *NIX window manager both because it’s very simple, and because it’s very customizable. For customization, most everything you need is in the man pages.

Miscellany

These are news sites, references beyond software development, or really anything else that I visit enough times.

  • The Washington Post is a reputable news source, which is important these days.
  • The Onion is a disreputable news source, which is important these days.
  • BBC News presents news from outside the perspective of a United States publication… which is important these days.
  • Slashdot has summarized the tech news for me going way back.
  • Having the Boston Red Sox Schedule handy means I don’t miss any games after a busy day.
  • Wikipedia is an obvious choice, and I probably don’t need a link to it. It’s shorter to just go here than to look up “search term +wikipedia.org”, though.
  • The IMDB site is very not great, but I often search directly here for “where is that person from?” when watching TV.
  • The Hubble Telescope images have often decorated my computer background or office walls.
  • Well, here’s the US Naval Observatory Master Clock, if you’d like to set your watch now.
  • OLGA (The Online Guitar Archive): Guitarists listen to their favorite songs and write down their best guess of how they are played. This is a good place to learn songs if you don’t have the time to transcribe a song yourself. The major record companies have decided that people figuring out how to play a song on their guitar cuts into their profits, and has sued OLGA to shut down the site.
  • This one is stupid: Britney Spears Physics. An enlightening guide to semiconductor physics from Britney herself. You will learn.1

1 For the record, one only ever goes here once as a quick laugh.

Interesting Links Page - Interesting Links Page - Interesting Links Page - Interesting Links Page - Interesting Links Page - Interesting Links Page - Interesting Links Page - Interesting Links Page - Interesting Links Page - Interesting Links Page - Interesting Links Page - Interesting Links Page - Interesting Links Page - Interesting Links Page - Interesting Links Page - Interesting Links Page - Interesting Links Page - Interesting Links Page - Interesting Links Page - Interesting Links Page - Interesting Links Page - Interesting Links Page - Interesting Links Page