<?xml version='1.0' encoding='UTF-8'?><?xml-stylesheet href="http://www.blogger.com/styles/atom.css" type="text/css"?><feed xmlns='http://www.w3.org/2005/Atom' xmlns:openSearch='http://a9.com/-/spec/opensearchrss/1.0/' xmlns:blogger='http://schemas.google.com/blogger/2008' xmlns:georss='http://www.georss.org/georss' xmlns:gd="http://schemas.google.com/g/2005" xmlns:thr='http://purl.org/syndication/thread/1.0'><id>tag:blogger.com,1999:blog-3051232907134860721</id><updated>2024-09-07T21:22:04.822-07:00</updated><category term="Economics"/><category term="Java FX"/><category term="OS X"/><category term="Stock Analysis"/><category term="recipes"/><title type='text'>assert false</title><subtitle type='html'></subtitle><link rel='http://schemas.google.com/g/2005#feed' type='application/atom+xml' href='http://assertfalse.blogspot.com/feeds/posts/default'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/3051232907134860721/posts/default?redirect=false'/><link rel='alternate' type='text/html' href='http://assertfalse.blogspot.com/'/><link rel='hub' href='http://pubsubhubbub.appspot.com/'/><author><name>Tim</name><uri>http://www.blogger.com/profile/14838461774136751486</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='https://img1.blogblog.com/img/b16-rounded.gif'/></author><generator version='7.00' uri='http://www.blogger.com'>Blogger</generator><openSearch:totalResults>8</openSearch:totalResults><openSearch:startIndex>1</openSearch:startIndex><openSearch:itemsPerPage>25</openSearch:itemsPerPage><entry><id>tag:blogger.com,1999:blog-3051232907134860721.post-5983812962233456797</id><published>2010-09-30T20:35:00.001-07:00</published><updated>2010-09-30T20:35:34.889-07:00</updated><title type='text'>Worst laptop ever?</title><content type='html'>&lt;div xmlns=&#39;http://www.w3.org/1999/xhtml&#39;&gt;&lt;p&gt;The DV6 3084CA features what must the latest in crotch-scorching, carpel-tunnel inducing technologies to come out of HP&#39;s research labs.&lt;/p&gt;&lt;p&gt;On paper, it looks good, perhaps too good. Quad-core AMD with 8GB of ram and a nice graphics card, wrapped in a sturdy light-weight frame. Unfortunately, this machine is a object lesson in which technologies do not go together in a laptop, to whit:&lt;/p&gt;&lt;ul&gt;&lt;li&gt;Bluray drive and low-res screen&lt;/li&gt;&lt;li&gt;Beefy graphics card and poor ventilation&lt;/li&gt;&lt;li&gt;Portability and bad battery life&lt;/li&gt;&lt;li&gt;Small size and crotch-scorching technology&lt;/li&gt;&lt;/ul&gt;&lt;p/&gt;&lt;p&gt;But wait, there&#39;s more! The latest in carpel-tunnel inducing research, combining what seem to be slightly-too-small and hard to press keys in a terrible layout (bonus points, the CA model has a bilingual keyboard, ugh!) with an over sensitive touchpad causing you to adopt the most painful typing position imaginable. Or perhaps your particular preference is for the terrible colour fidelity or perhaps the record setting pre-packaged bloatware (25 minutes to install it all!) or even the always on, always loud, never really accomplishing much fan. Either way, this machine has it all.&lt;/p&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://assertfalse.blogspot.com/feeds/5983812962233456797/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://assertfalse.blogspot.com/2010/09/worst-laptop-ever.html#comment-form' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/3051232907134860721/posts/default/5983812962233456797'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/3051232907134860721/posts/default/5983812962233456797'/><link rel='alternate' type='text/html' href='http://assertfalse.blogspot.com/2010/09/worst-laptop-ever.html' title='Worst laptop ever?'/><author><name>Tim</name><uri>http://www.blogger.com/profile/14838461774136751486</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='https://img1.blogblog.com/img/b16-rounded.gif'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-3051232907134860721.post-4132474358496308531</id><published>2010-09-13T10:39:00.001-07:00</published><updated>2010-09-13T10:39:32.315-07:00</updated><category scheme="http://www.blogger.com/atom/ns#" term="OS X"/><title type='text'>OS X Guest on VMWare Player</title><content type='html'>&lt;p&gt;I’ve been using OS X in a VM under Windows using VirtualBox for some time now. While researching potential workarounds for some of its limitations (e.g. 1440x900 max resolution) I came across the &lt;a href=&quot;http://sourceforge.net/projects/vmsvga2/&quot;&gt;VMsvga2&lt;/a&gt; graphics driver for OS X under VMWare.&lt;/p&gt;  &lt;p&gt;I tried this setup with VMWare Player 3.0, without VMsvga2, and was not impressed. However, VMWare Player 3.1.1 is much much better. With VMsvga2 it is a much better setup than VirtualBox. Better yet, rather than installing from scratch, which is a pain with VMware, I converted my VirtualBox image to a VMware one and then used the ISO and VMDK from &lt;a href=&quot;http://www.ihackintosh.com/2009/12/install-snow-leopard-in-vmware-7-windows-edition/&quot;&gt;here&lt;/a&gt;.&lt;/p&gt;  &lt;p&gt;Not only is VMWare faster (at the moment) for OS X guests, with a couple of tweaks to the vmx file, it is also more stable. Here are the changes I made:&lt;/p&gt;  &lt;p&gt;smc.present = &amp;quot;FALSE&amp;quot;    &lt;br /&gt;monitor.virtual_exec = &amp;quot;hardware&amp;quot;     &lt;br /&gt;monitor.virtual_mmu = &amp;quot;software&amp;quot;     &lt;br /&gt;guestOS = &amp;quot;darwin10&amp;quot;&lt;/p&gt;  </content><link rel='replies' type='application/atom+xml' href='http://assertfalse.blogspot.com/feeds/4132474358496308531/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://assertfalse.blogspot.com/2010/09/os-x-guest-on-vmware-player.html#comment-form' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/3051232907134860721/posts/default/4132474358496308531'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/3051232907134860721/posts/default/4132474358496308531'/><link rel='alternate' type='text/html' href='http://assertfalse.blogspot.com/2010/09/os-x-guest-on-vmware-player.html' title='OS X Guest on VMWare Player'/><author><name>Tim</name><uri>http://www.blogger.com/profile/14838461774136751486</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='https://img1.blogblog.com/img/b16-rounded.gif'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-3051232907134860721.post-1054188356860231331</id><published>2010-08-17T11:30:00.001-07:00</published><updated>2010-08-17T11:53:11.924-07:00</updated><title type='text'>Feeling sorry for the ‘working wealthy’?</title><content type='html'>&lt;div align=&quot;left&quot;&gt;&lt;a href=&quot;http://www.theatlantic.com/business/archive/2010/08/sympathy-for-families-making-250-000-a-year/61478/&quot;&gt;The Atlantic&lt;/a&gt; found this gem from an opinion piece by CNN contributor John Avalon. I’ll reproduce the relevant section here:&lt;/div&gt;&lt;blockquote&gt;&lt;div align=&quot;left&quot;&gt;It is the gap between the &quot;super rich&quot; -- who really do have more money than they know what to do with -- and what might be called the &quot;working wealthy,&quot; who are taxed as though they&#39;re rich enough to able to give away half their money.&lt;/div&gt;&lt;div align=&quot;left&quot;&gt;These are individuals whose household income might bring them into the top tax bracket of $250,000 a year but who, with two parents working, might still find themselves struggling to stay in the stability of the upper-middle class in the expensive urban areas where they often work.&lt;/div&gt;&lt;div align=&quot;left&quot;&gt;Much of the anger about the scheduled sunset of the Bush tax cuts for the increase in top-bracket taxes comes from this productive group of Americans.&lt;/div&gt;&lt;/blockquote&gt;&lt;div align=&quot;left&quot;&gt;First off, is he correct in saying that there is a class of working wealthy who spend most of their &amp;gt;250K a year? Well, it is expensive to put kids through private school while living in a nice neighborhood. The choice of neighborhood may well be determined by proximity to work and co-workers. So let’s allow Mr. Avalon the argument that such people exist and that they need their income. However, I find it hard to believe that they live hand-to-mouth and buy only the bare essentials. These people have extra cash, just not as much as you might think.&lt;br /&gt;
&lt;br /&gt;
&lt;/div&gt;&lt;div align=&quot;left&quot;&gt;Which leads me to wonder, exactly how big are the Bush tax cuts and what would the effect be on these working wealthy. I know the US tax code is a complex beast and I’m Canadian so I’m probably missing some bits and pieces, but from what I’ve seen the parts of the Bush tax cuts that apply specifically to the wealthy are income tax cuts. In 2000, the year before the Bush tax cuts came into effect, the top two tax brackets for a married couple filing jointly &lt;a href=&quot;http://www.moneychimp.com/features/tax_brackets.htm&quot;&gt;were&lt;/a&gt;:&lt;/div&gt;&lt;blockquote&gt;&lt;div align=&quot;center&quot;&gt;&lt;table border=&quot;1&quot; cellpadding=&quot;0&quot; cellspacing=&quot;0&quot; style=&quot;text-align: center; width: 390px;&quot;&gt;&lt;tbody&gt;
&lt;tr&gt;           &lt;td valign=&quot;top&quot; width=&quot;132&quot;&gt;&lt;div style=&quot;text-align: center;&quot;&gt;&lt;strong&gt;Tax Rate (2000)&lt;/strong&gt;&lt;/div&gt;&lt;/td&gt;            &lt;td valign=&quot;top&quot; width=&quot;133&quot;&gt;&lt;div style=&quot;text-align: center;&quot;&gt;&lt;strong&gt;Lower Bracket&lt;/strong&gt;&lt;/div&gt;&lt;/td&gt;            &lt;td valign=&quot;top&quot; width=&quot;123&quot;&gt;&lt;div style=&quot;text-align: center;&quot;&gt;&lt;strong&gt;Upper Bracket&lt;/strong&gt;&lt;/div&gt;&lt;/td&gt;         &lt;/tr&gt;
&lt;tr&gt;           &lt;td valign=&quot;top&quot; width=&quot;132&quot;&gt;&lt;div style=&quot;text-align: center;&quot;&gt;36%&lt;/div&gt;&lt;/td&gt;            &lt;td valign=&quot;top&quot; width=&quot;133&quot;&gt;&lt;div style=&quot;text-align: center;&quot;&gt;$161,450&lt;/div&gt;&lt;/td&gt;            &lt;td valign=&quot;top&quot; width=&quot;123&quot;&gt;&lt;div style=&quot;text-align: center;&quot;&gt;$288,350&lt;/div&gt;&lt;/td&gt;         &lt;/tr&gt;
&lt;tr&gt;           &lt;td valign=&quot;top&quot; width=&quot;132&quot;&gt;&lt;div style=&quot;text-align: center;&quot;&gt;39.6%&lt;/div&gt;&lt;/td&gt;            &lt;td valign=&quot;top&quot; width=&quot;133&quot;&gt;&lt;div style=&quot;text-align: center;&quot;&gt;$288,350&lt;/div&gt;&lt;/td&gt;            &lt;td valign=&quot;top&quot; width=&quot;124&quot;&gt;&lt;div style=&quot;text-align: center;&quot;&gt;∞&lt;/div&gt;&lt;/td&gt;         &lt;/tr&gt;
&lt;/tbody&gt;&lt;/table&gt;&lt;/div&gt;&lt;/blockquote&gt;&lt;div style=&quot;text-align: left;&quot;&gt;And in 2010, they are:&lt;/div&gt;&lt;blockquote&gt;&lt;div align=&quot;center&quot;&gt;&lt;table align=&quot;center&quot; border=&quot;1&quot; cellpadding=&quot;0&quot; cellspacing=&quot;0&quot; style=&quot;width: 390px;&quot;&gt;&lt;tbody&gt;
&lt;tr&gt;           &lt;td valign=&quot;top&quot; width=&quot;132&quot;&gt;&lt;div align=&quot;center&quot;&gt;&lt;strong&gt;Tax Rate (2010)&lt;/strong&gt;&lt;/div&gt;&lt;/td&gt;            &lt;td valign=&quot;top&quot; width=&quot;133&quot;&gt;&lt;div align=&quot;center&quot;&gt;&lt;strong&gt;Lower Bracket&lt;/strong&gt;&lt;/div&gt;&lt;/td&gt;            &lt;td valign=&quot;top&quot; width=&quot;123&quot;&gt;&lt;div align=&quot;center&quot;&gt;&lt;strong&gt;Upper Bracket&lt;/strong&gt;&lt;/div&gt;&lt;/td&gt;         &lt;/tr&gt;
&lt;tr&gt;           &lt;td valign=&quot;top&quot; width=&quot;132&quot;&gt;&lt;div align=&quot;center&quot;&gt;33%&lt;/div&gt;&lt;/td&gt;            &lt;td valign=&quot;top&quot; width=&quot;133&quot;&gt;&lt;div align=&quot;center&quot;&gt;$209,250&lt;/div&gt;&lt;/td&gt;            &lt;td valign=&quot;top&quot; width=&quot;123&quot;&gt;&lt;div align=&quot;center&quot;&gt;$373,650&lt;/div&gt;&lt;/td&gt;         &lt;/tr&gt;
&lt;tr&gt;           &lt;td valign=&quot;top&quot; width=&quot;132&quot;&gt;&lt;div align=&quot;center&quot;&gt;35%&lt;/div&gt;&lt;/td&gt;            &lt;td valign=&quot;top&quot; width=&quot;133&quot;&gt;&lt;div align=&quot;center&quot;&gt;$373,650&lt;/div&gt;&lt;/td&gt;            &lt;td valign=&quot;top&quot; width=&quot;124&quot;&gt;&lt;div align=&quot;center&quot;&gt;∞&lt;/div&gt;&lt;/td&gt;         &lt;/tr&gt;
&lt;/tbody&gt;&lt;/table&gt;&lt;/div&gt;&lt;/blockquote&gt;So, if we assume that repealing the tax cuts means restoring the old rates and not the old brackets, then someone making 250K will have to pay a whopping $1222.50 in extra income tax, that’s $101.88/month. These families are making $15810/month, after tax, on 250K of income, so I don’t think $100 is going to make a big difference. I’m sure other taxes take a toll, but it should be obvious that the increase in tax on the ‘working wealthy’ by repealing the Bush tax cuts should not be a significant issue.&lt;br /&gt;
&lt;br /&gt;
I wonder if Mr. Avalon’s paragraph sounds like the same reasonable argument if you add in the results of the above analysis:&lt;br /&gt;
&lt;blockquote&gt;These are individuals whose household income might bring them into the top tax bracket of $250,000 a year but who, with two parents working, might still find themselves struggling to stay in the stability of the upper-middle class in the expensive urban areas where they often work. For these families, that extra $1222.50 goes a long way to making ends meet.&lt;/blockquote&gt;I didn’t think so either.</content><link rel='replies' type='application/atom+xml' href='http://assertfalse.blogspot.com/feeds/1054188356860231331/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://assertfalse.blogspot.com/2010/08/feeling-sorry-for-working-wealthy.html#comment-form' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/3051232907134860721/posts/default/1054188356860231331'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/3051232907134860721/posts/default/1054188356860231331'/><link rel='alternate' type='text/html' href='http://assertfalse.blogspot.com/2010/08/feeling-sorry-for-working-wealthy.html' title='Feeling sorry for the ‘working wealthy’?'/><author><name>Tim</name><uri>http://www.blogger.com/profile/14838461774136751486</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='https://img1.blogblog.com/img/b16-rounded.gif'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-3051232907134860721.post-7508196753913122779</id><published>2010-06-27T10:19:00.001-07:00</published><updated>2010-06-27T10:19:20.507-07:00</updated><category scheme="http://www.blogger.com/atom/ns#" term="recipes"/><title type='text'>Wonderfully simple Banana Bread</title><content type='html'>&lt;p&gt;Made &lt;a href=&quot;http://simplyrecipes.com/recipes/banana_bread/&quot;&gt;this&lt;/a&gt; Banana Bread last night. Very quick, easy, moist and most importantly, delicious.&lt;/p&gt;  &lt;p&gt;No butter on hand, so I substituted oil. For a twist add some nuts, I used walnuts. Finally, suggested serving, a drizzle of &lt;a href=&quot;http://en.wikipedia.org/wiki/Frangelico&quot;&gt;Frangelico&lt;/a&gt;.&lt;/p&gt;  </content><link rel='replies' type='application/atom+xml' href='http://assertfalse.blogspot.com/feeds/7508196753913122779/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://assertfalse.blogspot.com/2010/06/wonderfully-simple-banana-bread.html#comment-form' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/3051232907134860721/posts/default/7508196753913122779'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/3051232907134860721/posts/default/7508196753913122779'/><link rel='alternate' type='text/html' href='http://assertfalse.blogspot.com/2010/06/wonderfully-simple-banana-bread.html' title='Wonderfully simple Banana Bread'/><author><name>Tim</name><uri>http://www.blogger.com/profile/14838461774136751486</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='https://img1.blogblog.com/img/b16-rounded.gif'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-3051232907134860721.post-8717712019472151328</id><published>2009-11-20T15:21:00.000-08:00</published><updated>2009-11-20T15:21:20.045-08:00</updated><title type='text'>GUI development and Java FX</title><content type='html'>I hate GUI development. I&#39;m sure lots of developers feel exactly the same way. Even if you are gifted with a sense of aesthetics that allows you to appreciate how Finder or Windows Explorer are superior to a command-line, you might still hate GUI development.&lt;br /&gt;
&lt;br /&gt;
One of the reasons for this could be the difficulty of getting from a paper UI mockup to something that actually works. I&#39;ve often found programs with UI design that I appreciate, but the work required to duplicate the approach is often insurmountable.&lt;br /&gt;
&lt;br /&gt;
Consider the tools developers generally have at their disposal. Most, if not all of them, are very good at building applications that conform to an aesthetic that (as far as I can remember) comes from Windows 95. I&#39;m talking about the single, resizeable window, menus, dialog boxes maybe a tool bar or 2 or 3 and a big blank space in the middle where your work goes. The best tool I&#39;ve used for this kind of UI design is Qt Designer. But this doesn&#39;t help you if you want animation, or zooming or free-form layout. As soon as you go out of the standard UI box you need to build almost everything yourself. And that sucks.&lt;br /&gt;
&lt;br /&gt;
Java FX seems to be one of a few tools gaining popularity these days that help us break out of the old paradigm. Consider the following code snippet. It defines an object that can be used as an arbitrarily large surface and defines a viewport onto it so that the user can drag their view around instead of dragging the objects on the view around.&lt;br /&gt;
&lt;blockquote&gt;&lt;span style=&quot;font-size: x-small;&quot;&gt;&lt;span style=&quot;font-family: &amp;quot;Courier New&amp;quot;,Courier,monospace;&quot;&gt;public class Viewport extends CustomNode {&lt;/span&gt;&lt;br style=&quot;font-family: &amp;quot;Courier New&amp;quot;,Courier,monospace;&quot; /&gt;&lt;span style=&quot;font-family: &amp;quot;Courier New&amp;quot;,Courier,monospace;&quot;&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; public var viewWidth :Float;&lt;/span&gt;&lt;br style=&quot;font-family: &amp;quot;Courier New&amp;quot;,Courier,monospace;&quot; /&gt;&lt;span style=&quot;font-family: &amp;quot;Courier New&amp;quot;,Courier,monospace;&quot;&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; public var viewHeight :Float;&lt;/span&gt;&lt;br style=&quot;font-family: &amp;quot;Courier New&amp;quot;,Courier,monospace;&quot; /&gt;&lt;span style=&quot;font-family: &amp;quot;Courier New&amp;quot;,Courier,monospace;&quot;&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; public var content :Node[];&lt;/span&gt;&lt;br style=&quot;font-family: &amp;quot;Courier New&amp;quot;,Courier,monospace;&quot; /&gt;&lt;br style=&quot;font-family: &amp;quot;Courier New&amp;quot;,Courier,monospace;&quot; /&gt;&lt;span style=&quot;font-family: &amp;quot;Courier New&amp;quot;,Courier,monospace;&quot;&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; var currentX :Float = 0;&lt;/span&gt;&lt;br style=&quot;font-family: &amp;quot;Courier New&amp;quot;,Courier,monospace;&quot; /&gt;&lt;span style=&quot;font-family: &amp;quot;Courier New&amp;quot;,Courier,monospace;&quot;&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; var currentY :Float = 0;&lt;/span&gt;&lt;br style=&quot;font-family: &amp;quot;Courier New&amp;quot;,Courier,monospace;&quot; /&gt;&lt;span style=&quot;font-family: &amp;quot;Courier New&amp;quot;,Courier,monospace;&quot;&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; var dragStartX :Float = 0;&lt;/span&gt;&lt;br style=&quot;font-family: &amp;quot;Courier New&amp;quot;,Courier,monospace;&quot; /&gt;&lt;span style=&quot;font-family: &amp;quot;Courier New&amp;quot;,Courier,monospace;&quot;&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; var dragStartY :Float = 0;&lt;/span&gt;&lt;br style=&quot;font-family: &amp;quot;Courier New&amp;quot;,Courier,monospace;&quot; /&gt;&lt;br style=&quot;font-family: &amp;quot;Courier New&amp;quot;,Courier,monospace;&quot; /&gt;&lt;span style=&quot;font-family: &amp;quot;Courier New&amp;quot;,Courier,monospace;&quot;&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; def viewport = Rectangle {&lt;/span&gt;&lt;br style=&quot;font-family: &amp;quot;Courier New&amp;quot;,Courier,monospace;&quot; /&gt;&lt;span style=&quot;font-family: &amp;quot;Courier New&amp;quot;,Courier,monospace;&quot;&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; x: bind -currentX&lt;/span&gt;&lt;br style=&quot;font-family: &amp;quot;Courier New&amp;quot;,Courier,monospace;&quot; /&gt;&lt;span style=&quot;font-family: &amp;quot;Courier New&amp;quot;,Courier,monospace;&quot;&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; y: bind -currentY&lt;/span&gt;&lt;br style=&quot;font-family: &amp;quot;Courier New&amp;quot;,Courier,monospace;&quot; /&gt;&lt;span style=&quot;font-family: &amp;quot;Courier New&amp;quot;,Courier,monospace;&quot;&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; width: bind viewWidth;&lt;/span&gt;&lt;br style=&quot;font-family: &amp;quot;Courier New&amp;quot;,Courier,monospace;&quot; /&gt;&lt;span style=&quot;font-family: &amp;quot;Courier New&amp;quot;,Courier,monospace;&quot;&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; height: bind viewHeight;&lt;/span&gt;&lt;br style=&quot;font-family: &amp;quot;Courier New&amp;quot;,Courier,monospace;&quot; /&gt;&lt;span style=&quot;font-family: &amp;quot;Courier New&amp;quot;,Courier,monospace;&quot;&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; fill: Color.TRANSPARENT;&lt;/span&gt;&lt;br style=&quot;font-family: &amp;quot;Courier New&amp;quot;,Courier,monospace;&quot; /&gt;&lt;span style=&quot;font-family: &amp;quot;Courier New&amp;quot;,Courier,monospace;&quot;&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; };&lt;/span&gt;&lt;br style=&quot;font-family: &amp;quot;Courier New&amp;quot;,Courier,monospace;&quot; /&gt;&lt;br style=&quot;font-family: &amp;quot;Courier New&amp;quot;,Courier,monospace;&quot; /&gt;&lt;span style=&quot;font-family: &amp;quot;Courier New&amp;quot;,Courier,monospace;&quot;&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; override function create() :Node {&lt;/span&gt;&lt;br style=&quot;font-family: &amp;quot;Courier New&amp;quot;,Courier,monospace;&quot; /&gt;&lt;span style=&quot;font-family: &amp;quot;Courier New&amp;quot;,Courier,monospace;&quot;&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; insert viewport before content[0];&lt;/span&gt;&lt;br style=&quot;font-family: &amp;quot;Courier New&amp;quot;,Courier,monospace;&quot; /&gt;&lt;br style=&quot;font-family: &amp;quot;Courier New&amp;quot;,Courier,monospace;&quot; /&gt;&lt;span style=&quot;font-family: &amp;quot;Courier New&amp;quot;,Courier,monospace;&quot;&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; return Group {&lt;/span&gt;&lt;br style=&quot;font-family: &amp;quot;Courier New&amp;quot;,Courier,monospace;&quot; /&gt;&lt;span style=&quot;font-family: &amp;quot;Courier New&amp;quot;,Courier,monospace;&quot;&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; content: bind content;&lt;/span&gt;&lt;br style=&quot;font-family: &amp;quot;Courier New&amp;quot;,Courier,monospace;&quot; /&gt;&lt;span style=&quot;font-family: &amp;quot;Courier New&amp;quot;,Courier,monospace;&quot;&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; translateX: bind currentX;&lt;/span&gt;&lt;br style=&quot;font-family: &amp;quot;Courier New&amp;quot;,Courier,monospace;&quot; /&gt;&lt;span style=&quot;font-family: &amp;quot;Courier New&amp;quot;,Courier,monospace;&quot;&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; translateY: bind currentY;&lt;/span&gt;&lt;br style=&quot;font-family: &amp;quot;Courier New&amp;quot;,Courier,monospace;&quot; /&gt;&lt;span style=&quot;font-family: &amp;quot;Courier New&amp;quot;,Courier,monospace;&quot;&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; }&lt;/span&gt;&lt;br style=&quot;font-family: &amp;quot;Courier New&amp;quot;,Courier,monospace;&quot; /&gt;&lt;span style=&quot;font-family: &amp;quot;Courier New&amp;quot;,Courier,monospace;&quot;&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; }&lt;/span&gt;&lt;br style=&quot;font-family: &amp;quot;Courier New&amp;quot;,Courier,monospace;&quot; /&gt;&lt;br style=&quot;font-family: &amp;quot;Courier New&amp;quot;,Courier,monospace;&quot; /&gt;&lt;span style=&quot;font-family: &amp;quot;Courier New&amp;quot;,Courier,monospace;&quot;&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; override var onMousePressed =&lt;br /&gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; function(event :MouseEvent) :Void {&lt;/span&gt;&lt;br style=&quot;font-family: &amp;quot;Courier New&amp;quot;,Courier,monospace;&quot; /&gt;&lt;span style=&quot;font-family: &amp;quot;Courier New&amp;quot;,Courier,monospace;&quot;&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; dragStartX = event.sceneX + currentX;&lt;/span&gt;&lt;br style=&quot;font-family: &amp;quot;Courier New&amp;quot;,Courier,monospace;&quot; /&gt;&lt;span style=&quot;font-family: &amp;quot;Courier New&amp;quot;,Courier,monospace;&quot;&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; dragStartY = event.sceneY + currentY;&lt;/span&gt;&lt;br style=&quot;font-family: &amp;quot;Courier New&amp;quot;,Courier,monospace;&quot; /&gt;&lt;span style=&quot;font-family: &amp;quot;Courier New&amp;quot;,Courier,monospace;&quot;&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; };&lt;/span&gt;&lt;br style=&quot;font-family: &amp;quot;Courier New&amp;quot;,Courier,monospace;&quot; /&gt;&lt;br style=&quot;font-family: &amp;quot;Courier New&amp;quot;,Courier,monospace;&quot; /&gt;&lt;span style=&quot;font-family: &amp;quot;Courier New&amp;quot;,Courier,monospace;&quot;&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; override var onMouseDragged =&lt;br /&gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; function(event :MouseEvent) :Void {&lt;/span&gt;&lt;br style=&quot;font-family: &amp;quot;Courier New&amp;quot;,Courier,monospace;&quot; /&gt;&lt;span style=&quot;font-family: &amp;quot;Courier New&amp;quot;,Courier,monospace;&quot;&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; currentX = dragStartX - event.sceneX;&lt;/span&gt;&lt;br style=&quot;font-family: &amp;quot;Courier New&amp;quot;,Courier,monospace;&quot; /&gt;&lt;span style=&quot;font-family: &amp;quot;Courier New&amp;quot;,Courier,monospace;&quot;&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; currentY = dragStartY - event.sceneY;&lt;/span&gt;&lt;br style=&quot;font-family: &amp;quot;Courier New&amp;quot;,Courier,monospace;&quot; /&gt;&lt;span style=&quot;font-family: &amp;quot;Courier New&amp;quot;,Courier,monospace;&quot;&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; };&lt;/span&gt;&lt;br style=&quot;font-family: &amp;quot;Courier New&amp;quot;,Courier,monospace;&quot; /&gt;&lt;span style=&quot;font-family: &amp;quot;Courier New&amp;quot;,Courier,monospace;&quot;&gt;}&lt;/span&gt;&lt;/span&gt;&lt;br /&gt;
&lt;/blockquote&gt;I doubt that can be done as easily, quickly and readably in Qt or Apple&#39;s Interface Builder. That viewport class took about 1 hour to code. Now lets say you want to drag the widgets around on the viewport, no problem, just put them in a &lt;i&gt;DraggableGroup&lt;/i&gt; like this one.&lt;br /&gt;
&lt;blockquote&gt;&lt;span style=&quot;font-size: x-small;&quot;&gt;&lt;span style=&quot;font-family: &amp;quot;Courier New&amp;quot;,Courier,monospace;&quot;&gt;public class DraggableGroup extends CustomNode {&lt;/span&gt;&lt;br style=&quot;font-family: &amp;quot;Courier New&amp;quot;,Courier,monospace;&quot; /&gt;&lt;span style=&quot;font-family: &amp;quot;Courier New&amp;quot;,Courier,monospace;&quot;&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; public var content :Node[];&lt;/span&gt;&lt;br style=&quot;font-family: &amp;quot;Courier New&amp;quot;,Courier,monospace;&quot; /&gt;&lt;br style=&quot;font-family: &amp;quot;Courier New&amp;quot;,Courier,monospace;&quot; /&gt;&lt;span style=&quot;font-family: &amp;quot;Courier New&amp;quot;,Courier,monospace;&quot;&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; override def blocksMouse = true;&lt;/span&gt;&lt;br style=&quot;font-family: &amp;quot;Courier New&amp;quot;,Courier,monospace;&quot; /&gt;&lt;span style=&quot;font-family: &amp;quot;Courier New&amp;quot;,Courier,monospace;&quot;&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; var currentX :Float = 0;&lt;/span&gt;&lt;br style=&quot;font-family: &amp;quot;Courier New&amp;quot;,Courier,monospace;&quot; /&gt;&lt;span style=&quot;font-family: &amp;quot;Courier New&amp;quot;,Courier,monospace;&quot;&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; var currentY :Float = 0;&lt;/span&gt;&lt;br style=&quot;font-family: &amp;quot;Courier New&amp;quot;,Courier,monospace;&quot; /&gt;&lt;span style=&quot;font-family: &amp;quot;Courier New&amp;quot;,Courier,monospace;&quot;&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; var dragStartX :Float = 0;&lt;/span&gt;&lt;br style=&quot;font-family: &amp;quot;Courier New&amp;quot;,Courier,monospace;&quot; /&gt;&lt;span style=&quot;font-family: &amp;quot;Courier New&amp;quot;,Courier,monospace;&quot;&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; var dragStartY :Float = 0;&lt;/span&gt;&lt;br style=&quot;font-family: &amp;quot;Courier New&amp;quot;,Courier,monospace;&quot; /&gt;&lt;br style=&quot;font-family: &amp;quot;Courier New&amp;quot;,Courier,monospace;&quot; /&gt;&lt;span style=&quot;font-family: &amp;quot;Courier New&amp;quot;,Courier,monospace;&quot;&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; override function create() :Node {&lt;/span&gt;&lt;br style=&quot;font-family: &amp;quot;Courier New&amp;quot;,Courier,monospace;&quot; /&gt;&lt;span style=&quot;font-family: &amp;quot;Courier New&amp;quot;,Courier,monospace;&quot;&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; return Group {&lt;/span&gt;&lt;br style=&quot;font-family: &amp;quot;Courier New&amp;quot;,Courier,monospace;&quot; /&gt;&lt;span style=&quot;font-family: &amp;quot;Courier New&amp;quot;,Courier,monospace;&quot;&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; content: bind content;&lt;/span&gt;&lt;br style=&quot;font-family: &amp;quot;Courier New&amp;quot;,Courier,monospace;&quot; /&gt;&lt;span style=&quot;font-family: &amp;quot;Courier New&amp;quot;,Courier,monospace;&quot;&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; translateX: bind currentX;&lt;/span&gt;&lt;br style=&quot;font-family: &amp;quot;Courier New&amp;quot;,Courier,monospace;&quot; /&gt;&lt;span style=&quot;font-family: &amp;quot;Courier New&amp;quot;,Courier,monospace;&quot;&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; translateY: bind currentY;&lt;/span&gt;&lt;br style=&quot;font-family: &amp;quot;Courier New&amp;quot;,Courier,monospace;&quot; /&gt;&lt;span style=&quot;font-family: &amp;quot;Courier New&amp;quot;,Courier,monospace;&quot;&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; }&lt;/span&gt;&lt;br style=&quot;font-family: &amp;quot;Courier New&amp;quot;,Courier,monospace;&quot; /&gt;&lt;span style=&quot;font-family: &amp;quot;Courier New&amp;quot;,Courier,monospace;&quot;&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; }&lt;/span&gt;&lt;br style=&quot;font-family: &amp;quot;Courier New&amp;quot;,Courier,monospace;&quot; /&gt;&lt;br style=&quot;font-family: &amp;quot;Courier New&amp;quot;,Courier,monospace;&quot; /&gt;&lt;span style=&quot;font-family: &amp;quot;Courier New&amp;quot;,Courier,monospace;&quot;&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; override var onMousePressed =&lt;br /&gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; function(event :MouseEvent) :Void {&lt;/span&gt;&lt;br style=&quot;font-family: &amp;quot;Courier New&amp;quot;,Courier,monospace;&quot; /&gt;&lt;span style=&quot;font-family: &amp;quot;Courier New&amp;quot;,Courier,monospace;&quot;&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; dragStartX = event.sceneX - currentX;&lt;/span&gt;&lt;br style=&quot;font-family: &amp;quot;Courier New&amp;quot;,Courier,monospace;&quot; /&gt;&lt;span style=&quot;font-family: &amp;quot;Courier New&amp;quot;,Courier,monospace;&quot;&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; dragStartY = event.sceneY - currentY;&lt;/span&gt;&lt;br style=&quot;font-family: &amp;quot;Courier New&amp;quot;,Courier,monospace;&quot; /&gt;&lt;span style=&quot;font-family: &amp;quot;Courier New&amp;quot;,Courier,monospace;&quot;&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; };&lt;/span&gt;&lt;br style=&quot;font-family: &amp;quot;Courier New&amp;quot;,Courier,monospace;&quot; /&gt;&lt;br style=&quot;font-family: &amp;quot;Courier New&amp;quot;,Courier,monospace;&quot; /&gt;&lt;span style=&quot;font-family: &amp;quot;Courier New&amp;quot;,Courier,monospace;&quot;&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; override var onMouseDragged =&lt;br /&gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; function(event :MouseEvent) :Void {&lt;/span&gt;&lt;br style=&quot;font-family: &amp;quot;Courier New&amp;quot;,Courier,monospace;&quot; /&gt;&lt;span style=&quot;font-family: &amp;quot;Courier New&amp;quot;,Courier,monospace;&quot;&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; currentX = event.sceneX - dragStartX;&lt;/span&gt;&lt;br style=&quot;font-family: &amp;quot;Courier New&amp;quot;,Courier,monospace;&quot; /&gt;&lt;span style=&quot;font-family: &amp;quot;Courier New&amp;quot;,Courier,monospace;&quot;&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; currentY = event.sceneY - dragStartY;&lt;/span&gt;&lt;br style=&quot;font-family: &amp;quot;Courier New&amp;quot;,Courier,monospace;&quot; /&gt;&lt;span style=&quot;font-family: &amp;quot;Courier New&amp;quot;,Courier,monospace;&quot;&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; };&lt;/span&gt;&lt;br style=&quot;font-family: &amp;quot;Courier New&amp;quot;,Courier,monospace;&quot; /&gt;&lt;span style=&quot;font-family: &amp;quot;Courier New&amp;quot;,Courier,monospace;&quot;&gt;}&lt;/span&gt;&lt;/span&gt; &lt;br /&gt;
&lt;/blockquote&gt;Although this isn&#39;t particularly exciting, it does show that with some basic built-ins you can create a GUI that would be quite hard to put together in one of the stalwart toolkits developers normally use, although you&#39;re in trouble if you want multi-line text editing!</content><link rel='replies' type='application/atom+xml' href='http://assertfalse.blogspot.com/feeds/8717712019472151328/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://assertfalse.blogspot.com/2009/11/gui-development-and-java-fx.html#comment-form' title='1 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/3051232907134860721/posts/default/8717712019472151328'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/3051232907134860721/posts/default/8717712019472151328'/><link rel='alternate' type='text/html' href='http://assertfalse.blogspot.com/2009/11/gui-development-and-java-fx.html' title='GUI development and Java FX'/><author><name>Tim</name><uri>http://www.blogger.com/profile/14838461774136751486</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='https://img1.blogblog.com/img/b16-rounded.gif'/></author><thr:total>1</thr:total></entry><entry><id>tag:blogger.com,1999:blog-3051232907134860721.post-4015590099663543343</id><published>2009-11-15T15:49:00.000-08:00</published><updated>2009-11-15T15:49:01.362-08:00</updated><category scheme="http://www.blogger.com/atom/ns#" term="Economics"/><category scheme="http://www.blogger.com/atom/ns#" term="Java FX"/><title type='text'>Java FX and the Yield Slope</title><content type='html'>Recently I&#39;ve been looking at Java FX, a promising new technology from Sun that is supposed to help developers create rich web applications, desktop applications and mobile applications.&lt;br /&gt;
&lt;br /&gt;
While Java FX 1.2 can&#39;t live up to that promise just yet, it is nonetheless fun to use. The biggest missing component is a design tool. The FX community is abuzz with the possibility of this gap being bridged in the next version, hopefully to be released sometime soon. Some early screen-shots can be seen &lt;a href=&quot;http://sellmic.com/blog/2009/06/13/new-screenshots-of-the-javafx-design-tool/&quot;&gt;here&lt;/a&gt;.&lt;br /&gt;
&lt;br /&gt;
On the plus side, Java FX (on the desktop) has access to the full class library of Java SE. Unfortunately, this isn&#39;t true for the browser or mobile versions (for obvious reasons.) For those configurations, we have to wait for the default Java FX class library to grow.&lt;br /&gt;
&lt;br /&gt;
The following is a simple (and ugly - GUI design isn&#39;t my forte) Java FX application that graphs the yield slope over the last 30 years.&lt;br /&gt;
&lt;br /&gt;
&lt;div class=&quot;separator&quot; style=&quot;clear: both; text-align: center;&quot;&gt;&lt;a href=&quot;http://sites.google.com/site/assertfalseblog/files/YieldSlope.jnlp&quot;&gt;&lt;img border=&quot;0&quot; src=&quot;https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEglx6AwgPEsLj3UhNLKenaHUcamvgMDthJE0WbBE1T7jglSee6NJKkikr1JjnDIgKZ7ecPebogjkln1obomzbNlIdYkNd-JRXcSeI4X7RT-rAD6TnOF_3qFyk8lxhdSOf9q_iUgaou-JHbI/s320/Yield+Slope.jpg&quot; /&gt;&lt;/a&gt;&lt;br /&gt;
&lt;/div&gt;&lt;div style=&quot;text-align: center;&quot;&gt;&amp;nbsp;&lt;i&gt;Click the image to run the program&lt;/i&gt;&lt;br /&gt;
&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://assertfalse.blogspot.com/feeds/4015590099663543343/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://assertfalse.blogspot.com/2009/11/java-fx-and-yield-slope.html#comment-form' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/3051232907134860721/posts/default/4015590099663543343'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/3051232907134860721/posts/default/4015590099663543343'/><link rel='alternate' type='text/html' href='http://assertfalse.blogspot.com/2009/11/java-fx-and-yield-slope.html' title='Java FX and the Yield Slope'/><author><name>Tim</name><uri>http://www.blogger.com/profile/14838461774136751486</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='https://img1.blogblog.com/img/b16-rounded.gif'/></author><media:thumbnail xmlns:media="http://search.yahoo.com/mrss/" url="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEglx6AwgPEsLj3UhNLKenaHUcamvgMDthJE0WbBE1T7jglSee6NJKkikr1JjnDIgKZ7ecPebogjkln1obomzbNlIdYkNd-JRXcSeI4X7RT-rAD6TnOF_3qFyk8lxhdSOf9q_iUgaou-JHbI/s72-c/Yield+Slope.jpg" height="72" width="72"/><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-3051232907134860721.post-5019779379503805779</id><published>2009-10-31T21:46:00.000-07:00</published><updated>2009-11-02T13:53:12.620-08:00</updated><category scheme="http://www.blogger.com/atom/ns#" term="Economics"/><title type='text'>Meaning of the yield curve</title><content type='html'>A lot of discussion about economics today mentions the importance of the steep yield curve. Some even make predictions about what will happen next, giving the yield curve as evidence. But what is the meaning of a steep yield curve?&lt;br /&gt;
&lt;br /&gt;
&lt;b&gt;The Yield Curve Today&lt;/b&gt;&lt;br /&gt;
&lt;br /&gt;
First, a refresher, what is the yield curve? As with most things, Wikipedia has a great article on the topic, so I&#39;ll just borrow from them:&lt;br /&gt;
&lt;blockquote&gt;&lt;b&gt; &lt;/b&gt;The yield curve is the relation between the interest rate and the time to maturity of the debt. The yield of a debt instrument is the overall rate of return available on the investment. For instance, a bank account that pays an interest rate of 4% per year has a 4% yield. Investing for a period of time t gives a yield Y(t). This function Y is called the yield curve, and it is often, but not always, an increasing function of t.&lt;br /&gt;
&lt;/blockquote&gt;The slope of the yield curve tells us how quickly the yield increases as the term increases. A quick way of checking this slope is to compare the yield of the 10 year treasury note to that of the 2 year note. The following graph shows how this value has changed over the last 20 years.&lt;br /&gt;
&lt;br /&gt;
&lt;div class=&quot;separator&quot; style=&quot;clear: both; text-align: center;&quot;&gt;&lt;a href=&quot;https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEgkPS18lmWFtvurKsSAuJfe7owBBYE0J3t9M02zf49IGz7TYi7jxOei8K_SMIrIuR1zVn6cJ-js6g6caDq1CPG5hgSp3ZmKGenlWp_yzhStW2cFivI4l2R6nBA-7wg2ZqlwucjhhKaDwqsn/s1600-h/Yield+Slope.jpg&quot; imageanchor=&quot;1&quot; style=&quot;margin-left: 1em; margin-right: 1em;&quot;&gt;&lt;img border=&quot;0&quot; src=&quot;https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEgkPS18lmWFtvurKsSAuJfe7owBBYE0J3t9M02zf49IGz7TYi7jxOei8K_SMIrIuR1zVn6cJ-js6g6caDq1CPG5hgSp3ZmKGenlWp_yzhStW2cFivI4l2R6nBA-7wg2ZqlwucjhhKaDwqsn/s640/Yield+Slope.jpg&quot; /&gt;&lt;/a&gt;&lt;br /&gt;
&lt;/div&gt;&lt;br /&gt;
The current value, 2.49%, is much higher than the average, 1%. In fact it is about as high as it has ever been over the last 20 years. This qualifies as a steep yield curve.&lt;br /&gt;
&lt;br /&gt;
&lt;b&gt;What does it mean?&lt;/b&gt;&lt;br /&gt;
&lt;br /&gt;
Negative sloping yield curves are reasonably accurate predictors of recession and steep yield curves are predictors of strong economic growth. As you can see in the graph above, the yield curve was almost flat throughout the mid-90s indicating a risk of economic weakness. Arguably this risk manifested itself as the tech sector crash in early 2000. During parts of 2005-2006, preceding the current recession, the yield curve was negative.&lt;br /&gt;
&lt;br /&gt;
A steep yield curve is generally considered to be a predictor of strong economic growth. The yield curve was steep coming out of the recessions in the early &#39;90s and 2000s. Since the yield curve is just as steep now as it was then, does this mean we are out of the woods and can look forward to strong growth?&lt;br /&gt;
&lt;br /&gt;
As the economy heats up, inflation will generally increase. Most central banks will try to keep inflation within a (low) controlled range. They will adjust monetary policy to this effect. The most commonly employed method of keeping high inflation in check is increasing the lending rate. A steep yield curve represents and adjustment for the risk of higher interest rates in the future, which implies economic growth.&lt;br /&gt;
&lt;br /&gt;
But there are other potential causes for inflation. Some argue that the steep curve is adjusting for the risk of inflation due to the massive stimulus the government has injected into the economy through the policy of quantitative easing the US Federal Reserve applied in 2008-2009. If this turns out to be correct, we could have inflation without recovery.&lt;br /&gt;
&lt;b&gt; &lt;/b&gt;&lt;br /&gt;
&lt;b&gt;References&lt;/b&gt;&lt;br /&gt;
&lt;br /&gt;
&lt;a href=&quot;http://en.wikipedia.org/wiki/Yield_curve&quot;&gt;http://en.wikipedia.org/wiki/Yield_curve&lt;/a&gt;&lt;br /&gt;
&lt;a href=&quot;http://beginnersinvest.about.com/lw/Business-Finance/Personal-finance/The-Yield-Curve.htm&quot;&gt;http://beginnersinvest.about.com/lw/Business-Finance/Personal-finance/The-Yield-Curve.htm&lt;/a&gt;&lt;br /&gt;
&lt;a href=&quot;http://gregmankiw.blogspot.com/2009/05/yield-curve-is-steep.html&quot;&gt;http://gregmankiw.blogspot.com/2009/05/yield-curve-is-steep.html&lt;/a&gt;&lt;br /&gt;
&lt;a href=&quot;http://www.ustreas.gov/offices/domestic-finance/debt-management/interest-rate/yield.shtml&quot;&gt;http://www.ustreas.gov/offices/domestic-finance/debt-management/interest-rate/yield.shtml&lt;/a&gt;</content><link rel='replies' type='application/atom+xml' href='http://assertfalse.blogspot.com/feeds/5019779379503805779/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://assertfalse.blogspot.com/2009/10/meaning-of-yield-curve.html#comment-form' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/3051232907134860721/posts/default/5019779379503805779'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/3051232907134860721/posts/default/5019779379503805779'/><link rel='alternate' type='text/html' href='http://assertfalse.blogspot.com/2009/10/meaning-of-yield-curve.html' title='Meaning of the yield curve'/><author><name>Tim</name><uri>http://www.blogger.com/profile/14838461774136751486</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='https://img1.blogblog.com/img/b16-rounded.gif'/></author><media:thumbnail xmlns:media="http://search.yahoo.com/mrss/" url="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEgkPS18lmWFtvurKsSAuJfe7owBBYE0J3t9M02zf49IGz7TYi7jxOei8K_SMIrIuR1zVn6cJ-js6g6caDq1CPG5hgSp3ZmKGenlWp_yzhStW2cFivI4l2R6nBA-7wg2ZqlwucjhhKaDwqsn/s72-c/Yield+Slope.jpg" height="72" width="72"/><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-3051232907134860721.post-2983242529067803842</id><published>2009-10-27T11:52:00.000-07:00</published><updated>2009-10-27T12:31:07.418-07:00</updated><category scheme="http://www.blogger.com/atom/ns#" term="Economics"/><category scheme="http://www.blogger.com/atom/ns#" term="Stock Analysis"/><title type='text'>Analysis of Callaway Golf Company (NYSE:ELY)</title><content type='html'>&lt;p&gt;&lt;strong&gt;Callaway Golf Company (ELY)&lt;/strong&gt;&lt;/p&gt;&lt;p&gt;Callaway Golf Company sells all things golf related. This includes, golf balls, golf clubs, golf gizmos and golf attire. They have products targetting all price points but with a general emphasis on technologically superior products.&lt;/p&gt;&lt;p&gt;The current economic downturn has hurt Callaway&#39;s profits badly; both Q1 and Q2 2009 profits fell ~82% YOY. Sales were down 17% over the same period. Despite being hit pretty hard, they did manage to turn a profit.&lt;/p&gt;&lt;p&gt;Callaway has no short or long-term debt and $50 million cash on hand. They recently sold $140 million worth of preferred shares which they used to pay off $90 million of debt on a line of credit. I think this shows that management values a strong balance sheet and that they are financing the company conservatively during this downturn.&lt;/p&gt;&lt;p&gt;Historically, Callaway tends to lose money during Q3 and Q4 and I&#39;m sure this year will be worse than usual. However, this is not unexpected and as mentioned above, Callaway have taken precautions to work through the hard times. Given that a weak recovery is projected for 2010, Callaway have already weathered the worst of the storm.&lt;/p&gt;&lt;p&gt;&lt;strong&gt;Bullish Argument&lt;/strong&gt; &lt;/p&gt;&lt;p&gt;The bullish argument is based on fundamentals. Callaway currently has a market cap of $499.05 million but a book value of $632.46 million, making a price/book of 0.71. The company is priced less than the value of its assets; this is a value play.&lt;/p&gt;&lt;p&gt;That book value will probably decrease through Q3 and Q4, but historically it tends to fall by about $100M, meaning the company will still be undervalued. Callaway have been taking measures to reduces costs and expenses like most other companies, so I believe 2010 could see better profits than 2009 even if we see only a weak recovery.&lt;/p&gt;&lt;p&gt;Finally, I don&#39;t watch, play or follow golf, but I know the name Callaway. I like companies with a strong recognizable brand name, it is the sort of thing that is hard to acquire, and amazingly hard to loose (see Palm for example.) Callaway also own another brand I recognize, Top-Flite. &lt;/p&gt;&lt;p&gt;&lt;strong&gt;Bearish Argument&lt;/strong&gt;&lt;/p&gt;&lt;p&gt;Callaway have already issued guidance that Q3 will not be stellar. Mr. Market has already reacted to this news, but bad earnings could drag the stock down through Q3 and Q4. If Callaway cannot claw back some of its pre-2009 sales, it is likely this stock will remain under $10 for a long time.&lt;/p&gt;&lt;p&gt;Summing up, I think Callaway is a somewhat risky value play. Either way you hack it, Callaway is currently undervalued, but that could change over the coming year if this economy continues to go badly. But, given the bonuses Wall St. is paying itself, the golfing class could be back in force for 2010. &lt;/p&gt;</content><link rel='replies' type='application/atom+xml' href='http://assertfalse.blogspot.com/feeds/2983242529067803842/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://assertfalse.blogspot.com/2009/10/analysis-of-callaway-golf-company.html#comment-form' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/3051232907134860721/posts/default/2983242529067803842'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/3051232907134860721/posts/default/2983242529067803842'/><link rel='alternate' type='text/html' href='http://assertfalse.blogspot.com/2009/10/analysis-of-callaway-golf-company.html' title='Analysis of Callaway Golf Company (NYSE:ELY)'/><author><name>Tim</name><uri>http://www.blogger.com/profile/14838461774136751486</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='https://img1.blogblog.com/img/b16-rounded.gif'/></author><thr:total>0</thr:total></entry></feed>