Entries

06/09/2017: Why I don't call software 'technology'
05/24/2017: Git subtrees
05/23/2017: Git submodules
04/23/2017: Platforms for reliable research
08/29/2016: D3: a travelogue
08/28/2016: Dataviz packages: a travelogue
08/08/2016: Murphy bed projects
08/01/2016: Version control as narrative device
12/06/2015: Apophenia v1.0
06/07/2015: Editing survey data (or, how to deal with pregnant men)
03/12/2015: Banning the hypothesis test
03/03/2015: Overlapping bus lines
01/23/2015: m4 without the misery
01/03/2015: A version control tutorial with Git
12/09/2014: A table of narratives and distributions
11/05/2014: Why I capitalize distribution names
11/03/2014: The formalization of the conversation in a social network
10/30/2014: The difference between Statistics and Data Science
10/23/2014: Bayes v Kolmogorov
07/14/2014: Microsimulation games, table top games
07/12/2014: Intercoder agreement: the R script and its tests
05/09/2014: Testing statistical software III: the contract
05/05/2014: Testing statistical software II: there's a theorem somewhere
05/03/2014: Testing statistical software I: units
03/09/2014: Regular Expression parsing in C
02/19/2014: The one line of C code that will make your program ten times faster
02/17/2014: A short asprintf implementation
12/22/2013: A Julia wrapper for Apophenia
12/09/2013: On Julia
10/07/2013: Another two-line Logit analysis
09/26/2013: Interrater agreement via entropy
09/22/2013: Interrater agreement
09/09/2013: Making a data structure comfortable
08/30/2013: Dealing with arrays of text
08/26/2013: Vector or matrix
08/21/2013: Mapping functions
08/17/2013: Interacting with C code
08/15/2013: De-crosstabbing
08/13/2013: The data set: views of a C structure
08/09/2013: Another C macro trick: parenthesized arguments
08/05/2013: A Logit and some elasticities
08/04/2013: Do what I mean
08/01/2013: A test for independence
07/28/2013: Let us not forget the basics
07/24/2013: Uncertain ABM settings
07/21/2013: Bayesians and ABMs
07/18/2013: An ABM in the box
07/15/2013: RNG-based models
07/12/2013: The model asserts the likelihood
07/10/2013: The setup
07/09/2013: Hierarchies and chains
07/06/2013: A sample transformation: truncation
07/02/2013: Transforming models
06/29/2013: What goes into a model?
06/26/2013: Uniform model forms and microsimulations
04/04/2013: Emulating others and fat-tailed distributions
03/22/2013: My coworkers
01/19/2013: Frequentist, Bayesian, and why I don't care
01/16/2013: In memory and on-disk databases for SQLite
01/16/2013: Raking with structural zeros
12/08/2012: Raking to complete missing data
11/25/2012: Synthesis via raking
11/19/2012: Raking
11/17/2012: The book version
03/22/2012: End tip mode
03/20/2012: How to learn a new programming language
03/18/2012: Tip 84: Use m4 to automate OOP boilerplate
03/16/2012: Tip 83: Use m4 in the middle of your documents
03/14/2012: Tip 82: Insert NA, NaN, and other markers into your data set
03/12/2012: Tip 81: Deprecate floats
03/10/2012: Tip 80: Send in parameters fast
03/08/2012: Tip 79: Try a multiplexer
03/04/2012: Tip 78: Use mmap for gigantic data sets
03/02/2012: Tip 77: Attach databases for greater speed
02/29/2012: Tip 76: Bootstrap!
02/27/2012: Tip 75: Compile C for Windows
02/27/2012: Tip 74: Use Unicode libraries
02/25/2012: Tip 73: Store Unicode in UTF-8
02/23/2012: Tip 72: Export one-off variables
02/21/2012: Tip 71: Don't confuse pointer declarations with pointer uses
02/19/2012: Tip 70: Parse text with strtok
02/17/2012: Tip 69: Use a makefile for everything
02/15/2012: Tip 68: Write literate code
02/13/2012: Tip 67: Document your code with Doxygen
02/11/2012: Tip 66: Protect threaded resources with mutexes
02/09/2012: Tip 65: Easy threading with Pthreads
02/08/2012: Tip 64: Consistency-check external variables
02/05/2012: Tip 63: Seamlessly extend C structures
02/03/2012: Tip 62: Get to know configure.ac
02/01/2012: Tip 61: Get to know Makefile.am
01/30/2012: Tip 60: Package your code with Autotools
01/28/2012: Tip 59: Use a package manager
01/26/2012: Tip 58: Destroy your inputs
01/24/2012: Tip 57: Base your code on pointers to objects
01/21/2012: Tip 56: Enums---don't bother
01/19/2012: Tip 55: Mark input pointers with const
01/17/2012: Tip 54: Put functions in your structs
01/15/2012: Tip 53: Count references
01/13/2012: Tip 52: Mark the owner of your data
01/11/2012: Tip 51: Construct and destruct your structs
01/09/2012: Tip 50: Optional and named arguments
01/07/2012: Tip 49: return multiple items from a function
01/05/2012: Tip 48: Limit typedef scope
01/03/2012: Tip 47: static versus global variables
01/01/2012: Tip 46: Typedefs save the day
12/30/2011: Tip 45: Structures get copied
12/28/2011: Tip 44: Brevity is the soul of incomprehensibility
12/26/2011: Tip 43: Wrap substructures in parent structures
12/24/2011: Tip 42: Don't bother with union
12/22/2011: Tip 41: Initialize arrays and structs with zeros
12/20/2011: Tip 40: Designated initializers
12/18/2011: Tip 39: Know the constraints of C structs
12/16/2011: Tip 38: Use Valgrind to check for errors
12/14/2011: Tip 37: Rename things with pointers
12/12/2011: Tip 36: Try a new shell
12/10/2011: Tip 35: Use the shell to test for files
12/08/2011: Tip 34: Use the shell's for loops to operate on a set of files
12/06/2011: Tip 33: Replace shell commands with their outputs
12/04/2011: Tip 32: Get to know your shell
12/02/2011: Tip 31: Use the database for configuration info
11/30/2011: Tip 30: Use Apophenia to read in data and configuration info
11/28/2011: Tip 29: Preprocessor tricks!
11/26/2011: Tip 28: Vectorize a function
11/24/2011: Tip 27: Foreach in C
11/22/2011: Tip 26: Safely terminated lists
11/20/2011: Tip 25: Variadic macros
11/18/2011: Tip 24: Compound literals
11/16/2011: Tip 23: The limits of sizeof
11/14/2011: Tip 22: all the casting you'll need
11/12/2011: Tip 21: become a better typist
11/10/2011: Tip 20: get to know static, automatic, manual memory
11/08/2011: Tip 19: define persistent state variables
11/06/2011: Tip 18: Declare arrays when you know their size
11/04/2011: Tip 17: Define a string type
11/02/2011: Tip 16: All the pointer arithmetic you need to know
10/31/2011: Tip 15: get GDB to print your structures
10/29/2011: Tip 14: easier interrogations with GDB variables
10/27/2011: Tip 13: Use a debugger
10/25/2011: Tip 12: Use asprintf to extend strings
10/24/2011: Tip 11: String literals
10/21/2011: Tip 10: Use asprintf to make string handling less painful
10/19/2011: Tip 9: Compile C programs via here script
10/17/2011: Tip 8: Use here scripts
10/15/2011: Tip 7: Include header files from the command line
10/13/2011: Dennis Ritchie
10/11/2011: Tip 6: Aggregate your includes
10/09/2011: Tip 5: Initialize wherever the first use may be
10/07/2011: Tip 4: Don't return zero from main
10/05/2011: Tip 3: Use libraries (even when your sysadmin doesn't want you to)
10/03/2011: Tip 2: Use libraries
10/01/2011: Tip 1: use a makefile
09/29/2011: Tip-a-day mode
09/15/2011: Leaving SAS: the script
09/07/2011: Scope in C is e-z
09/05/2011: Why you should teach your stats students C
08/14/2011: Labels, gotos, switches, and breaks
05/22/2011: The great packaging problem---the hard part
05/16/2011: The great packaging problem--the easy part
04/18/2011: Typesetting code listings
04/09/2011: Supreme Court rules against overreliance on p-values
04/04/2011: Powerful software!
03/31/2011: Structs versus dictionaries
03/24/2011: Structures
10/24/2010: Multiple imputation's setting
09/26/2010: Multiple imputation
04/22/2010: Object-oriented programming in C
02/10/2010: Testing the model using the model.
02/09/2010: Keeping paper current
12/19/2009: The statistics style report
12/12/2009: git status interactive
11/21/2009: The schism, or why C and C++ are different
11/08/2009: Yet another git tutorial
11/01/2009: Easy re-typing with designated initializers
10/19/2009: Computing history and its scars
10/11/2009: Causality and ethics
07/20/2009: Programming your blog
07/02/2009: Probability versus likelihood
06/10/2009: Data is typically not a plural
06/03/2009: Better variadic functions for C
05/30/2009: Alternatives to Word
05/21/2009: Word and standards
05/18/2009: The ergonomics of the down arrow
05/14/2009: Intuition versus ease of use
05/11/2009: Views on a paradigm
05/07/2009: Why Word is a terrible program
05/04/2009: A general model object
05/01/2009: Bringing theoretical models to data
04/29/2009: Operator overloading
04/22/2009: Making integers two-dimensional
04/13/2009: Using a program as a library
04/08/2009: Your genetic data--ethics
04/06/2009: Your genetic data
04/03/2009: Freakophenia
03/30/2009: Breaking down the pipeline
03/24/2009: Crowdsourcing data mining
03/18/2009: Dataviz
03/16/2009: Too many tests
03/13/2009: Parallels II
03/08/2009: Moore's law won't save you
03/06/2009: Today, I am a blog.