<?xml version="1.0" encoding="UTF-8"?>
<rss xmlns:dc="http://purl.org/dc/elements/1.1/" version="2.0"><channel><atom:link rel="hub" href="http://tumblr.superfeedr.com/" xmlns:atom="http://www.w3.org/2005/Atom"/><description>
The latest news about Pixenomics.
Visit Pixenomics</description><title>Pixenomics</title><generator>Tumblr (3.0; @pixenomics)</generator><link>http://pixenomics.tumblr.com/</link><item><title>Rainbow Madness!</title><description>&lt;p&gt;While observing the new influx of players I noticed a new tactic take place that seems to be the most effective (more so than black and white).&lt;/p&gt;

&lt;p&gt;Arrange pixels alternating between Red, Green and Blue. Then at least one of the color channels will be within range of the opponent and the odds are much better (almost certain).&lt;/p&gt;</description><link>http://pixenomics.tumblr.com/post/18996601975</link><guid>http://pixenomics.tumblr.com/post/18996601975</guid><pubDate>Fri, 09 Mar 2012 09:47:15 +0000</pubDate></item><item><title>Using C for a specialized data store</title><description>&lt;p&gt;&lt;a href="http://pixenomics.com"&gt;Pixenomics&lt;/a&gt; stores and &lt;a href="http://pixenomics.tumblr.com/post/16895861678/how-to-send-1-2-million-pixels"&gt;transports 1.2 million pixels&lt;/a&gt; from the server to the client. During development we played with various methods to store and process this. Our ultimate goal was to send the entire board in under 1 second.&lt;/p&gt;

&lt;p&gt;During the stages of prototyping we used a MySQL database without thinking too much about performance. With a mere 2,000 pixels we quickly realised this wasn’t even usable as a demo. Changing the storage engine to memory was much better but still obviously unusable.&lt;/p&gt;

&lt;p&gt;The problem wasn’t to store the pixels but to retrieve all 1.2 million pixels quickly as well as process them. The game runs an algorithm every 3 hours to determine who wins or loses pixels based on the surrounding pixels’ color which means 9.6 million (1.2 million * 8) iterations.&lt;/p&gt;

&lt;p&gt;We were reluctant to use a NoSQL solution as this would require retrieving the pixels through a socket, storing it in memory and then processing them. It makes more sense to process it where it’s stored.&lt;/p&gt;

&lt;p&gt;This led to the idea of using Node.js. Node is the hottest new tech and was very simple to get a working prototype going. Initially our demo took around 7 seconds to grab an empty board (around 1.2 megs) and this was the lowest possible size. We were storing the pixels in an object where the key was a string of the pixel coordinates. It looked something like this:&lt;/p&gt;

&lt;pre&gt;&lt;code&gt;for(row = 0; row &amp;lt; ROWS; ++row) {
    for(col = 0; col &amp;lt; COLS; ++col) {
        output(board[col + "," + row]);
    }
}
&lt;/code&gt;&lt;/pre&gt;

&lt;p&gt;Turning the board into a multidimensional array shaved off 3 seconds:&lt;/p&gt;

&lt;pre&gt;&lt;code&gt;for(row = 0; row &amp;lt; ROWS; ++row) {
    for(col = 0; col &amp;lt; COLS; ++col) {
        output(board[col][row]);
    }
}
&lt;/code&gt;&lt;/pre&gt;

&lt;p&gt;So in the end we could retrieve the entire board in about 4 seconds. This is still much too slow. We decided the only realistic option left was to go deeper. We had to use C.&lt;/p&gt;

&lt;p&gt;A daemon would store the pixels in a multidimensional array where it can be processed, modified and interface with PHP through sockets just like any other data storage. For persistent storage we write the board to a file and scp it to another server every hour or so. This presents another problem where writing becomes slow because it has to backup the entire board. To solve this we just wrote the file in a tmpfs (file system in memory).&lt;/p&gt;

&lt;p&gt;The result of grabbing 1.2 million pixels using C?&lt;/p&gt;

&lt;p&gt;&amp;#8230;&lt;/p&gt;

&lt;p&gt;0.03 seconds.&lt;/p&gt;

&lt;p&gt;This was a result we didn’t even think would be achievable but shows how C is still very relevant in web applications today and a good choice when it comes to large amounts of data processing and retrieval.&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;Note:&lt;/strong&gt; This article is a very simplistic view of what you should use to store data. There are many other concerns that may be more important such as concurrency, security, backups and portability. We were looking for the fastest way to get a lot of data processed and to the client and this was it.&lt;/p&gt;</description><link>http://pixenomics.tumblr.com/post/18892378997</link><guid>http://pixenomics.tumblr.com/post/18892378997</guid><pubDate>Wed, 07 Mar 2012 06:32:00 +0000</pubDate><category>c</category><category>data store</category><category>data</category><category>storage</category><category>memory</category></item><item><title>Why pixel advertising failed and a simple attempt at fixing it</title><description>&lt;p class="MsoNormal"&gt;Once an interesting novelty, pixel advertising is now a dead form of advertising made popular by The Million Dollar Home Page. The website would sell a pixel for $1 on a board with 1 million pixels. It quickly became a hit in a matter of days which led to various imitation sites; though they didn&amp;#8217;t seem to do so well. It also led to various websites hosting a smaller board in a spot generally reserved for advertisements; again this wasn&amp;#8217;t very popular.&lt;/p&gt;
&lt;p class="MsoNormal"&gt;Why was the Million Dollar Home Page so successful and the others not?&lt;/p&gt;
&lt;ol&gt;&lt;li&gt;&lt;span&gt;&lt;strong&gt;It relied on a gimmick&lt;/strong&gt;. It wasn&amp;#8217;t intended to be a serious and sustainable platform for advertisements. Other imitation sites have tried tweaking the idea such as temporary pixels or a better interface but it will never get the same attention because it&amp;#8217;s already been done.&lt;/span&gt;&lt;/li&gt;
&lt;li&gt;&lt;span&gt;&lt;strong&gt;It only benefits the advertisers&lt;/strong&gt;. If the everyday person visiting the site has no real motivation to visit other than the novelty, they are less likely to return or even click an ad. This means the advertising is not very effective and advertisers will be less inclined to buy space.&lt;/span&gt;&lt;/li&gt;
&lt;li&gt;&lt;span&gt;&lt;strong&gt;The space is too small&lt;/strong&gt;. Other forms of advertising offer much more space to fit an ad with room to include a spiel.&lt;/span&gt;&lt;/li&gt;
&lt;li&gt;&lt;span&gt;&lt;strong&gt;Too expensive for the common user&lt;/strong&gt;. Not everyone can afford to advertise but why should that stop them.&lt;/span&gt;&lt;/li&gt;
&lt;/ol&gt;&lt;p class="MsoNormal"&gt;&lt;a href="http://pixenomics.com" title="Pixenomics"&gt;Pixenomics&lt;/a&gt; is an attempt at solving these problems.&lt;/p&gt;
&lt;ul&gt;&lt;li&gt;&lt;strong&gt;It&amp;#8217;s a game&lt;/strong&gt;. It isn&amp;#8217;t meant to be a gimmick that has one use. The advertising is just one of the appeals for playing the game where the goal and reward is pixel ownership.&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;It benefits all parties&lt;/strong&gt;. Players benefit by potentially making money from selling pixels they win as well as the thrill of the game. Advertisers benefit because users are more likely to return when there is a gameplay aspect.&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;10 free pixels&lt;/strong&gt;. Anyone can make an account and gain lots of pixels without paying assuming they play the game well. The default price for a pixel is 10 cents, much more affordable should someone want to buy pixels instead of playing the game.&lt;/li&gt;
&lt;/ul&gt;&lt;p&gt;If this sounds like an interesting game please &lt;a href="http://pixenomics.com" title="Pixenomics"&gt;share the link with friends&lt;/a&gt;. More players means more pixels to invade!&lt;/p&gt;</description><link>http://pixenomics.tumblr.com/post/18044599822</link><guid>http://pixenomics.tumblr.com/post/18044599822</guid><pubDate>Wed, 22 Feb 2012 01:49:32 +0000</pubDate><category>pixel advertising</category><category>pixel</category><category>advertising</category><category>marketing</category></item><item><title>Why you should be using the 'Laterbase' for your projects</title><description>&lt;p&gt;It seems the most common pitfall in the development of a project is feature creep. Developers get sidetracked by inventing new features that ultimately extends the development time. The most important part of any project is to get it out in the wild, observe your audience&amp;#8217;s reaction and make changes according to their feedback.&lt;/p&gt;
&lt;p&gt;This is why you need a &lt;strong&gt;laterbase&lt;/strong&gt; (made famous by &lt;a href="http://www.youtube.com/watch?v=KZOeJ2Nr484" title="Peep Show - Laterbase" target="_blank"&gt;Alan Johnson from Peep Show&lt;/a&gt;). The laterbase is a glorious repository for unnecessary features that don&amp;#8217;t make the release date any closer. This could be as simple as a todo list or an issue tracker label.&lt;/p&gt;
&lt;p&gt;It&amp;#8217;s important to feel comfortable deciding when something is not vital and although it may make the project oh-so-amazing it doesn&amp;#8217;t mean much if no one can use it. The laterbase isn&amp;#8217;t just a trash can of ideas. You can always come back to it, but you come back to it after having your users give feedback. The feature may not be a great idea and your audience will tell you if it is or isn&amp;#8217;t.&lt;/p&gt;
&lt;p&gt;The laterbase helped us immensely during development of &lt;a href="http://pixenomics.com" title="Pixenomics"&gt;Pixenomics&lt;/a&gt;. We had (and still have) some great ideas to implement but they are all currently sitting in the laterbase; releasing was more important. By doing this we managed to do the majority of the project in a month&amp;#8212; part time. After some feedback from players and observing how they utilized it we&amp;#8217;ve discovered more important issues that we didn&amp;#8217;t even foresee before release.&lt;/p&gt;
&lt;p&gt;Use the laterbase! Feel comfortable putting off ideas. It will save you a lot of work and will get you to your end goal of a usable product much much quicker.&lt;/p&gt;</description><link>http://pixenomics.tumblr.com/post/17919128052</link><guid>http://pixenomics.tumblr.com/post/17919128052</guid><pubDate>Mon, 20 Feb 2012 01:45:00 +0000</pubDate><category>project management</category><category>laterbase</category></item><item><title>10 FREE Pixels for 1 tweet!</title><description>&lt;blockquote&gt;
&lt;p&gt;&lt;strong&gt;1 tweet = 10 FREE pixels.&lt;/strong&gt;&lt;/p&gt;
&lt;/blockquote&gt;
&lt;p&gt;Simply tweet about &lt;a href="http://twitter.com/pixenomics" title="Pixenomics on Twitter" target="_blank"&gt;@pixenomics&lt;/a&gt; and send us a direct message with your email address and we will credit your account with 10 free pixels worth $1!&lt;/p&gt;
&lt;p&gt;If your tweet gets over 10 retweets we will credit your account with 50 pixels worth $5.&lt;/p&gt;
&lt;p&gt;So get tweeting!&lt;/p&gt;
&lt;p&gt;&lt;em&gt;(1 tweet per account only)&lt;/em&gt;&lt;/p&gt;</description><link>http://pixenomics.tumblr.com/post/17875706357</link><guid>http://pixenomics.tumblr.com/post/17875706357</guid><pubDate>Sun, 19 Feb 2012 09:27:14 +0000</pubDate><category>free advertising</category><category>ads</category><category>advertising</category><category>marketing</category><category>free ads</category><category>ad</category></item><item><title>10 shameless ways to market online for next to nothing</title><description>&lt;p&gt;&lt;strong&gt;10. Social media&lt;/strong&gt;&lt;/p&gt;
&lt;p&gt;This seems like an obvious one, because it is. If you don&amp;#8217;t have a twitter account and blog make one now! Maybe even make a facebook page if you&amp;#8217;re really shameless. These platforms are almost the foundation of free advertising. Make sure you customize your account inline with your identity (think color, style, target audience).&lt;/p&gt;
&lt;p&gt;&lt;strong&gt;9. AdWords&lt;/strong&gt;&lt;/p&gt;
&lt;p&gt;A cheap way to advertise on various websites related to your site with a budget of your choosing. This is the only point on the list that actually costs anything and I don&amp;#8217;t know how effective it is without a big budget but always a last measure if you&amp;#8217;re not feeling &lt;a href="http://www.youtube.com/watch?v=9C_HReR_McQ"&gt;creative&lt;/a&gt;.&lt;/p&gt;
&lt;p&gt;&lt;strong&gt;8. Link aggregators&lt;/strong&gt;&lt;/p&gt;
&lt;p&gt;By far the most hit or miss form of advertising. Posting your business on sites like &lt;a href="http://reddit.com"&gt;Reddit&lt;/a&gt; or &lt;a href="http://news.ycombinator.com"&gt;Hacker News&lt;/a&gt; is like the roulette of free advertising. You could end up with tens of thousands of views or about 100. Try and present it from the perspective of the viewer; why on earth would I care about your website? Make it sound interesting and important.&lt;/p&gt;
&lt;p&gt;&lt;strong&gt;7. Offer something free&lt;/strong&gt;&lt;/p&gt;
&lt;p&gt;Free Beer! Just visit my website and click my ads. Everyone likes free stuff. Visit &lt;a href="http://pixenomics.com" title="Pixenomics"&gt;Pixenomics&lt;/a&gt; for 10 free pixels to advertise your website! See how easy and shameless that is?&lt;/p&gt;
&lt;p&gt;&lt;strong&gt;6. Write blog posts&lt;/strong&gt;&lt;/p&gt;
&lt;p&gt;There&amp;#8217;s only so many ways you can spam the internet with a link to your website. Write blog posts related to your website that interests readers and you essentially have an infinite amount of content to market. At least some of those readers will checkout your website. &lt;/p&gt;
&lt;p&gt;&lt;a href="http://www.beansoftware.com/article-sites-master-list.aspx"&gt;Here is a lot of sites&lt;/a&gt; where you can submit your post to reach as many people as possible and where this post will likely go.&lt;/p&gt;
&lt;p&gt;&lt;strong&gt;5. Make infographics&lt;/strong&gt;&lt;/p&gt;
&lt;p&gt;Everyone loves infographs. They&amp;#8217;re informative, easy to read and entertaining. Similar to blog posts, just make one related to your site and be sure to mention your website a few times. This does require some design skill and research, the last thing you want to do is anger the internet with misinformation. Make it bright, colorful with big readable text and different fonts.&lt;/p&gt;
&lt;p&gt;&lt;strong&gt;4. Go viral&lt;/strong&gt;&lt;/p&gt;
&lt;p&gt;Easier said than done. Create a controversy, make a cool video, devise something you can create that people will almost always share with friends. Make an embaressing video of yourself; how shameless can you go?&lt;/p&gt;
&lt;p&gt;&lt;strong&gt;3. Guest articles on other blogs&lt;/strong&gt;&lt;/p&gt;
&lt;p&gt;There are millions of popular blog sites that love new content as much as you love advertising. Offer to write a guest post related to your site but make sure you have complete ownership and can host the same article on various other sites whenever.&lt;/p&gt;
&lt;p&gt;&lt;strong&gt;2. Email news websites&lt;/strong&gt;&lt;/p&gt;
&lt;p&gt;Find some news sites and look for contact forms or email addresses. Compile a big list and send them a specially crafted email letting them know about your site. This isn&amp;#8217;t as effective as some of the other points because it requires effort for them but it can&amp;#8217;t hurt.&lt;/p&gt;
&lt;p&gt;&lt;strong&gt;1. Pixenomics&lt;/strong&gt;&lt;/p&gt;
&lt;p&gt;Obviously the most unique and fun form of advertising is &lt;a href="http://pixenomics.com" title="Pixenomics"&gt;Pixenomics&lt;/a&gt;! Start with 10 free pixels and take over other player&amp;#8217;s pixels to make your ad bigger and bigger. Or if you&amp;#8217;re lazy you can buy a pixel for only 10 cents! Think of all the pixels you can buy with $10 (it&amp;#8217;s 100).&lt;/p&gt;
&lt;p&gt;Shameless&lt;/p&gt;</description><link>http://pixenomics.tumblr.com/post/17745245545</link><guid>http://pixenomics.tumblr.com/post/17745245545</guid><pubDate>Fri, 17 Feb 2012 02:35:00 +0000</pubDate><category>marketing</category><category>advertising</category><category>free</category><category>social media</category><category>adwords</category><category>infographics</category><category>infograph</category><category>viral</category><category>blog</category></item><item><title>Invert button added</title><description>&lt;p&gt;We noticed a lot of white pixels so to avoid a board with nothing but white pixels, there is now an &amp;#8216;Invert&amp;#8217; button that will change the background color to dark grey. The &amp;#8216;My Pixels&amp;#8217; button will no longer change the background color, just limit the drawn pixels to yours.&lt;/p&gt;</description><link>http://pixenomics.tumblr.com/post/17296255576</link><guid>http://pixenomics.tumblr.com/post/17296255576</guid><pubDate>Thu, 09 Feb 2012 02:00:52 +0000</pubDate></item><item><title>No more eCheques</title><description>&lt;p&gt;We have decided to block payments through eCheques. The payments take too long to process and end up with pixels that are in limbo until the funds are transferred which doesn&amp;#8217;t fit well with the style of the game.&lt;/p&gt;</description><link>http://pixenomics.tumblr.com/post/17295393353</link><guid>http://pixenomics.tumblr.com/post/17295393353</guid><pubDate>Thu, 09 Feb 2012 01:47:12 +0000</pubDate></item><item><title>Battle Tactics: 2</title><description>&lt;p&gt;Already I&amp;#8217;m starting to see some more battle tactics. One very effective in particular.&lt;/p&gt;
&lt;p&gt;&lt;strong&gt;The White Dwarf&lt;/strong&gt;&lt;br/&gt;Setting the pixels to be white means no one can see the pixels without hovering the mouse around the board.&lt;/p&gt;
&lt;p&gt;I am slightly inclined to allow players to change the background color of the board to black so we don&amp;#8217;t end up with a board of white.&lt;/p&gt;</description><link>http://pixenomics.tumblr.com/post/17192385130</link><guid>http://pixenomics.tumblr.com/post/17192385130</guid><pubDate>Tue, 07 Feb 2012 03:31:58 +0000</pubDate></item><item><title>Scheduled Maintenance</title><description>&lt;p&gt;We will have some down time in about 10 hours for around 30 minutes. Hopefully this will speed up moving pixels.&lt;/p&gt;</description><link>http://pixenomics.tumblr.com/post/17126715301</link><guid>http://pixenomics.tumblr.com/post/17126715301</guid><pubDate>Mon, 06 Feb 2012 00:56:14 +0000</pubDate></item><item><title>Battle Tactics</title><description>&lt;p&gt;If you&amp;#8217;ve been playing Pixenomics you will know how vital choosing the color is to invade your neighbors. But there are some tactics you might not know about that can help you take over the board.&lt;/p&gt;
&lt;p&gt;&lt;strong&gt;The Grey Idler&lt;/strong&gt;&lt;br/&gt;You can&amp;#8217;t monitor your pixels 24 hours a day so what happens when you sleep? Anyone could take over your pixels. However, if you set your pixels to a shade of grey (including black and white), your pixel won&amp;#8217;t have a dominant channel and a random channel is selected. This means your enemies can&amp;#8217;t know before the end of the cycle what channel will beat you.&lt;/p&gt;
&lt;p&gt;&lt;strong&gt;The Black Hole&lt;/strong&gt;&lt;br/&gt;Sometimes you want to select a dominant channel to go on the offensive. A sneaky move is to make your pixel full black, but make your desired dominant channel larger by just 1. Humans won&amp;#8217;t be able to tell from looking which the dominant channel is.&lt;/p&gt;
&lt;p&gt;&lt;strong&gt;City Gates&lt;/strong&gt;&lt;br/&gt;Create a border around your area with variances of Grey Idlers or Black Holes.&lt;/p&gt;
&lt;p&gt;&lt;strong&gt;Sell Out&lt;/strong&gt;&lt;br/&gt;Your pixels are for sale right now. Anyone could buy them. Choose a price and earn some pixel money. &lt;/p&gt;
&lt;p&gt;&lt;strong&gt;Buy Out&lt;/strong&gt;&lt;br/&gt;Similarly, you could just buy out your enemies; if you can afford it.&lt;/p&gt;
&lt;p&gt;Those are just some of the tactics I&amp;#8217;ve learnt thus far, but I&amp;#8217;m sure there are many more to be found!&lt;/p&gt;</description><link>http://pixenomics.tumblr.com/post/17078065765</link><guid>http://pixenomics.tumblr.com/post/17078065765</guid><pubDate>Sun, 05 Feb 2012 06:00:26 +0000</pubDate></item><item><title>How to send 1.2 million pixels</title><description>&lt;p&gt;The Pixenomics board size is 1200 pixels by 1000 pixels with an entire size of 1.2 million pixels. The data associated with that is the color (6 hex characters), the cost (4 characters) and the owner (up to 6 characters). This means roughly 16 characters per pixel.&lt;/p&gt;
&lt;p&gt;The first thing we changed is how this data is represented. First of all, all the data is converted to hex. Second we looked at how we could make the values smaller. The cost is stored in cents but only in increments of 10 cents. Therefore we can chop off a character by storing the cost in amounts of 10 cents. The owner ID was decided to be 4 characters so the largest value would be FFFF in hexadecimal or &lt;em&gt;65,535&lt;/em&gt;.&lt;/p&gt;
&lt;p&gt;Originally the pixel data was sent with it&amp;#8217;s location so that the pixels that didn&amp;#8217;t have any data associated with it, weren&amp;#8217;t sent at all and therefore saved space. But this introduced even more data to send with every pixel. The location would at most be 4 characters for the &lt;strong&gt;x&lt;/strong&gt; postion, a 1 character delimiter, and another 4 characters for the &lt;strong&gt;y&lt;/strong&gt; position.&lt;/p&gt;
&lt;p&gt;We changed this format so the pixel data is sent in the order that it appears in so the pixel location can be pulled out. This means that we have to send a character as a delimiter to indicate the absence of a pixel and will at the very least be 1.2 million bytes of data (or 1.2 megabytes).&lt;/p&gt;
&lt;p&gt;However, this format is perfect for compression because it can just say &amp;#8220;use this delimiter for the next million characters&amp;#8221; and we end up with a tiny amount of data to send.&lt;/p&gt;
&lt;p&gt;But we want the data to be up to date and grabbing the entire board every couple of seconds is a very inefficient way to update the board. To solve this we introduced logs. Whenever a change is made, a log is stored with a timestamp. So the client can just ask the server &amp;#8220;What has changed since the last time I checked?&amp;#8221; and it can either return nothing or the logs which tells us everything we need to know to keep the board up to date.&lt;/p&gt;
&lt;p&gt;There are some cases where this works against us. After every cycle there are lots of changes so the log data might end up being larger than the board itself. So in these cases we just tell the client: &amp;#8220;you&amp;#8217;re better off grabbing the entire board than reconstructing the many many changes&amp;#8221;.&lt;/p&gt;</description><link>http://pixenomics.tumblr.com/post/16895861678</link><guid>http://pixenomics.tumblr.com/post/16895861678</guid><pubDate>Thu, 02 Feb 2012 01:42:00 +0000</pubDate></item><item><title>Introduction</title><description>&lt;p&gt;This is the first post on the Pixenomics blog hosted at Tumblr despite a 5% uptime.&lt;/p&gt;
&lt;p&gt;Pixenomics is the game of pixel ownership; by force or by wealth. With your army of pixels you may do whatever you like. You can use it as advertising space or you can attack neighboring pixels. You can even sell them. The pixels you own are always for sale at a maximum price of $50 per pixel, but you may choose to lower this cost.&lt;/p&gt;
&lt;p&gt;The game was made by myself (Saul) and Jim with a budget of two Uni students. Executing this type of game wasn&amp;#8217;t easy. The sheer amount of pixel data to transmit proved a challenging task but we got there in the end.&lt;/p&gt;
&lt;p&gt;This blog will probably be home to our development based ranting or promotional plugs.&lt;/p&gt;</description><link>http://pixenomics.tumblr.com/post/16854501892</link><guid>http://pixenomics.tumblr.com/post/16854501892</guid><pubDate>Wed, 01 Feb 2012 06:30:11 +0000</pubDate></item></channel></rss>
