<?xml version="1.0" encoding="UTF-8"?>
<rss version="2.0"
	xmlns:content="http://purl.org/rss/1.0/modules/content/"
	xmlns:wfw="http://wellformedweb.org/CommentAPI/"
	xmlns:dc="http://purl.org/dc/elements/1.1/"
	xmlns:atom="http://www.w3.org/2005/Atom"
	xmlns:sy="http://purl.org/rss/1.0/modules/syndication/"
	xmlns:slash="http://purl.org/rss/1.0/modules/slash/"
	>

<channel>
	<title>SimianLogic Studios &#187; work</title>
	<atom:link href="http://www.simianlogicstudios.com/tag/work/feed/" rel="self" type="application/rss+xml" />
	<link>http://www.simianlogicstudios.com</link>
	<description>indie game developer, web tinkerer, and transplanted Southerner living in Silicon Valley</description>
	<lastBuildDate>Thu, 18 Feb 2010 16:38:04 +0000</lastBuildDate>
	<generator>http://wordpress.org/?v=2.8.4</generator>
	<language>en</language>
	<sy:updatePeriod>hourly</sy:updatePeriod>
	<sy:updateFrequency>1</sy:updateFrequency>
			<item>
		<title>Who Says the Crowd Has to Be Right?</title>
		<link>http://www.simianlogicstudios.com/2008/11/10/who-says-the-crowd-has-to-be-right/</link>
		<comments>http://www.simianlogicstudios.com/2008/11/10/who-says-the-crowd-has-to-be-right/#comments</comments>
		<pubDate>Mon, 10 Nov 2008 23:00:00 +0000</pubDate>
		<dc:creator>SimianLogic</dc:creator>
				<category><![CDATA[blog]]></category>
		<category><![CDATA[work]]></category>

		<guid isPermaLink="false">http://simianlogic3d.com/blog/2008/11/10/who-says-the-crowd-has-to-be-right/</guid>
		<description><![CDATA[(Image lost in the Great Update of 2009)
When I&#8217;m not making games, I&#8217;m still cranking away on my day job&#8211;Piqqem. Eric Schonfeld did a review of the site on TechCrunch last Friday, so I thought I&#8217;d respond with my own two cents on the company. Clearly I&#8217;m a little biased since I work there (and [...]]]></description>
			<content:encoded><![CDATA[<p style="text-align: center;">(Image lost in the Great Update of 2009)</p>
<p>When I&#8217;m not making games, I&#8217;m still cranking away on my day job&#8211;Piqqem. Eric Schonfeld <a title="Piqqem on TC" href="http://www.techcrunch.com/2008/11/07/can-piqqem-use-the-crowd-to-pick-stocks-dont-bet-on-it/" target="_blank">did a review of the site on TechCrunch</a> last Friday, so I thought I&#8217;d respond with my own two cents on the company. Clearly I&#8217;m a little biased since I work there (and wouldn&#8217;t be if I thought it was going to fail), and it certainly doesn&#8217;t hurt that I know where the site is headed. I should also point out, though, that these are my own thoughts on the site and not the &#8220;company line&#8221; (assuming we had one).<span id="more-110"></span> I could paraphrase like crazy, but I think it&#8217;s way easier to just quote the original article and put my own thoughts on the subject.</p>
<blockquote><p><em>If nothing else, Piqqem is certainly a good place to get ideas for stocks to invest in. But does it really have any chance of ever beating the market? Like any social investing site, its picks are only as good as the people who contribute to it.</em></p></blockquote>
<p>Maybe I&#8217;m a dirty hippy, but this just seems elitist to me. I already put way more faith in my dad&#8217;s/uncles&#8217; stock recommendations than I do in anything I read on Yahoo Finance. None of them have finance degrees (though, to be fair, a couple of them are accountants). If the monkey at the zoo gave me good advice, I&#8217;d at least listen to it. I think we can make some assumptions about who would even sign up for a site like Piqqem (educated enough to use the internet, some interest in the stock market) that I&#8217;d trust any of our users at least as much as some Wall Street analyst with an Armani suit and a who-knows-what hidden agenda. I&#8217;m not going to run out and buy something based on what one single Piqqem user says, but if 5,000 of them are saying they believe in a stock I might just give it a second look.</p>
<blockquote><p><em>When it comes to stocks, the best prediction market out there is the stock market itself. It is the biggest prediction market out there, with millions of people predicting the future price of stocks every time they buy or sell shares. All of those predictions are aggregated together in the form of the price.<br />
</em></p></blockquote>
<p>This is probably the number one complaint we get from people, but I don&#8217;t think it&#8217;s 100% true. Doing a very unscientific survey of a few companies (AAPL, MSFT, GOOG, YHOO, JAVA) shows that each of them has at least 60% of their outstanding shares owned by either institutions or mutual funds, meaning average trader has very little to do with the movement of the price. Average is a relative term, of course&#8211; clearly I&#8217;m not talking about Warren Buffet, but at what point does a trader become average? Less than $5 million? $1 million? $500,000? I&#8217;ve only got four grand invested in the market (the max contribution to my Roth for the one year I&#8217;ve been out of school), so clearly I&#8217;m not swinging the market one way or the other. Even if I did feel like a market mover, there are two ways that I as a consumer can affect a stock&#8217;s price: by purchasing the stock (a vote of confidence in the company) or by purchasing whatever it is that company produces (or using its service). I use Google Ads instead of Yahoo Ads. I bought a Honda instead of a Ford. Being from Atlanta, I&#8217;m a die-hard Coke fan and an avid Pepsi hater. Earnings may be released quarterly, but public sentiment is something that&#8217;s constantly evolving. Piqqem is one way for people to gather that type of data.</p>
<blockquote><p><em>The votes should be weighted by money. If someone is willing to put down a million dollars on the shares of Apple going up, that should count more than someone who just puts $100 down (or worse, is just clicking on a Website). Money not only makes the predictions of a market better, it also makes it harder to game the system because there is more to lose if you turn out to be wrong.</em></p></blockquote>
<p>We are Crowd Technologies, and while we don&#8217;t necessarily stick to the Wisdom of the Crowds a hundred percent of the time, we do at least try (one of the reasons you won&#8217;t see a &#8220;Best Piqqer&#8221; anywhere on our site). If I had a million dollars, I would&#8217;ve put it all on Apple when it was below $90 a couple of weeks ago. The fact that I have closer to $100 doesn&#8217;t make that feeling any less strong, so to say that my sentiment is meaningless goes very strongly against the idea of crowd intelligence. Other than an occasional Super Bowl pool, I&#8217;ve never placed a bet on a football game. I still submit my game picks every week, though, and it&#8217;s fantastically rewarding when I get more right than my buddies. That may be comparing Apples and Falcons (har har), but both tasks require me to take what data I have and apply it picking which entities I feel have the best shot at &#8220;winning.&#8221; The stock market is infinitely more complex than a football game (especially considering there&#8217;s not a winner and a loser and 10,000 teams are playing against each other at the same time), but I think the analogy holds. There&#8217;s a joy to be found in &#8220;being right,&#8221; regardless of whether or not I have a financial stake in the outcome.</p>
<blockquote><p><em>[Assuming] Piqqem is perfect and it does produce better stock picks than any one individual could, investors will quickly discover and then it will become a reflection of the market. Piqqem does not exist in an information vacuum.</em></p></blockquote>
<p>This is a problem we&#8217;d love to have, which brings me to my biggest question: who says the crowd has to be right? With enough data from enough users on enough stocks, I can pretty much guarantee <strong>we can slice the data so that someone is always &#8220;right&#8221;</strong>. And I don&#8217;t mean someone as in Steve from Tuscon (apologies if there actually is a Steve from Tuscon). I mean subsets of the big crowd. Maybe men aged 18-25 are better at predicting which way EA&#8217;s stock will move. Maybe doctors and pharmacists are great at choosing biotech stocks. Then again, maybe middle-aged housewives from Texas are fantastic predictors of semiconductor stocks. Highlighting any one of these makes for an entertaining story (couldn&#8217;t the market use a little of that?), which is enough to make the idea of Piqqem a fun one to work on. As a country, we love our pop culture indicators&#8211;from small towns that predict major elections to groundhogs that predict the weather. Who&#8217;s to say that crowd sentiment can&#8217;t be another one of those?</p>
]]></content:encoded>
			<wfw:commentRss>http://www.simianlogicstudios.com/2008/11/10/who-says-the-crowd-has-to-be-right/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>Microsites as Ad Filters: Meet Stockmoose 2.0</title>
		<link>http://www.simianlogicstudios.com/2008/07/25/microsites-as-ad-filters-meet-stockmoose-20/</link>
		<comments>http://www.simianlogicstudios.com/2008/07/25/microsites-as-ad-filters-meet-stockmoose-20/#comments</comments>
		<pubDate>Fri, 25 Jul 2008 18:53:19 +0000</pubDate>
		<dc:creator>SimianLogic</dc:creator>
				<category><![CDATA[advertising]]></category>
		<category><![CDATA[heroku]]></category>
		<category><![CDATA[web tinkering]]></category>
		<category><![CDATA[work]]></category>

		<guid isPermaLink="false">http://simianlogic3d.com/blog/2008/07/25/microsites-as-ad-filters-meet-stockmoose-20/</guid>
		<description><![CDATA[(Image lost in the Great Update of 2009)
When I originally tossed the Stockmoose up a couple of months ago, it was mostly a prototype&#8211;one that had taken a single evening to produce, and one that was based on a single request to my artist girlfriend: &#8220;Can you draw me a moose with a tie?&#8221;  [...]]]></description>
			<content:encoded><![CDATA[<p style="text-align: center;">(Image lost in the Great Update of 2009)</p>
<p>When I originally tossed the <a title="StockMoose!" href="http://www.stockmoose.com" target="_blank">Stockmoose</a> up <a title="Meet the StockMoose" href="http://simianlogicstudios.com/2008/05/06/meet-the-stockmoose/">a couple of months ago</a>, it was mostly a prototype&#8211;one that had taken a single evening to produce, and one that was based on a single request to my artist girlfriend: &#8220;Can you draw me a moose with a tie?&#8221;  Well, now it&#8217;s finally back with a new coat of paint, some basic anti-gaming measures, and a few other things to spice it up. The &#8220;borrowed&#8221; Yahoo stock charts have been replaced with our own proprietary charts, and each stock now has a sort of miniature info card so the choice isn&#8217;t based solely on name-recognition. We also created a list of 25 Silicon Valley stocks that most people around here have probably heard of&#8211;just to make it a little more engaging. Some of the early results are actually a little surprising.  In our SV25, TiVo is actually pretty close to the bottom while Netflix is near the top. Based on what I know of the two, I would&#8217;ve actually assumed this to be the opposite of what would happen.</p>
<p><span id="more-106"></span>The most interesting result, though, has been the clickthroughs. As an experiment, I tossed $50 into <a title="Project Wonderful" href="http://www.projectwonderful.com" target="_blank">Project Wonderful</a> to point some traffic at the moose. PW grew up around web-comics, and you pay for time instead of clicks. The resultant CPC is incredibly low ($0.04-$0.05), but it&#8217;s extremely low quality traffic&#8211;totally untargeted, and often times people just click on the ads because they think it supports the comics they like. Roughly 1 in 8 unique visitors visiting the Stockmoose have been clicking through to <a title="www.piqqem.com" href="htttp://www.piqqem.com" target="_blank">Piqqem</a>, meaning the $0.05 CPC for the StockMoose turns into a $0.40 CPC for Piqqem itself. Because our niche is in the financial sector, most CPC ads on Google cost anywhere from $.60 to $1.20 for even moderately relevant keywords.</p>
<p>It gets better. The bounce rate for traffic coming off of the Adwords was in the neighborhood of 70%, while those coming in off of Stockmoose are closer to 40%. I don&#8217;t know if we have enough data to be statistically significant or not, but the concept seems sound. Instead of trusting Google to target our ads to relevant &#8220;customers&#8221; (they&#8217;re good at what they do, but there&#8217;s thousands of people out there who make a living scamming AdSense), we instead cast a much wider net and do the targeting ourselves. Those that are interested in the stock market, interested perhaps in the wisdom of the crowd, click through to the main site. Those that don&#8217;t either bounce or hang out and pick a few stocks in the Stockmoose game. Either way&#8211;our &#8220;crowd&#8221; results get better and we have an opportunity to pitch the main site.  Win win.</p>
]]></content:encoded>
			<wfw:commentRss>http://www.simianlogicstudios.com/2008/07/25/microsites-as-ad-filters-meet-stockmoose-20/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>Meet the StockMoose</title>
		<link>http://www.simianlogicstudios.com/2008/05/06/meet-the-stockmoose/</link>
		<comments>http://www.simianlogicstudios.com/2008/05/06/meet-the-stockmoose/#comments</comments>
		<pubDate>Tue, 06 May 2008 20:35:05 +0000</pubDate>
		<dc:creator>SimianLogic</dc:creator>
				<category><![CDATA[heroku]]></category>
		<category><![CDATA[web tinkering]]></category>
		<category><![CDATA[work]]></category>

		<guid isPermaLink="false">http://simianlogic3d.com/blog/2008/05/06/meet-the-stockmoose/</guid>
		<description><![CDATA[(Image lost in the Great Update of 2009)
Another day, another kooky web idea.  This time, it&#8217;s the Stock Moose.  We&#8217;ve had a lot of debate at work on how to gather data, how to present that data, and how to make that collection/presentation process engaging enough that someone might actually enjoy doing it [...]]]></description>
			<content:encoded><![CDATA[<p style="text-align: center;">(Image lost in the Great Update of 2009)</p>
<p>Another day, another kooky web idea.  This time, it&#8217;s the <a title="The Stock Moose" href="http://www.stockmoose.com" target="_blank">Stock Moose</a>.  We&#8217;ve had a lot of debate at work on how to gather data, how to present that data, and how to make that collection/presentation process engaging enough that someone might actually enjoy doing it just for the sake of doing it (rather than tying it to some future promise of &#8220;Oh, we&#8217;ll give you an edge on the trading room floor&#8221;).  Back when the college football season was in full swing, Yahoo! introduced what they called the Team Ranker.  The concept is incredibly simple: pick two teams out of a hat and display them both (with perhaps a few bits of useful info such as a win-loss record or&#8230; a stock chart).  The user simply has to click on the one they think is better.  Period.</p>
<p>Whichever team (or in this case, stock) has the best win percent is rated as #1, and the rest are sorted accordingly.  The system was far too simple to game, at least for football.  What this usually meant is that earlier in the day (when the East Coast is awake and voting) highly ranked teams in the SEC and other eastern conferences dominated the rankings.  When it got later in the afternoon, teams with East Coast fan bases slipped in the rankings while PAC-10 teams rose into the top spots.  This is unavoidable for something like football, where fans are fiercely loyal to their own teams over all others&#8211;but is the same true for stocks?</p>
<p>Would users on the East coast sway the list towards East-coast stalwarts like Coke and Home Depot while the West coast might favor silicon valley darlings over all others?  It&#8217;s hard to say&#8211;especially considering that I limited the field to the Nasdaq 100, which is primarily dominated by tech stocks.<span id="more-88"></span></p>
<p>The beauty of today&#8217;s technology, though, is that these debates don&#8217;t have to remain purely academic.  The Stock Moose is thin.  It&#8217;s very, very thin.  But rather than spend a few hours swapping emails back and forth with my bosses on whether or not something like that would even work, tools like Heroku make it possible to just go build it.  I spent a grand total of around four hours kicking that thing out, and probably half of that time was spent trying to decide on a name for it (and then trying to explain to my girlfriend why I needed her to draw me a moose with a tie).  The other half was spent cooking up the round-robin logic, which is probably way too complicated.  Building something like this within our own code base&#8211;or even hosting it on our own servers without asking permission&#8211;would be unthinkable.</p>
<p>If we ultimately decide it&#8217;s a failure (which most little web projects are), what&#8217;s the cost?  There&#8217;s always a chance, though, that something so simple (and arguably, so ugly) might go viral.  If that happens&#8211;and that&#8217;s a big IF&#8211;what do we get?  A little free advertising.  If it doesn&#8217;t happen, we&#8217;ve still profited: we can now cross something else off our list and move towards a more targeted product.</p>
<p>Besides, Stock Moose has a nice ring to it.</p>
]]></content:encoded>
			<wfw:commentRss>http://www.simianlogicstudios.com/2008/05/06/meet-the-stockmoose/feed/</wfw:commentRss>
		<slash:comments>1</slash:comments>
		</item>
		<item>
		<title>To Roth or not to Roth?</title>
		<link>http://www.simianlogicstudios.com/2007/12/13/to-roth-or-not-to-roth/</link>
		<comments>http://www.simianlogicstudios.com/2007/12/13/to-roth-or-not-to-roth/#comments</comments>
		<pubDate>Thu, 13 Dec 2007 18:28:10 +0000</pubDate>
		<dc:creator>SimianLogic</dc:creator>
				<category><![CDATA[personal finance]]></category>
		<category><![CDATA[usability]]></category>
		<category><![CDATA[work]]></category>

		<guid isPermaLink="false">http://simianlogic3d.com/blog/2007/12/13/to-roth-or-not-to-roth/</guid>
		<description><![CDATA[Even though there&#8217;s only two of us here at work (well, actually our first of two interns started yesterday&#8230; but they only work 20 hours a week), our acting CEO has asked if we want him to set up a 401k.  I&#8217;d already gotten the ball rolling on a Roth IRA over at Zecco (paperwork [...]]]></description>
			<content:encoded><![CDATA[<p>Even though there&#8217;s only two of us here at work (well, actually our first of two interns started yesterday&#8230; but they only work 20 hours a week), our acting CEO has asked if we want him to set up a 401k.  I&#8217;d already gotten the ball rolling on a Roth IRA over at <a target="_blank" title="Zecco" href="http://www.zecco.com">Zecco</a> (paperwork filed at least), so unless he implements some sort of match program I guess I&#8217;ll just stick with that.  In the meantime, I thought I&#8217;d give my first impressions of Zecco.<span id="more-64"></span></p>
<p>The sign-up process is a major chore.  I&#8217;ve never done it at another broker, so I don&#8217;t know if it&#8217;s this bad everywhere or this is a &#8220;you get what you pay for&#8221; scenario.  I actually filled out all the paperwork back in August, but I never got around to mailing it off and faxing them my info (yes, MAIL and FAX&#8211;I didn&#8217;t realize anyone still used either).  I got a little more motivated last week, so I checked back in with them.  Because I hadn&#8217;t mailed my paperwork in by their 30 day deadline, I had to fill everything out again from scratch&#8211;there was no record anywhere of the application I&#8217;d previously filled out.</p>
<p>Once I got everything filled out, I headed over to Fedex/Kinkos, figuring I could make copies of my driver&#8217;s license, fax them the sheets they required, and mail everything in one stop.  No such luck.  Their mailing address for paperwork is a P.O. Box, so after standing in line for half an hour (December, go figure), they told me I&#8217;d have to take it to the post office.  After standing in line again at the post office, I finally had everything sent off properly.</p>
<p>I got the email saying the account had been a few days later&#8211;and that I could go to the site and log on using a combination of random personal info and the last 4 digits of my account number.  I tried to do so, but I didn&#8217;t actually have an account number yet.  When logging on to their site, it just said &#8220;Roth IRA&#8211;Account set up in minutes.&#8221;  It said that for a few days.  After it finally went through, I was able to log in and take a look at their trading platform.  In a word: ugly.  It looks like it was designed by programmers, with no real care paid to user experience.  I&#8217;ll hold further comment on it until I&#8217;ve actually used it some (though if the ACH-setup interface is any indication, it&#8217;s going to be a major chore).</p>
<p>Then my next issue: management fees.  Somewhere in the paperwork I filled out, I remember reading  that they charge you $30 a year to manage your retirement account (though, as far as I can tell, it&#8217;s still up to me to make all my own trades and pay trading fees of $4.50 until my balance hits $2500).  The yearly fee hits in February, and if you fund your account after February they charge you immediately.  It&#8217;s now December.  I called their customer support (and, to their credit, actually got a real person within 5 minutes) and asked if this fee was pro-rated or I was really going to be charged $30 so they could manage the couple of hundred or so dollars I&#8217;m likely to put in before February.  Their response: full $30.  I asked them if it was a specific date in February (I&#8217;d hate to put money in Feb 1st only to get charged again Feb 10th) or if I could safely put money into the account any time in the month.  He didn&#8217;t know.  He said it was usually a certain week in February, so if I wanted to be absolutely sure it was best to wait until March 1st.<br />
So I&#8217;ve got a Roth IRA now.  I&#8217;m just not going to put any money into it until March. That&#8217;s not so bad, I guess.  I&#8217;ll just have to do a good job of mentally earmarking money in my checking account as &#8220;IRA money&#8221; and not &#8220;shiny new toy&#8221; money.  The game I mentioned in my <a target="_blank" title="Napa, Thanksgiving, and a New Theme" href="http://simianlogic3d.com/blog/2007/11/26/napa-thanksgiving-and-a-new-theme/">Thanksgiving post</a> got a really great sponsorship offer, so once I polish it up to their specs and finalize the deal I should have a pretty nice chunk of change to act as seed money (though I still don&#8217;t see myself maxing it out for 2007).</p>
]]></content:encoded>
			<wfw:commentRss>http://www.simianlogicstudios.com/2007/12/13/to-roth-or-not-to-roth/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>Piqqem in FlexApps on flickr</title>
		<link>http://www.simianlogicstudios.com/2007/12/10/piqqem-in-flexapps-on-flickr/</link>
		<comments>http://www.simianlogicstudios.com/2007/12/10/piqqem-in-flexapps-on-flickr/#comments</comments>
		<pubDate>Tue, 11 Dec 2007 00:18:40 +0000</pubDate>
		<dc:creator>SimianLogic</dc:creator>
				<category><![CDATA[flex]]></category>
		<category><![CDATA[work]]></category>

		<guid isPermaLink="false">http://simianlogic3d.com/blog/2007/12/10/piqqem-in-flexapps-on-flickr/</guid>
		<description><![CDATA[A little while ago at work, we switched veins from &#8220;Totally Super Secret&#8221; to &#8220;Shhh, don&#8217;t tell too many people, but we&#8217;ll give out a few accounts.&#8221;  The bosses didn&#8217;t want any press releases or newspaper articles just yet, but my co-worker and I spent a couple of days seeing if there were any slightly-stealthy [...]]]></description>
			<content:encoded><![CDATA[<p>A little while ago at work, we switched veins from &#8220;Totally Super Secret&#8221; to &#8220;Shhh, don&#8217;t tell too many people, but we&#8217;ll give out a few accounts.&#8221;  The bosses didn&#8217;t want any press releases or newspaper articles just yet, but my co-worker and I spent a couple of days seeing if there were any slightly-stealthy ways to get some word out.  I had stumbled across Ted Patrick&#8217;s <a target="_blank" title="FlexApps component" href="http://www.onflex.org/ted/2007/02/flexapps-component-version-09.php">FlexApps component</a> a couple of months ago, so this seemed like a perfect excuse to test it out.  There hadn&#8217;t been any new posts since April, so there was a chance that the group (even though it&#8217;s only run by one person) was defunct&#8211;but that didn&#8217;t deter me.  I&#8217;d sort of forgotten all about it until this morning my boss <a target="_blank" title="FlexApps on  flickR" href="http://www.flickr.com/photos/flexapps/">sent us a link</a> asking who&#8217;d submitted them  (in a &#8220;good job&#8221; sort of way).</p>
]]></content:encoded>
			<wfw:commentRss>http://www.simianlogicstudios.com/2007/12/10/piqqem-in-flexapps-on-flickr/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>Compiling a Stock Flex Component.</title>
		<link>http://www.simianlogicstudios.com/2007/12/09/compiling-a-flex-component/</link>
		<comments>http://www.simianlogicstudios.com/2007/12/09/compiling-a-flex-component/#comments</comments>
		<pubDate>Sun, 09 Dec 2007 23:56:36 +0000</pubDate>
		<dc:creator>SimianLogic</dc:creator>
				<category><![CDATA[flex]]></category>
		<category><![CDATA[work]]></category>

		<guid isPermaLink="false">http://simianlogic3d.com/blog/2007/12/09/compiling-a-flex-component/</guid>
		<description><![CDATA[I work a lot with MXML, but even I still think there&#8217;s a little bit of chicanery going on when it comes to getting it to play nice with the other kids.  Due to all the various problems that normal TextFields have with image support (via htmlText), at work I decided to replace the [...]]]></description>
			<content:encoded><![CDATA[<p>I work a lot with MXML, but even I still think there&#8217;s a little bit of chicanery going on when it comes to getting it to play nice with the other kids.  Due to all the various problems that normal TextFields have with image support (via htmlText), at work I decided to replace the stock Rich Text Editor with a custom-built version that uses an estended TextArea instead of the stock TextArea.  Because the extended TextArea is literally an extension of TextArea, I hoped I&#8217;d be able to just grab the source for the RTE, copy it into my source tree, fix the package, and swap out any references for the mx:TextArea with my own.  So that&#8217;s what I did&#8230; only for some reason I decided to test this as a standalone instead of trying to immediately integrate it with our other code.  The new RTE file compiled with no complaints, but whenever I ran it I wold get a Run Time Error (the OTHER RTE):<span id="more-62"></span></p>
<p>TypeError: Error #1006: getInstance is not a function&#8230;</p>
<p>Figuring that there was some sort of reference to something internal, I started pulling code out.  A lot of code out.  Eventually I stripped out all of the Meta, all of the Script code, and was left with pure MXML&#8230; with anything not core (i.e. function calls) also dumped.  It still wouldn&#8217;t work.  Eventually I had it stripped to the following, and that&#8217;s when the &#8220;DUH&#8221; gods struck:</p>
<p>Of course it should throw an error&#8211;I hadn&#8217;t wrapped my Panel in any sort of application.  I reverted back to the stock Adobe code, made another mxml file with an application in it to load the hacked-RTE, and it worked like a charm the first time out.  Because I went into the conversion thinking it would take some nudging to work, I missed my own silly error.</p>
<p>I guess it could be worse, though&#8211;it&#8217;s not like I have to write my own RTE component from scratch.</p>
]]></content:encoded>
			<wfw:commentRss>http://www.simianlogicstudios.com/2007/12/09/compiling-a-flex-component/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>ToggleButtonBar fix</title>
		<link>http://www.simianlogicstudios.com/2007/11/07/togglebuttonbar-fix/</link>
		<comments>http://www.simianlogicstudios.com/2007/11/07/togglebuttonbar-fix/#comments</comments>
		<pubDate>Thu, 08 Nov 2007 00:40:37 +0000</pubDate>
		<dc:creator>SimianLogic</dc:creator>
				<category><![CDATA[flex]]></category>
		<category><![CDATA[work]]></category>

		<guid isPermaLink="false">http://simianlogic3d.com/blog/2007/11/07/togglebuttonbar-fix/</guid>
		<description><![CDATA[I&#8217;m working on adding Header controls to my version of the Flex Rich Text Editor, and I noticed that the ToggleButtonBar doesn&#8217;t&#8230; exactly&#8230; work.  I dug into the source and saw why.  When using the &#8220;ToggleOnClick&#8221; property, the TBB does some funny stuff that it&#8217;s parent, the regular ButtonBar, doesn&#8217;t really care about. [...]]]></description>
			<content:encoded><![CDATA[<p>I&#8217;m working on adding Header controls to my version of the Flex Rich Text Editor, and I noticed that the ToggleButtonBar doesn&#8217;t&#8230; exactly&#8230; work.  I dug into the source and saw why.  When using the &#8220;ToggleOnClick&#8221; property, the TBB does some funny stuff that it&#8217;s parent, the regular ButtonBar, doesn&#8217;t really care about.  While it&#8217;s possible to set the TBB&#8217;s selectedIndex to -1, this doesn&#8217;t actually get transmitted to the parent ButtonBar.  This means that, while the TBB deselects the item properly, the parent BB still think you have the same thing selected.  Which means you can&#8217;t click on it again until you select something else and then come back to it.<span id="more-55"></span><br />
I found a <a target="_blank" href="http://www.andymcintosh.com/?p=13">blog post</a> of someone else complaining about this, and&#8211;even more valuabe&#8211;there was a comment from an Adobe employee saying they&#8217;d checked in a fix for this (into Flex 3).   Hooray open source!  I just went over to Adobe&#8217;s site, grabbed the latest build of the Flex 3 Beta, and copied the source for the new ToggleButtonBar into a new file in my source directly (which I&#8217;m calling FixedTBB).</p>
<p>The selection quirks are indeed fixed in the new version, but there were two more bugs in the ToggleButtonBar code.  The logic for whether or not to select or deselect a particular button happens in the function &#8220;hiliteSelectedNavItem,&#8221; which is called after the clickHandler.  So what?  This means, from an itemClickEvent perspective, that the ToggleButtonBar will NEVER generate an event where the selectedIndex = -1.  Why don&#8217;t I just check the TBB&#8217;s selectedIndex manually instead of trusting the events?  Well, the handler for the event is actually getting called before the TBB&#8217;s hiliteSelectedNavItem fires, so as far as my event handler is concerned the selectedIndex can never be -1.</p>
<p>As I want the deselects to turn off paragraph styles, this is a <em>bad thing.  </em>Luckily, it&#8217;s easy to fix.  In the clickHandler function, you need to change it so that if you&#8217;re turning off a button it dispatches that event rather than letting the parent NavBar fire of its simpler &#8220;You clicked on Button #4&#8243; event:</p>
<p align="left">Previous version:<br />
<code /></p>
<pre>if (_toggleOnClick &#038;&#038; index == selectedIndex)
hiliteSelectedNavItem(-1);
else
hiliteSelectedNavItem(index);
super.clickHandler(event);</pre>
<p align="left">New Version:<br />
<code /></p>
<pre>if (_toggleOnClick &#038;&#038; index == selectedIndex)
{
selectedIndex = -1;
hiliteSelectedNavItem(-1);
var newEvent:ItemClickEvent = new ItemClickEvent(ItemClickEvent.ITEM_CLICK);
newEvent.label = "none";
newEvent.index = -1;
newEvent.item = null;
dispatchEvent(newEvent);

event.stopImmediatePropagation();
}else{
hiliteSelectedNavItem(index);
super.clickHandler(event);
}</pre>
<p align="left">And voila!  My listener for itemClickEvents now magically also knows when a user has deselected something!</p>
<p align="left">The other fix was pretty trivial as well.  By default, the ToggleButtonBar always selects one of the items to begin with.  As Headers are clearly optional states, I definitely don't want that.  There's a private variable called "initializeSelectedButton" which defaults to true.  Once the first button is added to a TBB, a function sets its selected property to true and then sets initializeSelectedButton to false.  I just made that variable public and set it to false manually before adding any buttons, and my problems were solved.  The better thing would be to actually create getters/setters for it, but I'll leave that to the Adobe whiz-kids.</p>
]]></content:encoded>
			<wfw:commentRss>http://www.simianlogicstudios.com/2007/11/07/togglebuttonbar-fix/feed/</wfw:commentRss>
		<slash:comments>1</slash:comments>
		</item>
		<item>
		<title>Adobe RIA Dev Camp</title>
		<link>http://www.simianlogicstudios.com/2007/11/07/adobe-ria-dev-camp/</link>
		<comments>http://www.simianlogicstudios.com/2007/11/07/adobe-ria-dev-camp/#comments</comments>
		<pubDate>Thu, 08 Nov 2007 00:18:23 +0000</pubDate>
		<dc:creator>SimianLogic</dc:creator>
				<category><![CDATA[flex]]></category>
		<category><![CDATA[work]]></category>

		<guid isPermaLink="false">http://simianlogic3d.com/blog/2007/11/07/adobe-ria-dev-camp/</guid>
		<description><![CDATA[On Monday, I headed up to San Fran for one of Adobe&#8217;s little community events: an &#8220;Adobe Rich Internet Application Developer&#8217;s Camp.&#8221;  I have to say, I really liked their corporate digs.  Besides the 2-man behemoth of a company I&#8217;m working at now, I&#8217;ve worked at Electronic Arts and been to several events [...]]]></description>
			<content:encoded><![CDATA[<p>On Monday, I headed up to San Fran for one of Adobe&#8217;s little community events: an &#8220;Adobe Rich Internet Application Developer&#8217;s Camp.&#8221;  I have to say, I really liked their corporate digs.  Besides the 2-man behemoth of a company I&#8217;m working at now, I&#8217;ve worked at Electronic Arts and been to several events hosted by Apple/Google/Yahoo (to name a few).  I could probably fill an entire post on the differences (perceived by me anyway) between the corporate cultures of the various mega-corporations, but I&#8217;ll keep it to a minimum by saying I liked Adobe&#8217;s HQ a lot better than any of the others I&#8217;ve been to.  And free beer didn&#8217;t hurt, either.<span id="more-54"></span></p>
<p>The &#8220;camp&#8221; was geared more towards those considering Flex in their workflow, I guess, so I didn&#8217;t get a whole ton out of it.  The thing started off with a couple of Flex &#8220;Evangelists&#8221; giving their thoughts on what an RIA is and how Flex is the coolest thing around.  The only thing I really took away from it is that James Ward has a pretty <a href="http://www.jamesward.org/census">cool tool</a> posted on his site for benchmarking flex performance.  The next version of Flash is going to have a flex cache for caching most of the core flex (and MXML) framework, which should reduce the size of flex-compiled swfs by ~200-500k, which was pretty excellent.   I&#8217;m not sure if the current compiler will be updated or this is something we&#8217;ll only get by switching to Flex 3, though.</p>
<p>Some guys from Paypal gave a demo of a merchant tool they were making in AIR, which was pretty cool.  Matt Chotin talked about what else was going to be new in Flex 3, most of which I&#8217;d already heard.  The FABridge is going to be part of the mx core in the next release, and they&#8217;re also planning on support deep links within applications (meaning you could bookmark a specific state within an application or send it as a link).  Some guys from Yahoo! demonstrated how they built a SEO optimization tool in 3.5 days in Flex, which was also pretty cool.</p>
<p>Finally, one of the guys from Actionscript.com (<span align="left" id="dnn_ctr383_ContentPane"><span id="dnn_ctr383_Authors_rptAuthors__ctl0_lblName">Satori Canton) </span></span>got up and spoke for awhile.  I think they were going to be presenting something, but for some reason their presentation got screwed up and so he just talked.  He seemed nice enough&#8230; just kind of cooky.  He was dressed in a business suit&#8230; but with a Pancho thrown on top.  And his fingernails were painted black.  And he had a magic wand.  None of this is to say he didn&#8217;t seem competent&#8211;just a little more interesting than your average speaker.  Mostly his talk sounded a lot like consultant-speak, with a slight bent towards the poetic.  He talked a lot about community love and then ended his talk with the following (I may be paraphrasing a little, but I&#8217;m pretty sure I got most of this down exactly):</p>
<blockquote><p>&#8220;You guys (the community) are like a song.  I wish I could MP3 all of you and put you on a little thumb drive and carry you with me everywhere I go.&#8221;</p>
</blockquote>
<p>All in all, it was pretty interesting.  I didn&#8217;t win any of the raffles, but I did get a bag full of Adobe loot (including a free &#8220;Programming Flex 2&#8243; book).  There&#8217;s a SilVaFUG meeting in San Jose that I might check out.</p>
]]></content:encoded>
			<wfw:commentRss>http://www.simianlogicstudios.com/2007/11/07/adobe-ria-dev-camp/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>YUI Not-Tabs</title>
		<link>http://www.simianlogicstudios.com/2007/10/30/yui-not-tabs/</link>
		<comments>http://www.simianlogicstudios.com/2007/10/30/yui-not-tabs/#comments</comments>
		<pubDate>Wed, 31 Oct 2007 00:17:03 +0000</pubDate>
		<dc:creator>SimianLogic</dc:creator>
				<category><![CDATA[usability]]></category>
		<category><![CDATA[work]]></category>
		<category><![CDATA[yui]]></category>

		<guid isPermaLink="false">http://simianlogic3d.com/blog/2007/10/30/yui-not-tabs/</guid>
		<description><![CDATA[Unfortunately, the Flex RTE has been back-burnered for a bit while I work on more pressing things at work.  I&#8217;m currently using YUI&#8217;s tabs for something, but don&#8217;t really like them&#8230;  So I&#8217;ve been tinkering around with an alternate tab-like interface.  The concept is somewhere in between tabs and an accordion structure. [...]]]></description>
			<content:encoded><![CDATA[<p>Unfortunately, the Flex RTE has been back-burnered for a bit while I work on more pressing things at work.  I&#8217;m currently using YUI&#8217;s tabs for something, but don&#8217;t really like them&#8230;  So I&#8217;ve been tinkering around with an alternate tab-like interface.  The concept is somewhere in between tabs and an accordion structure.  Basically, we&#8217;ve got lots of text boxes.  Rather than make our users choose which one they want to display, I want all of them to start out in a blog-like &#8220;preview&#8221; mode.  Clicking &#8220;more&#8221; would expand that one box while shrinking the others.  Clicking &#8220;back&#8221; (or an icon) would take you back to the multiple-pane view.  I guess this is more of a tree-like data structure than true tabs or accordians.<span id="more-50"></span></p>
<p>Using some more basic YUI components (I actually like their simple pieces a lot better than the complex components, as skinning them is a bit of an undertaking if you don&#8217;t want them to look YUI-like), I whipped up the two easiest examples of this I could think of: a 2&#215;2 pane and a 4&#215;1 pane:</p>
<p align="center"><iframe width="420" height="420" src="http://simianlogic3d.com/fun/yui/notTabs/index.html">If your browser does not support iFrames, head on over to &amp;amp;amp;amp;amp;amp;amp;amp;amp;amp;amp;amp;amp;amp;amp;amp;amp;amp;amp;amp;amp;amp;lt;a xhref=&#8221;http://simianlogic3d.com/fun/yui/notTabs/index.html&#8221; mce_href=&#8221;http://simianlogic3d.com/fun/yui/notTabs/index.html&#8221;              target=&#8221;_blank&#8221;&amp;amp;amp;amp;amp;amp;amp;amp;amp;amp;amp;amp;amp;amp;amp;amp;amp;amp;amp;amp;amp;amp;gt;the demo page&amp;amp;amp;amp;amp;amp;amp;amp;amp;amp;amp;amp;amp;amp;amp;amp;amp;amp;amp;amp;amp;amp;lt;/a&amp;amp;amp;amp;amp;amp;amp;amp;amp;amp;amp;amp;amp;amp;amp;amp;amp;amp;amp;amp;amp;amp;gt; to see this.</iframe></p>
<p align="center"><iframe width="840" height="220" style="position: relative; left: -175px" src="http://simianlogic3d.com/fun/yui/notTabs/index2.html">If your browser does not support iframes, head on over to &amp;amp;amp;amp;amp;amp;amp;amp;amp;amp;amp;amp;amp;lt;a xhref=&#8221;http://simianlogic3d.com/fun/yui/notTabs/index.html&#8221; mce_href=&#8221;http://simianlogic3d.com/fun/yui/notTabs/index.html&#8221;          target=&#8221;_blank&#8221;&amp;amp;amp;amp;amp;amp;amp;amp;amp;amp;amp;amp;amp;gt;the second demo page&amp;amp;amp;amp;amp;amp;amp;amp;amp;amp;amp;amp;amp;lt;/a&amp;amp;amp;amp;amp;amp;amp;amp;amp;amp;amp;amp;amp;gt; to check it out.</iframe></p>
]]></content:encoded>
			<wfw:commentRss>http://www.simianlogicstudios.com/2007/10/30/yui-not-tabs/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>Flex RTE Part 2: Faking mouse:hover</title>
		<link>http://www.simianlogicstudios.com/2007/10/22/flex-rte-part-2-faking-mousehover/</link>
		<comments>http://www.simianlogicstudios.com/2007/10/22/flex-rte-part-2-faking-mousehover/#comments</comments>
		<pubDate>Tue, 23 Oct 2007 00:43:48 +0000</pubDate>
		<dc:creator>SimianLogic</dc:creator>
				<category><![CDATA[flex]]></category>
		<category><![CDATA[work]]></category>

		<guid isPermaLink="false">http://simianlogic3d.com/blog/2007/10/22/flex-rte-part-2-faking-mousehover/</guid>
		<description><![CDATA[Before getting into the meat of my post, I suppose it&#8217;s all right to now mention that I&#8217;m working at a site called Piqqem.  As of last week we&#8217;re no longer officially in &#8220;stealth,&#8221; but we&#8217;re not quite ready to go into full-on publicity-seeking mode yet, either.  The RTE code I&#8217;ve been working [...]]]></description>
			<content:encoded><![CDATA[<p>Before getting into the meat of my post, I suppose it&#8217;s all right to now mention that I&#8217;m working at a site called <a target="_blank" title="Piqqem" href="http://www.piqqem.com">Piqqem</a>.  As of last week we&#8217;re no longer officially in &#8220;stealth,&#8221; but we&#8217;re not quite ready to go into full-on publicity-seeking mode yet, either.  The RTE code I&#8217;ve been working on is for our &#8220;Piqqem Notes,&#8221; a wiki like section for all of the stocks we cover.<br />
See also: <a title="Flex RTE Part 1: Link Buttons" href="http://simianlogic3d.com/blog/2007/10/05/flex-rte-part-1-link-buttons/">Flex RTE Part 1: Link Buttons</a></p>
<p>I&#8217;ve actually skipped an installment on converting real HTML to what flash considers HTML and converting the gobbledy-gook that flash considers &#8220;HTML&#8221; into real-world-usable HTML.  This installment, though, (mostly) fixes one of the more annoying features of the Flex Rich Text Editor control.  The new code hasn&#8217;t yet been integrated into my code from Part 1, just in case someone wants to see the &#8220;simple&#8221; example.<br />
The Flex CSS support actually covers a:hover, but there&#8217;s no way to use CSS with an editable TextField, which means the RichTextEditor control doesn&#8217;t inherently support mouse hover states.  The only indicator you get that you&#8217;re mousing over a link is a hand cursor&#8211;but there&#8217;s no built-in way to see where that link points to.<span id="more-49"></span></p>
<p>To get around this, I&#8217;ve added a mouseMove handler which grabs the mouse&#8217;s location in the TextField, figures out what character is under the mouse, checks to see whether or not that character is part of a link, and then (finally) adds a fake toolTip above the mouse.  Why a fake tooltip, you ask?  Well, merely toggling the TextField&#8217;s toolTip property wasn&#8217;t giving me any sort of consistent results at all, so I just decided to fake it.  If someone who understands how toolTips work better than I do can make it work with the built-in toolTip, more power too &#8216;em.  The source is below the example:</p>

<object classid="clsid:D27CDB6E-AE6D-11cf-96B8-444553540000"
			id="fm_linkHover_1706325825"
			class="flashmovie"
			width="400"
			height="300">
	<param name="movie" value="http://simianlogic3d.com/fun/flex/link_hover/linkHover.swf" />
	<!--[if !IE]>-->
	<object	type="application/x-shockwave-flash"
			data="http://simianlogic3d.com/fun/flex/link_hover/linkHover.swf"
			name="fm_linkHover_1706325825"
			width="400"
			height="300">
	<!--<![endif]-->
		
	<!--[if !IE]>-->
	</object>
	<!--<![endif]-->
</object>
<p>Download: <a title="Source Files" href="http://simianlogic3d.com/fun/flex/link_hover/source.zip">source.zip</a><br />
Okay, so there&#8217;s no color change to go along with the mouse hover&#8230; but I&#8217;ll show you how to do that in my next post with lots of HTML-y goodness.</p>
]]></content:encoded>
			<wfw:commentRss>http://www.simianlogicstudios.com/2007/10/22/flex-rte-part-2-faking-mousehover/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
	</channel>
</rss>
