<?xml version="1.0" encoding="utf-8"?>
<feed xmlns="http://www.w3.org/2005/Atom">
    <title>Weissblog</title>
    <link rel="alternate" type="text/html" href="http://blog.uberweiss.net/" />
    <link rel="self" type="application/atom+xml" href="http://blog.uberweiss.net/atom.xml" />
    <id>tag:blog.uberweiss.net,2009-07-30://1</id>
    <updated>2010-01-18T22:23:35Z</updated>
    <subtitle>Justin Weiss&apos; blog about software development, Seattle, and other random stuff.</subtitle>
    <generator uri="http://www.sixapart.com/movabletype/">Movable Type 4.3-en</generator>

<entry>
    <title>Jammit</title>
    <link rel="alternate" type="text/html" href="http://blog.uberweiss.net/2010/01/jammit.html" />
    <id>tag:blog.uberweiss.net,2010://1.26</id>

    <published>2010-01-18T22:12:35Z</published>
    <updated>2010-01-18T22:23:35Z</updated>

    <summary>I wanted ta take a minute to highlight Jammit, one of the most useful (and best documented) plugins I&#8217;ve used lately. Jammit is a really easy way to get CSS and Javascript minification and bundling with really low development overhead....</summary>
    <author>
        <name>Justin Weiss</name>
        
    </author>
    
        <category term="Programming" scheme="http://www.sixapart.com/ns/types#category" />
    
        <category term="Software" scheme="http://www.sixapart.com/ns/types#category" />
    
    
    <content type="html" xml:lang="en-US" xml:base="http://blog.uberweiss.net/">
        <![CDATA[<p>I wanted ta take a minute to highlight <a href="http://documentcloud.github.com/jammit/">Jammit</a>, one of the most useful (and best documented) plugins I&#8217;ve used lately. Jammit is a really easy way to get CSS and Javascript minification and bundling with really low development overhead. </p>

<p>After installing the gem, it&#8217;s as simple as setting up your bundles in an assets.yml that looks something like this:</p>

<script type="syntaxhighlighter" class="brush: js"><![CDATA[
javascripts:
  common:
    - public/javascripts/prototype.js
    - public/javascripts/effects.js
    - public/javascripts/controls.js
    - public/javascripts/application.js
    - public/javascripts/tooltip.js
    - public/javascripts/dialog.js
  search:
    - public/javascripts/jquery-1.1.1.js
    - public/javascripts/jquery_no_conflict.js
    - public/javascripts/jquery_history.js
    - public/javascripts/async_search.js
   ...

stylesheets:
  common:
    - public/stylesheets/blueprint/src/reset.css
    - public/stylesheets/global.css
    - public/stylesheets/form.css
  profile:
    - public/stylesheets/profile.css
    - public/stylesheets/profile_data.css 
  ...
]]&gt;</script>

<p>From code, these bundles can be referred to with the <code>include_stylesheets</code> and <code>include_javascripts</code> methods. When using these functions in development mode, the unminified, unbundled assets are included. In production environments, I wrote a capistrano task to bundle these up using the <code>jammit</code> command provided by the gem:</p>

<script type="syntaxhighlighter" class="brush: ruby"><![CDATA[
task :generate_assets, :roles => :web do
  send(:run, "cd #{release_path} && /usr/bin/jammit config/assets.yml")
end
]]&gt;</script>

<p>This minifies, bundles, and gzips all the assets and dumps them in the public/ directory, making generating these bundles something we don&#8217;t ever need to think about again.</p>

<p>Way better than the manual bundling rake tasks we were using before.</p>
]]>
        

    </content>
</entry>

<entry>
    <title>InfoQ: Systems that Never Stop (and Erlang)</title>
    <link rel="alternate" type="text/html" href="http://blog.uberweiss.net/2010/01/infoq-systems-that-never-stop-and-erlang.html" />
    <id>tag:blog.uberweiss.net,2010://1.25</id>

    <published>2010-01-18T06:13:55Z</published>
    <updated>2010-01-18T06:17:54Z</updated>

    <summary>Joe Armstrong gave a great presentation on Erlang late last year. It&#8217;s definitely worth a watch. Erlang&#8217;s one of those languages I know would make some really complicated work much more simple, but I never got around to learning it...</summary>
    <author>
        <name>Justin Weiss</name>
        
    </author>
    
        <category term="Programming" scheme="http://www.sixapart.com/ns/types#category" />
    
    
    <content type="html" xml:lang="en-US" xml:base="http://blog.uberweiss.net/">
        <![CDATA[<p>Joe Armstrong gave <a href="http://www.infoq.com/presentations/Systems-that-Never-Stop-Joe-Armstrong">a great presentation on Erlang</a> late last year. It&#8217;s definitely worth a watch. Erlang&#8217;s one of those languages I know would make some really complicated work much more simple, but I never got around to learning it well. Maybe this year?</p>
]]>
        

    </content>
</entry>

<entry>
    <title>New System</title>
    <link rel="alternate" type="text/html" href="http://blog.uberweiss.net/2009/11/new-system.html" />
    <id>tag:blog.uberweiss.net,2009://1.24</id>

    <published>2009-11-25T23:31:08Z</published>
    <updated>2009-11-25T23:50:50Z</updated>

    <summary>I got a new work laptop yesterday, and so I&#8217;m writing this down for my future reference. These are the things I install on any new Mac system. Xcode (from the snow leopard disk) Fink Binary Fink Packages Ruby/Rubygems/Rails (through...</summary>
    <author>
        <name>Justin Weiss</name>
        
    </author>
    
        <category term="Software" scheme="http://www.sixapart.com/ns/types#category" />
    
    
    <content type="html" xml:lang="en-US" xml:base="http://blog.uberweiss.net/">
        <![CDATA[<p>I got a new work laptop yesterday, and so I&#8217;m writing this down for my future reference. These are the things I install on any new Mac system.</p>

<ol>
<li>Xcode (from the snow leopard disk)</li>
<li><a href="http://www.finkproject.org/">Fink</a></li>
<li><a href="http://finkers.wordpress.com/2009/06/01/fink-and-binary-distributions/">Binary Fink Packages</a></li>
<li>Ruby/Rubygems/Rails (through fink)</li>
<li>Imagemagick (through fink)</li>
<li>Git (through fink)</li>
<li>Mysql (through fink)</li>
<li>Emacs (from the unofficial git repo at git://git.sv.gnu.org/emacs.git)</li>
<li>My dotfiles and dotemacs repos (from a shared git repo)</li>
<li><a href="http://adium.im/">Adium</a> - iChat doesn&#8217;t do MSN, which doesn&#8217;t work in an office of former Microsofties/Expedians</li>
<li><a href="http://www.atebits.com/tweetie-mac/">Tweetie</a></li>
<li><a href="http://www.skype.com/">Skype</a></li>
<li><a href="http://colloquy.info/">Colloquy</a></li>
<li><a href="http://www.vmware.com/products/fusion/">VMWare Fusion</a></li>
<li><a href="http://www.newsgator.com/INDIVIDUALS/NETNEWSWIRE/">NetNewsWire</a> - This is for both the iPhone and Mac, and is the best RSS reader I&#8217;ve found. </li>
</ol>

<p>For pretty much anything else, I just use the built-in stuff.</p>
]]>
        

    </content>
</entry>

<entry>
    <title>Great Read</title>
    <link rel="alternate" type="text/html" href="http://blog.uberweiss.net/2009/11/great-read.html" />
    <id>tag:blog.uberweiss.net,2009://1.22</id>

    <published>2009-11-23T04:57:10Z</published>
    <updated>2009-11-23T05:06:08Z</updated>

    <summary>I finally got around to reading Brian Ford&#8217;s recent post, Improving the Rubinius Bytecode Compiler, today. It&#8217;s a really good post if you&#8217;re interested in compilers, bytecodes, and self-hosting languages, and definitely worth a read when you have the time....</summary>
    <author>
        <name>Justin Weiss</name>
        
    </author>
    
        <category term="Programming" scheme="http://www.sixapart.com/ns/types#category" />
    
    
    <content type="html" xml:lang="en-US" xml:base="http://blog.uberweiss.net/">
        <![CDATA[<p>I finally got around to reading Brian Ford&#8217;s recent post, <a href="http://www.engineyard.com/blog/2009/improving-the-rubinius-bytecode-compiler/">Improving the Rubinius Bytecode Compiler</a>, today. It&#8217;s a really good post if you&#8217;re interested in compilers, bytecodes, and self-hosting languages, and definitely worth a read when you have the time. It manages to capture that happy medium between skimming the surface of a bunch of topics while still managing to go into a reasonable amount of depth. It makes me want to reread my copy of the <a href="http://www.amazon.com/gp/product/0201113716?ie=UTF8&amp;tag=weissblog05-20&amp;linkCode=as2&amp;camp=1789&amp;creative=390957&amp;creativeASIN=0201113716">blue book</a> again, which is another sign of a great blog post &#8212; it makes me want to go out and do something as a direct result of reading it!</p>
]]>
        

    </content>
</entry>

<entry>
    <title>ChromeOS</title>
    <link rel="alternate" type="text/html" href="http://blog.uberweiss.net/2009/11/chromeos.html" />
    <id>tag:blog.uberweiss.net,2009://1.21</id>

    <published>2009-11-22T05:49:25Z</published>
    <updated>2009-11-22T05:58:50Z</updated>

    <summary>I like the idea of a web-only OS, since almost everything I need and use on a computer on a daily basis is accessible through the web, but it&#8217;s still missing one of the most critical things, and it&#8217;s the...</summary>
    <author>
        <name>Justin Weiss</name>
        
    </author>
    
        <category term="Programming" scheme="http://www.sixapart.com/ns/types#category" />
    
    
    <content type="html" xml:lang="en-US" xml:base="http://blog.uberweiss.net/">
        <![CDATA[<p>I like the idea of a web-only OS, since almost everything I need and use on a computer on a daily basis is accessible through the web, but it&#8217;s still missing one of the most critical things, and it&#8217;s the same thing that keeps me from going iPhone-only on vacations and long weekend trips &#8212; a decent way to edit code. Maybe something like <a href="https://bespin.mozilla.com/">Bespin</a> is the answer &#8212; I&#8217;ve never tried it out, but would have expected to hear more about it if it was really worth using. Until someone comes up with some kind of web or iPhone-based emacs-like code editor, preferably one that syncs through DAV or some kind of VCS to other computers, I think I&#8217;m stuck with traditional laptops and OSes. A shame, because although the keyboard on the iPhone would be worthless for long coding sessions, it&#8217;d be great for small corrections and simple edits.</p>
]]>
        

    </content>
</entry>

<entry>
    <title>Function declarations vs definition</title>
    <link rel="alternate" type="text/html" href="http://blog.uberweiss.net/2009/11/function-declarations-vs-definition.html" />
    <id>tag:blog.uberweiss.net,2009://1.20</id>

    <published>2009-11-21T01:08:16Z</published>
    <updated>2009-11-21T01:12:44Z</updated>

    <summary>Just wrote this for a friend who&#8217;s in the process of writing C&#8230; it&#8217;s been a while for me, but I think it&#8217;s mostly accurate: So you have your function main(). main() calls a function called int foo(int x). say...</summary>
    <author>
        <name>Justin Weiss</name>
        
    </author>
    
        <category term="Programming" scheme="http://www.sixapart.com/ns/types#category" />
    
    
    <content type="html" xml:lang="en-US" xml:base="http://blog.uberweiss.net/">
        <![CDATA[<p>Just wrote this for a friend who&#8217;s in the process of writing C&#8230; it&#8217;s been a while for me, but I think it&#8217;s mostly accurate:</p>

<p>So you have your function main().</p>

<p>main() calls a function called int foo(int x).</p>

<p>say you have a file that looks like this:</p>

<script type="syntaxhighlighter" class="brush: c"><![CDATA[
int main(void) {
  printf("%d", foo(2));
  return(0);
}

int foo(int x) {
  return x * 2;
}

]]&gt;</script>

<p>when the file is compiled, main has no idea what foo() is, if you&#8217;re
even calling it right, etc. because it doesn&#8217;t know about foo() until
after main is compiled. There are two ways you can fix this:</p>

<ol>
<li>Define foo before main, like this:</li>
</ol>

<script type="syntaxhighlighter" class="brush: c"><![CDATA[
int foo(int x) {
  return x * 2;
}

int main(void) {
  printf("%d", foo(2));
  return(0);
}

]]&gt;</script>

<p>This works when you have functions that only need to be used in one
file. But it won&#8217;t work if that function is called from functions in
many different files.</p>

<p>2. Describe how foo() expects to be called before it is ever called, so
   main() can tell if it&#8217;s calling it right:</p>

<script type="syntaxhighlighter" class="brush: c"><![CDATA[
int foo(int x);

int main(void) {
  printf("%d", foo(2));
  return(0);
}

int foo(int x) {
  return x * 2;
}

]]&gt;</script>

<p>This lets you be more flexible, because the declaration int foo(int x);
can exist in a bunch of different files that all need to call foo(), but
you only need to repeat the first line and not the entire function. This
way, anyone calling foo() doesn&#8217;t even need to care about what foo()
does, just what they expect to shove into it and what they expect to get
out of it.</p>

<p>Hope that helps.</p>
]]>
        

    </content>
</entry>

<entry>
    <title>iNethack</title>
    <link rel="alternate" type="text/html" href="http://blog.uberweiss.net/2009/11/inethack.html" />
    <id>tag:blog.uberweiss.net,2009://1.19</id>

    <published>2009-11-19T22:31:17Z</published>
    <updated>2009-11-19T22:33:04Z</updated>

    <summary>Just saw that this came out on the iPhone. Sweet! Maybe now I&#8217;ll play enough that I can keep from dying so much....</summary>
    <author>
        <name>Justin Weiss</name>
        
    </author>
    
        <category term="Software" scheme="http://www.sixapart.com/ns/types#category" />
    
    
    <content type="html" xml:lang="en-US" xml:base="http://blog.uberweiss.net/">
        <![CDATA[<p>Just saw that <a href="http://code.google.com/p/inethack/">this</a> came out on the iPhone. Sweet! Maybe now I&#8217;ll play enough that I can keep from dying so much.</p>
]]>
        

    </content>
</entry>

<entry>
    <title>Pragmatic Programmer Thanksgiving Sale</title>
    <link rel="alternate" type="text/html" href="http://blog.uberweiss.net/2009/11/pragmatic-programmer-thanksgiving-sale.html" />
    <id>tag:blog.uberweiss.net,2009://1.18</id>

    <published>2009-11-19T00:46:22Z</published>
    <updated>2009-11-19T01:03:34Z</updated>

    <summary>The Pragmatic Programmer is one of the best books on software development I&#8217;ve ever read, and is definitely the #1 book I recommend to fellow programmers when asked. It&#8217;s no surprise, then, that I&#8217;m fond of nearly every book I&#8217;ve...</summary>
    <author>
        <name>Justin Weiss</name>
        
    </author>
    
        <category term="Programming" scheme="http://www.sixapart.com/ns/types#category" />
    
    
    <content type="html" xml:lang="en-US" xml:base="http://blog.uberweiss.net/">
        <![CDATA[<p><a href="http://www.pragprog.com/titles/tpp/the-pragmatic-programmer">The Pragmatic Programmer</a> is one of the best books on software development I&#8217;ve ever read, and is definitely the #1 book I recommend to fellow programmers when asked. It&#8217;s no surprise, then, that I&#8217;m fond of nearly every book I&#8217;ve read that their company has published. Lucky me (and you), they&#8217;re doing a holiday sale &#8212; 40% off everything in the store. Here&#8217;s some of the better books of theirs that I&#8217;ve read:</p>

<ol>
<li><p><a href="http://www.pragprog.com/titles/tpp/the-pragmatic-programmer">The Pragmatic Programmer</a> - Not sure if this one is discounted, since it&#8217;s usually excluded, but like I said, it&#8217;s my #1 and I recommend every working developer read it.</p></li>
<li><p><a href="http://www.pragprog.com/titles/ruby/programming-ruby">Programming Ruby</a> - This and <a href="http://mislav.uniqpath.com/poignant-guide/">_why&#8217;s guide</a> are the books that got me into the language I use to make my living, and the only programming language I&#8217;ve ever felt fit my mental model of how programming should be. These days the 1.9 version would be the one to pick up, but this is the one that got me started. </p></li>
<li><p><a href="http://www.pragprog.com/titles/rails3/agile-web-development-with-rails-third-edition">Agile Web Development with Rails</a> - The first edition of this book taught me Rails, and I&#8217;ve bought every edition since then. It&#8217;s still my go-to reference when I need to know something that&#8217;s not completely covered by the rdoc and I&#8217;m not willing to go source-diving for the answer.</p></li>
<li><p><a href="http://www.pragprog.com/titles/cppsu/prototype-and-script-aculo-us">Prototype and script.aculo.us</a> - This is the book that taught me to stop looking at javascript as an annoyance, and start looking at it as an opportunity.</p></li>
<li><p><a href="http://www.pragprog.com/titles/jaerlang/programming-erlang">Programming Erlang</a> - I&#8217;m going through this for the second time right now, and like all of the PragProg language books, it&#8217;s a great starting point. The language books of theirs I&#8217;ve read have done an amazing job of not only teaching the language, but making me excited to use it.</p></li>
<li><p><a href="http://www.pragprog.com/titles/shcloj/programming-clojure">Programming Clojure</a> - Like the above book, this is another great PragProg language book. I&#8217;m still not 100% sure what I think about the language, but if I decide to use it for a project, I know this will be my reference.</p></li>
</ol>
]]>
        

    </content>
</entry>

<entry>
    <title>College Basketball</title>
    <link rel="alternate" type="text/html" href="http://blog.uberweiss.net/2009/11/college-basketball.html" />
    <id>tag:blog.uberweiss.net,2009://1.17</id>

    <published>2009-11-18T02:55:59Z</published>
    <updated>2009-11-18T03:02:18Z</updated>

    <summary>Also known as, &#8220;Comcast did something right for a change&#8221; I&#8217;m a sports fan (Bears, Illini, Cubs, Blackhawks &#8212; yeah, Chicago native) and my second favorite sport just kicked off: College Basketball. To commemorate this, ESPN&#8217;s been showing a 24-hour...</summary>
    <author>
        <name>Justin Weiss</name>
        
    </author>
    
        <category term="Sports" scheme="http://www.sixapart.com/ns/types#category" />
    
    
    <content type="html" xml:lang="en-US" xml:base="http://blog.uberweiss.net/">
        <![CDATA[<p>Also known as, &#8220;Comcast did something right for a change&#8221;</p>

<p>I&#8217;m a sports fan (Bears, Illini, Cubs, Blackhawks &#8212; yeah, Chicago native) and my second favorite sport just kicked off: College Basketball. To commemorate this, ESPN&#8217;s been showing a 24-hour college basketball marathon on TV and <a href="http://www.espn360.com">ESPN360</a> all day. Luckily for me, Comcast apparently signed a deal to bring ESPN360 to everyone that pays them for internet access, no matter where they are &#8212; awesome!</p>

<p>Apart from some Snow Leopard issues, it&#8217;s like Christmas came a month early! (or maybe like a bunch of first round tournament games, four months early)</p>
]]>
        

    </content>
</entry>

<entry>
    <title>Scriptaculous dialog box</title>
    <link rel="alternate" type="text/html" href="http://blog.uberweiss.net/2009/11/scriptaculous-dialog-box.html" />
    <id>tag:blog.uberweiss.net,2009://1.16</id>

    <published>2009-11-16T23:28:04Z</published>
    <updated>2009-11-16T23:41:22Z</updated>

    <summary>This javascript snippet to create an html dialog box came in really handy today, especially when I overrode the base Dialog.Box with &lt;![CDATA[ Dialog.ModalBox = Class.create(Dialog.Box, { initialize: function($super, id, options) { $super(id); if(options == undefined) { options = {};...</summary>
    <author>
        <name>Justin Weiss</name>
        
    </author>
    
        <category term="Programming" scheme="http://www.sixapart.com/ns/types#category" />
    
    
    <content type="html" xml:lang="en-US" xml:base="http://blog.uberweiss.net/">
        <![CDATA[<p><a href="http://snippets.dzone.com/posts/show/3411">This javascript snippet</a> to create an html dialog box came in really handy today, especially when I overrode the base Dialog.Box with </p>

<script type="syntaxhighlighter" class="brush: javascript"><![CDATA[
Dialog.ModalBox = Class.create(Dialog.Box, {
  initialize: function($super, id, options) {
    $super(id);
    if(options == undefined) {
      options = {};
    }
    this.options = {};
    this.options.duration = options.duration || 0.0;
    this.options.opacity = options.opacity || 0.4;

  },

  show: function() {
    this.moveDialogBox('out');
    this.selectBoxes('hide');
    Effect.Appear(this.overlay, {duration: this.options.duration, from: 0.0, to: this.options.opacity});
    this.dialog_box.style.display = '';
  }
});

]]&gt;</script>

<p>to make it modal. </p>

<p>I used it like this:</p>

<script type="syntaxhighlighter" class="brush: html"><![CDATA[

&lt;div id="my_box" style="display:none" class="dialog_box">
  <h1>
    Title!
  </h1>
  <p>
    Information!
  </p>
  <p>
    <a href='#' onclick="do_stuff();$('my_box').hide();", :class => 'primary action'>OK</a>
    <a href='#' onclick="$('my_box').hide();", :class => 'action'>Cancel</a>
  </p>
</div>

<script language="javascript" type="text/javascript">
  document.observe('dom:loaded', function() {
    new Dialog.ModalBox("my_box");
    $("my_box").show();
  });
&lt;/script>

]]&gt;</script>

<p>All that&#8217;s left is slapping some css on it!</p>
]]>
        

    </content>
</entry>

<entry>
    <title>New Digs</title>
    <link rel="alternate" type="text/html" href="http://blog.uberweiss.net/2009/11/new-digs.html" />
    <id>tag:blog.uberweiss.net,2009://1.15</id>

    <published>2009-11-15T23:46:31Z</published>
    <updated>2009-11-16T00:05:53Z</updated>

    <summary>Tomorrow&#8217;s our first day in the new office: Seattle Tower It&#8217;s an amazing building, and I&#8217;m excited to make it our new home for the foreseeable future!...</summary>
    <author>
        <name>Justin Weiss</name>
        
    </author>
    
        <category term="Avvo" scheme="http://www.sixapart.com/ns/types#category" />
    
    
    <content type="html" xml:lang="en-US" xml:base="http://blog.uberweiss.net/">
        <![CDATA[<p>Tomorrow&#8217;s our first day in the new office:</p>

<p><img src="http://upload.wikimedia.org/wikipedia/commons/thumb/6/6c/Seattle_Northern_Life_03.jpg/220px-Seattle_Northern_Life_03.jpg" /></p>

<p><a href="http://en.wikipedia.org/wiki/Seattle_Tower">Seattle Tower</a></p>

<p>It&#8217;s an amazing building, and I&#8217;m excited to make it our new home for the foreseeable future!</p>
]]>
        

    </content>
</entry>

<entry>
    <title>Game-changer</title>
    <link rel="alternate" type="text/html" href="http://blog.uberweiss.net/2009/11/game-changer.html" />
    <id>tag:blog.uberweiss.net,2009://1.14</id>

    <published>2009-11-15T01:35:48Z</published>
    <updated>2009-11-15T01:43:08Z</updated>

    <summary>Three things about Marco Arment This was a great post about the author of Instapaper, one of my favorite web tools. It&#8217;s the first thing since RSS that has totally changed the way I read, not just on the web,...</summary>
    <author>
        <name>Justin Weiss</name>
        
    </author>
    
        <category term="Software" scheme="http://www.sixapart.com/ns/types#category" />
    
    
    <content type="html" xml:lang="en-US" xml:base="http://blog.uberweiss.net/">
        <![CDATA[<p><a href="http://www.kungfugrippe.com/post/243861520/marco">Three things about Marco Arment</a></p>

<p>This was a great post about the author of <a href="http://www.instapaper.com/">Instapaper</a>, one of my favorite web tools. It&#8217;s the first thing since RSS that has totally changed the way I read, not just on the web, but in general.</p>

<p><a href="http://www.instapaper.com/faq">Marco says it better</a> than I could:</p>

<blockquote>
  <p>From a personal perspective, I appreciate great writing, but I&#8217;ve become frustrated with the quick-consumption nature of many devoted blog readers. Authors are encouraged to cater to drive-by visitors hurrying through their feed readers by producing lightweight content for quick skimming.</p>

<p>There&#8217;s no time to sit and read anything when you&#8217;re going through 500 feed items while responding to email, chatting, and watching bad YouTube videos.</p>

<p>As a result, popular blogs are now full of useless &#8220;list posts&#8221; with no substance or value.</p>

<p>Well-written content is out there, and we do have opportunities every day to read it &#8212; just not when we&#8217;re in information-skimming, speed-overload mode.</p>
</blockquote>
]]>
        

    </content>
</entry>

<entry>
    <title>Security Theater</title>
    <link rel="alternate" type="text/html" href="http://blog.uberweiss.net/2009/11/security-theater.html" />
    <id>tag:blog.uberweiss.net,2009://1.13</id>

    <published>2009-11-13T18:01:50Z</published>
    <updated>2009-11-13T18:05:16Z</updated>

    <summary>Bruce Schneier&#8217;s blog is always a good read, and today&#8217;s post goes way beyond good &#8212; it&#8217;s one of the best things I&#8217;ve read all year. It says everything that needs to be said about the direction security and politics...</summary>
    <author>
        <name>Justin Weiss</name>
        
    </author>
    
    
    <content type="html" xml:lang="en-US" xml:base="http://blog.uberweiss.net/">
        <![CDATA[<p><a href="http://www.schneier.com/blog/">Bruce Schneier&#8217;s blog</a> is always a good read, and <a href="http://www.schneier.com/blog/archives/2009/11/beyond_security.html">today&#8217;s post</a> goes way beyond good &#8212; it&#8217;s one of the best things I&#8217;ve read all year. It says everything that needs to be said about the direction security and politics have been going in the past eight years.</p>
]]>
        

    </content>
</entry>

<entry>
    <title>Scoping emacs to a git root directory</title>
    <link rel="alternate" type="text/html" href="http://blog.uberweiss.net/2009/11/scoping-emacs-to-a-git-root-directory.html" />
    <id>tag:blog.uberweiss.net,2009://1.12</id>

    <published>2009-11-12T23:47:58Z</published>
    <updated>2009-11-12T23:57:45Z</updated>

    <summary>I use git to manage almost all of my projects, and emacs for most of my development work. A lot of times, I want to scope functionality to a specific git repository. I hacked up the following function, that returns...</summary>
    <author>
        <name>Justin Weiss</name>
        
    </author>
    
        <category term="Programming" scheme="http://www.sixapart.com/ns/types#category" />
    
    
    <content type="html" xml:lang="en-US" xml:base="http://blog.uberweiss.net/">
        <![CDATA[<p>I use <a href="http://git.or.cz">git</a> to manage almost all of my projects, and <a href="http://www.gnu.org/software/emacs/">emacs</a> for most of my development work. A lot of times, I want to scope functionality to a specific git repository. I hacked up the following function, that returns a buffer&#8217;s git root directory:</p>

<script type="syntaxhighlighter" class="brush: ruby"><![CDATA[
(defun my-git-root () 
  (if buffer-file-name
      (let* ((current-directory (file-name-directory buffer-file-name))
             (git-directory (concat current-directory ".git")))
        (while (and 
                current-directory 
                (not (file-exists-p git-directory)))
          (setq current-directory (file-name-directory (substring current-directory 0 -1)))
          (setq git-directory (concat current-directory ".git")))
        current-directory)))
]]&gt;</script>

<p>It&#8217;s especially useful in stuff like:</p>

<script type="syntaxhighlighter" class="brush: ruby"><![CDATA[
(defun my-git-grep (regexp)
  (interactive "sRegexp: ")
  (vc-git-grep regexp "*" (my-git-root)))

]]&gt;</script>
]]>
        

    </content>
</entry>

<entry>
    <title>Erlang at Facebook</title>
    <link rel="alternate" type="text/html" href="http://blog.uberweiss.net/2009/11/erlang-at-facebook.html" />
    <id>tag:blog.uberweiss.net,2009://1.11</id>

    <published>2009-11-11T23:31:14Z</published>
    <updated>2009-11-11T23:51:05Z</updated>

    <summary>A bunch of people linked me to Facebook&#8217;s presentation on their use of Erlang (among other languages) to build their chat platform. The presentation is definitely worth scanning. One of the things that always strikes me about Erlang is the...</summary>
    <author>
        <name>Justin Weiss</name>
        
    </author>
    
        <category term="Programming" scheme="http://www.sixapart.com/ns/types#category" />
    
        <category term="Software" scheme="http://www.sixapart.com/ns/types#category" />
    
    
    <content type="html" xml:lang="en-US" xml:base="http://blog.uberweiss.net/">
        <![CDATA[<p>A bunch of people linked me to <a href="http://www.erlang-factory.com/upload/presentations/31/EugeneLetuchy-ErlangatFacebook.pdf">Facebook&#8217;s presentation</a> on their use of <a href="http://erlang.org">Erlang</a> (among other languages) to build their chat platform. The presentation is definitely worth scanning. One of the things that always strikes me about Erlang is the way people writing software in it can so matter-of-factly dismiss problems that would be huge in infrastructure built on other languages. It blows my mind that things like hot code upgrades, live node inspection and repair, and overall system stability in the presence of tons of errors can be considered &#8220;mostly solved problems.&#8221; I love the fact that the presentation mentions that error logging could take down Erlang nodes, and it&#8217;s considered a footnote, rather than a serious stability problem.</p>

<p>I bought the beta book for <a href="http://www.pragprog.com/titles/jaerlang/programming-erlang">Programming Erlang</a> in 2007ish, but forgot most of it, since I didn&#8217;t have a good project to use it on. I&#8217;m re-learning it now that we&#8217;re running into problems that can be naively solved by throwing cores at them, and presentations like these make me really excited about the possibilities it might open.</p>
]]>
        

    </content>
</entry>

</feed>
