http://theaboutbox.com/ The Aboutbox Blog 2011-05-01T03:47:10Z Cameron Pope http://www.theaboutbox.com/ tag:theaboutbox.com,2011-04-30:/blog/2011_berkshire_hathaway_annual_meeting/ 2011 Berkshire Hathaway Annual Meeting 2011-05-01T03:47:10Z 2011-05-01T03:47:10Z <p>I spent today at the Berkshire Hathaway annual meeting. It’s only my second time there, but I highly recommend it. While calling it the <em>Woodstock of Capitalism</em> is a bit of an overstatement, it’s a really good time. For an entry level price of about $80 per share, you get to have two of the best investors in human history manage your money for free.</p> <p>I’m not going to give a blow-by-blow summary. The Live-Bloggers at the Times <a href="http://dealbook.nytimes.com/2011/04/30/live-blogging-the-berkshire-annual-meeting/?partner=rss&amp;emc=rss">did a much better job</a>.</p> <p>One of the most interesting parts of the trip was siting next to an attorney who works for Union Pacific railroads. I asked him how business is on the railroads these days, and he said that they are seeing a big increase in stuff getting shipped around and that in his experience, rail transportation is about a 6 month leading indicator of economic activity. I should set myself an alert in six months to see if that holds true in this case.</p> <p>The meeting generally takes this format:</p> <ol> <li> <p>A short movie, followed by some commercials and skits. This movie was a hilarious bit about an evil machine called an ‘MBA’ sent from the future to destroy the economy as we know it, and Warren needed to call on the ‘Governator’ (played by Arnold himself) to quash the threat.</p> </li> <li> <p>Some basic business numbers. The most interesting thing I learned is that this year Geico has processed 25,000 automobile claims due to the tornadoes in the south, and that the earthquake in New Zealand caused 10x the damage as Hurricane Katrina, from a cost and affected people point of view.</p> </li> <li> <p>A few hours of Q&amp;A, followed by lunch, followed by a few more hours of Q&amp;A.</p> </li> <li> <p>The convention center is full of member companies. Pretty much every one has some sort of booth, many of them sell things at a substantial shareholder’s discount on the floor.</p> </li> </ol><p>The Q&amp;A consisted of questions from reporters, followed by members of the audience, chosen via a drawing. There are no restrictions on questions, and this is the reason a lot of people come to these meetings. I would love to think that I will become better with money simply by osmosis. A few highlights:</p> <p><em>The Sokol Brouhaha</em> - When it comes to news, I usually live under a rock. As Buffett said: it’s both inexcusable and inexplicable. The guy has Buffett transfer $12 million of his bonus to his junior partner, without taking any credit. He doesn’t try to hide his trades, and he even resigns himself, saving the company from paying severance. He does something ridiculous by trading on his own account, making $3 million at the end of the day, and not disclosing the fact. The more I heard, I didn’t think he was a bad guy but I can’t wrap my head around why on earth he would do that.</p> <p><em>The Economy in General</em> - Both Buffet and Munger are surprsingly upbeat about the economy. They said that they see every sector they are involved with improving every quarter except for residential construction. There they say it’s a matter of time - new households are now increasing faster than new houses, so eventually there will be less excess inventory and more demand. Someone asked them how they can be so optimistic when everything is going to hell in a handbasket, and their response was that this is nothing compared to the 1930, and if the US can survive the Great Depression and the Civil War, and Europe can survive the Black Death, then we should muddle thorough everything happening now just fine.</p> <p>At some point Munger quipped: <em>The politicians are never so bad that you don’t live to want them back.</em> Their view on fiscal policy right now is somewhat blasé - that the administration is at least not doing anything horribly wrong, and while they have had their quibbles, when they look back, it seems that the government’s actions have made sense.</p> <p>Interesting tidbit: When Berkshire Hathway first sold shares, they were almost exactly the same price as gold. Which has done better?</p> <p>Their current prediction is that we’ll see housing pick up around the end of the year, and with it, employment will improve immensely. We’ll see if they are accurate - I hope they’re right. Both them and the UP attorney seem to think that things are on the upswing.</p> <p>There were a few questions about the financial crisis in 2008. Both praised Bush on doing what needed to be done and acting quickly. Munger said he’s been disappointed with the utter lack of contrition from the financial industry - that every crisis starts on Wall Street, and is driven by greed. Buffett remarked that there are perverse incentives to trade more than we should - if you daytrade and make money, you’re taxed 15% of 60% of your returns. If you work hourly, you are taxed at whatever your marginal income tax rate is (probably twice that), and that is ‘demented’, to use his words. He seemed to think the best way to return the financial system to sanity would be to tax trades the same as income. It’s a strange set of values when a plumber pays twice as much in taxes as a daytrader. He also mentioned that he would love to see a system where, if a company needs to get bailed out by society, the CEO should be ‘dead broke’ at the end of the process. I can’t say I disagree much.</p> <p>Munger said it’s a shame that those who handle money seem to be the ones who make the most - it draws to finance people who would be better off as snake charmers.</p> <p>Neither of them think that business schools are producing students that are intellectually or morally fit to run businesses. I thought that was interesting. Munger said he would teach a finance class by going over 100 company histories and discussing where they made mistakes and where they made good moves. GM, for example, went from being the most successful company in the world to completely wiping out their shareholders. I would love to hear his analysis of that. He said that he would probably step on too many toes with other faculty that come from business, and they’d kick him out.</p> <p>Munger’s comment that schools tend to believe and teach things about economics that are just plain wrong reminds me of the way that software engineering is taught in school.</p> <p>And to close this rambling stream-of-consciousness post, one of Buffett’s closing comments was that the best investment a young person can make is in their own skills, and he believed that communication skills were the most important of all. That, I suppose, is something practical and actionable that I can take away from this meeting.</p> tag:theaboutbox.com,2010-12-03:/blog/pumpkin_pie/ Pumpkin Pie 2010-12-03T22:24:51Z 2010-12-03T22:24:51Z <p>The other day I made another crack at from-scratch pumpkin pie. This time the filling turned out to be absolutely amazing and really easy to make. I hate to say it, but it topped the recipe that I found after diligently searching the Internet for the perfect pumpkin pie recipe. As for where I found it? It was on the sticker on the pumpkin I purchased at Target. I made some very insubstantial changes for convenience. I want to preserve this recipe for posterity so I can make it in the future. Without further ado:</p> <h2 id="so-easy-pumpkin-pie">So Easy Pumpkin Pie</h2> <p>Prepare pumpkin puree:</p> <ul> <li>Cut pumpkin in half and scoop out seeds</li> <li>Place cut side down. Roast at 350 for 1.5 hours</li> <li>Let cool and scoop out flesh. Puree in food processor until smooth</li> </ul><p>Beat until smooth:</p> <ul> <li>1 1/3 cup smooth pumpkin</li> <li>1 can sweetened condensed milk</li> <li>1 egg</li> <li>2 1/2 tsp pumpkin pie seasoning</li> <li>1 cup hot water</li> </ul><p>Pour into 9 inch pie shell. Place foil ring around edge of crust. Bake at 375 for 55-65 minutes. (I baked mine for 60 minutes)</p> tag:theaboutbox.com,2010-11-23:/blog/maybe_that_s_why_my_internet_is_so_slow/ Maybe That's Why my Internet is so Slow 2010-11-24T05:30:51Z 2010-11-24T05:30:51Z <p>Lately I’ve been impressed with how well Netflix has been executing, and how much I’m liking their streaming service. Even though they don’t have a lot of ‘grown up’ stuff, they have just about every program my kids watch. As a side note, I wonder how this is going to change the experience of being a child. When I was a kid, television programs were on at a specific time and you were not in control of what you watched. Now my girls like to request specific episodes of Dora or Blue’s Clues and they are surprised whenever they can’t watch what they want, when they want.</p> <p>It looks like Netflix is trying to get rid of DVDs, in general. They introduced a new <a href="http://blog.netflix.com/2010/11/new-plan-for-watching-instantly-plus.html">streaming only plan</a> and they are raising the prices on their DVD plans. I’m also hearing statistics that Netflix currently accounts for about <a href="http://news.cnet.com/8301-13506_3-20020434-17.html">23 percent of prime-time Internet traffic</a>.</p> <p>That leaves me wondering a few things. Is all that bandwidth really cheaper than sending DVDs around in the mail? I’ve seen CDN pricing plans and it would be very easy to take up more than $7.99 per month in bandwidth charges. Is this pricing sustainable?</p> <p>Also, why do we bother having DVDs on our plan. We stream content just about every day but the DVDs have been gathering dust for a while.</p> <p>Finally, my Internet connection has been slow as molasses lately. I blame Netflix.</p> tag:theaboutbox.com,2010-11-22:/blog/migrating_part_of_a_subversion_repository/ Migrating Part of a Subversion Repository 2010-11-22T21:58:55Z 2010-11-22T21:58:55Z <p>Recently I needed to take part of a monolithic Subversion repository, and create a new, smaller repository, while keeping all of the history intact. For all intents and purposes, I needed to move:</p> <pre><code>https://svn.example.com/lots_of_projects/project_a </code></pre> <p>to its own repository rooted at</p> <pre><code>https://svn.example.com/project_a </code></pre> <p>Oh, and to make matters more fun, I don’t have admin access to any of these repos.</p> <h2 id="importexport">Import/Export</h2> <p>The easy way to copy things from one repository to another is do an <code>svn export</code> followed by an <code>svn import</code> to the new repository. This works, but you lose all of the history, which is a bummer.</p> <h2 id="git-svn">Git-Svn</h2> <p>Another possibility to keep all of the revisions intact is to use <code>git-svn</code> to clone the subversion repository with history and then use it as a basis to populate a new subversion repository. I haven’t tried it, but something like this would probably work:</p> <pre><code>git svn clone [args] [subversion repo] temp-repo </code></pre> <p>Follow the instructions <a href="http://code.google.com/p/support/wiki/ImportingFromGit">here on Google Code</a> but when you fetch, fetch from the <code>temp-repo</code> you just created.</p> <p>One nice thing about this approach is that it requires nothing on the subversion server side to work. The downside is that you will probably lose dates and user information in the history.</p> <h2 id="sync--filter">Sync + Filter</h2> <p>Probably the most robust way to do this is without physical access to the svn server is to create a local repository, mirror the source repository, filter out everything that is NOT what you want to copy, and then sync that with the destination repo. There are a few steps involved and it’s better to actually get access to both repositories (then you can just use Subversion’s admin tools) to get everything, but in the absence of access to the servers, then <a href="http://svnbook.red-bean.com/en/1.4/svn.ref.svnsync.html">svnsync</a> is the next best thing to get a repository’s contents, with history.</p> <pre><code>svnadmin create temp-repo cd temp-repo/hooks echo "exit 0" &gt; pre-revprop-hook chmod a+x pre-revprop-hook cd ../.. svnsync initialize file://[path-to-temp-repo] https://svn.example.com/lots_of_projects svnsync synchronize file://[path-to-temp-repo] (Time passes) svnadmin dump ./temp-repo &gt; everything.dump cat everything-dump | svndumpfilter include project_a --drop-empty-revs --renumber-revs &gt; project-a-dump svnadmin create project_a; svnadmin load project_a &lt; project_a_dump svnsync initialize https://svn.example.com/project_a file://[path-to-project_a-repo] svnsync synchronize https://svn.example.com/project_a </code></pre> <p>In essence, what we are doing is creating a local mirror copy of the big repo that we can play with. Once we have a mirror that we can manipulate, we can dump its history and filter out only the project that we are interested in. Once we have that, we create a new local repo with only those commits in it, and synchronize it with its new home.</p> <p>The only problem with this approach is that there needs to be a pre-revprop-hook installed on the target repository, which will require some cooperation from the administrator of that repository.</p> <p>If anyone else knows of a way to copy part of a subversion repository with all of its history, I would love to hear it.</p> tag:theaboutbox.com,2010-11-18:/blog/newly_discovered_things_that_rock/ Newly Discovered Things That Rock 2010-11-19T06:56:08Z 2010-11-19T06:56:08Z <p>In the past few days I’ve run across a few tools that have been very, very handy.</p> <p>First is <a href="http://code.google.com/p/virtualhost-sh/">virtualhost.sh</a>. This is a shell script that sets up virtual hosts using the Mac OS X built-in Web server. I’ve been working on a <a href="http://wordpress.org/">Wordpress</a> project for one of my clients, where they have a bunch of plugins that implements part of their Web site, but they do not provide a seamless user experience. Basically they want their customers, when they sign up for a membership, they enter all of their information once and it creates a user with the right access, it puts the user’s information in their back-end database system, and it charges their credit card. The current experience has the user entering information on a bunch of different pages and a lot of stuff needs to be typed in over and over again. Not the best impression.</p> <p>One of the problems developing sites locally is that a lot of sites really like to be at the root of their own domain/subdomain. Some parts of this wordpress instance’s configuration assume that. So I needed to define a virtual host for this site, and thanks to this script, it took about five minutes to download, install the script and create the virtual host.</p> <p>For Rails development, that brings me to the second awesome tool: <a href="http://www.modrails.com/">Passenger</a> + <a href="https://github.com/alloy/passengerpane">PassengerPane</a>.</p> <p>I cannot believe it has taken me so long to discover passenger for development on the mac. It’s nice not to have to run <code>script/server</code> all the time and worry about more then one app being on the same port. With Passenger on the mac, you can just set up hostfile aliases for all the apps that are under development and just hit them in the browser. It’s especially nice for some of the Flex+Rails work that I’ve been doing because I can set a domain that is allowed under the production servers’ <code>crossdomain.xml</code> file.</p> <p><a href="https://github.com/alloy/passengerpane">PassengerPane</a> makes it super easy to define vhosts and hostfile entries for as many rails applications as you want.</p> <p>I love it when the things that seem to be hard turn out easy!</p> tag:theaboutbox.com,2010-11-16:/blog/guacamole/ Guacamole 2010-11-17T04:35:43Z 2010-11-17T04:35:43Z <p>I am really good at making guacamole. It’s one of my favorite foods in the world, so I consider myself a little bit of a connoisseur. So I am going to let you in on a little secret to making really awesome guacamole: most people over-complicate things. In fact, I am going to share my recipe with you right now:</p> <ul> <li>Two ripe avacados</li> <li>Juice from one lime</li> <li>About one teaspoon salt</li> </ul><p>Start by mushing the avacados with a little lime juice and salt. Add lime juice until you can taste a hint of lime. Add salt to taste. It’s that simple. When people say that it’s really good and I tell them what’s in it, they suggest lots of ingredients that I could put in it. I could, but sometimes perfection is acheived when there is nothing left to take away.</p> <p>I am sure there are some lessons to be learned here with writing software. One thing that I’ve learned is to think very carefully before adding a feature to a product. Every feature is a promise and a commitment, and not to be entered into lightly. When cooking, when in doubt, omitting ingredients is better than random substitutions.</p> <p>I heard somewhere something along the lines of: if you’re not ashamed of your first release, then you’re shipping too late.</p> tag:theaboutbox.com,2010-11-15:/blog/11_15_app_update/ 11/15 App Update 2010-11-16T05:11:45Z 2010-11-16T05:11:45Z <p>I am still working on my resolution to submit an iPhone app to the app store by the end of the month.</p> <p>After looking at the wireframes and thinking about the application, I had come up with a simpler way of presenting the information that my app is generating. So far, super early in the development stages, I’ve noticed two things:</p> <p>1) Writing the app is going to be very straightforward. The major challenges are going to be design issues: How do I present information clearly, how am I going to describe the app succinctly in a manner the people are going to find searching the app store, and how am I going to make the app look really nice.</p> <p>2) Don’t use Google Chrome to upload a certificate request to the iPhone developer portal. Use Safari.</p> <p>My goal for tomorrow: Get one screen of my app running on my phone.</p> tag:theaboutbox.com,2010-11-14:/blog/wisdom_of_the_crowds/ Wisdom of the Crowds 2010-11-14T13:53:39Z 2010-11-14T13:53:39Z <p>We’ve been trying to figure out what the girls want for Christmas, which is not an easy task, mainly because when you ask them what they would want, they point to every single item in the toy store. The challenge is to find something that makes it past the first 24 hours and still gets some play.</p> <p>I have to admit that my typical strategy is to go to Amazon, or FatBrain and find the highest rated toys for <a href="http://www.fatbraintoys.com/toys/toys_by_ages/girls/top_picks_3.cfm">three year old girls</a> or whatever other age group, and get something there.</p> <p>Perhaps I’m lazy but sometimes technology does make life easier.</p> tag:theaboutbox.com,2010-11-13:/blog/on_wireframes/ On Wireframes 2010-11-13T14:06:12Z 2010-11-13T14:06:12Z <p>I reached my goal yesterday for my iPhone app: have a set of wireframes complete. I am a fan of using wireframes or mockups to determine scope and requirements when working with clients. It is a good way to talk about functionality in a way that is easy to visualize.</p> <p>In this case, I was able to figure out what screens there should be, and what should be on them. I was also able to show them to my <a href="http://www.keetonpr.com/blog">brilliant wife</a> and she was able to give me some feedback as a ‘normal user’.</p> <p>So what are wireframes? Wireframes are mockups of how an application should look and feel. There is really not a right or wrong way of doing wireframes. A lot of people like graph paper and a ruler. Lots of people like PowerPoint, and there are many other tools that people use. Here are a few off the top of my head:</p> <ul> <li><a href="http://balsamiq.com/">Balsamiq</a></li> <li><a href="https://gomockingbird.com/">Mockingbird</a></li> <li><a href="http://www.adobe.com/products/fireworks/">Adobe Fireworks</a></li> <li><a href="http://www.raizlabs.com/blog/294/wireframing-in-powerpoint">PowerPoint</a></li> <li><a href="http://keynotekungfu.com/">Keynote</a></li> <li><a href="http://blogs.msdn.com/b/visio/archive/2009/12/22/wireframe-shapes-in-visio-2010.aspx">Visio</a></li> <li><a href="http://konigi.com/tools/omnigraffle-wireframe-stencils">Omnigraffle</a></li> <li><a href="http://mortenjust.com/2010/04/19/a-wireframe-kit-for-google-drawings/">Google Drawings</a></li> </ul><p>Needless to say there are lots of tools that one can use to create wireframes, the only advice I can give you on how to choose:</p> <p><strong>The best wireframe tool is the one that you have, you know well, and you can use to create wireframes quickly</strong></p> <p>I am not an expert on design or wireframes, but as someone who finds them useful, there are some tips that I’ve found useful:</p> <ul> <li> <strong>Don’t be a perfectionist</strong> The goal is not to create a realistic mockup. That comes later. The point is to figure out what information you need to display and what functionality needs to be there.</li> <li> <strong>Don’t worry about every little button</strong> If your app needs a video player, it’s ok to put a big box labeled “Video Player” on the screen</li> <li> <strong>Get feedback quickly</strong> As soon as you have something to show, show it to some people to get some feedback and suggestions. See if people can tell what the heck you’re talking about.</li> </ul><p>This is just the tip of the iceberg. One UX Designer offers some good <a href="http://www.uxbooth.com/blog/wireframing-tips-tools-and-techniques/">tools</a> and <a href="http://www.uxbooth.com/blog/wireframing-tips-tools-and-techniques-pt-2/">tips</a> on <a href="http://www.uxbooth.com/">uxbooth.com</a>.</p> tag:theaboutbox.com,2010-11-11:/blog/resolved/ Resolved - An iPhone app by the end of the Month 2010-11-11T15:55:23Z 2010-11-11T15:55:23Z <p>I was having coffee with a <a href="http://www.industryof.com/">good friend</a> who was relaying his experience developing an <a href="http://www.photoduoapp.com/">iPhone app</a> and he said that while he had long suspected that I am a fool for not having some applications in the App Store, he now has data to prove it.</p> <p>Therefore I resolve and state publicly that by the end of the month I will have an application submitted to the App store. During our coffee, I had arrived at a very simple idea that will make a perfect foray into app development. I don’t know how public I am going to make the concept and design process (It’s like sharing the names of my children before they were born..) but to meet my goal, I’ve done the following:</p> <ul> <li>Renewed my iPhone Developer Program membership</li> <li>Downloading the latest app SDK</li> <li>Started to draw some <a href="http://www.flickr.com/groups/ilovewireframes/">wireframes</a> to sketch out the screens and how they are linked together</li> </ul><p>19 days to go…Putting this resolution out there is a good way to force myself to be on track and accountable. My goal for today is to have all the software installed and a first version of wireframes complete.</p> tag:theaboutbox.com,2010-11-10:/blog/funhouse_mirror/ Funhouse Mirror 2010-11-11T05:34:50Z 2010-11-11T05:34:50Z <p>I ended up getting swamped in work yesterday so I didn’t get around to writing a post, so as penance, I’ll have two posts today. Hopefully I’ll be posting every day on average.</p> <p>Children can be demanding. If they want something, they don’t hesitate to ask, no matter what you’re doing at the time. In those situations, I’ll frequently respond “Just a minute!” and sometimes if they’re lucky I get around to it in a minute, but sometimes I get distracted and I get many impatient queries before they get a glass of milk, or a bowl of cheerios, or their swim goggles or whatever else it happens to be. I’m a space cadet, what can I say.</p> <p>For the past two days, when I’ve picked up my two year old from the babysitter, I say “It’s time to go, let’s put away our toys” and she responds: “Just a minute!” and then she merrily goes about playing with her toys.</p> <p>When you have children, you frequently see yourself in the funhouse mirror. Sometimes I wonder if the best we can hope for is that they magnify our best parts more than not.</p> tag:theaboutbox.com,2010-11-10:/blog/code_is_the_best_documentation/ Code is the Best Documentation 2010-11-10T21:38:16Z 2010-11-10T21:38:16Z <p>Early in my career, we considered it a Best Practice to produce reams of documentation along with the software we created. It was part of the <a href="http://en.wikipedia.org/wiki/Waterfall_model">waterfall process model</a>. The first step is that all the stake holders fight it out to determine what the requirements of a product should be. Next, we developers, or at least the ones who were chosen to participate in the design process would draw out <a href="http://en.wikipedia.org/wiki/Unified_Modeling_Language">UML Diagrams</a> to flesh out the major subsystems and components. Then those pieces, once their connections and interfaces were defined, would get farmed out to different developers who would write each component, and part of the deliverable were sets of design documentation that detailed interfaces, contracts and implementation details.</p> <p>If it sounds like a painful and inefficient way to produce software that is late, over-complicated, bloated and doesn’t do what the end user wants, you’re right. Almost nobody does waterfall anymore. Most new projects run with some form of <a href="http://en.wikipedia.org/wiki/Agile_software_development">agile</a> process, whether it be <a href="http://en.wikipedia.org/wiki/Scrum_%28development%29">Scrum</a>, <a href="http://en.wikipedia.org/wiki/Extreme_Programming">Extreme Programming</a> or some other hybrid approach.</p> <p>One unintended consequence of this switch is the focus away from documentation that is not part of the software itself. I used to be an avid commenter - when I wrote a module or piece of software, I would write all the comments first and then go in and add the code between the statements. Now, for better or worse, I consider excessive commenting to be a code smell. If you need to write a novel about why you did something some way, maybe that’s a sign that it’s too complicated or the wrong approach. Sometimes comments are necessary and good: for any published API, the best way to document it is by commenting the public API methods and using an automated tool to generate documentation. I also don’t want to malign <a href="http://en.wikipedia.org/wiki/Literate_programming">Literate Programming</a> too much - some incredible software has been produced with it, and it may be the right tool for pedagogical applications.</p> <p>Where the shift has been incredibly good and useful is that documentation is starting to take the form of executable code that defines the specification of a program in human-readable language and can be run be an automated tool to verify that the program actually adheres to that specification. My favorite tool for doing that is called <a href="http://cukes.info/">Cucumber</a>. What is nice about this tool is it provides a way to communicate requirements that stakeholders can understand, but it can be executed whenever the application is changed to verify that the product really does meet those requirements.</p> <p>This is a simple example of a cucumber feature <code></code></p> <pre><code>Feature: Adding numbers Because I am really bad at math, I need a computer program to add two numbers together Scenario: Simple addition Given a calculator And I press 1 And I press + And I press 1 And I press = Then I should see 2 </code></pre> <p></p> <p>Behind the scenes, you implement ‘definitions’ for all the steps, and even if you’re not a programmer, you know what this means. The other thing that is nice, is if the implementation becomes out of sync with the specifications, then you know, and you can fix one or the other.</p> tag:theaboutbox.com,2010-11-08:/blog/tenthingsaboutkidsiphonegames/ Ten Things About Kids' iPhone Games 2010-11-09T03:59:23Z 2010-11-09T03:59:23Z <p>Ten things about children’s games on the iPhone, learned from watching the usage patterns of a two year old and four year old girl.</p> <ol> <li> <p>Forget the ads - they just confuse the kids and cause the phone to get thrown across the room or car. 99 cents is the ideal price point.</p> </li> <li> <p>Keep the intro focused and to the point. You get about 30 seconds to make an impression that will determine whether they will actually play the game.</p> </li> <li> <p>Too many options at the beginning causes frustration - keep the first parts of the game ridiculously simple.</p> </li> <li> <p>Once the game is underway and the player is engaged then layer in some challenge and complexity to keep the player stimulated.</p> </li> <li> <p>Invest in a good artwork for the icon. First impressions matter a lot.</p> </li> <li> <p>Things that make a good icon: pictures of dessert foods, cartoon animals, jewelery, sparkles.</p> </li> <li> <p>For coloring games, keep the drawings simple. Little fingers get frustrated trying to point in tiny spaces.</p> </li> <li> <p>If the game involves preparing food, you had better be able to ‘eat’ your virtual concoction.</p> </li> <li> <p>When eating your virtual goodies, there should be loud, garish sound effects. Nom Nom Nom!</p> </li> <li> <p>Cheering when the player completes a level is a good way to encourage playing the next level.</p> </li> </ol> tag:theaboutbox.com,2010-11-07:/blog/ilovemycrockpot/ I Love My Crock Pot 2010-11-08T04:04:05Z 2010-11-08T04:04:05Z <p>I have a confession: I love my crock pot. It is a marvelous and incredible invention, but I almost never hear anyone in my generation speak of them. When we purchased a new house, I had asked my grandmother what we should get for the house. “Buy the largest Crock Pot you can” was her advice.</p> <p>The reason why is simple: spend a few minutes in the morning putting a bunch of stuff in, and then by dinner time you have a delicious meal, not having to do any more work. Those who have children understand that the hours between 5:00 and 7:00 are the witching hour. The kids are tired, they are hungry, they are winding down from a busy day, and the less time futzing around in the kitchen before getting food on the table, the better.</p> <p>While roasts in the crock pot are delicious, they can do so much more. Here is a recipe that my mother in law gave me, slightly modified:</p> <p><strong>Chicken Tacos</strong></p> <ul> <li>Four Chicken Thighs</li> <li>One Package Taco Seasoning</li> <li>Two Cans Ro-Tel’s (Or two cans tomatoes + green chiles to taste)</li> </ul><p>Put salt and pepper on the chicken thighs and cook them skin side down until the skin is brown. (I like to do this to get rid of some of the fat) Put all ingredients in the crock pot together and stir. About an hour before serving, shred the meat with a fork and mix well. Serve with Tortillas and the rest of your favorite taco fixins.</p> <p>Anyone else have any favorite crock pot recipes?</p> tag:theaboutbox.com,2010-11-05:/blog/isthemousegoingaway/ Is The Mouse Going Away? 2010-11-06T02:21:42Z 2010-11-06T02:21:42Z <p>It’s been fascinating watching our children (2 and 4) interact with technology. Imagine being that age and never knowing a time that you did not have a powerful, connected computing device at your fingertips. I don’t think we’ve begun to see the implications of that.</p> <p>Not only is communication and computing technology ubiquitous, it’s easier to use than ever before. Have you ever seen a three year old use an iPhone? If you haven’t, find a three year old and take them to the Apple store. Our oldest daughter, at the age of three, could find songs to play and watch movies. At the age of four and a half, she shoots movies and finds games on the App store that she pleads with me to buy. <em>(Side note, games for four year olds could be a very lucrative app segment)</em></p> <p>Part of this, I am sure, is that our children are digital natives. They have been exposed to technology since birth. Part of this is improvements in industrial design - interacting with an iPhone there is very little hardware in the way. It is very much like interacting with a physical object, with all of the <a href="http://en.wikipedia.org/wiki/Affordance">affordances</a> of a physical object. I am sure that is why even computer newbies can use iPhone/iPad type devices easily.</p> <p>With a little bit of training, our oldest daughter figured out how to use a trackpad. It’s one layer of abstraction away from interacting with the screen itself, so now she can go to <a href="http://pbskids.org">PBS Kids</a> and find some dress up games. <em>(Another side note, why is it that our four year old is the only one in the house that can reliably print things?)</em> <em>(Side side note: four year olds use a lot of paper)</em></p> <p>Then one day, I took both of the girls to the Apple store. They sat down next to the iMacs that are strategically placed by the genius bar, looked at the computers with mice attached, and had no clue what to do, picked up the iPod touches also strategically placed by the genius bar, at kid level, and played away.</p> <p>Therefore, I have a prediction. The mouse, in another 5 years, is going the way of the <a href="http://en.wikipedia.org/wiki/Floppy_disk">floppy disk</a>. Remember what those are?</p> tag:theaboutbox.com,2010-11-05:/blog/clickablelinkswithsparkrichhtmltextcontrol/ Clickable Links With Spark RichEditableText Control 2010-11-05T18:23:19Z 2010-11-05T18:23:19Z <p>I just ran into a problem adding clickable HTML links to a Spark RichEditableText control, and none of the books that I read or sites that I found in Google had a completely workable solution, so I figured I’d post what I came up with here:</p> <p><strong>The component declaration</strong> <code class="language-xml"></code></p> <pre><code>&lt;s:RichEditableText id="description" width="{summaryContainer.width}" textFlow="{descriptionTextFlow(clip)}" editable="false" styleName="description"/&gt; </code></pre> <p></p> <p><strong>Event Handlers</strong></p> <pre><code class="language-javascript"> <span class="r">private</span> <span class="kw">function</span> <span class="fu">descriptionTextFlow</span>(clip:Object):TextFlow { <span class="c">// Wrap existing HTML in a TextFlow element</span> <span class="kw">var</span> markup:String = <span class="s"><span class="dl">"</span><span class="dl">"</span></span> + clip.htmlDescription + <span class="s"><span class="dl">"</span><span class="dl">"</span></span>; <span class="c">// Converts html text into a TextFlow</span> <span class="kw">var</span> flow:TextFlow = TextConverter.importToFlow(markup, TextConverter.TEXT_FIELD_HTML_FORMAT); <span class="c">// Gets dispatched whenever ANY link is clicked</span> flow.addEventListener(FlowElementMouseEvent.CLICK,onLinkClickedSpark,<span class="pc">false</span>,<span class="i">0</span>,<span class="pc">true</span>); <span class="kw">return</span> flow; } <span class="r">private</span> <span class="kw">function</span> <span class="fu">onLinkClickedSpark</span>(e:FlowElementMouseEvent):<span class="kw">void</span> { <span class="c">// Short circuit any further processing</span> e.preventDefault(); e.stopImmediatePropagation(); <span class="c">// Fire an event for our controller to handle the link - send the href text for processing</span> dispatchEvent(<span class="kw">new</span> LinkClickedEvent(LinkClickedEvent.LINK_CLICKED,LinkElement(e.flowElement).href)); } </code></pre> <p>Pay special attention to the <code class="language-javascript">flow.addEventListener()</code> call. We disable capturing and enable weak references to cancel the existing control’s behavior. Also, we use weak references because this application will replace the TextFlow frequently with new text, and if we have old TextFlows laying around, they cause problems, and they do not get garbage collected.</p> tag:theaboutbox.com,2010-11-04:/blog/itsnoteasybeingmarriedtoanengineer/ It's Not Easy Being Married to an Engineer 2010-11-05T04:09:41Z 2010-11-05T04:09:41Z <p>I write software for a living and I am very good at it, but I have to take parts of my software developer personality and put it on the shelf when I am done working, otherwise life can be difficult at home. I don’t know of many other jobs where traits that make someone good at their jobs make them difficult at home.</p> <p>Here are some traits that make developers hard to live with:</p> <p><strong>We argue constantly</strong> - Part of the development process is sussing out the best way to solve a particular problem. If one of my colleagues comes to me with a problem and an approach for solving it, the first thing I’ll do is poke holes in the idea. I’ll think of everything that is wrong with the idea, I’ll try to find situations where it won’t work.</p> <p>This is a bad thing to do at home for a number of reasons. It turns out that spouses really don’t like it when we try to shoot down every suggestion they make. Also if we coldly analyze every single concern and treat it as a problem to be picked apart and solved, it can appear that we lack empathy.</p> <p><strong>We aggressively eliminate distractions</strong> - When we work, we strive to be in what we call a <a href="http://goo.gl/wPK7t">flow state</a>. It’s a foreign concept to a lot of non engineers, but there is really nothing like it in the world. There are those rare days where you start working, and next thing you know, it’s the end of the day and it didn’t even feel like any time passed. Sometimes we’ll even forget to eat. We chase Flow, it’s like a drug. So when we’re doing something and someone asks a question, our first desire is to get back to that state of pristine concentration. It is also in this mental state where we get most of our real work done - when solving a tricky technical problem sometimes there are so many things we need to keep in our heads, that we have to stop paying attention to absolutely everything around us, and it takes a while to get ourselves back into a normal mental state.</p> <p>The problem with this is that sometimes it seems like we don’t care about our significant others’ problems when they ask us questions while we’re working. I heard somewhere that it takes about fifteen minutes to get back in the zone following an interruption. </p> <p><strong>We favor efficiency over diplomacy</strong> - I remember one day that I was cooking dinner, and my wife asked me what I thought of a particular home improvement project. She explained it to me, and I said “I think that’s a <em>horrible</em> idea.” Then I went back to cooking. Needless to say that went over like a lead balloon. At work, we don’t spend much time mincing words. If we’re discussing intricate concepts or complicated problems, it’s hard enough to communicate a detailed design or complicated problem, or point out a flaw in someone’s reasoning without having to worry about phrasing everything or walking on eggshells. The best developers check their egos at the door.</p> <p>So, a question for anyone out here reading this? What traits do you need at work to be successful that cause havoc at home?</p> tag:theaboutbox.com,2010-11-03:/blog/rabbitstarvation/ Rabbit Starvation 2010-11-04T05:57:07Z 2010-11-04T05:57:07Z <p>Years ago I stumbled across a <a href="http://jackdied.com/python/46">random blog post</a> that has stuck with me to this day about <a href="http://en.wikipedia.org/wiki/Rabbit_starvation">Rabbit Starvation</a>. Rabbit Starvation is the notion that if you’re lost in the woods in the middle of winter, it’s tempting to go out hunting rabbits because there are lots of them. However, once you consider that it takes energy to catch rabbits, and they have practically no fat, you burn off precious fat reserves to eat a food low in calories. According to the Arctic explorer <a href="http://en.wikipedia.org/wiki/Vilhjalmur_Stefansson">Vilhjalmur Stefansson</a>:</p> <blockquote> <p>This trouble is worst, so far as North America is concerned, among those forest Indians who depend at times on rabbits, the leanest animal in the North, and who develop the extreme fat-hunger known as rabbit-starvation. Rabbit eaters, if they have no fat from another source—beaver, moose, fish—will develop diarrhoea in about a week, with headache, lassitude and vague discomfort. If there are enough rabbits, the people eat till their stomachs are distended; but no matter how much they eat they feel unsatisfied. Some think a man will die sooner if he eats continually of fat-free meat than if he eats nothing…</p> </blockquote> <p>It’s stated much more succinctly in <a href="http://www.amazon.com/How-Stay-Alive-Woods-Self-Preservation/dp/1579122213">How to Stay Alive in the Woods</a>:</p> <blockquote> <p>One would probably be better off on just water, then on rabbit and water</p> </blockquote> <p>Some believe that Rabbit Starvation is apocryphal and others believe it’s what ultimately killed <a href="http://en.wikipedia.org/wiki/Christopher_McCandless">Christopher McCandless</a>, but it makes for a wonderful parable for the business person. Even though I read this post and thought I had absorbed its message, my business nearly succumbed to it. When things get slow, and trust me, at some point they will, it’s tempting to just start grabbing every piece of business you can. There are lots of small jobs out there and for a short period of time, it can be fun to work on so many different things, but most people can’t create a sustainable, growing business out of small projects.</p> <p>Don’t get me wrong, I love small projects and small clients. There is nothing like being able to do a few hours of work and really move the needle for someone’s business. They are also a great opportunity to think creatively, be agile and minimalist, and perhaps even learn something new. People skills, communication skills and creative problem solving are a must in that environment. But as the wilderness survival folklore teaches, if you are going to survive the winter, it’s better to go hunting for bigger game. Rabbits are delicious and as part of a balanced diet can be very good for you, but you can’t live off of rabbits alone, and they’re not the best choice when you’re starving, tempting as they may be.</p> tag:theaboutbox.com,2010-11-02:/blog/appsicantlivewithout/ Apps I Can't Live Without 2010-11-03T05:19:00Z 2010-11-03T05:19:00Z <p>I always like to see what apps people use every day and make a part of their daily existence. Sometimes there are hidden gems, or truly useful things that I have never heard of. So without further ado, apps that I cannot live without:</p> <p><a href="http://www.dropbox.com">Dropbox</a> All of my really important files go here. Dropbox makes online backups and syncs files to all of your other computers running Dropbox. If I save a file there, I know it’s on all of my other computers right away. I can access the files on my phone or online, or on any computer. The best thing is that this all happens automatically. It. Just. Works.</p> <p><a href="http://www.evernote.com">Evernote</a> What Evernote lacks in style, it makes up for in substance and ubiquity. Evernote is a note-taking application that syncs with an upstream server, so any notes I write on my computer show up on my phone and vice versa. Notes are easily searchable and browsable. I think it also supports photos and character recognition, but I’ve never tried any of those things.</p> <p><a href="http://pivotaltracker.com">Pivotal Tracker</a> This is a free project tracking application developed by <a href="http://www.pivotallabs.com">Pivotal Labs</a>, a software consulting company, to manage all of their client projects. Therefore, it’s a great fit for the type of work that I do. It does a great job of staying out of your way and it lets small, agile teams work together easily. It’s my go-to app for projects nowadays.</p> <p><a href="http://www.skitch.com">Skitch</a> Sometimes when trying to illustrate a point, it’s good to take a screen shot, draw some arrows and write some text. Skitch focuses on making that task brain-dead simple. It also shares the files online, and my favorite feature, if you have a Web form with a file upload, you can drag the tab at the bottom to the upload button and you don’t have to browse around looking for it.</p> <p><a href="http://www.getharvest.com/">Harvest</a> A simple time tracking and invoicing application. While I’m working, or at the end of the day, I’ll enter all of my project hours. Then at the end of the month I press the ‘Create Invoice’ button and it will send out an invoice. It turned invoicing from an endeavor that took half a day, to a few clicks and about half an hour. Totally worth about $12 per month. It will also show you the status of all your invoices and let your clients pay online with a credit card. There’s more stuff too, but that’s what I use on a daily basis.</p> <p>Anyone else out there, what can’t you live without?</p> tag:theaboutbox.com,2010-11-01:/blog/nablopomo/ NaBloPoMo 2010-11-02T03:35:54Z 2010-11-02T03:35:54Z <p>This month is National Novel Writing Month. I don’t think I’m ambitious enough to do that this year. I had briefly flirted with the notion of starting a more technical book, but I’m still trying to get my business structured so I have some help and backup on the technical side, so I don’t think I’d be able to follow through on that commitment. One of these days, perhaps I will write that book on styling Flex applications. I’ve learned a lot that I haven’t seen posted anywhere else.</p> <p>Fortunately for those of us with slightly more modest writing ambitions, it is also <a href="http://www.nablopomo.com/">National Blog Posting Month</a>. That makes this month as good as any to turn over a new leaf, and put something out there. And maybe while I’m at it, I’ll clean up the rest of the site, too.</p> <p>There is a lot of value to writing on a regular basis. <a href="http://www.keetonpr.com/">My wife</a> runs a Public Relations firm, updates her Web site regularly, and two of her most recent clients said they found her “on the Internet”. When Google turns into one of your best lead sources, definitely something is going right.</p>