<?xml version="1.0" encoding="utf-8" standalone="yes"?>
<rss version="2.0" xmlns:atom="http://www.w3.org/2005/Atom">
  <channel>
    <title>Git on traviscj/blog</title>
    <link>https://traviscj.com/blog/tags/git/</link>
    <description>Recent content in Git on traviscj/blog</description>
    <generator>Hugo</generator>
    <language>en-us</language>
    <lastBuildDate>Thu, 31 Aug 2017 08:42:43 +0000</lastBuildDate>
    <atom:link href="https://traviscj.com/blog/tags/git/index.xml" rel="self" type="application/rss+xml" />
    <item>
      <title>python attrs</title>
      <link>https://traviscj.com/blog/post/2017-08-31-python-attrs/</link>
      <pubDate>Thu, 31 Aug 2017 08:42:43 +0000</pubDate>
      <guid>https://traviscj.com/blog/post/2017-08-31-python-attrs/</guid>
      <description>&lt;p&gt;I came across a very interesting library in a &lt;a href=&#34;https://news.ycombinator.com/item?id=15131981&#34;&gt;HN thread&lt;/a&gt;: the python &lt;a href=&#34;http://www.attrs.org/en/stable/examples.html&#34;&gt;attrs&lt;/a&gt; library.&lt;/p&gt;&#xA;&lt;p&gt;In particular, this seems like a great way to do the &amp;ldquo;dumb data objects&amp;rdquo; they talk about in &lt;a href=&#34;https://www.youtube.com/watch?v=3MNVP9-hglc&#34;&gt;the end of object inheritance&lt;/a&gt;, and also related to (but maybe lighter weight than) &lt;a href=&#34;https://zopeinterface.readthedocs.io/en/latest/README.html&#34;&gt;zope.interface&lt;/a&gt;.&lt;/p&gt;&#xA;&lt;p&gt;This also seems very similar to what I use &lt;a href=&#34;https://github.com/google/auto&#34;&gt;autovalue&lt;/a&gt; for at work.&lt;/p&gt;&#xA;&lt;p&gt;One particularly interesting application is a &amp;ldquo;code database&amp;rdquo; &amp;ndash; using static, checked-in-to-version-control definitions of some data model as a sort of very-fast-to-read, very-slow-to-update &amp;ldquo;Data Model&amp;rdquo;.&#xA;I find this fascinating:&#xA;Code shares a lot of properties with great data stores: ability to rollback (&lt;code&gt;git revert&lt;/code&gt;) and accountability/auditability (&lt;code&gt;git blame&lt;/code&gt;).&#xA;It also makes a lot of fairly hard problems much simpler: you don&amp;rsquo;t need to poll the database for changes.&#xA;You don&amp;rsquo;t need to invalidate any caches.&#xA;You don&amp;rsquo;t need to consider a &amp;ldquo;split brain&amp;rdquo; environment where half of the in-memory caches have updated but the other half haven&amp;rsquo;t.&#xA;You don&amp;rsquo;t need to consider failure cases of how long the in-memory cache is allowed to be invalid: you just fail to boot up on deploy.&#xA;(Admittedly, there&amp;rsquo;s still an opportunity window for split brain behavior for the duration of the deploy, but this is a lot easier to reason about than an essentially arbitrary.)&lt;/p&gt;</description>
    </item>
    <item>
      <title>toy/life data models</title>
      <link>https://traviscj.com/blog/post/2017-04-19-toy_life_data_models/</link>
      <pubDate>Wed, 19 Apr 2017 00:00:00 +0000</pubDate>
      <guid>https://traviscj.com/blog/post/2017-04-19-toy_life_data_models/</guid>
      <description>&lt;p&gt;I&amp;rsquo;ve been experimenting a lot with some kinda &amp;ldquo;toy&amp;rdquo; data models based on random things that I wish there was a database to query, but isn&amp;rsquo;t.&#xA;For example:&lt;/p&gt;&#xA;&lt;ul&gt;&#xA;&lt;li&gt;What was my average arrival time this week?&lt;/li&gt;&#xA;&lt;li&gt;How much of my equity has vested before a certain date?&lt;/li&gt;&#xA;&lt;li&gt;When was the last time we had spaghetti for dinner?&lt;/li&gt;&#xA;&lt;/ul&gt;&#xA;&lt;p&gt;I&amp;rsquo;ve been doing this with flat JSON files.&#xA;This is a bit of an odd choice for me; I actually love schematizing data models in protobuf and MySQL and designing proper indices for the data models I work on during work hours.&lt;/p&gt;</description>
    </item>
    <item>
      <title>Meta post - How my blog works</title>
      <link>https://traviscj.com/blog/post/2012-07-27-meta_post_how_my_blog_works/</link>
      <pubDate>Fri, 27 Jul 2012 00:00:00 +0000</pubDate>
      <guid>https://traviscj.com/blog/post/2012-07-27-meta_post_how_my_blog_works/</guid>
      <description>&lt;p&gt;A while back, Sharvil requested a quick overview of how I post stuff to my blog, so I thought I&amp;rsquo;d post a rundown of it.&lt;/p&gt;&#xA;&lt;p&gt;At the base, I use a git repository to store files named entryNNNN.txt. Each has the basic format:&lt;/p&gt;&#xA;&lt;pre tabindex=&#34;0&#34;&gt;&lt;code&gt;title: Meta post: How my blog works&#xA;date: 2012/07/27&#xA;category: software&#xA;---&#xA;A while back, Sharvil requested a quick overview of how I post stuff to my blog, so I thought I&amp;#39;d post a rundown of it.&#xA;At the base, I use a git repository to store files named entryNNNN.txt. Each has the basic format:&#xA;&lt;/code&gt;&lt;/pre&gt;&lt;p&gt;To start a new post and fill in some of this, I have a script called &amp;rsquo;newentry.sh&amp;rsquo;, which determines the latest entry number and adds one to get a new filename (eg, entry0081.txt).&lt;/p&gt;</description>
    </item>
    <item>
      <title>tjtestharness - a language-agnostic DVCS unit-test/continuous integration tool</title>
      <link>https://traviscj.com/blog/post/2012-03-26-tjtestharness_-_a_language-agnostic_dvcs_unit-testcontinuous_integration_tool/</link>
      <pubDate>Mon, 26 Mar 2012 00:00:00 +0000</pubDate>
      <guid>https://traviscj.com/blog/post/2012-03-26-tjtestharness_-_a_language-agnostic_dvcs_unit-testcontinuous_integration_tool/</guid>
      <description>&lt;p&gt;I&amp;rsquo;ve been wanting to have a way to visualize which unit tests(or sets of them) passed for a given commit, if for no other reason than the sense of accomplishment from watching boxes turn yellow, then green, as they pass tests.&#xA;The trouble is, I write code in a lot of different languages for a lot of different projects.&#xA;I also don&amp;rsquo;t want to bother with running unit tests individually&amp;ndash;I want them to run as I perform commits.&lt;/p&gt;</description>
    </item>
    <item>
      <title>A few more exotic uses for older hardware</title>
      <link>https://traviscj.com/blog/post/2008-10-22-a_few_more_exotic_uses_for_older_hardware/</link>
      <pubDate>Wed, 22 Oct 2008 00:00:00 +0000</pubDate>
      <guid>https://traviscj.com/blog/post/2008-10-22-a_few_more_exotic_uses_for_older_hardware/</guid>
      <description>&lt;p&gt;There are tons of posts on the internet about what to do with older computers. In general, they say some of the same things: Linux/Firewall, Media Server, and &amp;lsquo;BitTorrent Box&amp;rsquo;. (Incidentally, the lattermost somewhat confuses me. I guess people want to download files on a separate machine in case it has viruses or whatever&amp;hellip; but if you&amp;rsquo;re using bit torrent so much that it&amp;rsquo;s worth having a separate box for, you&amp;rsquo;re probably still gonna be upset if a virus takes it out. Or you could just use antivirus or an alternative OS. But I digress.) Anyways, for the uses I&amp;rsquo;ll outline here I&amp;rsquo;m going to assume that you (at least roughly) fit into the prototype of &amp;lsquo;I have a pretty decent computer sitting around that never really gets used.&amp;rsquo; In my case, I tend to upgrade and want to keep the old one around because it&amp;rsquo;s still a pretty decent computer, but want to use the newer one for bigger and better things. Like reading xkcd and refreshing google news over and over again. Heh.&lt;/p&gt;</description>
    </item>
  </channel>
</rss>
