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. 

Monday, January 11, 2016

One technique to efficiently craft your annual review

Caveat: A broader career direction discussion should talk about a 5 year Development Plan. 

The focus here is on the yearly focal/review and how to get it done efficiently.

The Focal algorithm:
  1. Open your monthly/weekly/whatever status reports and merge them into a single document. Close the monthly docs. this gives you a compression opportunity, often you will find some redundancies or things that don't matter as much as you thought they did. use a smaller font, clean things up so they are easy for you to read/work through. 
  2. Read through/think about this collection of activity, what are the 2,3,or 4 buckets they can fit in to tell your end of year narrative of your key accomplishments. what really are probably better suited to go into the section on strengths?
  3. Take a break and go do something else for awhile.
  4. Think about your proposed buckets after you've had a you like them? how do they align with your group and corporate charter? If you like them start to build out your focal sheet based on these buckets, cutting/pasting from your list created in [1] into the main Focal worksheet(s). Spend some time thinking about these buckets, the titles will provide the anchor for the most important part of the document. 
  5. Now you have a list that is too big and not coherent, but all of your work is in the appropriate buckets and you've made some hard decisions about where things go.
  6. Compress each bucket to fit into your corporate format. it is usually some form of  ~3 accomplishments, 3 strengths, 3 areas of development
I am writing this down because each year i seem to reinvent the same process forgetting what i did the year before until about 30-40% through the process then i remember 'Wait, I did it this way last year?'. :)

This is just the practical part of getting your review complete. One should also use this time to take a 'big think' about your 5 year plan and how the work you've done in those years aligns with what is in that list. What needs changed? What would you do different? What rathole did you go down that you want out of? Take some time to really think about where your career is going and how to course correct where needed as topics with your manager. Use the section of 'Areas of Improvement' as a way to drive that into your development for the next year and your development plan.

Good luck!