<?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>Building The Site &#8211; Hanging Hyena</title>
	<atom:link href="https://www.hanginghyena.com/blog/category/building-the-site/feed/" rel="self" type="application/rss+xml" />
	<link>https://www.hanginghyena.com/blog</link>
	<description>Word Games &#38; Codes</description>
	<lastBuildDate>Fri, 22 Nov 2019 06:48:17 +0000</lastBuildDate>
	<language>en-US</language>
	<sy:updatePeriod>
	hourly	</sy:updatePeriod>
	<sy:updateFrequency>
	1	</sy:updateFrequency>
	<generator>https://wordpress.org/?v=5.2.9</generator>
	<item>
		<title>Sitewide Redesign: Responsive Design To Improve Mobile Experience</title>
		<link>https://www.hanginghyena.com/blog/sitewide-redesign-responsive-design-to-improve-mobile-experience/</link>
				<comments>https://www.hanginghyena.com/blog/sitewide-redesign-responsive-design-to-improve-mobile-experience/#respond</comments>
				<pubDate>Wed, 15 Jan 2014 05:30:24 +0000</pubDate>
		<dc:creator><![CDATA[Head Hyena]]></dc:creator>
				<category><![CDATA[Building The Site]]></category>

		<guid isPermaLink="false">https://www.hanginghyena.com/blog/?p=609</guid>
				<description><![CDATA[<p>We&#8217;re in the final stages of a site-wide redesign, focused on upgrading our solvers to deliver a better experience on mobile phones. The project used a web-design technique known as responsive design to rebuild our solver pages around several standard views (mobile phone, small tablet, larger tablet, desktop). We then modified the content shown in &#8230; </p>
<p class="link-more"><a href="https://www.hanginghyena.com/blog/sitewide-redesign-responsive-design-to-improve-mobile-experience/" class="more-link">Continue reading<span class="screen-reader-text"> "Sitewide Redesign: Responsive Design To Improve Mobile Experience"</span></a></p>
<p>The post <a rel="nofollow" href="https://www.hanginghyena.com/blog/sitewide-redesign-responsive-design-to-improve-mobile-experience/">Sitewide Redesign: Responsive Design To Improve Mobile Experience</a> appeared first on <a rel="nofollow" href="https://www.hanginghyena.com/blog">Hanging Hyena</a>.</p>
]]></description>
								<content:encoded><![CDATA[<p>We&#8217;re in the final stages of a site-wide redesign, focused on upgrading our solvers to deliver a better experience on mobile phones. The project used a web-design technique known as responsive design to rebuild our solver pages around several standard views (mobile phone, small tablet, larger tablet, desktop). We then modified the content shown in each of these views to better suit the expected audience.</p>
<p><span id="more-609"></span></p>
<p>From a user-experience perspective, there were relatively little changes in the hangman solver and hangman word builder pages. While we modified several elements of the solver behind the scenes, these pages deliver more-or-less the same experience with a slightly more user-friendly spin.</p>
<p>The largest redesign was in the boggle solvers &#8211; we shifted a number of elements of these solvers around to adapt them for mobile screens. For small screens, we kept the rapid entry box and reflowed the word-grid structure on the screen so that it was easier to page through the possible words and see where they fell on the screen. For users with a larger display, we gave them the option of looking at a page-able and click-able wordlist to facilitate more in-depth review of your options.</p>
<p>We took advantage of this opportunity to clean up our section on word scramble solvers and word jumble solvers &#8211; these have been consolidated down to a single page (<a title="Word SCramble Solvers" href="https://www.hanginghyena.com" target="_blank" rel="noopener noreferrer">here</a>). For those of your looking for points-based solutions, take a look at our scrabble helper and words with friends helper.</p>
<p>On that note, we implanted the first significant change in the scrabble helper page since launch; we eliminated the complicated letter / tile value entry panel and settled on a much simpler &#8220;starts with / ends with&#8221; structure for helping build words. We&#8217;re looking at a couple of additional options entry options for this page. The intent is to make it easier to use on mobile.</p>
<p>We&#8217;re always open to feedback &#8211; drop us a line. And if you like our solvers or puzzles, please share them with your friends on Facebook or Twitter. Our advertising budget resembles the null set, so any word-of-mouth assistance is appreciated!</p>


<p></p>
<p>The post <a rel="nofollow" href="https://www.hanginghyena.com/blog/sitewide-redesign-responsive-design-to-improve-mobile-experience/">Sitewide Redesign: Responsive Design To Improve Mobile Experience</a> appeared first on <a rel="nofollow" href="https://www.hanginghyena.com/blog">Hanging Hyena</a>.</p>
]]></content:encoded>
							<wfw:commentRss>https://www.hanginghyena.com/blog/sitewide-redesign-responsive-design-to-improve-mobile-experience/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
							</item>
		<item>
		<title>We&#8217;re going mobile&#8230;.</title>
		<link>https://www.hanginghyena.com/blog/were-going-mobile/</link>
				<comments>https://www.hanginghyena.com/blog/were-going-mobile/#respond</comments>
				<pubDate>Sun, 28 Apr 2013 08:53:59 +0000</pubDate>
		<dc:creator><![CDATA[Head Hyena]]></dc:creator>
				<category><![CDATA[Building The Site]]></category>

		<guid isPermaLink="false">https://www.hanginghyena.com/blog/?p=520</guid>
				<description><![CDATA[<p>We&#8217;ve started rolling out a series of changes in our visual design and layout which are intended to make our word game solvers easier to use from a mobile phone. This will occur in waves through the summer, as permitted by my work and family schedule&#8230; For the aspiring web developers in the audience, the original &#8230; </p>
<p class="link-more"><a href="https://www.hanginghyena.com/blog/were-going-mobile/" class="more-link">Continue reading<span class="screen-reader-text"> "We&#8217;re going mobile&#8230;."</span></a></p>
<p>The post <a rel="nofollow" href="https://www.hanginghyena.com/blog/were-going-mobile/">We&#8217;re going mobile&#8230;.</a> appeared first on <a rel="nofollow" href="https://www.hanginghyena.com/blog">Hanging Hyena</a>.</p>
]]></description>
								<content:encoded><![CDATA[<p>We&#8217;ve started rolling out a series of changes in our visual design and layout which are intended to make our word game solvers easier to use from a mobile phone. This will occur in waves through the summer, as permitted by my work and family schedule&#8230;</p>
<p><span id="more-520"></span></p>
<p>For the aspiring web developers in the audience, the original version of this site was designed to render best on a desktop browser. I would still recommend this approach to a new developer. It minimizes the complexity involved in delivering your first project. Let&#8217;s face it, optimizing a web page for four browsers (IE, Safari, Chrome, Firefox) with similar screen resolutions is a lot easier than solving for three levels of display and multiple device sizes. Furthermore, I&#8217;ve found most full-sized tablets tend to be fairly forgiving when rendering pages optimized for a desktop display; the issue comes with smaller devices (small tablets and mobile phones).</p>
<p>The urge to improve the quality of our mobile display comes from two sources. First, we&#8217;ve seen a consistently higher bounce rate from our mobile users; while many of them do return to the site regularly, we would like to give you a better experience! Second, one of the small joys of running a site like this is being able to &#8220;show it off&#8221; to friends and family, which is slightly less impressive when you have do cellphone gymnastics to deliver a half-way decent display&#8230;</p>
<p>The new design will be based on JQuery Mobile: we&#8217;ve already got our first couple of prototype solvers in production. The first of these is our general-purpose <a title="word solver" href="https://www.hanginghyena.com/solvers/word-solver#main_title">word solver</a>; we&#8217;ve got this set up to render a horizontal three panel display on desktop (data entry, words, instructions) which turns into a neatly stacked vertical view on a mobile phone. Once we got this working, we quickly moved the template to our <a title="scrabble solver" href="https://www.hanginghyena.com/solvers/scrabble-helper">scrabble solver </a>and <a title="words with friends solver" href="https://www.hanginghyena.com/solvers/words-with-friends-helper">words with friends solver</a>. At this point, our <a title="boggle solver" href="https://www.hanginghyena.com/solvers/scramble-with-friends-solver#main_title">boggle solver </a>is probably next. We want to finish piloting this on the smaller solvers before we modify our heavy hitters&#8230;</p>
<p>On a related note, we&#8217;re redesigning several of the features in our scrabble solver; please let us know if there is anything you would like us to consider incorporating.</p>
<p>The post <a rel="nofollow" href="https://www.hanginghyena.com/blog/were-going-mobile/">We&#8217;re going mobile&#8230;.</a> appeared first on <a rel="nofollow" href="https://www.hanginghyena.com/blog">Hanging Hyena</a>.</p>
]]></content:encoded>
							<wfw:commentRss>https://www.hanginghyena.com/blog/were-going-mobile/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
							</item>
		<item>
		<title>Hacking Boggle: Extending Our Collection of Boggle Solvers</title>
		<link>https://www.hanginghyena.com/blog/hacking-boggle-extending-our-collection-of-boggle-solvers/</link>
				<comments>https://www.hanginghyena.com/blog/hacking-boggle-extending-our-collection-of-boggle-solvers/#respond</comments>
				<pubDate>Mon, 18 Feb 2013 05:36:27 +0000</pubDate>
		<dc:creator><![CDATA[Head Hyena]]></dc:creator>
				<category><![CDATA[Building The Site]]></category>

		<guid isPermaLink="false">https://www.hanginghyena.com/blog/?p=473</guid>
				<description><![CDATA[<p>We added two new solvers for boggle-style word games this weekend in response to some user feedback. Our original boggle solver was intended to find words in a 4 x 4 letter grid. The two new solvers extend our offerings to include a 5 x 5 boggle solver and a 6 x 6 boggle solver. The &#8230; </p>
<p class="link-more"><a href="https://www.hanginghyena.com/blog/hacking-boggle-extending-our-collection-of-boggle-solvers/" class="more-link">Continue reading<span class="screen-reader-text"> "Hacking Boggle: Extending Our Collection of Boggle Solvers"</span></a></p>
<p>The post <a rel="nofollow" href="https://www.hanginghyena.com/blog/hacking-boggle-extending-our-collection-of-boggle-solvers/">Hacking Boggle: Extending Our Collection of Boggle Solvers</a> appeared first on <a rel="nofollow" href="https://www.hanginghyena.com/blog">Hanging Hyena</a>.</p>
]]></description>
								<content:encoded><![CDATA[<p>We added two new solvers for boggle-style word games this weekend in response to some user feedback. Our original <a title="boggle solver" href="https://www.hanginghyena.com/solvers/scramble-with-friends-solver#main_title" target="_blank">boggle solver</a> was intended to find words in a 4 x 4 letter grid. The two new solvers extend our offerings to include a <a title="5 x 5 big boggle solver" href="https://www.hanginghyena.com/solvers/5x5-boggle-solver" target="_blank">5 x 5 boggle solver </a>and a <a title="6 x 6 super boggle solver" href="https://www.hanginghyena.com/solvers/6x6-boggle-solver" target="_blank">6 x 6 boggle solver</a>.</p>
<p>The technical side of this project turned out to be fairly straightforward. As discussed in the article we wrote about <a title="Hacking Boggle: Designing A Fast Solver For A Timed Word Game" href="https://www.hanginghyena.com/blog/2012/03/28/hacking-boggle-how-to-tweak-your-ui-to-speed-up-the-user-experience/" target="_blank">building a fast boggle solver</a>, we approached the problem as a twist on our existing <a title="scrabble cheat" href="https://www.hanginghyena.com/solvers/scrabble-helper#main_title" target="_blank">scrabble solver</a>. We took key elements of the logic behind our scrabble solver (which checks the possible permutations of a rack of letters) and adapted it to check the possible paths through a 4 x 4 matrix. To create the new solvers, we simple expanded the scope of this search to support a larger matrix.</p>
<p><span id="more-473"></span></p>
<p>The past several years has seen the launch of a number of new boggle-style games. We&#8217;re aware of a 5 x 5 version (Big Boggle) which until recently has been primarily marketed in Europe. In 2012, a 6 x 6 version (Super Big Boggle) was launched. The mobile space has seen Zynga&#8217;s launch Scramble with Friends (our original boggle solver was tweaked to serve as a <a title="scramble with friends cheat" href="https://www.hanginghyena.com/solvers/scramble-with-friends-solver#main_title" target="_blank">scramble with friends cheat</a>). And there is a new mobile game, Ruzzle, which has been growing rapidly this past year (our current 4&#215;4 solver serves as a <a title="ruzzle cheat / ruzzle solver" href="https://www.hanginghyena.com/solvers/scramble-with-friends-solver#main_title" target="_blank">ruzzle cheat</a>).</p>
<p>If you are currently using the solvers for other games, please drop us a line and we can look into tweaking them to serve you better!</p>
<p>The post <a rel="nofollow" href="https://www.hanginghyena.com/blog/hacking-boggle-extending-our-collection-of-boggle-solvers/">Hacking Boggle: Extending Our Collection of Boggle Solvers</a> appeared first on <a rel="nofollow" href="https://www.hanginghyena.com/blog">Hanging Hyena</a>.</p>
]]></content:encoded>
							<wfw:commentRss>https://www.hanginghyena.com/blog/hacking-boggle-extending-our-collection-of-boggle-solvers/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
							</item>
		<item>
		<title>Hanging With The Hyenas: Lessons Learned From Delivering My First Side Project Using Python</title>
		<link>https://www.hanginghyena.com/blog/a-year-of-hanging-with-the-hyenas-delivering-your-first-side-project-in-python/</link>
				<comments>https://www.hanginghyena.com/blog/a-year-of-hanging-with-the-hyenas-delivering-your-first-side-project-in-python/#respond</comments>
				<pubDate>Wed, 21 Nov 2012 20:04:59 +0000</pubDate>
		<dc:creator><![CDATA[Head Hyena]]></dc:creator>
				<category><![CDATA[Building The Site]]></category>
		<category><![CDATA[Game Marketing]]></category>

		<guid isPermaLink="false">https://www.hanginghyena.com/blog/?p=380</guid>
				<description><![CDATA[<p>If we turn the clock back a year, I would be busy packing up the minivan and starting our long slow trip down to southern Alabama through some pretty nasty storms. Later that evening, I&#8217;m going to write a small Python word game solver script that ultimately evolved into the code behind this site. Like many developers, &#8230; </p>
<p class="link-more"><a href="https://www.hanginghyena.com/blog/a-year-of-hanging-with-the-hyenas-delivering-your-first-side-project-in-python/" class="more-link">Continue reading<span class="screen-reader-text"> "Hanging With The Hyenas: Lessons Learned From Delivering My First Side Project Using Python"</span></a></p>
<p>The post <a rel="nofollow" href="https://www.hanginghyena.com/blog/a-year-of-hanging-with-the-hyenas-delivering-your-first-side-project-in-python/">Hanging With The Hyenas: Lessons Learned From Delivering My First Side Project Using Python</a> appeared first on <a rel="nofollow" href="https://www.hanginghyena.com/blog">Hanging Hyena</a>.</p>
]]></description>
								<content:encoded><![CDATA[<p>If we turn the clock back a year, I would be busy packing up the minivan and starting our long slow trip down to southern Alabama through some pretty nasty storms. Later that evening, I&#8217;m going to write a small Python word game solver script that ultimately evolved into the code behind this site.</p>
<p>Like many developers, I&#8217;d had dreams of building &#8220;a product&#8221; of my own. I even had a couple of piles of code sitting around from various attempts over the years. Most of these were built around pretty solid concepts &#8211; the sort of ideas you could walk into a room and pitch to rational adults. Projects like games, a stock analyzer, and data tools. I&#8217;m imagining the &#8220;startup weekend&#8221; pitch for Hyenas:</p>
<blockquote><p>&#8220;Team, we intend to become a market leader in the <a title="scrabble helper" href="https://www.hanginghyena.com/solvers/scrabble-helper" target="_blank" rel="noopener noreferrer">scrabble helper,</a> <a href="https://www.hanginghyena.com/hangmansolver" target="_blank" rel="noopener noreferrer">hangman solver,</a> and <a href="https://www.hanginghyena.com/solvers/scramble-with-friends-solver" target="_blank" rel="noopener noreferrer">boggle cheat </a>space. This site will offer illicit services to a large audience of low-revenue visitors and entertain them for hours on end.&#8221;</p></blockquote>
<p>Keep your cell phone handy: the reaction footage from the MBA&#8217;s will be comedy gold.</p>
<p><span id="more-380"></span></p>
<p>But yet&#8230; unlike all those &#8220;better&#8221; ideas, this project actually got built and was launched. By the end of the weekend, we had a nice collection of command line Python programs. On Monday night when I got back from vacation, I took the hangman solver function and used the bottle.py web framework to turn it into a simple web service. The front end of the site was an HTML page, dressed up with some JQuery. By the end of the night, I had version 0.1 of the hangman solver. Two weeks later we were live on a shared hosting platform. We continued to tweak the site&#8217;s visual design and &#8220;analysis engine&#8221; over the next month before we did our public launch in January, via a Facebook post.</p>
<p>That was the start, not the end of the story, as those of you who have built websites are well aware. Once we were live, we had to set up all the supporting elements: Google Analytics, server monitoring, a WordPress blog, and social media. We launched with almost no awareness of SEO and &#8220;Google-friendly&#8221; site design: we spent a lot of time during early 2012 trying to figure this out.  Our focus started slowly shifting from the easily measured problem of &#8220;is this website running&#8221; to the much murkier challenge of figuring out how to grow an audience and make our users happy.</p>
<p>Along the way I learned a lot about Python and became a better developer in general. I&#8217;d been using Python for statistical analysis and simulation modeling for several years; this project forced me to learn the basics about a much wider site of modules in the Standard Library. I was presented with a series of problems to solve using Python, each of which had a tangible incentive for solving them (eg. less manual work, cool features/insights). Running a site also gives you religion around best practices like version control, commenting, and proper design. You&#8217;re forced to live with the messes you create!</p>
<p>Thus far, the project has been a success. We built up an audience of regular visitors, who click on enough ads that the site is self supporting. One nice aspect of the project is that our incremental cost of building new stuff keeps dropping: we now have a paid-for server and some SEO firepower to give new material a push. All of this from a project that would be laughed out of the room at a startup weekend&#8230;</p>
<p>In retrospect, I&#8217;m not surprised it worked. The secret sauce is that the whole project has always been <strong>small and crazy</strong>. This let us avoid many factors that kill serious projects.</p>
<p>Drawing from one of Paul Graham&#8217;s essays (<a title="how not to die" href="http://www.paulgraham.com/die.html" target="_blank" rel="noopener noreferrer">How Not To Die</a>), most side projects don&#8217;t die because they were &#8220;beaten in the market&#8221;, they die because the founder got busy working on something else. Unless you are wealthy with no family responsibilities, your side project automatically comes second. I&#8217;m not advocating any other set of priorities, by the way. If you want to be successful, you need to structure your project to power through these distractions. Here&#8217;s how we accomplished this:</p>
<ul>
<li><strong>Focus on Utility First, Then Presentation:</strong> My goal is to walk away from every coding session on a new project with a tiny useful tool which solves a real need that I can use immediately. Don&#8217;t worry about scope, making it look pretty, or commercial potential. Crude scripts work great: most of my stuff starts as a simple 5 &#8211; 20 line Python script that automates a manual task. You can knock this out in a hour or two. Now&#8230; go use that script!</li>
</ul>
<p style="padding-left: 30px;">There are three productivity ninja hacks hiding in this picture. First, you are limiting your work session to an hour or two, boosting the odds you will actually write code: everybody can find an hour if they look hard enough. Next, by limiting the scope of the work to a single usable function point, we increase the odds of completion. Finally, by building something you will use regularly, you are setting up a reminder to finish the app. The latter is pretty serious productivity kung-fu for things like admin interfaces: by making something both seriously useful and painful to use, you maximize your incentive to polish up the visual design and supporting features over time.</p>
<p style="padding-left: 30px;">This isn&#8217;t necessarily the most productive approach to writing code. I&#8217;ve found that I do my best work when I have an uninterrupted block of 6 &#8211; 12 hours to spend coding. However, this approach seems to work fairly well when you can&#8217;t dedicated large blocks of time to spend working on your project due to other obligations!</p>
<ul>
<li><strong>Don&#8217;t Waste Time &#8220;Strategic Planning&#8221;: </strong>I actually tried to define a &#8220;strategy&#8221; for our offering in the early days. Our target audience was going be scrabble players, acquired by going viral on social media, and most of them will use mobile phones. What a pack of fatuous BS.</li>
</ul>
<p style="padding-left: 30px;">Most of our traffic is for other games, is generated via SEO, and my best commercial audience actually uses desktop browsers. I never knew any of that until we actually launched and watched the public reaction&#8230;</p>
<ul>
<li> <strong>Share Early: </strong>I&#8217;ve spent too much time working on high risk corporate system stuff, so this was a big learning curve for me. Unless you&#8217;re actually accepting money or touching personal data, the consequences of being hacked or a system crash are generally pretty minor for a weekend project. The motivational value of seeing real live people on your site? Priceless&#8230;</li>
</ul>
<p style="padding-left: 30px;">The acid test of this principle occured in mid-April, where we had a fifteen hour outage when I was out of the country. It began 15 minutes after the start of a day-long business meeting (without cell service) and continued until I got back from watching hockey that evening. Net cost? Zip. The server was rebooted over hotel wi-fi and the monitoring script was fixed that weekend. We were back to our usual traffic levels within a couple of days.</p>
<ul>
<li><strong>SCRIPT ALL THE THINGS!</strong> Your goal as a developer should be to eliminate your involvement in as many areas of the project as possible and streamline the rest. Most of this site runs on automated scripts: everything from server monitoring to administrative decisions. I can and have walked away from the site for weeks at a time.</li>
</ul>
<p style="padding-left: 30px;">Another nice thing about scripts is you can usually recycle them on future projects, permanently increasing your productivity&#8230;</p>
<ul>
<li><strong><del>Steal</del> Reuse Code Shamelessly</strong>: This one is simple: you have finite resources to get a side project delivered. Don&#8217;t waste your energy reinventing the wheel. Remember, anything that prolongs your delivery of a working product increases the risk you won&#8217;t complete the work and launch.</li>
</ul>
<p style="padding-left: 30px;">There are many wonderful open source projects out there that solve 90% of the problems involved in website development (WordPress, Jquery, Django, bottle.py, others). Unless your goal is to replace WordPress or Django, don&#8217;t waste time redesigning them&#8230;.</p>
<ul>
<li><strong>Take Delight in the Absurd</strong>: Anyone can go build another content management system, photo sharing site, or social networking service. Unfortunately, that usually means that everyone will take a shot at it, pitting you against a flood of competitors. But for weird stuff like building a worm farm designer? Craft Beer analyzer? Consignment sale manager? Not only is it much more memorable but you&#8217;re much more likely to discover a little niche that you can own and enjoy&#8230;</li>
</ul>
<p>I suppose a final tip might be to pick something that you love &#8211; either in the content or the process of developing the site &#8211; and center your time around that activity. That helps you keep going through the early stages of the work, where you&#8217;re plugging a ton of time into a site or feature that only gets a handful of people per day. Because time will suddenly become your friend once you get moving: old sites have more credibility with Google and it is often much easier to version / modify your existing code than build new stuff. Love helps you power through the tough spot.</p>
<p>For our regular readers, thanks for a great first year! We look forward to helping you beat the cheetahs and laugh like a hyena for many years to come!</p>
<p>If you liked this article, share it!</p>
<p><a class="twitter-share-button" href="https://twitter.com/share" data-via="hanginghyena" data-text="Hanging With The Hyenas: Lessons Learned From Delivering My First Side Project Using Python">Tweet</a><br />
<script type="text/javascript">// <![CDATA[ !function(d,s,id){var js,fjs=d.getElementsByTagName(s)[0];if(!d.getElementById(id)){js=d.createElement(s);js.id=id;js.src="//platform.twitter.com/widgets.js";fjs.parentNode.insertBefore(js,fjs);}}(document,"script","twitter-wjs"); // ]]&gt;</script></p>
<p><iframe style="border: currentColor; width: 450px; height: 21px; overflow: hidden;" src="//www.facebook.com/plugins/like.php?href=https%3A%2F%2Fwww.hanginghyena.com%2Fblog%2F2012%2F11%2F12%2Fa-year-of-hanging-with-the-hyenas-delivering-your-first-side-project-in-python%2F&amp;send=false&amp;layout=button_count&amp;width=450&amp;show_faces=false&amp;action=like&amp;colorscheme=light&amp;font&amp;height=21" width="320" height="240" frameborder="0" scrolling="no"></iframe></p>
<p>The post <a rel="nofollow" href="https://www.hanginghyena.com/blog/a-year-of-hanging-with-the-hyenas-delivering-your-first-side-project-in-python/">Hanging With The Hyenas: Lessons Learned From Delivering My First Side Project Using Python</a> appeared first on <a rel="nofollow" href="https://www.hanginghyena.com/blog">Hanging Hyena</a>.</p>
]]></content:encoded>
							<wfw:commentRss>https://www.hanginghyena.com/blog/a-year-of-hanging-with-the-hyenas-delivering-your-first-side-project-in-python/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
							</item>
		<item>
		<title>The Three Types of Blog Posts &#8211; Show Horses, Draft Horses, and Kibble..</title>
		<link>https://www.hanginghyena.com/blog/the-three-types-of-blog-posts-show-horses-draft-horses-and-kibble/</link>
				<comments>https://www.hanginghyena.com/blog/the-three-types-of-blog-posts-show-horses-draft-horses-and-kibble/#respond</comments>
				<pubDate>Mon, 16 Jul 2012 10:55:06 +0000</pubDate>
		<dc:creator><![CDATA[Head Hyena]]></dc:creator>
				<category><![CDATA[Building The Site]]></category>

		<guid isPermaLink="false">https://www.hanginghyena.com/blog/?p=228</guid>
				<description><![CDATA[<p>From an&#160;SEO perspective, there are only three types of blog posts. The secret to generating content at a productive rate is to always be aware of which one you are writing.. Here&#8217;s how I break up my posts: Show Horses – The good stuff! Content that you want shared on social media and that you &#8230; </p>
<p class="link-more"><a href="https://www.hanginghyena.com/blog/the-three-types-of-blog-posts-show-horses-draft-horses-and-kibble/" class="more-link">Continue reading<span class="screen-reader-text"> "The Three Types of Blog Posts &#8211; Show Horses, Draft Horses, and Kibble.."</span></a></p>
<p>The post <a rel="nofollow" href="https://www.hanginghyena.com/blog/the-three-types-of-blog-posts-show-horses-draft-horses-and-kibble/">The Three Types of Blog Posts &#8211; Show Horses, Draft Horses, and Kibble..</a> appeared first on <a rel="nofollow" href="https://www.hanginghyena.com/blog">Hanging Hyena</a>.</p>
]]></description>
								<content:encoded><![CDATA[<p>From an&nbsp;SEO perspective, there are only three types of blog posts. The secret to generating content at a productive rate is to always be aware of which one you are writing..</p>
<p>Here&#8217;s how I break up my posts:</p>
<ul>
<li><strong>Show Horses</strong> – The good stuff! Content that you want shared on social media and that you eagerly hope will generate quality backlinks. A Show Horse post requires a good concept and high quality writing. The topic should be something with broad interest to the <a title="Linkerati - People Who Actually Give You Backlinks!" href="http://www.seomoz.org/blog/identifying-the-linkerati" target="_blank" rel="noopener noreferrer">Linkerati</a>&nbsp;(SEO, building websites, running a business) and requires a certain amount of &#8220;polish&#8221; to really make them fly&#8230;</li>
<li><strong>Work Horses</strong> – Covers a niche topic in reasonable depth, may be part of a larger string of related posts. These are generally SEO focused &#8211; oriented towards a specific set of keywords and/or containing well-crafted links to a second site. Expected to attract a modest amount of highly focused traffic (eg. tell me how to install library XYZ in python) who is a&nbsp;potential buying audience for affiliate items. Requires average writing and less polish than a show horse. Frequently ranks on their own pretty quickly but won’t attract&nbsp;much traffic &#8211; might attract some respect and/or links from insiders in&nbsp;your space if well written.</li>
<li><strong>Kibble</strong> – Lowest quality posts,&nbsp;written to let Googlebot know that you&#8217;re still alive. Often a good source of &#8220;house links&#8221;&nbsp;with targeted anchor text within your site and to related properties. Since this site is about word game solvers and word games, we have several options for cranking this stuff out.&nbsp;New word game&nbsp;features and upgrades are a good source of kibble (like when we released our <a title="hanging with friends cheat" href="https://www.hanginghyena.com/hanging-with-friends-solver" target="_blank" rel="noopener noreferrer">hanging with friends cheat</a> and <a title="Scramble with friends cheat" href="https://www.hanginghyena.com/solvers/scramble-with-friends-solver" target="_blank" rel="noopener noreferrer">scramble cheat</a>). This stuff can be generated using a template (at least at the conceptual level) so you can create&nbsp;it efficiently. This is the blog equivalent of a DJ playing a long song while they take a break.</li>
</ul>
<p>Each of these requires a different level of investment to succeed:</p>
<ul>
<li>Show Horse content frequently requires a couple of days to really optimize; this is where getting&nbsp;external perspective from a designer or SEO consultant can help. It should also be less than 10% &#8211; 20% of your total content &#8211; you generally don&#8217;t get more than 1 &#8211; 2 true Show Horse ideas per month.</li>
<li>Work Horse content will require more subject matter expertise than Show Horse content, since you&#8217;re generally going deeper on a topic and establishing authority. Since these posts will be generating search engine referals you should take steps to control your bounce rate. Avoid thin content and make sure&nbsp;the article contains enough related&nbsp;links&nbsp;to deter visitors from quickly returning to the seach index.&nbsp;On a similar note,&nbsp;invest the time to make sure the technical quality of this work is solid. On the positive side, it will (or should be) evergreen content which you will derive value from for many years.&nbsp; I&#8217;ve found I can generally crank out a quality Work Horse article in about 2 &#8211; 3 hours. Bonus Tip: Recycle&nbsp;your old&nbsp;presentations into Work Horse articles; you&#8217;ve already done about 80% of the required work.</li>
<li>Finally, be ruthless in reducing the amount of time required to generate Kibble. The best Kibble is generated as a byproduct of your regular business activities.&nbsp; My favorite source of kibble for this site&nbsp;is doing short (300 word) announcements after we release&nbsp;a new word game&nbsp;solver (for example,&nbsp;when we launched our <a title="words with friends helper" href="https://www.hanginghyena.com/solvers/words-with-friends-helper" target="_blank" rel="noopener noreferrer">words with friends helper</a>)&nbsp;or tweak a feature. This usually can be cranked out in under&nbsp;10 minutes. The other great source I&#8217;ve seen is data from software&nbsp;testing and&nbsp;usage reporting. I&#8217;ve taken output from a couple of the test programs behind the word game solver (here&#8217;s an <a title="anagram families" href="https://www.hanginghyena.com/blog/2012/02/09/introducing-anagram-families/" target="_blank" rel="noopener noreferrer">example</a>)&nbsp;and reformatted it into reference posts, doling it out 300 &#8211; 500&nbsp;words at a time. Some of this stuff even ranks!</li>
</ul>
<p>Know what you are trying to deliver &#8211; and invest accordingly..</p>
<p>The post <a rel="nofollow" href="https://www.hanginghyena.com/blog/the-three-types-of-blog-posts-show-horses-draft-horses-and-kibble/">The Three Types of Blog Posts &#8211; Show Horses, Draft Horses, and Kibble..</a> appeared first on <a rel="nofollow" href="https://www.hanginghyena.com/blog">Hanging Hyena</a>.</p>
]]></content:encoded>
							<wfw:commentRss>https://www.hanginghyena.com/blog/the-three-types-of-blog-posts-show-horses-draft-horses-and-kibble/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
							</item>
		<item>
		<title>Building Sustainable Websites</title>
		<link>https://www.hanginghyena.com/blog/why-you-should-monetize-your-side-projects-2/</link>
				<comments>https://www.hanginghyena.com/blog/why-you-should-monetize-your-side-projects-2/#comments</comments>
				<pubDate>Sun, 24 Jun 2012 20:06:19 +0000</pubDate>
		<dc:creator><![CDATA[Head Hyena]]></dc:creator>
				<category><![CDATA[Building The Site]]></category>
		<category><![CDATA[Scrabble Helper]]></category>
		<category><![CDATA[scramble-with-friends-solver]]></category>
		<category><![CDATA[word builder]]></category>

		<guid isPermaLink="false">https://www.hanginghyena.com/blog/?p=181</guid>
				<description><![CDATA[<p>There is a stigma to monetizing your side projects. I take exception to this. Building useful software is hard work. Maintaining it takes even more work. Adding a revenue stream to a project helps make it sustainable. This is good for everyone involved. This is a big issue in the open source community. Github and &#8230; </p>
<p class="link-more"><a href="https://www.hanginghyena.com/blog/why-you-should-monetize-your-side-projects-2/" class="more-link">Continue reading<span class="screen-reader-text"> "Building Sustainable Websites"</span></a></p>
<p>The post <a rel="nofollow" href="https://www.hanginghyena.com/blog/why-you-should-monetize-your-side-projects-2/">Building Sustainable Websites</a> appeared first on <a rel="nofollow" href="https://www.hanginghyena.com/blog">Hanging Hyena</a>.</p>
]]></description>
								<content:encoded><![CDATA[<p>There is a stigma to monetizing your side projects. I take exception to this. Building useful software is hard work. Maintaining it takes even more work. Adding a revenue stream to a project helps make it sustainable. This is good for everyone involved.</p>
<p>This is a big issue in the open source community. Github and Google code are littered with the remains of half completed and unmaintained libraries. This is a loss to everyone involved: the volunteers that built the library, the brave souls who were early adopters, and the community at large. And when the open source ecosystem fails for a particular space, our end-users have no choice except to turn to a corporate provider.</p>
<p><span id="more-181"></span></p>
<p><strong>To Advertise or Not, That Is The Question&#8230;</strong></p>
<p>This site started as an experiment and family project. While it has always been of commercial value to us, the initial gains were indirect. It opened up some great doors. It also gave us a safe place to validate the underlying technology. LoadRunner can&#8217;t compete with a couple thousand crazed scrabble fans!</p>
<p>However, there is a certain amount of recurring work and expense involved in maintaining a site. On the low end, you need to keep the spammers in check and maintain a minimal level of content/link creation to keep Google interested. On the higher end, you need to respond to changes in the underlying games and new game launches. After a few months, this can become a burden. It competes with family time and new projects, chewing up the credit card a bit.</p>
<p>Which is the first revelation &#8211; the project already was &#8220;work&#8221;, I just wasn&#8217;t noticing it in the early stages of the site. Once competing priorities arose, it became harder to rationalize doing this work. This isn&#8217;t unique to this project, by the way. The same issue occurs with most of the lesser open source projects and weekend hacks. Unless you have a huge mission, engaged audience, and strong team &#8211; many projects flounder at this point. Start strong, fade away to nothing.</p>
<p>This site took an important step towards self-sufficiency last week. We started displaying ads. The purpose of this article isn&#8217;t to brag, by the way. <a title="Hanging with Friends Cheat" href="https://www.hanginghyena.com/hangmansolver" target="_blank">Hangman solvers</a> aren&#8217;t a &#8220;get rich quick&#8221; niche &#8211; cash hungry internet marketers should keep walking <img src="https://s.w.org/images/core/emoji/12.0.0-1/72x72/1f642.png" alt="🙂" class="wp-smiley" style="height: 1em; max-height: 1em;" /></p>
<p><strong>What a Revenue Stream Really Provides: Freedom to Grow&#8230;</strong></p>
<p>Most of our vacations involve trips to the beach, which involves a 6 &#8211; 8 hour drive (with small children, which only makes it longer). This usually tends to be pretty good &#8220;thinking time&#8221;. This site was conceived on our last Thanksgiving trip and we cranked out a couple of improvements over Christmas before we launched. This trip was no different &#8211; once we settled down into the long drive across the South Georgia countryside, I started thinking about the stuff I wanted to build next.</p>
<p>That&#8217;s when it hit me. I have a budget now, at least in the eyes of my wife and the IRS. Not a big one &#8211; I still need to show up at work on Monday &#8211; but enough to cover part of the expenses of &#8220;trying something new&#8221;. Want to redesign an interface and spend $50 bucks on a Javascript book? No Sweat. Need to start a secondary site (new domain,  another hosting account)? That $100 is covered. Feeling the desire to spend a couple of days building a new solver? &#8220;Hey Honey, we might be able to fund a date night or two from a new solver&#8230;&#8221; That goes over a lot better with your significant other than &#8220;I&#8217;m going to hide in the basement and cut some code, see you in a week&#8221; &#8211; just a tip for you married guys <img src="https://s.w.org/images/core/emoji/12.0.0-1/72x72/1f642.png" alt="🙂" class="wp-smiley" style="height: 1em; max-height: 1em;" /></p>
<p>The ads don&#8217;t generate much, just enough to cover our costs. That flips this site from being a burden to a net benefit. Worth protecting and improving. Sustainable. Funded by something other than pure ego.</p>
<p><strong>Plus A Running Start For The Next Adventure&#8230;</strong></p>
<p>For the entrepreneurial developer, there are three really good reasons why you should try to monetize that little side project. Even if there isn&#8217;t much commercial potential.</p>
<p>First, it will make you a better developer by encouraging you to maintain / expand a project over a long period of time. Even during a quiet month, I usually wind up tinkering with something that reinforces my understanding of Python or Javascript. It also gives you a token incentive to buckle down and learn the ”hard stuff” in your chosen toolset, using tangible projects and measurable outcomes.</p>
<p>Second, it gives you some exposure to the business side of the web: generating traffic and monetizing it. If you ever do launch a ”real product”, you will need to know this stuff. SEO and social media sounds silly until you realize just how much traffic can come from Google, Reddit, and Twitter. Ad design, targeting, and placement are boring until you need those $5 clicks you are buying from Google to start covering their cost. It is a lot easier to learn this on a small site than after you start a real business &#8211; with partners, investors, and customers asking why the server keep crashing and when the next payment is coming.</p>
<p>Finally, you get a running start on your next adventure. The server is paid for. We have a battle tested codebase that can give us a head start on development. Google crawls this site regularly &#8211; we can get new content indexed and ranked within a few days and know how to get the first dozen links to a new site (without resorting to spam). My out-of-pocket cost to test something new just got very small&#8230;</p>
<p>And that is the big win. When you take the cost of running experiments to near zero, you can explore a lot of ideas. It&#8217;s like being locked in a room full of free lottery tickets. It&#8217;s up to you to keep scratching&#8230;</p>
<p>The post <a rel="nofollow" href="https://www.hanginghyena.com/blog/why-you-should-monetize-your-side-projects-2/">Building Sustainable Websites</a> appeared first on <a rel="nofollow" href="https://www.hanginghyena.com/blog">Hanging Hyena</a>.</p>
]]></content:encoded>
							<wfw:commentRss>https://www.hanginghyena.com/blog/why-you-should-monetize-your-side-projects-2/feed/</wfw:commentRss>
		<slash:comments>2</slash:comments>
							</item>
		<item>
		<title>Scrabble Helpers &#8211; Striking The Right Balance</title>
		<link>https://www.hanginghyena.com/blog/scrabble-helpers-striking-the-right-balance/</link>
				<comments>https://www.hanginghyena.com/blog/scrabble-helpers-striking-the-right-balance/#respond</comments>
				<pubDate>Thu, 07 Jun 2012 08:25:18 +0000</pubDate>
		<dc:creator><![CDATA[Head Hyena]]></dc:creator>
				<category><![CDATA[Building The Site]]></category>
		<category><![CDATA[Scrabble Helper]]></category>
		<category><![CDATA[word builder]]></category>
		<category><![CDATA[word solver]]></category>

		<guid isPermaLink="false">https://www.hanginghyena.com/blog/?p=174</guid>
				<description><![CDATA[<p>One of the more interesting elements of building a site like this working through the right level of &#8220;assistance&#8221; to provide a player. The goal, of course, is to make the game more fun for a player and (being pragmatic) do so in  fashion which perpetuates their interest in the game. A lot of this thinking &#8230; </p>
<p class="link-more"><a href="https://www.hanginghyena.com/blog/scrabble-helpers-striking-the-right-balance/" class="more-link">Continue reading<span class="screen-reader-text"> "Scrabble Helpers &#8211; Striking The Right Balance"</span></a></p>
<p>The post <a rel="nofollow" href="https://www.hanginghyena.com/blog/scrabble-helpers-striking-the-right-balance/">Scrabble Helpers &#8211; Striking The Right Balance</a> appeared first on <a rel="nofollow" href="https://www.hanginghyena.com/blog">Hanging Hyena</a>.</p>
]]></description>
								<content:encoded><![CDATA[<p>One of the more interesting elements of building a site like this working through the right level of &#8220;assistance&#8221; to provide a player. The goal, of course, is to make the game more fun for a player and (being pragmatic) do so in  fashion which perpetuates their interest in the game. A lot of this thinking went into the design behind our <a title="Words With Friends Solver, Words With Friends Helper" href="https://www.hanginghyena.com/solvers/words-with-friends-helper" target="_blank">words with friends helper</a> .</p>
<p>We opted for a minimalist approach &#8211; enter your letters and we give you a list of possible words. The player is free to play them how they wish &#8211; keeping them involved in the strategy of how to put down their tiles while we help out with crunching through the dictionary of potential words. This gives a nice balance of help without making the game too easy&#8230;</p>
<p><span id="more-174"></span></p>
<p>Naturally, we did a version of the scrabble solver which was customized into a <a title="Words With Friends Solver, Words With Friends Helper" href="https://www.hanginghyena.com/solvers/words-with-friends-helper" target="_blank">words with friends helper</a>. Same basic design, just optimized some features for that game. Interestingly enough &#8211; while I suspect most of our audience is actually playing words with friends, the bulk of our scrabble traffic is on the regular scrabble solver. We actually saw a similar effect on the hangman offering &#8211; people tend to use the relatively generic <a title="Hangman Solver, Hangman Helper, Hangman Cheat" href="https://www.hanginghyena.com/hangmansolver#main_title" target="_blank">hangman solver</a> rather than our customized <a title="Hanging With Friends Solver" href="https://www.hanginghyena.com/hanging-with-friends-solver#main_title" target="_blank">hanging with friends cheat</a>.</p>
<p>We did look at a couple of alternatives &#8211; the algorithm behind the scrabble helper is actually fairly flexible. One of our early designs actually envisioned a full board solver. From a technical perspective, this would have been fairly straighforward. We would have basically written some loops to generate the additional cells (full board vs. row) and then extended our solver to iterate across the different rows/columns. The biggest challenge, from a usage perspective, is the chore of entering / maintaining every more. We suspected that would turn off about 99% of the audience (based on analysis of a couple of similar sites)&#8230;. and thus our simpler approach (which gets a bit more love).</p>
<p>The key is balance &#8211; give people just enough assistance that they can win a little more often, while giving them just enough skin in the game that they want to keep playing..</p>
<p>Incidently, we&#8217;re open to feedback &#8211; if there&#8217;s a feature you like / hate / love / need, drop us a line and we&#8217;ll take a look at it&#8230;</p>
<p>Head Hyena.</p>
<p>The post <a rel="nofollow" href="https://www.hanginghyena.com/blog/scrabble-helpers-striking-the-right-balance/">Scrabble Helpers &#8211; Striking The Right Balance</a> appeared first on <a rel="nofollow" href="https://www.hanginghyena.com/blog">Hanging Hyena</a>.</p>
]]></content:encoded>
							<wfw:commentRss>https://www.hanginghyena.com/blog/scrabble-helpers-striking-the-right-balance/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
							</item>
		<item>
		<title>Hacking Boggle: Designing A Fast Solver For A Timed Word Game</title>
		<link>https://www.hanginghyena.com/blog/hacking-boggle-how-to-tweak-your-ui-to-speed-up-the-user-experience/</link>
				<comments>https://www.hanginghyena.com/blog/hacking-boggle-how-to-tweak-your-ui-to-speed-up-the-user-experience/#comments</comments>
				<pubDate>Wed, 28 Mar 2012 09:54:49 +0000</pubDate>
		<dc:creator><![CDATA[Head Hyena]]></dc:creator>
				<category><![CDATA[Building The Site]]></category>

		<guid isPermaLink="false">https://www.hanginghyena.com/blog/?p=168</guid>
				<description><![CDATA[<p>Zynga released the Android version of their Scramble with Friends game last weekend, which was our first contact with the game. It’s a social version of Boggle – the players take turns finding words in a 4×4 grid of letters, with a couple of additional elements Zygna threw in to spice things up. So naturally &#8230; </p>
<p class="link-more"><a href="https://www.hanginghyena.com/blog/hacking-boggle-how-to-tweak-your-ui-to-speed-up-the-user-experience/" class="more-link">Continue reading<span class="screen-reader-text"> "Hacking Boggle: Designing A Fast Solver For A Timed Word Game"</span></a></p>
<p>The post <a rel="nofollow" href="https://www.hanginghyena.com/blog/hacking-boggle-how-to-tweak-your-ui-to-speed-up-the-user-experience/">Hacking Boggle: Designing A Fast Solver For A Timed Word Game</a> appeared first on <a rel="nofollow" href="https://www.hanginghyena.com/blog">Hanging Hyena</a>.</p>
]]></description>
								<content:encoded><![CDATA[<p>Zynga released the Android version of their Scramble with Friends game last weekend, which was our first contact with the game. It’s a social version of Boggle – the players take turns finding words in a 4×4 grid of letters, with a couple of additional elements Zygna threw in to spice things up. So naturally we decided to write a solver for it <img src="https://s.w.org/images/core/emoji/12.0.0-1/72x72/1f642.png" alt="🙂" class="wp-smiley" style="height: 1em; max-height: 1em;" /></p>
<p>Writing word game solvers has become something of a hobby for me. My first project was a <a title="Hangman Solver" href="https://www.hanginghyena.com/" target="_blank" rel="noopener noreferrer">Hangman Solver</a>: this started off as a regex filter (Python) applied to a word file which we tweaked to make it more efficient. The next step was modify the program into a <a title="Hanging With Friends Solver" href="https://www.hanginghyena.com/hanging-with-friends-solver" target="_blank" rel="noopener noreferrer">Hanging With Friends Solver:</a> there are a few tweaks in Zynga&#8217;s rules which make it easier to guess a word (reduced number of possible answers). This website was built by taking these two Python functions and embedding them in a web framework.  The front end is HTML dressed up with some basic JQuery.</p>
<p><span id="more-168"></span></p>
<p>Our scrabble word builder served as the starting point for the boggle solver. Scrabble requires an efficient search through the possible combinations of a sequence of letters. Boggle is a twist on scrabble: instead of searching the permuations of a sequence, you&#8217;re searching the possible paths through a n x n grid. The required change was a handful of lines in Python to implement.</p>
<p>Drawing the web page was also simple: since a grid is basically just an array with line breaks (thank you, CS 101), we cannibalized the array widget from our other solvers. So far, so good&#8230;.</p>
<p>Most of our prior solvers relied on the stately “chess-like” pace of play in Hangman and Scrabble. The solver automates the process of finding “options”: we presented a list of possible words, from which the player must select the best option (score + plausibility). From a user perspective, they have the time to flip between screens and page through lists of ideas, since they only need to select and play a single word.</p>
<p>And this is where things came undone&#8230;.</p>
<p>Instead of passing a sequence of seven letters back and forth, Scramble with Friends (Boggle) requires you to pass a set of sixteen letters <strong>into</strong> the solver and enter multiple words into the application as your answer. Remember, humans can only hold a small amount of data in memory, forcing the user to make multiple trips. Our solver walked into a &#8220;pipe capacity&#8221; problem: we needed to move too much information through the player for the available time&#8230;</p>
<p><strong>Thank you Mario, but our princess is in another Castle..</strong></p>
<p>For all you aspiring game designers out there, know this: speed is a great antidote to cheating. Speed matters in Boggle / Scramble with Friend. Judging from the boards I saw during testing, a typical Scramble with Friends grid has 300 – 400 possible words. A fast player (like my wife) can knock out 30 – 35 words per hand. Relatively intelligent slowpokes like myself are limited to about 20. That’s a 50% increase in “raw points”, most of which are likely to go unopposed (since those are 10 incremental words). If a game of scrabble will go to the smartest player, a game of boggle goes to the fastest.</p>
<p>This emphasis on speed is facilitated by the fact a good natural player can knock out 500 – 600 points per round using techniques like word stemming (plurals, suffixes, and  prefixes). These are best done outside a solver (eg. looking at the screen) to reduce the amount of screen flipping. Zynga also added an inspiration option to the game, which provides the user with some suggested words to play. These are all alternatives to using a solver (or things you may use in combination with a solver).</p>
<p><strong>So What Actually Helps Here?</strong></p>
<p>First, reframe the problem into something we can actually solve. There just isn’t time for screen flipping: between the time required for a cell phone to switch screens and the limits of human memory, you won’t get enough speed to make the exercise worthwhile. Now if they are using a regular computer or another phone&#8230; we&#8217;ve got a chance&#8230;</p>
<p>You should also consider the fact that the typical user wants an edge but doesn’t want to lose “respectability”. While there are technical options for quickly getting the data into the solver (screen snap -&gt; OCR), most of these actually have a short user lifecycle (for non-psychopaths) since they’re too high powered. After a weekend of absolute carnage, the thrill wanes.</p>
<p>Next – define how the solver is going to help, relative to natural play. Two things matter in boggle: word quality (points value) and word entry speed. Word entry speed breaks into two parts: time spent finding words, time spent &#8220;drawing&#8221; the word. Identify what you can improve (points value, pattern recognition) and what you can’t (drawing speed).</p>
<p>The most obvious thing we can do to improve points value is to rank our possible words in descending order. That came down to an embarassing trivial Javascript array sort. We already had a JQuery word list widget from our earlier work. Done. While I may only crank out 20 words, I can now find “senator”, “fiendish”, or other high scoring ideas.</p>
<p style="text-align: center;"><a href="https://www.hanginghyena.com/blog/wp-content/uploads/2012/03/boggle-word-list.png"><img class="alignnone size-medium wp-image-430" title="boggle word list" src="https://www.hanginghyena.com/blog/wp-content/uploads/2012/03/boggle-word-list-300x253.png" alt="" width="300" height="253" /></a></p>
<p>Now lets attack the problem of helping the user find words on the letter grid. We solved this by using Javascript to add two features to the front end design. First, we used Jquery to highlight cells containing the letters for the word (green for the first letter, red for the last letter, yellow for everything in between). Next, we used the jsPlumb library to draw lines between the letters in a word. Instead of looking at a wall of letters, the user now sees this:</p>
<p style="text-align: center;"><a href="https://www.hanginghyena.com/blog/wp-content/uploads/2012/03/boggle-solver-view1.png"><img class="alignnone size-medium wp-image-429" title="boggle solver view" src="https://www.hanginghyena.com/blog/wp-content/uploads/2012/03/boggle-solver-view1-300x279.png" alt="" width="300" height="279" /></a></p>
<p>I was blind but now I see! This was a critical process improvement: our test users spent a lot of time staring at the word grid, trying to find the suggestions. Highlighting the word and drawing the path made it easy to see what you needed to plug into the mobile app. The jsPlumb library was easy to use; however it doesn&#8217;t always work for mobile viewers.</p>
<p>To squeeze a little extra performance out of the solver, we worked on reducing the time required to use the solver. We added a &#8220;next word&#8221; button to help the user quickly page through the suggestions. We added a quick entry box for experienced users: quickly type all the letters in the 4 x 4 grid into the box and it will populate the grid for you. Simple stuff, but no sense in losing performance by neglecting basic UI elements&#8230;</p>
<p>Finally, don&#8217;t be reluctant to coach your users. The idea usage pattern for this particular solver is actually NOT to use it to play every word. I’ve gotten the best results by using the solver to identify the highest scoring words (juicing my score by 100 – 150 points), then using “word stemming” (plurals, prefixes, suffixes) to crank out a bunch of related words. The “inspiration” option is also pretty useful (Zygna gives you three words).</p>
<p>The final product works pretty well.The solver is more helpful to middle-of-the-road players, where it gives them a few hundred extra points per round. A good natural boggle player often solves the letter grid in their head faster than with the solver.</p>
<p>Before we close, I&#8217;d like to point out some of the stuff that we <strong>didn&#8217;t</strong> do in this approach. We didn&#8217;t waste any time trying to get the solver to work for a mobile browser&#8230; since that isn&#8217;t the reasonable use case (can&#8217;t flip back and forth fast enough). We also focused our work on only a handful of areas, ignoring several additional improvements, and recycled our existing code. This let me crank out a first working solver in only two evenings of work (one for the solver, one for the UI).</p>
<p>This was a fun little project: while the solver itself is a pretty frivolous application, jsPlumb seems like a pretty useful addition to my toolkit going forward. There are definitely some real world applications for this great little library.</p>
<p>More importantly, I now have a hope of beating my wife at Scramble with Friends!</p>
<p>If you liked this article, share it!</p>
<p>The post <a rel="nofollow" href="https://www.hanginghyena.com/blog/hacking-boggle-how-to-tweak-your-ui-to-speed-up-the-user-experience/">Hacking Boggle: Designing A Fast Solver For A Timed Word Game</a> appeared first on <a rel="nofollow" href="https://www.hanginghyena.com/blog">Hanging Hyena</a>.</p>
]]></content:encoded>
							<wfw:commentRss>https://www.hanginghyena.com/blog/hacking-boggle-how-to-tweak-your-ui-to-speed-up-the-user-experience/feed/</wfw:commentRss>
		<slash:comments>1</slash:comments>
							</item>
		<item>
		<title>New Improved Solver For Hanging With Friends</title>
		<link>https://www.hanginghyena.com/blog/new-improved-solver-for-hanging-with-friends/</link>
				<comments>https://www.hanginghyena.com/blog/new-improved-solver-for-hanging-with-friends/#respond</comments>
				<pubDate>Thu, 09 Feb 2012 04:59:06 +0000</pubDate>
		<dc:creator><![CDATA[Head Hyena]]></dc:creator>
				<category><![CDATA[Building The Site]]></category>
		<category><![CDATA[word solver]]></category>
		<category><![CDATA[analysis]]></category>
		<category><![CDATA[hanging with friends]]></category>
		<category><![CDATA[hangman solver]]></category>

		<guid isPermaLink="false">https://www.hanginghyena.com/blog/?p=104</guid>
				<description><![CDATA[<p>We just released a customized version of our Hangman Solver that has been tweaked to solve Hanging With Friends puzzles more efficiently. There are a couple of features in the Hanging With Friends game which allow you to dramatically reduce the number of possible words under certain circumstances. This experimental new solver takes advantage of &#8230; </p>
<p class="link-more"><a href="https://www.hanginghyena.com/blog/new-improved-solver-for-hanging-with-friends/" class="more-link">Continue reading<span class="screen-reader-text"> "New Improved Solver For Hanging With Friends"</span></a></p>
<p>The post <a rel="nofollow" href="https://www.hanginghyena.com/blog/new-improved-solver-for-hanging-with-friends/">New Improved Solver For Hanging With Friends</a> appeared first on <a rel="nofollow" href="https://www.hanginghyena.com/blog">Hanging Hyena</a>.</p>
]]></description>
								<content:encoded><![CDATA[<p>We just released a <a href="https://www.hanginghyena.com/hanging-with-friends-solver">customized version</a> of our Hangman Solver that has been tweaked to solve Hanging With Friends puzzles more efficiently. There are a couple of features in the Hanging With Friends game which allow you to dramatically reduce the number<br />
of possible words under certain circumstances. This experimental new solver takes advantage of this.</p>
<p><span id="more-104"></span></p>
<p>Give it a try and let us know what you think. It has the same basic look and feel as our regular Hangman Solver, which you are (hopefully) already using!</p>
<p>The post <a rel="nofollow" href="https://www.hanginghyena.com/blog/new-improved-solver-for-hanging-with-friends/">New Improved Solver For Hanging With Friends</a> appeared first on <a rel="nofollow" href="https://www.hanginghyena.com/blog">Hanging Hyena</a>.</p>
]]></content:encoded>
							<wfw:commentRss>https://www.hanginghyena.com/blog/new-improved-solver-for-hanging-with-friends/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
							</item>
		<item>
		<title>Building A Better Hangman Solver</title>
		<link>https://www.hanginghyena.com/blog/building-a-better-hangman-solver/</link>
				<comments>https://www.hanginghyena.com/blog/building-a-better-hangman-solver/#comments</comments>
				<pubDate>Thu, 26 Jan 2012 03:12:53 +0000</pubDate>
		<dc:creator><![CDATA[Head Hyena]]></dc:creator>
				<category><![CDATA[Building The Site]]></category>
		<category><![CDATA[word builder]]></category>
		<category><![CDATA[word solver]]></category>

		<guid isPermaLink="false">https://www.hanginghyena.com/blog/?p=46</guid>
				<description><![CDATA[<p>Several weeks ago, my wife and I were playing some word games on vacation. Some idle musing about these word games prompted some &#8220;code doodling&#8221; in Python, which eventually turned into the analytics module behind this site. The next step was to wrap a website around this code. The initial prototype was assembled relatively quickly &#8230; </p>
<p class="link-more"><a href="https://www.hanginghyena.com/blog/building-a-better-hangman-solver/" class="more-link">Continue reading<span class="screen-reader-text"> "Building A Better Hangman Solver"</span></a></p>
<p>The post <a rel="nofollow" href="https://www.hanginghyena.com/blog/building-a-better-hangman-solver/">Building A Better Hangman Solver</a> appeared first on <a rel="nofollow" href="https://www.hanginghyena.com/blog">Hanging Hyena</a>.</p>
]]></description>
								<content:encoded><![CDATA[<p>Several weeks ago, my wife and I were playing some word games on vacation. Some idle musing about these word games prompted some &#8220;code doodling&#8221; in Python, which eventually turned into the analytics module behind this site. The next step was to wrap a website around this code.</p>
<p><span id="more-46"></span></p>
<p>The initial prototype was assembled relatively quickly (over the course of a few nights) using components from other projects. After a month of testing and tweaking under the watchful eye of my wife, a diehard Hanging with Friends and Words With Friends fan, we were ready to share it with the world! And now you&#8217;re looking at <a href="https://www.hanginghyena.com/hangmansolver">it</a>&#8230;</p>
<p>So here are some features on the <a href="https://www.hanginghyena.com/hangmansolver">hangman word solver </a>that we&#8217;re particularly proud of:</p>
<ul>
<li>Interactive Word Entry &#8211; the list of potential words updates automatically after each key stroke (through the magic of AJAX and JSON)</li>
<li>Pagable Word List &#8211; words are displayed in a neatly digestible sets of 8 &#8211; you can page back and forth within your set. This is limited to a list of 50 words to keep the application quick&#8230;if you have more than 50 possible words, you should try&#8230;</li>
<li>Dynamic Letter Guesser &#8211; helps identify which letter to guess &#8211; this is based on an analysis of all the possible words that fit the given set of clues and calculates the probability that a letter is in the set of available words.</li>
<li>Can also be used to help identify words for a child&#8217;s letter bag&#8230;</li>
</ul>
<p>Recognizing that the best defense is a good offense, we also assembled a <a href="https://www.hanginghyena.com/hangmanwordbuilder">hangman word builder </a> that helps you build words from the tiles on your rack at the beginning of the game. Some of the cool features of the word builder:</p>
<ul>
<li>Same basic look and feel as the solver (real time updates, page though words); enter up to 16 letters and page through the top scoring results</li>
<li>Supports &#8220;tagging&#8221; a particular tile on the board for additional points (eg. double words, triple letter, etc.)</li>
<li>If you wish, can filter the list of possible words to incorporate a preset letter &#8211; this allows you to use this as a simple scrabble solver and anagram analyzer&#8230;</li>
</ul>
<p>It works nicely on the major desktop browsers and renders fairly well on mobile phones; go ahead and give it a <a href="https://www.hanginghyena.com/hangmansolver">Try!</a> (word solver)</p>
<p>&nbsp;</p>
<p>The post <a rel="nofollow" href="https://www.hanginghyena.com/blog/building-a-better-hangman-solver/">Building A Better Hangman Solver</a> appeared first on <a rel="nofollow" href="https://www.hanginghyena.com/blog">Hanging Hyena</a>.</p>
]]></content:encoded>
							<wfw:commentRss>https://www.hanginghyena.com/blog/building-a-better-hangman-solver/feed/</wfw:commentRss>
		<slash:comments>1</slash:comments>
							</item>
	</channel>
</rss>
