Wednesday, November 16, 2016

doxygen getting started

i'm sure i'll add more to this later, but just spent an hour getting this up and running and don't want to forget this:

when creating the doxyfile.txt for your project, if you want to add (for example) .cl files as input, you might need to make the addition in two places. first to tell it to look for these types of files and the second is how you want these files treated when parsing the marked up file: EXTENSION_MAPPING as well as FILE_PATTERNS variable. Also don't forget to point the OUTPUT_DIRECTORY and INPUT to the appropriate locations.


and add this to FILE_PATTERNS = blah blah \ *.cl

Your file won't be parsed if you don't add this to the top of the .cl file (self referential statement):

/*! \file
\brief A test file class.

A more detailed class description.

Running Doxygen (basics):

To run doxygen (assuming it has been added to your path) you can traverse to the directory that the template you generated lives (doxyfile.txt) and it will grab the template. Not recommending this for production but just for getting things up and running.

Monday, August 22, 2016

Creating Labels for Excel Columns

If you want the columns to have a label, the term you are looking for is 'categories', which does make sense, just not the way i was thinking about it, usually 'x-axis, y-axis or something like that in my head'

To give your columns names, select the little funnel looking icon, go to 'horizontal (category) axis labels' select 'edit', then select the names you want each column to have from your spreadsheet and the fields will populate as you expect.

just another note for my own personal FYI.

Sunday, July 10, 2016

Creating a very primitive installation tool: Using winzip to create archives that preserve directory structure

Even when i do an internal project, i like to create a quick installer package for anybody else who might want to use the tool(s). Winzip has a nice command line interface to make this happen, however it took an hour poking through documentation (and 7z proved non-obvious as to how to do it, and online notes suggested the developer is not too interested in making this use case about it on

The specific challenge is the right parameters to get the entire directory structure when you unzip at the destination. To me, this would be quite a useful mode of any zip/archive tool, yet the default is baffling a flat directory structure, surprise! Even using the GUI default modes does the expected it would seem NOT preserving the directory structure is the uncommon case, but that rant is not why i am writing this note for later.

So, here's the scoop:
using winzip, archive using this:
"c:\program files\winzip\wzzip" -P -r @BenchFileList.txt

where BenchFileList.txt has a format like this:

".\docs\GPU Architectures.docx"



and you will get what you expect: when you unzip you will have a directory structure such that your solution and project files are where they are expected to be.


Wednesday, July 06, 2016

migrating C functions when code refactoring

functions are default extern, so you don't need the extern on them when you move the declaration to a header file and definitions to a new file.

when adding the functions to the new cpp file, move the full function over, put the declaration in the header, include the header in the old file you are migrating from but still intend to reference the function. include the new header in the old function.

for the new .cpp file with the code that has migrated from the old .cpp to the new .cpp, include the new header file.

include the .cpp file for the new code in the project as well. or just wait until visual studio complains you forgot this step, come here to re-read this blog post, then do it :)

TODO: add an example here for clarity, but not tonight :)

structs, typedefs of a global struct when code refactoring in C

i often end up in a situation where i've prototyped something in a small testspace then things work out and you want to reuse those tools as you build out another project in the same solution. i've run into this twice in the past year and spent 10 minutes resolving a misunderstanding of intent between the compiler and myself so i'm posting here to save time in the future. note this is for an internal test utility and not product code which shouldn't have any (or very few) globals in the first place, so i'm not putting this here as a shining example of how to do something but instead as how i resolve this specific issue.

here's the refactoring steps:

1. put the typedef and structure in the header file.

typedef struct foo_s { } foo_t;

2. put the declaration into one of the files (the central utility file for example):

foo_t foo;

3. when you want to reference the variable foo in another .c file, use this:

extern foo_t foo;

Tuesday, May 03, 2016

Where does Ashes of the Singularity store benchmark data?

C:\Users\adam_\Documents\my games\Ashes of the Singularity\Benchmarks

Sunday, May 01, 2016


log.cmd file location

C:\Program Files (x86)\Windows Kits\10\Windows Performance Toolkit\gpuview

location to download from:
click on 'windows assessment ....' link in first sentence of page:

you only need the windows performance toolkit, a few hundred MB vs. all the 6GB+ of what they try to convince you to download by default.

Sunday, April 24, 2016

Reminders for a vegas trip

limited number of wifi devices at some hotels
excess 3$ credit card fee on taxis
resort fee for hotel
no hot water making capability in some rooms, bring something to heat water

Wednesday, February 10, 2016

Example of how to configure remote debug session with a simple hello world program. Also installed Visual Studio 2013 on the remote machine. Also from a mapped network drive.