<?xml version="1.0" encoding="utf-8"?>
<rss version="2.0">
<channel>
<title>Justin's blog</title>
<link>http://www.1014.org/</link>
<description>Justin's blog</description>
<item>
<title>I am drinking kool-aid</title>
<link>http://www.1014.org/?fromrss=y&amp;article=426</link>
<pubDate>Tue, 17 Aug 2010 10:14:00 -0700</pubDate>
<description>This is a good video for anybody who does software development:&lt;BR&gt;
&lt;object width=&quot;480&quot; height=&quot;385&quot;&gt;&lt;param name=&quot;movie&quot; value=&quot;http://www.youtube.com/v/4XpnKHJAok8?fs=1&amp;amp;hl=en_US&amp;amp;rel=0&quot;&gt;&lt;/param&gt;&lt;param name=&quot;allowFullScreen&quot; value=&quot;true&quot;&gt;&lt;/param&gt;&lt;param name=&quot;allowscriptaccess&quot; value=&quot;always&quot;&gt;&lt;/param&gt;&lt;embed src=&quot;http://www.youtube.com/v/4XpnKHJAok8?fs=1&amp;amp;hl=en_US&amp;amp;rel=0&quot; type=&quot;application/x-shockwave-flash&quot; allowscriptaccess=&quot;always&quot; allowfullscreen=&quot;true&quot; width=&quot;480&quot; height=&quot;385&quot;&gt;&lt;/embed&gt;&lt;/object&gt;&lt;BR&gt;
Some people I know don't like Linus when they've watch this, but I think he's awesome, even though he called me stupid and ugly. He was right, I guess.
&lt;BR&gt;&lt;BR&gt;
Using SVN was a great thing for me, as I'd constantly diff my work to make sure it was what I wanted. It also (obviously) enables collaboration.
&lt;BR&gt;&lt;BR&gt;
Git, however, is utterly awesome, an order of magnitude more useful. 
Branches in SVN were a huge pain, we rarely used them. In Git, you can actually
use them,  effectively and without having to deal with nonsense, it is fantastic. &lt;BR&gt;&lt;BR&gt;
It is fast, efficient at storing data, easy to synchronize and automate backups,
 I love it.&lt;BR&gt;&lt;BR&gt;
The only downside I see is that TortoiseSVN doesn't exist for it, TortoiseGit is getting there, from what I hear, but I've just been using the command line thus far. 
&lt;BR&gt;&lt;BR&gt;
Anyway, I'm just giddy with it. I would say life changing, but that would be overdramatic. It is work-changing, I guess.
</description>
</item>
<item>
<title>Home made iPhone tripod</title>
<link>http://www.1014.org/?fromrss=y&amp;article=425</link>
<pubDate>Thu, 12 Aug 2010 07:45:00 -0700</pubDate>
<description>&lt;img src=&quot;http://1014.org/mobilecam/image_425.jpg&quot;&gt;&lt;p&gt;
I find my iPhone 3GS does a decent job as a video camera, so I made this:
</description>
</item>
<item>
<title>Yes, I love technology</title>
<link>http://www.1014.org/?fromrss=y&amp;article=424</link>
<pubDate>Sat, 31 Jul 2010 06:34:00 -0700</pubDate>
<description>Here's a youtube collaboration I accidentally participated in:
&lt;p&gt;&lt;object style=&quot;height: 344px; width: 425px&quot;&gt;&lt;param name=&quot;movie&quot; value=&quot;http://www.youtube.com/v/9OTVRk0qWvw&quot;&gt;&lt;param name=&quot;allowFullScreen&quot; value=&quot;true&quot;&gt;&lt;param name=&quot;allowScriptAccess&quot; value=&quot;always&quot;&gt;&lt;embed src=&quot;http://www.youtube.com/v/9OTVRk0qWvw&quot; type=&quot;application/x-shockwave-flash&quot; allowfullscreen=&quot;true&quot; allowScriptAccess=&quot;always&quot; width=&quot;425&quot; height=&quot;344&quot;&gt;&lt;/object&gt;
&lt;p&gt;I must say, these are exciting times... We have all kinds of crazy tools, it is so awesome.
</description>
</item>
<item>
<title>Buggy fmod() with Visual C++ 2005/2008 targeting x64</title>
<link>http://www.1014.org/?fromrss=y&amp;article=423</link>
<pubDate>Wed, 14 Jul 2010 06:30:00 -0700</pubDate>
<description>I am posting this in case anybody debugging something needs to find it -- I did find mention of it on some Java related site, but nothing conclusive.  This may affect VC2010, too, but I haven't tested it.
&lt;p&gt;While VC 2005/2008 targeting x64 generates SSE code for floating point code, fmod() still uses the x87 FPU, and more importantly it assumes that the divide by 0 exception flag is clear going in (meaning if it is set prior to the call, the call will throw an exception or return #.IND regardless of the input). Apparently they assume that since the compiler won't possibly generate code that would cause the divide by 0 floating point exception flag to be set, then it would safe to assume that flag will always be clear. Or it could be a typo. If you use assembly code, or load a module compiled with another compiler that generates x87 code, this can be a huge problem. 
&lt;p&gt;Take this example (hi.cpp):
&lt;p&gt;&lt;pre&gt;
#include &amp;lt;stdio.h&amp;gt;
#include &amp;lt;math.h&amp;gt;
&lt;p&gt;extern &quot;C&quot; void asmfunc();
&lt;p&gt;int main() {
  asmfunc();
  printf(&quot;%f\n&quot;,fmod(1.0,2.0));
  return 0;
}
&lt;/pre&gt;
&lt;p&gt;and hihi.asm (compile with nasm -f win64):
&lt;pre&gt;
SECTION .text
&lt;p&gt;global asmfunc
asmfunc:
  fld1
  fldz
  fdivp
  fstp st0
  ret
&lt;/pre&gt;
&lt;p&gt;&lt;p&gt;Compiling this (cl.exe hi.cpp hihi.obj) and running it does not print 1.0, as it should.
&lt;BR&gt;&lt;BR&gt;
The solution we use is to call 'fclex' after any code that might use the FPU. Or not use fmod(). Or call fclex before fmod() every time. I should note that if you use ICC with VC200x, it doesn't have this problem (it presumably has a faster, correct fmod() implementation).
</description>
</item>
<item>
<title>LICEcap!</title>
<link>http://www.1014.org/?fromrss=y&amp;article=422</link>
<pubDate>Mon, 07 Jun 2010 10:14:00 -0700</pubDate>
<description>We've just released a new piece of open source software for Windows, called &lt;a href=&quot;http://www.cockos.com/licecap/&quot;&gt;LICEcap&lt;/a&gt;! It allows one to create animated screen captures. I know, there's a lot of software out there that does this already, but none of them are both free and meet my needs, so we made LICEcap.
&lt;p&gt;LICEcap has a nice UI (in that you position/size the window where you want to capture, and can move it around while recording). We support writing to .GIF directly (big thanks/credit/blame to Schwa for getting the palette generation working as well as it does), as well as to a new format called .LCF.
&lt;p&gt;LCF compresses by taking a series of frames, say, 20 frames, and then dividing each frame into slices, approx 128x16px each. Each slice is then compared to the same slice on the previous frame, and (if different) encoded directly after the previous frame. zlib is used to remove redundancy (often slices don't completely change from frame to frame, i.e. scrolls or small updates will compress very well). This is all done in 16bpp, and the end result is quite good compression, and lossless (well, 16bpp lossless) quality. REAPER supports playing back the .LCF files, too. The biggest down side is high memory use during compression/decompression (20 frames of 640x480x16bpp is about 12MB, and for smooth CPU distribution you end up using twice that).
&lt;p&gt;I should mention that the primary reason for us making this tool was the desire
to post animated gifs of new features in REAPER with the changelog. Hopefully 
we'll follow through on that.
&lt;p&gt;On a related note, tomorrow (or soonish), I plan to post my latest additions on how to make OS X applications not perform terribly (new one: avoid avoid AVOID CGBitmapContextCreateImage() like the plague. HOLY CRAP it is bad to use). Apple: please, for the love of God, either make your documentation a Wiki, or hire someone who actually writes 
(multi-platform) applications with your APIs to write documentation.
</description>
</item>
<item>
<title>this is the best movie i've ever seen</title>
<link>http://www.1014.org/?fromrss=y&amp;article=421</link>
<pubDate>Wed, 19 May 2010 10:14:00 -0700</pubDate>
<description>&lt;object classid=&quot;clsid:D27CDB6E-AE6D-11cf-96B8-444553540000&quot; width=&quot;437&quot; height=&quot;333&quot; id=&quot;viddler_cb625e62&quot;&gt;&lt;param name=&quot;movie&quot; value=&quot;http://www.viddler.com/player/cb625e62/&quot; /&gt;&lt;param name=&quot;allowScriptAccess&quot; value=&quot;always&quot; /&gt;&lt;param name=&quot;allowFullScreen&quot; value=&quot;true&quot; /&gt;&lt;embed src=&quot;http://www.viddler.com/player/cb625e62/&quot; width=&quot;437&quot; height=&quot;333&quot; type=&quot;application/x-shockwave-flash&quot; allowScriptAccess=&quot;always&quot; allowFullScreen=&quot;true&quot; name=&quot;viddler_cb625e62&quot;&gt;&lt;/embed&gt;&lt;/object&gt;
&lt;!--
&lt;BR&gt;&lt;BR&gt;
It turns out, though, that the above video is an edit. The real ending isn't as good:
&lt;p&gt;&lt;object classid=&quot;clsid:D27CDB6E-AE6D-11cf-96B8-444553540000&quot; width=&quot;437&quot; height=&quot;370&quot; id=&quot;viddler_c1a98875&quot;&gt;&lt;param name=&quot;movie&quot; value=&quot;http://www.viddler.com/player/c1a98875/&quot; /&gt;&lt;param name=&quot;allowScriptAccess&quot; value=&quot;always&quot; /&gt;&lt;param name=&quot;allowFullScreen&quot; value=&quot;true&quot; /&gt;&lt;embed src=&quot;http://www.viddler.com/player/c1a98875/&quot; width=&quot;437&quot; height=&quot;370&quot; type=&quot;application/x-shockwave-flash&quot; allowScriptAccess=&quot;always&quot; allowFullScreen=&quot;true&quot; name=&quot;viddler_c1a98875&quot;&gt;&lt;/embed&gt;&lt;/object&gt;
&lt;BR&gt;
(poor kitten; I'm sure his momcat would jump into frame to pick him up, had the camera been rolling longer)
--&gt;
</description>
</item>
<item>
<title>Perhaps I am influenced by the design of rocket engine nozzles?</title>
<link>http://www.1014.org/?fromrss=y&amp;article=420</link>
<pubDate>Thu, 13 May 2010 02:30:00 -0700</pubDate>
<description>&lt;img src=&quot;http://1014.org/mobilecam/image_420.jpg&quot;&gt;&lt;p&gt;
</description>
</item>
<item>
<title>One pitch to go</title>
<link>http://www.1014.org/?fromrss=y&amp;article=419</link>
<pubDate>Sat, 08 May 2010 06:52:00 -0700</pubDate>
<description>&lt;img src=&quot;http://1014.org/mobilecam/image_419.jpg&quot;&gt;&lt;p&gt;
&lt;p&gt;</description>
</item>
<item>
<title>The memory of Winter.</title>
<link>http://www.1014.org/?fromrss=y&amp;article=418</link>
<pubDate>Wed, 05 May 2010 23:26:00 -0700</pubDate>
<description>&lt;img src=&quot;http://1014.org/mobilecam/image_418.jpg&quot;&gt;&lt;p&gt;
&lt;p&gt;</description>
</item>
<item>
<title>The rain is coming</title>
<link>http://www.1014.org/?fromrss=y&amp;article=417</link>
<pubDate>Wed, 05 May 2010 22:56:00 -0700</pubDate>
<description>&lt;img src=&quot;http://1014.org/mobilecam/image_417.jpg&quot;&gt;&lt;p&gt;
&lt;p&gt;</description>
</item>
<item>
<title>random iPhone notes fingerings from a plane</title>
<link>http://www.1014.org/?fromrss=y&amp;article=416</link>
<pubDate>Sat, 01 May 2010 00:19:00 -0700</pubDate>
<description>ca 1995, near Prescott: idle, on a rock, among the pines, at the foot of granite. the smell of trees and sap and pine needles, the warm sunshine and cool shade all comfort. having forgettable conversations with companions, names forgotten or not important, whose paths will diverge as inexplicably as they crossed. only good feelings remain.
</description>
</item>
<item>
<title>The funny/sad thing about releasing software is...</title>
<link>http://www.1014.org/?fromrss=y&amp;article=415</link>
<pubDate>Mon, 26 Apr 2010 03:58:00 -0700</pubDate>
<description>...if your test/beta/etc period is more than a few days, it doesn't matter how long it is, within 24 hours of releasing you'll almost always have brought to your attention a few very ugly bugs that need to be fixed. Sigh...
&lt;BR&gt;&lt;BR&gt;
It makes me want to release things even more often.
</description>
</item>
<item>
<title>Dear Intel,</title>
<link>http://www.1014.org/?fromrss=y&amp;article=414</link>
<pubDate>Mon, 12 Apr 2010 00:36:00 -0700</pubDate>
<description>I've just read &lt;a href=&quot;http://hothardware.com/News/Holy-Mega-Multitasking-Batman-Intel-Handing-Out-Samples-of-Experimental-48Core-Chip/&quot;&gt;this article&lt;/a&gt; about your experimental 48-core CPU. Can I mention that our software, &lt;a href=&quot;http://www.reaper.fm&quot;&gt;REAPER&lt;/a&gt; is highly multi-core optimized, and we'd love to see how it runs on / can be improved for 48 cores? 
&lt;BR&gt;&lt;BR&gt;
Sincerely,
&lt;BR&gt;&lt;BR&gt;
Justin Frankel&lt;BR&gt;
Cockos Incorporated
&lt;BR&gt;&lt;BR&gt;
P.S. We have REAPER running on Linux, too. Don't tell our users though, or they'll start whining (you know how Linux users can be).
&lt;p&gt;</description>
</item>
<item>
<title>Stumptown</title>
<link>http://www.1014.org/?fromrss=y&amp;article=413</link>
<pubDate>Thu, 25 Mar 2010 05:13:00 -0700</pubDate>
<description>The best quote I've heard in a long time&lt;sup&gt;*&lt;/sup&gt; (from &lt;a href=&quot;http://nymag.com/restaurants/features/56145/&quot;&gt;a NYMag article&lt;/a&gt;):
&lt;ul&gt;
&lt;i&gt;&quot;Stumptown offers the best of the best. I'm not saying it to be arrogant, I'm saying it because it's a true fucking story.&quot;&lt;/i&gt;
&lt;/ul&gt;
I've found that agree with him.
&lt;BR&gt;
&lt;font size=-2&gt;* Allison actually read it to me many months ago, and it has stuck with us both ever since&lt;/font&gt;
</description>
</item>
<item>
<title>software patent news</title>
<link>http://www.1014.org/?fromrss=y&amp;article=412</link>
<pubDate>Sat, 13 Mar 2010 04:22:00 -0800</pubDate>
<description>&lt;a href=&quot;http://www.fsf.org/blogs/community/supreme-court-bilski&quot;&gt;http://www.fsf.org/blogs/community/supreme-court-bilski&lt;/a&gt;
&lt;BR&gt;&lt;BR&gt;
Here's hoping the supreme court does something good. Fingers are crossed.
</description>
</item>
<item>
<title>eeePC 901</title>
<link>http://www.1014.org/?fromrss=y&amp;article=411</link>
<pubDate>Fri, 05 Mar 2010 07:28:00 -0800</pubDate>
<description>I got a while back this ASUS eeePC 901, with a 1.6ghz Atom and 20GB of SSD. When I first got it I upgraded the RAM to 2GB, and installed Windows XP. It wasn't that great, so then I tried Win7 pro on it, which almost worked, but would just freeze for lengths of time for no apparent reason. The keyboard is tiny and has a very different arrangement from what I'm used to. It sat idle for a while, and since I have been developing on Linux (hello, SWELL/generic), I decided to install Ubuntu on it. The new verdict:
&lt;BR&gt;&lt;BR&gt;
I love it. It's reasonably fast for compiling, installing new stuff is easy (apt-get ftw), Firefox w/ flash is fine, Xchat is decent enough, the stock mail client is very usable. The best part is that the battery life is fantastic, the screen is bright, there are very little moving parts, and it feels really solid. Yes, a bit like a toy, but I'm not worried about breaking it. Anyway, I'm fully on board with the netbook thing. Maybe next time I'd get one with a slightly larger keyboard, though...
&lt;BR&gt;&lt;BR&gt;
Oh yeah and the other part of what I'm saying is: I'm definitely appreciating where Linux distributions for the desktop have gotten. Almost there... ;)
&lt;BR&gt;&lt;BR&gt;
&lt;b&gt;which reminds me: strict aliasing
&lt;/b&gt;&lt;BR&gt;I get that the &quot;strict aliasing&quot; optimization of recent C/C++ standards allow for great optimization.  And I get that gcc has some anciently-designed optimizing, but at any rate, it annoys me that gcc will detect strict-aliasing violating code, and still go ahead and generate code that is obviously wrong -- i.e. when it knows that two pointers ARE in fact pointing to the same memory, it assumes that they can't possibly, and optimizes as if they don't. LLVM probably doesn't have the same problem, heh. Oh well I'll use -fno-strict-aliasing and meanwhile go through and use unions (and occasionally C++ templates) to make our stuff compatible with strict aliasing optimizations.
&lt;BR&gt;&lt;BR&gt;
Of course, on performance sensitive code this is a huge time sink -- I ended up (on our anti-denormal code) looking at the output of many iterations of the same code on gcc i686, x86_64, vc6+icc10, vc2005+icc10, icc11 on osx, gcc ppc, etc, to try to find source code that worked properly and produced decent assembly code. The variety of code produced by each combination is staggering. Also, I found that often the code I thought would be fastest was not, when benchmarked. Oh well. 
&lt;p&gt;</description>
</item>
<item>
<title>Ideas vs Execution</title>
<link>http://www.1014.org/?fromrss=y&amp;article=410</link>
<pubDate>Mon, 22 Feb 2010 17:08:00 -0800</pubDate>
<description>&lt;a href=&quot;http://www.codinghorror.com/blog/2010/01/cultivate-teams-not-ideas.html&quot;&gt;A better delivered post&lt;/a&gt; of something I've been telling people for years -- that execution is way, WAY more important than ideas. Yes, the ideas still need to be reasonable, but beyond that, it's how you do what you do that counts.
</description>
</item>
<item>
<title>The mighty iPhone vs the Nokia n900</title>
<link>http://www.1014.org/?fromrss=y&amp;article=409</link>
<pubDate>Fri, 05 Feb 2010 08:15:00 -0800</pubDate>
<description>After seeing a slashdot post about people running OS X on the Nokia n900, I read some more info about the n900. It seemed like great hardware, and was debian-linux based, so it seemed like a good platform to play with. Enticed, I found it on Nokia's site, complete with a 14 day return policy.
&lt;BR&gt;&lt;BR&gt;
I should mention, I have/use an iPhone 3GS. Apple ends up pissing me off to no end, but I really end up liking the 3GS. It's a great phone/browser/apprunner/notetaker/calendar/ipod/etc. If it wasn't locked down so tight, I would like it even more. So really I end up disliking the idea of the iPhone, but liking it in reality.
&lt;BR&gt;&lt;BR&gt;
The n900 is pretty much the opposite -- the idea is great. Having a phone I can ssh into and install g++ and make on and build stuff and run on, is great. On paper, everything's there. This is what I found:&lt;ul&gt;
&lt;li&gt;Screen: the screen looks good. It's high resolution, but the touch sensitivity of it isn't great, it ends up feeling clunky. 
&lt;li&gt;Storage: on paper it has 32GB of flash. This is great. What's stupid is that the root fs is only 256mb of NAND memory, and while you can install extra packages via apt-get etc, if those packages aren't carefully designed, it ends up filling your root filesystem. Even the obvious things like making /var/cache/apt point to the big disk, they could do, but haven't. So basically you have to do one of many hacks if you wish to install much. The biggest thing I found was moving various /usr/[share|lib|bin]/xxx directories -- all stuff nonessential to booting -- to the bigger disk and symlinking them. Anyway, it's dumb that you should have to do this. Complete pain in the ass. I eventually got  everything I wanted installed, but if the point is to have an open extensible phone, you gotta make it do that out of the box.
&lt;li&gt;WiFi: support seems solid. When the phone is sleeping, you can still ssh to the phone (if you installed OpenSSH, which is easy). RAD.
&lt;li&gt;SSH: awesome. Fast, the thing really feels quick. It is 600mhz, and for command line linux that is super fast. I remember my P133 being quick, too.
&lt;li&gt;Web: the browser is pretty solid, and flash support kinda works (wasn't really fast enough for YouTube, but there seems to be an app for this).
&lt;li&gt;Keyboard is usable. Better than the iphone's, for me, but not fantastic either.
&lt;li&gt;No AT&amp;T 3G support. I don't care whose fault it is, but come on?!.
&lt;li&gt;Camera: quality was decent. The video recording was pretty good, sound seemed better than the iPhone 3GS's. Here's a &lt;a href=&quot;http://www.youtube.com/watch?v=lX3uE9EpVO0&quot;&gt;youtube video&lt;/a&gt; we did as a test (apologies for the content).
&lt;li&gt;General UI: Some things are super fancy (nice blurs, transitions), but other things are not even half baked. There's a nice standard for &quot;close window&quot; or &quot;go back&quot; button locations, but 90% of the time the buttons for those are not visible, yet if you click them they are there. Silly stuff. 
&lt;li&gt;Multitasking. Mmmm. so good. I like. Hear that, Apple? It's not even a pad...
&lt;/ul&gt;
So I sent the thing back. It didn't last 24 hours. The dealing with root fs, I could get past that. The lack of AT&amp;T 3G support, that made the decision easier. I really tried. I wanted to like it.
</description>
</item>
<item>
<title>REAPER on TV</title>
<link>http://www.1014.org/?fromrss=y&amp;article=408</link>
<pubDate>Fri, 05 Feb 2010 07:58:00 -0800</pubDate>
<description>Thanks to a user on the REAPER forums: &lt;a href=&quot;http://www.spike.com/video/greateful-bed/3327690&quot;&gt;1000s of ways to die: Greateful Bed&lt;/a&gt;. 
&lt;BR&gt;&lt;BR&gt;
Doesn't seem like a show I'd watch, but amusing to see REAPER on it, at any rate. Now if only it ended up on It's Always Sunny in Philadelphia. Then we would have made it.
</description>
</item>
<item>
<title>They didn't last long</title>
<link>http://www.1014.org/?fromrss=y&amp;article=407</link>
<pubDate>Mon, 25 Jan 2010 06:11:00 -0800</pubDate>
<description>&lt;img src=&quot;http://1014.org/mobilecam/image_407.jpg&quot;&gt;&lt;p&gt;
Some people picked through them for a bit... Then poof, they all  
disappeared. Nobody took the sign, though.
</description>
</item>
</channel>
</rss>
