<?xml version="1.0" encoding="UTF-8"?>
 <rss version="2.0" 
    xmlns:content="http://purl.org/rss/1.0/modules/content/"
    xmlns:wfw="http://wellformedweb.org/CommentAPI/"
	xmlns:dc="http://purl.org/dc/elements/1.1/">
<channel>
	<title>Modeling with Data: the blog</title>
	<link>http://modelingwithdata.org/</link>
	<description>On statistical computing</description>
	<language>en</language>

<item>
	<title>Emulating others and fat-tailed distributions</title>
<content:encoded>
In my ideal world, every academic paper would have an accompanying blog entry discussing the context and motivation.
</content:encoded>
        <link>http://modelingwithdata.org/arch/00000145.htm</link>
        <guid isPermaLink="false">http://modelingwithdata.org/arch/00000145.htm</guid>
	<dc:creator>Ben Klemens</dc:creator>
        <pubDate>4 April 2013 00:00:00 +0000</pubDate>
</item>


<item>
	<title>My coworkers</title>
<content:encoded>
It's like Follow Friday but on a blog. These are all super-informative writers.
</content:encoded>
        <link>http://modelingwithdata.org/arch/00000144.htm</link>
        <guid isPermaLink="false">http://modelingwithdata.org/arch/00000144.htm</guid>
	<dc:creator>Ben Klemens</dc:creator>
        <pubDate>22 May 2013 00:00:00 +0000</pubDate>
</item>

<item>
	<title>Bayesians, Frequentists, and why I don't care</title>
<content:encoded>
This is entry #143 and the first time I've seriously mentioned the dichotomy. I'm mostly doing it because I feel like you can't have a stats blog without having at least one entry on the debate. 
</content:encoded>
        <link>http://modelingwithdata.org/arch/00000143.htm</link>
        <guid isPermaLink="false">http://modelingwithdata.org/arch/00000143.htm</guid>
	<dc:creator>Ben Klemens</dc:creator>
        <pubDate>19 January 2013 00:00:00 +0000</pubDate>
</item>

<item>
	<title>SQLite in-memory databases; database merging</title>
<content:encoded>
It's certainly a facility to be used sparingly, but I'm really liking this
deprecation-via-blog idea.  
</content:encoded>
        <link>http://modelingwithdata.org/arch/00000142.htm</link>
        <guid isPermaLink="false">http://modelingwithdata.org/arch/00000142.htm</guid>
	<dc:creator>Ben Klemens</dc:creator>
        <pubDate>16 January 2013 00:00:00 +0000</pubDate>
</item>

<item>
	<title>Raking with structural zeros</title>
<content:encoded>
Two minor technical posts today. This is the last in the series on raking, because
I feel like you can't talk about raking without mentioning structural zeros.
</content:encoded>
        <link>http://modelingwithdata.org/arch/00000141.htm</link>
        <guid isPermaLink="false">http://modelingwithdata.org/arch/00000141.htm</guid>
	<dc:creator>Ben Klemens</dc:creator>
        <pubDate>16 January 2013 00:00:00 +0000</pubDate>
</item>

<item>
	<title>Completing missing data via raking</title>
<content:encoded>
Applying a simple technique to what would otherwise be a difficult problem.
</content:encoded>
        <link>http://modelingwithdata.org/arch/00000140.htm</link>
        <guid isPermaLink="false">http://modelingwithdata.org/arch/00000140.htm</guid>
	<dc:creator>Ben Klemens</dc:creator>
        <pubDate>8 December 2012 00:00:00 +0000</pubDate>
</item>

<item>
	<title>Syntheis via raking</title>
<content:encoded>
Also, I introduce many-dimensional tables.
</content:encoded>
        <link>http://modelingwithdata.org/arch/00000139.htm</link>
        <guid isPermaLink="false">http://modelingwithdata.org/arch/00000139.htm</guid>
	<dc:creator>Ben Klemens</dc:creator>
        <pubDate>25 November 2012 00:00:00 +0000</pubDate>
</item>

<item>
	<title>Raking</title>
<content:encoded>
Finally, a blog entry on statistical methods. I just take the computing technique required to make this work for a 2 billion cell table as given.
</content:encoded>
        <link>http://modelingwithdata.org/arch/00000138.htm</link>
        <guid isPermaLink="false">http://modelingwithdata.org/arch/00000138.htm</guid>
	<dc:creator>Ben Klemens</dc:creator>
        <pubDate>19 November 2012 00:00:00 +0000</pubDate>
</item>

<item>
	<title>The book version</title>
<content:encoded>
Most of my non-work brainpower has gone toward turning the last 87 blog entries into a book. Here are some notes on that, in case you're interested. Next time: actual statistical content.
</content:encoded>
        <link>http://modelingwithdata.org/arch/00000137.htm</link>
        <guid isPermaLink="false">http://modelingwithdata.org/arch/00000137.htm</guid>
	<dc:creator>Ben Klemens</dc:creator>
        <pubDate>17 November 2012 00:00:00 +0000</pubDate>
</item>

<item>
	<title>End tip mode</title>
<content:encoded>
In which I confess my motives as a computational epistemologist. You can do a lot of modeling without knowing any computing, expanding our range of understanding in modeling is difficult without a ton of computing.
</content:encoded>
        <link>http://modelingwithdata.org/arch/00000136.htm</link>
        <guid isPermaLink="false">http://modelingwithdata.org/arch/00000136.htm</guid>
	<dc:creator>Ben Klemens</dc:creator>
        <pubDate>22 March 2012 00:00:00 +0000</pubDate>
</item>

<item>
	<title>Tip 85: How to learn a new programming language</title>
<content:encoded>
I started writing this piece on 1 April 2011 (and finished it shortly thereafter). It's a fine way to conclude this tip series.
</content:encoded>
        <link>http://modelingwithdata.org/arch/00000135.htm</link>
        <guid isPermaLink="false">http://modelingwithdata.org/arch/00000135.htm</guid>
	<dc:creator>Ben Klemens</dc:creator>
        <pubDate>20 March 2012 00:00:00 +0000</pubDate>
</item>

<item>
	<title>Tip 84: Use m4 to automate OOP boilerplate</title>
<content:encoded>
The moral here is that m4 doesn't have to be rocket science, and is a good thing 
to think about when you need boilerplate.
</content:encoded>
        <link>http://modelingwithdata.org/arch/00000134.htm</link>
        <guid isPermaLink="false">http://modelingwithdata.org/arch/00000134.htm</guid>
	<dc:creator>Ben Klemens</dc:creator>
        <pubDate>18 March 2012 00:00:00 +0000</pubDate>
</item>

<item>
	<title>Tip 83: Use m4 in the middle of your documents</title>
<content:encoded>
Over on the other screen I'm using Asciidoc as my XML-generator. But there's a lot of pass-through XML I have to write for anything out of the ordinary.
</content:encoded>
        <link>http://modelingwithdata.org/arch/00000133.htm</link>
        <guid isPermaLink="false">http://modelingwithdata.org/arch/00000133.htm</guid>
	<dc:creator>Ben Klemens</dc:creator>
        <pubDate>16 March 2012 00:00:00 +0000</pubDate>
</item>

<item>
	<title>Tip 82: insert NA, NaN, and other markers into your data set</title>
<content:encoded>
I do know one person who enthuses about semaphores. He distinguishes between `valid missing' and `missing, needs impute'. That's the only example I've found so far.
</content:encoded>
        <link>http://modelingwithdata.org/arch/00000132.htm</link>
        <guid isPermaLink="false">http://modelingwithdata.org/arch/00000132.htm</guid>
	<dc:creator>Ben Klemens</dc:creator>
        <pubDate>14 March 2012 00:00:00 +0000</pubDate>
</item>

<item>
        <title>Tip 81: Deprecate floats</title>
<content:encoded>
It's just a little odd that where everybody else says `real' I say `double'.
</content:encoded>
        <link>http://modelingwithdata.org/arch/00000131.htm</link>
        <guid isPermaLink="false">http://modelingwithdata.org/arch/00000131.htm</guid>
	<dc:creator>Ben Klemens</dc:creator>
        <pubDate>12 March 2012 00:00:00 +0000</pubDate>
</item>

<item>
        <title>Tip 80: Send in parameters fast</title>
<content:encoded>
I think this is how they did it before they invented getopt.
</content:encoded>
        <link>http://modelingwithdata.org/arch/00000130.htm</link>
        <guid isPermaLink="false">http://modelingwithdata.org/arch/00000130.htm</guid>
	<dc:creator>Ben Klemens</dc:creator>
        <pubDate>10 March 2012 00:00:00 +0000</pubDate>
</item>

<item>
        <title>Tip 79: Try a multiplexer</title>
<content:encoded>
All I do in this entry is enthuse. The only tip is: go try one.
</content:encoded>
        <link>http://modelingwithdata.org/arch/00000129.htm</link>
        <guid isPermaLink="false">http://modelingwithdata.org/arch/00000129.htm</guid>
	<dc:creator>Ben Klemens</dc:creator>
        <pubDate>8 March 2012 00:00:00 +0000</pubDate>
</item>

<item>
        <title>Tip 78: Use mmap for gigantic data sets</title>
<content:encoded>
I was inspired to write this by a seminar where a professor espoused the joys of his R package 
which handles gigantic data sets, and how unfettered research can be with his new innovation. It 
was an hour-long sell, and afterward,  I finally got him to explain how 
he makes it work: "I used mmap." 
</content:encoded>
        <link>http://modelingwithdata.org/arch/00000128.htm</link>
        <guid isPermaLink="false">http://modelingwithdata.org/arch/00000128.htm</guid>
	<dc:creator>Ben Klemens</dc:creator>
        <pubDate>6 March 2012 00:00:00 +0000</pubDate>
</item>

<item>
        <title>Tip 77: Attach databases for greater speed</title>
<content:encoded>
SQLite has spoiled me on how easy databases can be.
</content:encoded>
        <link>http://modelingwithdata.org/arch/00000127.htm</link>
        <guid isPermaLink="false">http://modelingwithdata.org/arch/00000127.htm</guid>
	<dc:creator>Ben Klemens</dc:creator>
        <pubDate>4 March 2012 00:00:00 +0000</pubDate>
</item>

<item>
        <title>Tip 76: Bootstrap!</title>
<content:encoded>
I used to feel bad about using the bootstrap so much--it just seemed too easy. But it's a great computational method, because it's so easy.
</content:encoded>
        <link>http://modelingwithdata.org/arch/00000126.htm</link>
        <guid isPermaLink="false">http://modelingwithdata.org/arch/00000126.htm</guid>
	<dc:creator>Ben Klemens</dc:creator>
        <pubDate>2 March 2012 00:00:00 +0000</pubDate>
</item>

<item>
        <title>Tip 75: Compile C for Windows</title>
	<content:encoded>
Srsly, write me if you know of anything that isn't from Microsoft and isn't POSIX-compliant at some level.
</content:encoded>
        <link>http://modelingwithdata.org/arch/00000125.htm</link>
        <guid isPermaLink="false">http://modelingwithdata.org/arch/00000125.htm</guid>
	<dc:creator>Ben Klemens</dc:creator>
        <pubDate>29 February 2012 00:00:00 +0000</pubDate>
</item>

<item>
        <title>Tip 74: Use Unicode libraries</title>
	<content:encoded>
This has to be a relatively incomplete entry, because there's an infinite range of things you could be doing with text. But I'll bet you that the plain string-handling routines on UTF-8 will cover a lot of your needed ground.
</content:encoded>
        <link>http://modelingwithdata.org/arch/00000124.htm</link>
        <guid isPermaLink="false">http://modelingwithdata.org/arch/00000124.htm</guid>
	<dc:creator>Ben Klemens</dc:creator>
        <pubDate>27 February 2012 00:00:00 +0000</pubDate>
</item>

<item>
        <title>Tip 73: Store Unicode in UTF-8</title>
	<content:encoded>
There are a lot of articles that try to keep some sort of neutral point of view about encodings, but the more I read, the less I saw any point in the other options. Ask your search engine for `UTF-16 considered harmful'.
</content:encoded>
        <link>http://modelingwithdata.org/arch/00000123.htm</link>
        <guid isPermaLink="false">http://modelingwithdata.org/arch/00000123.htm</guid>
	<dc:creator>Ben Klemens</dc:creator>
        <pubDate>25 February 2012 00:00:00 +0000</pubDate>
</item>

<item>
        <title>Tip 72: Export one-off variables</title>
	<content:encoded>
I can't believe I'm up to Tip 72.
</content:encoded>
        <link>http://modelingwithdata.org/arch/00000122.htm</link>
        <guid isPermaLink="false">http://modelingwithdata.org/arch/00000122.htm</guid>
	<dc:creator>Ben Klemens</dc:creator>
        <pubDate>23 February 2012 00:00:00 +0000</pubDate>
</item>

<item>
        <title>Tip 71: Don't confuse pointer declarations with pointer uses</title>
	<content:encoded>
I've been getting long-winded lately, so here's a short one. Note to textbook authors: is pointing this out really all that difficult?
</content:encoded>
        <link>http://modelingwithdata.org/arch/00000121.htm</link>
        <guid isPermaLink="false">http://modelingwithdata.org/arch/00000121.htm</guid>
	<dc:creator>Ben Klemens</dc:creator>
        <pubDate>21 February 2012 00:00:00 +0000</pubDate>
</item>

<item>
        <title>Tip 70: Parse text with strtok</title>
	<content:encoded>
Simple, useful, quirky, and often overlooked in favor of much heavier solutions to the problem. Regular expressions are too much machinery, and anything with `parser' in the name is one step too high in the hierarchy.
</content:encoded>
        <link>http://modelingwithdata.org/arch/00000120.htm</link>
        <guid isPermaLink="false">http://modelingwithdata.org/arch/00000120.htm</guid>
	<dc:creator>Ben Klemens</dc:creator>
        <pubDate>19 February 2012 00:00:00 +0000</pubDate>
</item>

<item>
        <title>Tip 69: Use a makefile for everything</title>
	<content:encoded>
Think of a makefile as a memo pad for procedures.
</content:encoded>
        <link>http://modelingwithdata.org/arch/00000119.htm</link>
        <guid isPermaLink="false">http://modelingwithdata.org/arch/00000119.htm</guid>
	<dc:creator>Ben Klemens</dc:creator>
        <pubDate>17 February 2012 00:00:00 +0000</pubDate>
</item>

<item>
        <title>Tip 68: Write literate code</title>
	<content:encoded>
It really does feel different. Probably not for everybody, but some of you will love it.
</content:encoded>
        <link>http://modelingwithdata.org/arch/00000118.htm</link>
        <guid isPermaLink="false">http://modelingwithdata.org/arch/00000118.htm</guid>
	<dc:creator>Ben Klemens</dc:creator>
        <pubDate>15 February 2012 00:00:00 +0000</pubDate>
</item>

<item>
        <title>Tip 67: Document your code with Doxygen</title>
	<content:encoded>
At ~114 lines, this is the longest example I've ever written (though it's under 40 lines if you cut the documentation). It's interesting to see the contrast between cURL's easy interface and libxml2's less friendly, more traditional interface.
</content:encoded>
        <link>http://modelingwithdata.org/arch/00000117.htm</link>
        <guid isPermaLink="false">http://modelingwithdata.org/arch/00000117.htm</guid>
	<dc:creator>Ben Klemens</dc:creator>
        <pubDate>13 February 2012 00:00:00 +0000</pubDate>
</item>

<item>
        <title>Tip 66: Protect threaded resources with mutexes</title>
	<content:encoded>
At this point, we've covered the 10% of the syntax that does 90% of the threading work. However, many a dissertation has been written about that last 10%; proceed cautiously.
</content:encoded>
        <link>http://modelingwithdata.org/arch/00000116.htm</link>
        <guid isPermaLink="false">http://modelingwithdata.org/arch/00000116.htm</guid>
	<dc:creator>Ben Klemens</dc:creator>
        <pubDate>11 February 2012 00:00:00 +0000</pubDate>
</item>

<item>
        <title>Tip 65: Easy threading with Pthreads</title>
	<content:encoded>
It's not the syntax that makes threading hard.
</content:encoded>
        <link>http://modelingwithdata.org/arch/00000115.htm</link>
        <guid isPermaLink="false">http://modelingwithdata.org/arch/00000115.htm</guid>
	<dc:creator>Ben Klemens</dc:creator>
        <pubDate>10 February 2012 00:00:00 +0000</pubDate>
</item>

<item>
        <title>Tip 64: Consistency-check external variables</title>
	<content:encoded>
I wrote this two days ago, after way too much time treating the wrong bug.
</content:encoded>
        <link>http://modelingwithdata.org/arch/00000114.htm</link>
        <guid isPermaLink="false">http://modelingwithdata.org/arch/00000114.htm</guid>
	<dc:creator>Ben Klemens</dc:creator>
        <pubDate>8 February 2012 00:00:00 +0000</pubDate>
</item>

<item>
        <title>Tip 63: Seamlessly extend C structures</title>
	<content:encoded>
Although it has its own annoyances, this solves so many annoyances of the standard inheritance-by-inclusion that it is very worth it.
</content:encoded>
        <link>http://modelingwithdata.org/arch/00000113.htm</link>
        <guid isPermaLink="false">http://modelingwithdata.org/arch/00000113.htm</guid>
	<dc:creator>Ben Klemens</dc:creator>
        <pubDate>5 February 2012 00:00:00 +0000</pubDate>
</item>

<item>
        <title>Tip 62: Get to know configure.ac</title>
	<content:encoded>
Autoconf: an amazing feat of dealing-with-reality engineering.
</content:encoded>
        <link>http://modelingwithdata.org/arch/00000112.htm</link>
        <guid isPermaLink="false">http://modelingwithdata.org/arch/00000112.htm</guid>
	<dc:creator>Ben Klemens</dc:creator>
        <pubDate>3 February 2012 00:00:00 +0000</pubDate>
</item>

<item>
        <title>Tip 61: Get to know Makefile.am</title>
	<content:encoded>
I've written packages for scripting languages whose requirements were much more onerous than this.
</content:encoded>
        <link>http://modelingwithdata.org/arch/00000111.htm</link>
        <guid isPermaLink="false">http://modelingwithdata.org/arch/00000111.htm</guid>
	<dc:creator>Ben Klemens</dc:creator>
        <pubDate>1 February 2012 00:00:00 +0000</pubDate>
</item>

<item>
        <title>Tip 60: Package your code with Autotools</title>
	<content:encoded>
	It took me a long time and a lot of pain to work all this out. The documentation is consistently fragmented across very interconnected components.
</content:encoded>
        <link>http://modelingwithdata.org/arch/00000110.htm</link>
        <guid isPermaLink="false">http://modelingwithdata.org/arch/00000110.htm</guid>
	<dc:creator>Ben Klemens</dc:creator>
        <pubDate>30 January 2012 00:00:00 +0000</pubDate>
</item>

<item>
        <title>Tip 59: Use a package manager</title>
	<content:encoded>
This is a part of the world that is especially in flux. Nonetheless, all of these are awesome, as are the people who do the work to maintain all of these systems.
</content:encoded>
        <link>http://modelingwithdata.org/arch/00000109.htm</link>
        <guid isPermaLink="false">http://modelingwithdata.org/arch/00000109.htm</guid>
	<dc:creator>Ben Klemens</dc:creator>
        <pubDate>28 January 2012 00:00:00 +0000</pubDate>
</item>

<item>
        <title>Tip 58: Destroy your inputs</title>
	<content:encoded>
I ended this one with a question mark, because I would like your input. Any other amusing tips I've missed so far? Feel free to email or comment.
</content:encoded>
        <link>http://modelingwithdata.org/arch/00000108.htm</link>
        <guid isPermaLink="false">http://modelingwithdata.org/arch/00000108.htm</guid>
	<dc:creator>Ben Klemens</dc:creator>
        <pubDate>26 January 2012 00:00:00 +0000</pubDate>
</item>

<item>
        <title>Tip 57: base your code on pointers to objects</title>
	<content:encoded>
In which I answer a question I am frequently asking myself. This is about making the transition from a small and cuddly project to a larger one where you really have to start worrying about maintainability.
</content:encoded>
        <link>http://modelingwithdata.org/arch/00000107.htm</link>
        <guid isPermaLink="false">http://modelingwithdata.org/arch/00000107.htm</guid>
	<dc:creator>Ben Klemens</dc:creator>
        <pubDate>23 January 2012 00:00:00 +0000</pubDate>
</item>

<item>
        <title>Tip 56: Enums---don't bother</title>
	<content:encoded>
Seriously, please stop yelling.
</content:encoded>
        <link>http://modelingwithdata.org/arch/00000106.htm</link>
        <guid isPermaLink="false">http://modelingwithdata.org/arch/00000106.htm</guid>
	<dc:creator>Ben Klemens</dc:creator>
        <pubDate>21 January 2012 00:00:00 +0000</pubDate>
</item>

<item>
        <title>Tip 55: Mark input pointers with const</title>
	<content:encoded>
The Game Theorists would call this a first mover problem.
</content:encoded>
        <link>http://modelingwithdata.org/arch/00000105.htm</link>
        <guid isPermaLink="false">http://modelingwithdata.org/arch/00000105.htm</guid>
	<dc:creator>Ben Klemens</dc:creator>
        <pubDate>19 January 2012 00:00:00 +0000</pubDate>
</item>

<item>
        <title>Tip 54: Put functions in your structs</title>
	<content:encoded>
Although such mutability is the norm in C++ and Java, I always thought it should be used more sparingly.
</content:encoded>
        <link>http://modelingwithdata.org/arch/00000104.htm</link>
        <guid isPermaLink="false">http://modelingwithdata.org/arch/00000104.htm</guid>
	<dc:creator>Ben Klemens</dc:creator>
        <pubDate>17 January 2012 00:00:00 +0000</pubDate>
</item>

<item>
        <title>Tip 53: Count references</title>
	<content:encoded>
A variant on last time, and a still fuller example program. It's hard to demonstrate the synthesis of a technique in tweet-length tips, so I felt this sort of thing necessary. I like this model, and think of it as more than just a toy.
</content:encoded>
        <link>http://modelingwithdata.org/arch/00000103.htm</link>
        <guid isPermaLink="false">http://modelingwithdata.org/arch/00000103.htm</guid>
	<dc:creator>Ben Klemens</dc:creator>
        <pubDate>15 January 2012 00:00:00 +0000</pubDate>
</item>

<item>
        <title>Tip 52: Mark the owner of your data</title>
	<content:encoded>
The point is pretty simple, and I don't know how often you have to deal
with views of a large data set, so I used this as a chance to give a full,
worked example of an object and its associated methods implemented in
C. I may elaborate on or modify this a little later, such as moving the
methods into the struct itself.
</content:encoded>
        <link>http://modelingwithdata.org/arch/00000102.htm</link>
        <guid isPermaLink="false">http://modelingwithdata.org/arch/00000102.htm</guid>
	<dc:creator>Ben Klemens</dc:creator>
        <pubDate>13 January 2012 00:00:00 +0000</pubDate>
</item>

<item>
        <title>Tip 51: Construct and destruct your structs</title>
	<content:encoded>
I was thinking of pausing after that last tip, but let us press on. The next few items borrow the most relevant parts of the object-oriented world.
</content:encoded>
        <link>http://modelingwithdata.org/arch/00000101.htm</link>
        <guid isPermaLink="false">http://modelingwithdata.org/arch/00000101.htm</guid>
	<dc:creator>Ben Klemens</dc:creator>
        <pubDate>11 January 2012 00:00:00 +0000</pubDate>
</item>

<item>
        <title>Tip 50: optional and named arguments</title>
	<content:encoded>
This is the 100th post on the blog. How time flies. I'm already repeating myself---I'd given two or three pages of exposition on how I implement these named arguments in Apophenia. Used sparingly, repetition is not the worst thing that a blog can do, I suppose.
</content:encoded>
        <link>http://modelingwithdata.org/arch/00000100.htm</link>
        <guid isPermaLink="false">http://modelingwithdata.org/arch/00000100.htm</guid>
	<dc:creator>Ben Klemens</dc:creator>
        <pubDate>9 January 2011 00:00:00 +0000</pubDate>
</item>

<item>
        <title>Tip 49: return multiple items from a function</title>
	<content:encoded>
I refer to these as throwaways, but they don't have to be. You may easily find that the structure you're returning is actually a natural way to express things, and has expressive utility beyond just being a container.
</content:encoded>
        <link>http://modelingwithdata.org/arch/00000099.htm</link>
        <guid isPermaLink="false">http://modelingwithdata.org/arch/00000099.htm</guid>
	<dc:creator>Ben Klemens</dc:creator>
        <pubDate>7 January 2011 00:00:00 +0000</pubDate>
</item>

<item>
        <title>Tip 48: Limit typedef scope</title>
	<content:encoded>
I open with a lot about style today because this stuff is often misused, and so as a result a lot of people reject the entire concept of any of this--but that's also pernicious. The next few episodes are gonna be awesome if you're willing to have a definitions section at the top of a file.
</content:encoded>
        <link>http://modelingwithdata.org/arch/00000098.htm</link>
        <guid isPermaLink="false">http://modelingwithdata.org/arch/00000098.htm</guid>
	<dc:creator>Ben Klemens</dc:creator>
        <pubDate>5 January 2011 00:00:00 +0000</pubDate>
</item>

<item>
        <title>Tip 47: Static versus global variables</title>
	<content:encoded>
The awkward thing about how C requires that variables be exported via a separate header file turns out to be useful, giving us a way to have variables that aren't specific to one function but aren't really global. It's subjective, but I think this level of scope is underused.
</content:encoded>
        <link>http://modelingwithdata.org/arch/00000097.htm</link>
        <guid isPermaLink="false">http://modelingwithdata.org/arch/00000097.htm</guid>
	<dc:creator>Ben Klemens</dc:creator>
        <pubDate>3 January 2011 00:00:00 +0000</pubDate>
</item>

<item>
        <title>Tip 46: Typedefs save the day</title>
	<content:encoded>
This is a variant of the rule that we should write our code for human legibility. A good typedef, like a good structure, describes how we think of the problem.
</content:encoded>
        <link>http://modelingwithdata.org/arch/00000096.htm</link>
        <guid isPermaLink="false">http://modelingwithdata.org/arch/00000096.htm</guid>
	<dc:creator>Ben Klemens</dc:creator>
        <pubDate>1 January 2011 00:00:00 +0000</pubDate>
</item>

<item>
        <title>Tip 45: Structures get copied</title>
	<content:encoded>
Some textbooks seem to forget to mention this. K&amp;R mention it in passing ("The only legal operations on a structure are copying it or assigning to it as a unit, taking its address with &amp;, and accessing its members."). So I felt it worth worth pointing out.
</content:encoded>
        <link>http://modelingwithdata.org/arch/00000095.htm</link>
        <guid isPermaLink="false">http://modelingwithdata.org/arch/00000095.htm</guid>
	<dc:creator>Ben Klemens</dc:creator>
        <pubDate>30 December 2011 00:00:00 +0000</pubDate>
</item>

<item>
        <title>Tip 44: Brevity is the soul of incomprehensibility</title>
	<content:encoded>
I see so many polemics online that take as a truism that getting code to be more compact is always an improvement. Srsly?
</content:encoded>
        <link>http://modelingwithdata.org/arch/00000094.htm</link>
        <guid isPermaLink="false">http://modelingwithdata.org/arch/00000094.htm</guid>
	<dc:creator>Ben Klemens</dc:creator>
        <pubDate>28 December 2011 00:00:00 +0000</pubDate>
</item>

<item>
        <title>Tip 43: wrap substructures in parent structures</title>
	<content:encoded>
This is as much a tip for struct authors as struct users: you could make using your struct really easy.
</content:encoded>
        <link>http://modelingwithdata.org/arch/00000093.htm</link>
        <guid isPermaLink="false">http://modelingwithdata.org/arch/00000093.htm</guid>
	<dc:creator>Ben Klemens</dc:creator>
        <pubDate>26 December 2011 00:00:00 +0000</pubDate>
</item>

<item>
        <title>Tip 42: Don't bother with union</title>
	<content:encoded>
So yes, there are reasons to use this keyword, but they're still pretty obscure, and if you never knew it existed you'd still get by.
</content:encoded>
        <link>http://modelingwithdata.org/arch/00000092.htm</link>
        <guid isPermaLink="false">http://modelingwithdata.org/arch/00000092.htm</guid>
	<dc:creator>Ben Klemens</dc:creator>
        <pubDate>24 December 2011 00:00:00 +0000</pubDate>
</item>

<item>
        <title>Tip 41: Initialize arrays and structs to zero</title>
	<content:encoded>
Our first payoff from the rules about initializating compound types.
</content:encoded>
        <link>http://modelingwithdata.org/arch/00000091.htm</link>
        <guid isPermaLink="false">http://modelingwithdata.org/arch/00000091.htm</guid>
	<dc:creator>Ben Klemens</dc:creator>
        <pubDate>22 December 2011 00:00:00 +0000</pubDate>
</item>

<item>
        <title>Tip 40: Designated initializers</title>
	<content:encoded>
I don't think I'm exaggerating when I say that designated initializers changed my life. I would've given up on C a long time ago if I hadn't known about them, while having them on hand has made the language fun.
</content:encoded>
        <link>http://modelingwithdata.org/arch/00000090.htm</link>
        <guid isPermaLink="false">http://modelingwithdata.org/arch/00000090.htm</guid>
	<dc:creator>Ben Klemens</dc:creator>
        <pubDate>20 December 2011 00:00:00 +0000</pubDate>
</item>

<item>
        <title>Tip 39: Know the constraints of C structs</title>
	<content:encoded>
This one is exposition, but may save you a lot of banging your head against things when you switch languages.
</content:encoded>
        <link>http://modelingwithdata.org/arch/00000089.htm</link>
        <guid isPermaLink="false">http://modelingwithdata.org/arch/00000089.htm</guid>
	<dc:creator>Ben Klemens</dc:creator>
        <pubDate>18 December 2011 00:00:00 +0000</pubDate>
</item>

<item>
        <title>Tip 38: Use Valgrind to check for errors</title>
	<content:encoded>
I don't use Valgrind often, but there are lots of situations where it is essential.
</content:encoded>
        <link>http://modelingwithdata.org/arch/00000088.htm</link>
        <guid isPermaLink="false">http://modelingwithdata.org/arch/00000088.htm</guid>
	<dc:creator>Ben Klemens</dc:creator>
        <pubDate>16 December 2011 00:00:00 +0000</pubDate>
</item>

<item>
        <title>Tip 37: Rename things with pointers</title>
	<content:encoded>
This is my question #1 when I'm learning a new language.
</content:encoded>
        <link>http://modelingwithdata.org/arch/00000087.htm</link>
        <guid isPermaLink="false">http://modelingwithdata.org/arch/00000087.htm</guid>
	<dc:creator>Ben Klemens</dc:creator>
        <pubDate>14 December 2011 00:00:00 +0000</pubDate>
</item>

<item>
        <title>Tip 36: Try a new shell</title>
	<content:encoded>
The point of this post is to express the variety of things users of the default shell are missing. So
if you're a fan of a different shell than the one I enthused about, please tell us about your own favorite features in the comments.
</content:encoded>
        <link>http://modelingwithdata.org/arch/00000086.htm</link>
        <guid isPermaLink="false">http://modelingwithdata.org/arch/00000086.htm</guid>
	<dc:creator>Ben Klemens</dc:creator>
        <pubDate>12 December 2011 00:00:00 +0000</pubDate>
</item>

<item>
        <title>Tip 35: Use the shell to test for files</title>
	<content:encoded>
There's a lot more to these conditionals, but there are so very many caveats...
</content:encoded>
        <link>http://modelingwithdata.org/arch/00000085.htm</link>
        <guid isPermaLink="false">http://modelingwithdata.org/arch/00000085.htm</guid>
	<dc:creator>Ben Klemens</dc:creator>
        <pubDate>10 December 2011 00:00:00 +0000</pubDate>
</item>

<item>
        <title>Tip 34: Use the shell's for loops to operate on a set of files</title>
	<content:encoded>
I use this on the command line all the time. However, there's more than one way to do it 
(alternatives often involve the find and xargs commands).  
</content:encoded>
        <link>http://modelingwithdata.org/arch/00000084.htm</link>
        <guid isPermaLink="false">http://modelingwithdata.org/arch/00000084.htm</guid>
	<dc:creator>Ben Klemens</dc:creator>
        <pubDate>8 December 2011 00:00:00 +0000</pubDate>
</item>

<item>
        <title>Tip 33: Replace shell commands with their outputs</title>
	<content:encoded>
Perl users, now you know where it comes from.
</content:encoded>
        <link>http://modelingwithdata.org/arch/00000083.htm</link>
        <guid isPermaLink="false">http://modelingwithdata.org/arch/00000083.htm</guid>
	<dc:creator>Ben Klemens</dc:creator>
        <pubDate>6 December 2011 00:00:00 +0000</pubDate>
</item>

<item>
        <title>Tip 32: Get to know your shell</title>
	<content:encoded>
Shell scripting is especially byzantine. It's a macro language, so the usual surprises about text substitution come up. It's an especially good example of a syntax which evolved as hundreds of hackers threw in a trick that seemed like it would be useful, and then one day the POSIX standard codified all these hacks. Now, post-standard, shell authors are especially comfortable not conforming to the standard anyway and adding new features. So it's best to pick up the most useful and reliable tricks, but do any work requiring more than a few straightforward lines to C, Python, Perl, et al.
</content:encoded>
        <link>http://modelingwithdata.org/arch/00000082.htm</link>
        <guid isPermaLink="false">http://modelingwithdata.org/arch/00000082.htm</guid>
	<dc:creator>Ben Klemens</dc:creator>
        <pubDate>4 December 2011 00:00:00 +0000</pubDate>
</item>

<item>
        <title>Tip 31: Use the database for configuration info</title>
	<content:encoded>
7 lines of macros + 2 lines of C code = a complete configuration system.
</content:encoded>
        <link>http://modelingwithdata.org/arch/00000081.htm</link>
        <guid isPermaLink="false">http://modelingwithdata.org/arch/00000081.htm</guid>
	<dc:creator>Ben Klemens</dc:creator>
        <pubDate>2 December 2011 00:00:00 +0000</pubDate>
</item>

<item>
        <title>Tip 30: Use Apophenia to read in data and configuration info</title>
	<content:encoded>
As this progresses, the tips will be more focused on scientific and statistical computing.
</content:encoded>
        <link>http://modelingwithdata.org/arch/00000080.htm</link>
        <guid isPermaLink="false">http://modelingwithdata.org/arch/00000080.htm</guid>
	<dc:creator>Ben Klemens</dc:creator>
        <pubDate>30 November 2011 00:00:00 +0000</pubDate>
</item>

<item>
        <title>Tip 29: Preprocessor tricks!</title>
	<content:encoded>
For the Apophenia fans, this is how Apop_row, Apop_data_col, &amp;c. produce disposable views.
</content:encoded>
        <link>http://modelingwithdata.org/arch/00000079.htm</link>
        <guid isPermaLink="false">http://modelingwithdata.org/arch/00000079.htm</guid>
	<dc:creator>Ben Klemens</dc:creator>
        <pubDate>28 November 2011 00:00:00 +0000</pubDate>
</item>

<item>
        <title>Tip 28: Vectorize a function</title>
	<content:encoded>
This is another variant on the trick from the last tip or two, but is the variant you're most likely to use every day.
</content:encoded>
        <link>http://modelingwithdata.org/arch/00000078.htm</link>
        <guid isPermaLink="false">http://modelingwithdata.org/arch/00000078.htm</guid>
	<dc:creator>Ben Klemens</dc:creator>
        <pubDate>26 November 2011 00:00:00 +0000</pubDate>
</item>

<item>
        <title>Tip 27: Foreach in C</title>
	<content:encoded>
This is not Fight Club: tell your naysaying, C-skeptical friends about the series. There's still a long list of amusing tricks in the queue.
</content:encoded>
        <link>http://modelingwithdata.org/arch/00000077.htm</link>
        <guid isPermaLink="false">http://modelingwithdata.org/arch/00000077.htm</guid>
	<dc:creator>Ben Klemens</dc:creator>
        <pubDate>24 November 2011 00:00:00 +0000</pubDate>
</item>

<item>
        <title>Tip 26: Safely terminated lists</title>
	<content:encoded>
List processing in C.
</content:encoded>
        <link>http://modelingwithdata.org/arch/00000076.htm</link>
        <guid isPermaLink="false">http://modelingwithdata.org/arch/00000076.htm</guid>
	<dc:creator>Ben Klemens</dc:creator>
        <pubDate>22 November 2011 00:00:00 +0000</pubDate>
</item>

<item>
        <title>Variadic macros</title>
	<content:encoded>
It's the little things that make our lives easier.
</content:encoded>
        <link>http://modelingwithdata.org/arch/00000075.htm</link>
        <guid isPermaLink="false">http://modelingwithdata.org/arch/00000075.htm</guid>
	<dc:creator>Ben Klemens</dc:creator>
        <pubDate>20 November 2011 00:00:00 +0000</pubDate>
</item>

<item>
        <title>Compound literals</title>
	<content:encoded>
In which we have turned the corner, and begin introducing a few elements of C that you've probably never heard of. I did check a few common, recent C textbooks, and my claim that most of them don't mention this stuff (sadly) checks out.
</content:encoded>
        <link>http://modelingwithdata.org/arch/00000074.htm</link>
        <guid isPermaLink="false">http://modelingwithdata.org/arch/00000074.htm</guid>
	<dc:creator>Ben Klemens</dc:creator>
        <pubDate>18 November 2011 00:00:00 +0000</pubDate>
</item>

<item>
        <title>Tip 23: The diference between char* and char[]</title>
	<content:encoded>
The  sizeof operator is really an anomaly in the language.
</content:encoded>
        <link>http://modelingwithdata.org/arch/00000073.htm</link>
        <guid isPermaLink="false">http://modelingwithdata.org/arch/00000073.htm</guid>
	<dc:creator>Ben Klemens</dc:creator>
        <pubDate>16 November 2011 00:00:00 +0000</pubDate>
</item>

<item>
        <title>Tip 22: all the casting you'll need</title>
	<content:encoded>
Soon (but not next time), I will stop writing about what the textbooks teach you but you don't need to waste time with, and get to the things that are worth knowing but that the textbooks didn't include.
</content:encoded>
        <link>http://modelingwithdata.org/arch/00000072.htm</link>
        <guid isPermaLink="false">http://modelingwithdata.org/arch/00000072.htm</guid>
	<dc:creator>Ben Klemens</dc:creator>
        <pubDate>14 November 2011 00:00:00 +0000</pubDate>
</item>

<item>
        <title>Tip 21: become a better typist</title>
	<content:encoded>
This is sort of like having a good makefile, but much more fundamental. So take some time today to check your posture and check your typing technique.
</content:encoded>
        <link>http://modelingwithdata.org/arch/00000071.htm</link>
        <guid isPermaLink="false">http://modelingwithdata.org/arch/00000071.htm</guid>
	<dc:creator>Ben Klemens</dc:creator>
        <pubDate>12 November 2011 00:00:00 +0000</pubDate>
</item>

<item>
        <title>Tip 20: get to know static, automatic, manual memory</title>
	<content:encoded>
The static type is especially of historical interest at this point. Except for the trick from Tip 19, merging static in with auto would only lift restrictions and eliminate annoyances.
</content:encoded>
        <link>http://modelingwithdata.org/arch/00000070.htm</link>
        <guid isPermaLink="false">http://modelingwithdata.org/arch/00000070.htm</guid>
	<dc:creator>Ben Klemens</dc:creator>
        <pubDate>10 November 2011 00:00:00 +0000</pubDate>
</item>

<item>
        <title>Tip 19: define persistent state variables</title>
	<content:encoded>
I use Staticdef all the time, and not just because it's a B short of being the first six letters of the alphabet.
</content:encoded>
        <link>http://modelingwithdata.org/arch/00000069.htm</link>
        <guid isPermaLink="false">http://modelingwithdata.org/arch/00000069.htm</guid>
	<dc:creator>Ben Klemens</dc:creator>
        <pubDate>8 November 2011 00:00:00 +0000</pubDate>
</item>

<item>
        <title>Tip 18: Declare arrays when you know their size</title>
	<content:encoded>
Here's &lt;a href="http://www.youtube.com/watch?v=DdFtvnrpTRI"&gt;Born in the 70s&lt;/a&gt;, by the Fruit Bats.
</content:encoded>
        <link>http://modelingwithdata.org/arch/00000068.htm</link>
        <guid isPermaLink="false">http://modelingwithdata.org/arch/00000068.htm</guid>
	<dc:creator>Ben Klemens</dc:creator>
        <pubDate>6 November 2011 00:00:00 +0000</pubDate>
</item>

<item>
        <title>Tip 17: Define a string type</title>
	<content:encoded>
At this point, we've gone a long way toward fixing C strings, and we used C to do it.
</content:encoded>
        <link>http://modelingwithdata.org/arch/00000067.htm</link>
        <guid isPermaLink="false">http://modelingwithdata.org/arch/00000067.htm</guid>
	<dc:creator>Ben Klemens</dc:creator>
        <pubDate>4 November 2011 00:00:00 +0000</pubDate>
</item>

<item>
        <title>Tip 16: All the pointer arithmetic you need to know</title>
	<content:encoded>
Have you noticed how many of my tips for using C are about using less of it?
</content:encoded>
        <link>http://modelingwithdata.org/arch/00000066.htm</link>
        <guid isPermaLink="false">http://modelingwithdata.org/arch/00000066.htm</guid>
	<dc:creator>Ben Klemens</dc:creator>
        <pubDate>2 November 2011 00:00:00 +0000</pubDate>
</item>

<item>
        <title>Tip 15: get GDB to print your structures</title>
	<content:encoded>
Everybody deals with different data structures, so we all have to costomize our tools a little.
</content:encoded>
        <link>http://modelingwithdata.org/arch/00000065.htm</link>
        <guid isPermaLink="false">http://modelingwithdata.org/arch/00000065.htm</guid>
	<dc:creator>Ben Klemens</dc:creator>
        <pubDate>31 October 2011 00:00:00 +0000</pubDate>
</item>

<item>
        <title>Tip 14: easier interrogations with GDB variables</title>
	<content:encoded>
This tip and the next are why I'm more comfortable using the GDB command line than the GUI front-ends.
</content:encoded>
        <link>http://modelingwithdata.org/arch/00000064.htm</link>
        <guid isPermaLink="false">http://modelingwithdata.org/arch/00000064.htm</guid>
	<dc:creator>Ben Klemens</dc:creator>
        <pubDate>29 October 2011 00:00:00 +0000</pubDate>
</item>

<item>
        <title>Tip 13: Use a debugger</title>
	<content:encoded>
To some people, this tip is too obvious to bother with; to others it is a revelation.
</content:encoded>
        <link>http://modelingwithdata.org/arch/00000063.htm</link>
        <guid isPermaLink="false">http://modelingwithdata.org/arch/00000063.htm</guid>
	<dc:creator>Ben Klemens</dc:creator>
        <pubDate>27 October 2011 00:00:00 +0000</pubDate>
</item>

<item>
        <title>Tip 12: Use asprintf to extend strings</title>
	<content:encoded>
Extending a string seems to be a most common operation to me, but as I started writing this I started to think that maybe it's just my own habit. Nonetheless, this third tip of three is really all you need for string production.
</content:encoded>
        <link>http://modelingwithdata.org/arch/00000062.htm</link>
        <guid isPermaLink="false">http://modelingwithdata.org/arch/00000062.htm</guid>
	<dc:creator>Ben Klemens</dc:creator>
        <pubDate>25 October 2011 00:00:00 +0000</pubDate>
</item>

<item>
        <title>Tip 11: String literals</title>
	<content:encoded>
Next tip will come out tomorrow.
</content:encoded>
        <link>http://modelingwithdata.org/arch/00000061.htm</link>
        <guid isPermaLink="false">http://modelingwithdata.org/arch/00000061.htm</guid>
	<dc:creator>Ben Klemens</dc:creator>
        <pubDate>24 October 2011 00:00:00 +0000</pubDate>
</item>

<item>
        <title>Tip 10: Use asprintf to make string handling less painful</title>
	<content:encoded>
There's work being done on a new C standard. I expect this function to be part of that standard, whenever it should come out. [And if it isn't, I will be very sad.]
</content:encoded>
        <link>http://modelingwithdata.org/arch/00000060.htm</link>
        <guid isPermaLink="false">http://modelingwithdata.org/arch/00000060.htm</guid>
	<dc:creator>Ben Klemens</dc:creator>
        <pubDate>21 October 2011 00:00:00 +0000</pubDate>
</item>

<item>
        <title>Tip 9: Compile C programs via here script</title>
	<content:encoded>
This really gets fun when you're integrating into a shell script.
If you're used to handling shell variables, try assigning the output of a.out to a variable [ primes=`./a.out` ] and see what kind of fun you can have with it.
</content:encoded>
        <link>http://modelingwithdata.org/arch/00000059.htm</link>
        <guid isPermaLink="false">http://modelingwithdata.org/arch/00000059.htm</guid>
	<dc:creator>Ben Klemens</dc:creator>
        <pubDate>19 October 2011 00:00:00 +0000</pubDate>
</item>

<item>
        <title>Tip 8: Use here scripts</title>
	<content:encoded>
I feel as though pretty much every script I write these days has a here document somewhere, slipping out to another language for a quick something.
</content:encoded>
        <link>http://modelingwithdata.org/arch/00000058.htm</link>
        <guid isPermaLink="false">http://modelingwithdata.org/arch/00000058.htm</guid>
	<dc:creator>Ben Klemens</dc:creator>
        <pubDate>17 October 2011 00:00:00 +0000</pubDate>
</item>

<item>
        <title>Tip 7: Include header files from the command line</title>
	<content:encoded>
Sometimes we pick a point on the portability-versus-fun spectrum over on the fun side.
</content:encoded>
        <link>http://modelingwithdata.org/arch/00000057.htm</link>
        <guid isPermaLink="false">http://modelingwithdata.org/arch/00000057.htm</guid>
	<dc:creator>Ben Klemens</dc:creator>
        <pubDate>15 October 2011 00:00:00 +0000</pubDate>
</item>

<item>
        <title>Dennis Ritchie</title>
	<content:encoded>
On setting the standard.
</content:encoded>
        <link>http://modelingwithdata.org/arch/00000056.htm</link>
        <guid isPermaLink="false">http://modelingwithdata.org/arch/00000056.htm</guid>
	<dc:creator>Ben Klemens</dc:creator>
        <pubDate>13 October 2011 00:00:00 +0000</pubDate>
</item>

<item>
        <title>Tip 6: Aggregate your includes</title>
	<content:encoded>
One less thing to think about.
</content:encoded>
        <link>http://modelingwithdata.org/arch/00000055.htm</link>
        <guid isPermaLink="false">http://modelingwithdata.org/arch/00000055.htm</guid>
	<dc:creator>Ben Klemens</dc:creator>
        <pubDate>11 October 2011 00:00:00 +0000</pubDate>
</item>

<item>
        <title>Tip 5: Initialize wherever the first use may be</title>
	<content:encoded>
There once was a time when declarations had to be at the top of block, not mixed in as needed. Cyndi Lauper was really popular then.
</content:encoded>
        <link>http://modelingwithdata.org/arch/00000054.htm</link>
        <guid isPermaLink="false">http://modelingwithdata.org/arch/00000054.htm</guid>
	<dc:creator>Ben Klemens</dc:creator>
        <pubDate>9 October 2011 00:00:00 +0000</pubDate>
</item>

<item>
        <title>Tip 4: don't bother returning zero from &lt;tt&gt;main&lt;tt&gt;</title>
	<content:encoded>
Our first tip about C syntax itself.
</content:encoded>
        <link>http://modelingwithdata.org/arch/00000053.htm</link>
        <guid isPermaLink="false">http://modelingwithdata.org/arch/00000053.htm</guid>
	<dc:creator>Ben Klemens</dc:creator>
        <pubDate>7 October 2011 00:00:00 +0000</pubDate>
</item>

<item>
        <title>Tip 3: use libraries (even if your sysadmin doesn't want you to)</title>
	<content:encoded>
This is real lore: experienced POSIX geeks just know to set up a local root, without having read it in any formal manuals.
</content:encoded>
        <link>http://modelingwithdata.org/arch/00000052.htm</link>
        <guid isPermaLink="false">http://modelingwithdata.org/arch/00000052.htm</guid>
	<dc:creator>Ben Klemens</dc:creator>
        <pubDate>5 October 2011 00:00:00 +0000</pubDate>
</item>

<item>
        <title>Tip 2: use libraries</title>
	<content:encoded>
We're still stating the unstated basics.
</content:encoded>
        <link>http://modelingwithdata.org/arch/00000051.htm</link>
        <guid isPermaLink="false">http://modelingwithdata.org/arch/00000051.htm</guid>
	<dc:creator>Ben Klemens</dc:creator>
        <pubDate>3 October 2011 00:00:00 +0000</pubDate>
</item>

<item>
        <title>Tip 1: makefiles</title>
	<content:encoded>
Before we get to amusing features of C syntax, the first several tips will be about compilation and environment.
</content:encoded>
        <link>http://modelingwithdata.org/arch/00000050.htm</link>
        <guid isPermaLink="false">http://modelingwithdata.org/arch/00000050.htm</guid>
	<dc:creator>Ben Klemens</dc:creator>
        <pubDate>1 October 2011 00:00:00 +0000</pubDate>
</item>

<item>
        <title>Tip-a-day mode</title>
	<content:encoded>
Happy new year everybody. I'll be giving short C tips every other day for the next few weeks.
</content:encoded>
        <link>http://modelingwithdata.org/arch/00000049.htm</link>
        <guid isPermaLink="false">http://modelingwithdata.org/arch/00000049.htm</guid>
	<dc:creator>Ben Klemens</dc:creator>
        <pubDate>29 September 2011 00:00:00 +0000</pubDate>
</item>


<item>
        <title>Leaving SAS: the script</title>
	<content:encoded>
Somebody had to write this.
</content:encoded>
        <link>http://modelingwithdata.org/arch/00000048.htm</link>
        <guid isPermaLink="false">http://modelingwithdata.org/arch/00000048.htm</guid>
	<dc:creator>Ben Klemens</dc:creator>
        <pubDate>15 September 2011 00:00:00 +0000</pubDate>
</item>
<item>
        <title>Scope in C is e-z</title>
	<content:encoded>
This is graceful design at work.
</content:encoded>
        <link>http://modelingwithdata.org/arch/00000047.htm</link>
        <guid isPermaLink="false">http://modelingwithdata.org/arch/00000047.htm</guid>
	<dc:creator>Ben Klemens</dc:creator>
        <pubDate>7 September 2011 00:00:00 +0000</pubDate>
</item>

<item>
        <title>Why you should teach your stats students C</title>
	<content:encoded>
Happy Labor Day everybody. Here's a nice, traditional language advocacy essay for you.
</content:encoded>
        <link>http://modelingwithdata.org/arch/00000046.htm</link>
        <guid isPermaLink="false">http://modelingwithdata.org/arch/00000046.htm</guid>
	<dc:creator>Ben Klemens</dc:creator>
        <pubDate>5 September 2011 00:00:00 +0000</pubDate>
</item>

<item>
        <title>Labels, gotos, switches, and breaks</title>
	<content:encoded>
Me, I use break and continue from time to time, but find the switch-case setup to be too elegant for its own good.
</content:encoded>
        <link>http://modelingwithdata.org/arch/00000045.htm</link>
        <guid isPermaLink="false">http://modelingwithdata.org/arch/00000045.htm</guid>
	<dc:creator>Ben Klemens</dc:creator>
        <pubDate>14 August 2011 00:00:00 +0000</pubDate>
</item>

<item>
        <title>The great packaging problem--the hard part</title>
	<content:encoded>
I could turn this blog into nothing but a list of social problems that people mistake for technical problems and be busy for a year.
</content:encoded>
        <link>http://modelingwithdata.org/arch/00000044.htm</link>
        <guid isPermaLink="false">http://modelingwithdata.org/arch/00000044.htm</guid>
	<dc:creator>Ben Klemens</dc:creator>
        <pubDate>22 May 2011 00:00:00 +0000</pubDate>
</item>

<item>
        <title>The great packaging problem--the easy part</title>
	<content:encoded>
Today's episode demonstrates diverse solutions that don't really cause serious problems, and just coexist.
The Balkanization comes in the next episode.
</content:encoded>
        <link>http://modelingwithdata.org/arch/00000043.htm</link>
        <guid isPermaLink="false">http://modelingwithdata.org/arch/00000043.htm</guid>
	<dc:creator>Ben Klemens</dc:creator>
        <pubDate>16 May 2011 00:00:00 +0000</pubDate>
</item>

<item>
        <title>Typesetting code listings</title>
	<content:encoded>
Summary: I put far too much thought into typing up this book.
</content:encoded>
        <link>http://modelingwithdata.org/arch/00000042.htm</link>
        <guid isPermaLink="false">http://modelingwithdata.org/arch/00000042.htm</guid>
	<dc:creator>Ben Klemens</dc:creator>
        <pubDate>18 April 2011 00:00:00 +0000</pubDate>
</item>

<item>
        <title>Supreme Court rules against overreliance on p-values</title>
	<content:encoded>
You know it's bad when even the lawyers think a statistical technique is too bright-line.
</content:encoded>
        <link>http://modelingwithdata.org/arch/00000041.htm</link>
        <guid isPermaLink="false">http://modelingwithdata.org/arch/00000041.htm</guid>
	<dc:creator>Ben Klemens</dc:creator>
        <pubDate>9 April 2011 00:00:00 +0000</pubDate>
</item>

<item>
        <title>Powerful software!</title>
	<content:encoded>
Next time: the Supreme Court's ruling about the meaning of statistical significance. But first, I complain about how people pitch code.
</content:encoded>
        <link>http://modelingwithdata.org/arch/00000040.htm</link>
        <guid isPermaLink="false">http://modelingwithdata.org/arch/00000040.htm</guid>
	<dc:creator>Ben Klemens</dc:creator>
        <pubDate>4 April 2011 00:00:00 +0000</pubDate>
</item>

<item>
        <title>Structures versus dictionaries</title>
	<content:encoded>
Continuing the thought from last time to cover how we handle heterogeneous data. 
</content:encoded>
        <link>http://modelingwithdata.org/arch/00000039.htm</link>
        <guid isPermaLink="false">http://modelingwithdata.org/arch/00000039.htm</guid>
	<dc:creator>Ben Klemens</dc:creator>
        <pubDate>31 March 2011 00:00:00 +0000</pubDate>
</item>

<item>
        <title>Structures</title>
	<content:encoded>
Hi again. I've mostly been distracted by work on another book on modern economics, but I'm back with a short series on commonalities across programming languages.
</content:encoded>
        <link>http://modelingwithdata.org/arch/00000038.htm</link>
        <guid isPermaLink="false">http://modelingwithdata.org/arch/00000038.htm</guid>
	<dc:creator>Ben Klemens</dc:creator>
        <pubDate>24 March 2011 00:00:00 +0000</pubDate>
</item>

<item>
        <title>Multiple imputation</title>
	<content:encoded>
At this point, I basically think of any nontrivial statistical model as a combination of simpler models.
</content:encoded>
        <link>http://modelingwithdata.org/arch/00000036.htm</link>
        <guid isPermaLink="false">http://modelingwithdata.org/arch/00000036.htm</guid>
	<dc:creator>Ben Klemens</dc:creator>
        <pubDate>1 October 2010 00:00:00 +0000</pubDate>
</item>

<item>
        <title>Object-oriented programming in C</title>
	<content:encoded>
Another essay about doing more with fewer keywords.
</content:encoded>
        <link>http://modelingwithdata.org/arch/00000035.htm</link>
        <guid isPermaLink="false">http://modelingwithdata.org/arch/00000035.htm</guid>
	<dc:creator>Ben Klemens</dc:creator>
        <pubDate>22 April 2010 00:00:00 +0000</pubDate>
</item>

<item>
        <title>Testing the model using the model</title>
	<content:encoded>
I start by picking at a cartoonist, but this goes well beyond that in importance.
</content:encoded>
        <link>http://modelingwithdata.org/arch/00000034.htm</link>
        <guid isPermaLink="false">http://modelingwithdata.org/arch/00000034.htm</guid>
	<dc:creator>Ben Klemens</dc:creator>
        <pubDate>11 January 2010 00:00:00 +0000</pubDate>
</item>

<item>
        <title>Keeping paper current</title>
	<content:encoded>
In which I put an absolutely huge amount of thought into things most folks don't really care about. Then, I exert great effort fighting against the inevitable.
</content:encoded>
        <link>http://modelingwithdata.org/arch/00000033.htm</link>
        <guid isPermaLink="false">http://modelingwithdata.org/arch/00000033.htm</guid>
	<dc:creator>Ben Klemens</dc:creator>
        <pubDate>9 January 2010 00:00:00 +0000</pubDate>
</item>

<item>
        <title>The statistics style report</title>
	<content:encoded>
I like to think that I always lean toward parsimony, but I imagine others looking at my work wouldn't think so.
</content:encoded>
        <link>http://modelingwithdata.org/arch/00000032.htm</link>
        <guid isPermaLink="false">http://modelingwithdata.org/arch/00000032.htm</guid>
	<dc:creator>Ben Klemens</dc:creator>
        <pubDate>19 December 2009 00:00:00 +0000</pubDate>
</item>

<item>
        <title>Git status interactive</title>
	<content:encoded>
This is a useful script for people using git; if that's not you, don't bother clicking through. I know I've been writing a lot about computing technique lately, so next time: statistics!
</content:encoded>
        <link>http://modelingwithdata.org/arch/00000031.htm</link>
        <guid isPermaLink="false">http://modelingwithdata.org/arch/00000031.htm</guid>
	<dc:creator>Ben Klemens</dc:creator>
        <pubDate>12 December 2009 00:00:00 +0000</pubDate>
</item>

<item>
        <title>The schism, or why C and C++ are different</title>
	<content:encoded>
Take this as a solicitation for suggestions on how we can get Apophenia's variable-length lists of named arguments (which are entirely C standards-compliant) to work from C++.
</content:encoded>
        <link>http://modelingwithdata.org/arch/00000030.htm</link>
        <guid isPermaLink="false">http://modelingwithdata.org/arch/00000030.htm</guid>
	<dc:creator>Ben Klemens</dc:creator>
        <pubDate>21 November 2009 00:00:00 +0000</pubDate>
</item>

<item>
        <title>Yet another Git tutorial</title>
	<content:encoded>
I wrote this for my coworkers, upon whom I've just dropped this whole revision control thing, because the existing tutorials didn't seem at all appropriate for them.
</content:encoded>
        <link>http://modelingwithdata.org/arch/00000029.htm</link>
        <guid isPermaLink="false">http://modelingwithdata.org/arch/00000029.htm</guid>
	<dc:creator>Ben Klemens</dc:creator>
        <pubDate>8 November 2009 00:00:00 +0000</pubDate>
</item>

<item>
        <title>Easy re-typing with designated initializers</title>
	<content:encoded>
A straight-up lesson on coding technique. Some of this should have been in the texbook, but I was somehow reluctant to rely too much on designated initializers and compound literals; in retrospect, I'm not sure why.
</content:encoded>
        <link>http://modelingwithdata.org/arch/00000028.htm</link>
        <guid isPermaLink="false">http://modelingwithdata.org/arch/00000028.htm</guid>
	<dc:creator>Ben Klemens</dc:creator>
        <pubDate>1 November 2009 00:00:00 +0000</pubDate>
</item>

<item>
        <title>Computing history and its scars</title>
	<content:encoded>
Although it may seem like I'm complaining about whatever glitches, in an alternate universe we'd just have different scars. The path-dependency and potentially infinite life of code means that software is inherently prone to scarring.
</content:encoded>
        <link>http://modelingwithdata.org/arch/00000027.htm</link>
        <guid isPermaLink="false">http://modelingwithdata.org/arch/00000027.htm</guid>
	<dc:creator>Ben Klemens</dc:creator>
        <pubDate>19 October 2009 00:00:00 +0000</pubDate>
</item>

<item>
        <title>Causal ethics</title>
	<content:encoded>
Yes, this is a blog about statistics, and yes, this is a post about the development of ethics.
</content:encoded>
        <link>http://modelingwithdata.org/arch/00000026.htm</link>
        <guid isPermaLink="false">http://modelingwithdata.org/arch/00000026.htm</guid>
	<dc:creator>Ben Klemens</dc:creator>
        <pubDate>11 October 2009 00:00:00 +0000</pubDate>
</item>

<item>
        <title>Programming your blog</title>
	<content:encoded>
When I'm having trouble with a machine of any sort, I try to think of it as a cultural problem. How were the designers thinking differently from how I'm thinking?
</content:encoded>
        <link>http://modelingwithdata.org/arch/00000025.htm</link>
        <guid isPermaLink="false">http://modelingwithdata.org/arch/00000025.htm</guid>
	<dc:creator>Ben Klemens</dc:creator>
        <pubDate>21 July 2009 00:00:00 +0000</pubDate>
</item>

<item>
        <title>Probability versus likelihood</title>
	<content:encoded>
The question of whether data is plural or a singular can be reasoned through; the question here is well on its way to unanswerable.
</content:encoded>
        <link>http://modelingwithdata.org/arch/00000024.htm</link>
        <guid isPermaLink="false">http://modelingwithdata.org/arch/00000024.htm</guid>
	<dc:creator>Ben Klemens</dc:creator>
        <pubDate>2 July 2009 00:00:00 +0000</pubDate>
</item>

<item>
        <title>Data is typically not a plural</title>
	<content:encoded>
This is a lead-in to next episode about another vocabulary problem that's much more difficult. 
</content:encoded>
        <link>http://modelingwithdata.org/arch/00000023.htm</link>
        <guid isPermaLink="false">http://modelingwithdata.org/arch/00000023.htm</guid>
	<dc:creator>Ben Klemens</dc:creator>
        <pubDate>10 June 2009 00:00:00 +0000</pubDate>
</item>

<item>
        <title>Better variadic functions in C</title>
	<content:encoded>
A new edition of the C standard will only come in the distant
future (perhaps never). In the mean time, here's my best solution
to what I see as the language's most glaring problem. I'm open to suggestions on streamlining it further.
</content:encoded>
        <link>http://modelingwithdata.org/arch/00000022.htm</link>
        <guid isPermaLink="false">http://modelingwithdata.org/arch/00000022.htm</guid>
	<dc:creator>Ben Klemens</dc:creator>
        <pubDate>3 June 2009 00:00:00 +0000</pubDate>
</item>

<item>
        <title>Alternatives to Word</title>
	<content:encoded>
In two episodes, I'll tell you what I use for this here web site.
</content:encoded>
        <link>http://modelingwithdata.org/arch/00000021.htm</link>
        <guid isPermaLink="false">http://modelingwithdata.org/arch/00000021.htm</guid>
	<dc:creator>Ben Klemens</dc:creator>
        <pubDate>30 May 2009 00:00:00 +0000</pubDate>
</item>

<item>
        <title>Word and standards</title>
	<content:encoded>
I once toyed with writing a book about computing standards, as a follow-up to my exciting book on software patents.
</content:encoded>
        <link>http://modelingwithdata.org/arch/00000020.htm</link>
        <guid isPermaLink="false">http://modelingwithdata.org/arch/00000020.htm</guid>
	<dc:creator>Ben Klemens</dc:creator>
        <pubDate>22 May 2009 00:00:00 +0000</pubDate>
</item>

<item>
        <title>The ergonomics of the down arrow</title>
	<content:encoded>
This one may seem odd, because it's not a subject many people (including designers) spend much time talking about, but it can still make a big difference, and points to the value of at least having a choice.
</content:encoded>
        <link>http://modelingwithdata.org/arch/00000019.htm</link>
        <guid isPermaLink="false">http://modelingwithdata.org/arch/00000019.htm</guid>
	<dc:creator>Ben Klemens</dc:creator>
        <pubDate>19 May 2009 00:00:00 +0000</pubDate>
</item>

<item>
        <title>Intuition versus ease of use</title>
	<content:encoded>
Ease of initial use is a distinct concept from ease of long-term use. Sometimes they are in happy agreement, and sometimes the first blocks the second.
</content:encoded>
        <link>http://modelingwithdata.org/arch/00000018.htm</link>
        <guid isPermaLink="false">http://modelingwithdata.org/arch/00000018.htm</guid>
	<dc:creator>Ben Klemens</dc:creator>
        <pubDate>15 May 2009 00:00:00 +0000</pubDate>
</item>

<item>
        <title>Views on a paradigm</title>
	<content:encoded>
Part two of six on efficient document prep techniques that are precluded by Word's design.
Don't forget: if you don't have time in front of the computer to read this web page, you can print the PDF.
</content:encoded>
        <link>http://modelingwithdata.org/arch/00000017.htm</link>
        <guid isPermaLink="false">http://modelingwithdata.org/arch/00000017.htm</guid>
	<dc:creator>Ben Klemens</dc:creator>
        <pubDate>11 May 2009 00:00:00 +0000</pubDate>
</item>

<item>
        <title>Why Word is a terrible program</title>
	<content:encoded>
This is an essay from late 2005, in six parts. I'm reprinting it here
because I think it's a good vehicle to get across a number of points about design of information and software.  
</content:encoded>
        <link>http://modelingwithdata.org/arch/00000016.htm</link>
        <guid isPermaLink="false">http://modelingwithdata.org/arch/00000016.htm</guid>
	<dc:creator>Ben Klemens</dc:creator>
        <pubDate>7 May 2009 00:00:00 +0000</pubDate>
</item>

<item>
        <title>A general model object</title>
	<content:encoded>
Last time, I talked about the important problem of balkanization in modeling; this episode is about 
doing something about it in code.
</content:encoded>
        <link>http://modelingwithdata.org/arch/00000015.htm</link>
        <guid isPermaLink="false">http://modelingwithdata.org/arch/00000015.htm</guid>
	<dc:creator>Ben Klemens</dc:creator>
        <pubDate>4 May 2009 00:00:00 +0000</pubDate>
</item>

<item>
        <title>Bringing theoretical models to data</title>
	<content:encoded>
It's amazing how very differently people can read a phrase as simple as "Modeling with data".
</content:encoded>
        <link>http://modelingwithdata.org/arch/00000014.htm</link>
        <guid isPermaLink="false">http://modelingwithdata.org/arch/00000014.htm</guid>
	<dc:creator>Ben Klemens</dc:creator>
        <pubDate>1 May 2009 00:00:00 +0000</pubDate>
</item>

<item>
        <title>Operator overloading</title>
	<content:encoded>
Sometimes human language and mathematical language fall into conflict.
</content:encoded>
        <link>http://modelingwithdata.org/arch/00000013.htm</link>
        <guid isPermaLink="false">http://modelingwithdata.org/arch/00000013.htm</guid>
	<dc:creator>Ben Klemens</dc:creator>
        <pubDate>29 April 2009 00:00:00 +0000</pubDate>
</item>

<item>
        <title>Making integers two-dimensional</title>
	<content:encoded>
Or, a means of visualizing integer arithmetic.
</content:encoded>
        <link>http://modelingwithdata.org/arch/00000012.htm</link>
        <guid isPermaLink="false">http://modelingwithdata.org/arch/00000012.htm</guid>
	<dc:creator>Ben Klemens</dc:creator>
        <pubDate>22 April 2009 00:00:00 +0000</pubDate>
</item>

<item>
        <title>Using a program as a library</title>
	<content:encoded>
I'd been neglecting computing in favor of statistics, so here's a useful tip for managing your code.
</content:encoded>
        <link>http://modelingwithdata.org/arch/00000011.htm</link>
        <guid isPermaLink="false">http://modelingwithdata.org/arch/00000011.htm</guid>
	<dc:creator>Ben Klemens</dc:creator>
        <pubDate>13 April 2009 00:00:00 +0000</pubDate>
</item>

<item>
        <title>Your genetic data---ethics</title>
	<content:encoded>
I'll get back to this in a few episodes, but for now, the point here that the imbalance between descriptive and inferential power has ethical as well as purely research implications.
</content:encoded>
        <link>http://modelingwithdata.org/arch/00000010.htm</link>
        <guid isPermaLink="false">http://modelingwithdata.org/arch/00000010.htm</guid>
	<dc:creator>Ben Klemens</dc:creator>
        <pubDate>8 April 2009 00:00:00 +0000</pubDate>
</item>

<item>
        <title>Your genetic data</title>
	<content:encoded>
Given a hundred cases and controls and their genetic markers, I can find you markers to perfectly categorize them in under two minutes. Of course, those markers provide no predictive power outside those hundred subjects.
</content:encoded>
        <link>http://modelingwithdata.org/arch/00000009.htm</link>
        <guid isPermaLink="false">http://modelingwithdata.org/arch/00000009.htm</guid>
	<dc:creator>Ben Klemens</dc:creator>
        <pubDate>6 April 2009 00:00:00 +0000</pubDate>
</item>

<item>
        <title>Freakophenia</title>
	<content:encoded>
The summary of today's entry: if the research is exciting enough to be written up in the newspaper, it's probably not to be trusted.
</content:encoded>
        <link>http://modelingwithdata.org/arch/00000008.htm</link>
        <guid isPermaLink="false">http://modelingwithdata.org/arch/00000008.htm</guid>
	<dc:creator>Ben Klemens</dc:creator>
        <pubDate>3 April 2009 00:00:00 +0000</pubDate>
</item>

<item>
        <title>Breaking the pipeline</title>
	<content:encoded>
Much of this one is about the requirements for the OLS 
coefficients to provide the line of best fit (i.e., the Gauss-Markov theorem). If you want to play along, 
try to recall them before you click through. E.g., must the expected value of the 
errors be zero? Are errors assumed to be Normally distributed?
</content:encoded>
        <link>http://modelingwithdata.org/arch/00000007.htm</link>
        <guid isPermaLink="false">http://modelingwithdata.org/arch/00000007.htm</guid>
	<dc:creator>Ben Klemens</dc:creator>
        <pubDate>30 March 2009 00:00:00 +0000</pubDate>
</item>

<item>
        <title>Crowdsourcing data mining</title>
	<content:encoded>
I think that this gets to the question of what exactly is a hypothesis test. That's a question that we 
don't seriously have an answer to, though I may offer some comments at a later date.
</content:encoded>
        <link>http://modelingwithdata.org/arch/00000006.htm</link>
        <guid isPermaLink="false">http://modelingwithdata.org/arch/00000006.htm</guid>
	<dc:creator>Ben Klemens</dc:creator>
        <pubDate>24 March 2009 00:00:00 +0000</pubDate>
</item>

<item>
        <title>Dataviz</title>
	<content:encoded>
This is cut from a presentation I gave last November (so if you have time to kill, have the right plug-ins, and want to hear my voice, here's a &lt;a href="http://web.mac.com/jprater/iWeb/Site/Podcast/A2A2FC27-659C-4F12-AD02-A4A39521C862.html"&gt;link&lt;/a&gt;).
</content:encoded>
        <link>http://modelingwithdata.org/arch/00000005.htm</link>
        <guid isPermaLink="false">http://modelingwithdata.org/arch/00000005.htm</guid>
	<dc:creator>Ben Klemens</dc:creator>
        <pubDate>18 March 2009 00:00:00 +0000</pubDate>
</item>

<item>
        <title>Too many tests</title>
	<content:encoded>
Today for lunch, I had rice with wheat gluten, tomatoes, and cashews. The rice is somewhat sweet and very purple, but I can't tell you what kind it is exactly, because the package is entirely in Korean.
</content:encoded>
        <link>http://modelingwithdata.org/arch/00000004.htm</link>
        <guid isPermaLink="false">http://modelingwithdata.org/arch/00000004.htm</guid>
	<dc:creator>Ben Klemens</dc:creator>
        <pubDate>16 March 2009 00:00:00 +0000</pubDate>
</item>

<item>
        <title>Parallels II</title>
	<content:encoded>
This is a continuation of last episode, discussing how technology affects the math we do. Next time, I'll switch from computing to conflicts in stats.
</content:encoded>
        <link>http://modelingwithdata.org/arch/00000003.htm</link>
        <guid isPermaLink="false">http://modelingwithdata.org/arch/00000003.htm</guid>
	<dc:creator>Ben Klemens</dc:creator>
        <pubDate>13 March 2009 00:00:00 +0000</pubDate>
</item>

<item>
        <title>Moore's law won't save you</title>
	<content:encoded>
A lot of us are stuck in an optimistic early-90s mentality toward progress in computing power.
</content:encoded>
        <link>http://modelingwithdata.org/arch/00000002.htm</link>
        <guid isPermaLink="false">http://modelingwithdata.org/arch/00000002.htm</guid>
	<dc:creator>Ben Klemens</dc:creator>
        <pubDate>8 March 2009 00:00:00 +0000</pubDate>
</item>

<item>
        <title>Today I am a blog</title>
	<content:encoded>
I never really know what to say in these introductions.
</content:encoded>
        <link>http://modelingwithdata.org/arch/00000001.htm</link>
        <guid isPermaLink="false">http://modelingwithdata.org/arch/00000001.htm</guid>
	<dc:creator>Ben Klemens</dc:creator>
        <pubDate>6 March 2009 00:00:00 +0000</pubDate>
</item>

</channel>
</rss>
