<?xml version="1.0" encoding="utf-8" ?>
<feed xmlns="http://www.w3.org/2005/Atom">
    <title>Mark Frimston</title>
    <subtitle>Overthinking it since 4.6e8</subtitle>
    <id>tag:markfrimston.co.uk,2012:articles</id>
    <link href="http://markfrimston.co.uk/atom.xml" rel="self" />
    <link href="http://markfrimston.co.uk" />
    <author>
        <name>Mark Frimston</name>
        <email>mark@markfrimston.co.uk</email>
    </author>
    <rights>Copyright (c) 2012-2024 Mark Frimston</rights>
    <updated>2024-10-11T17:39:41.395752Z</updated>
    
        <entry>
            <title>Look, Costa Coffee</title>
            <id>tag:markfrimston.co.uk,2017-12-15:look-costa-coffee</id>
            <published>2017-12-15T00:00:00Z</published>
            <updated>2017-12-15T00:00:00Z</updated>
            <content type="xhtml"
                    xml:base="http://markfrimston.co.uk/">
                <div xmlns="http://www.w3.org/1999/xhtml">
                    
                        <p>Look, Costa Coffee, it’s really quite simple.</p>
<p><img alt="Cappuccino Orders" src="/images/cappuccino-orders-2.png" /></p>
<p>Let:</p>
<table>
<thead>
<tr>
<th></th>
<th></th>
</tr>
</thead>
<tbody>
<tr>
<td><em>l(x)</em></td>
<td><em>x</em> is lactose intolerant</td>
</tr>
<tr>
<td><em>s(x)</em></td>
<td><em>x</em> wants soy milk in their cappuccino</td>
</tr>
<tr>
<td><em>c(x)</em></td>
<td><em>x</em> wants chocolate powder on top</td>
</tr>
</tbody>
</table>
<p>Then:</p>
                        <p>
                            <a href="http://markfrimston.co.uk/articles/look-costa-coffee.html">
                                [Continue reading...]
                            </a>
                        </p>
                    
                </div>
            </content>
        </entry>
    
        <entry>
            <title>Epoch Zero</title>
            <id>tag:markfrimston.co.uk,2016-08-27:epoch-zero</id>
            <published>2016-08-27T00:00:00Z</published>
            <updated>2016-08-27T00:00:00Z</updated>
            <content type="xhtml"
                    xml:base="http://markfrimston.co.uk/">
                <div xmlns="http://www.w3.org/1999/xhtml">
                    
                        <p>Having worked on a couple of software systems that required localisation for 
multiple countries, I’ve encountered many situations where, much to my dismay, 
I’ve needed to dip into the baffling world of international time zones. Time
zones are one of those awkward real-world domains, the rules for which have 
evolved independently over many years across many different authorities. They
are chock-full of arbitrary edge cases that fly in the face of the kind of neat,
organised abstractions that software developers love. <a href="https://en.wikipedia.org/wiki/Tom_Scott_(entertainer)">Tom Scott</a> sums up the 
problems brilliantly in one of his videos from the Computerphile channel on 
YouTube, <a href="https://www.youtube.com/watch?v=-5wpm-gesOY">The Problem With Time &amp; Timezones</a>.</p>
                        <p>
                            <a href="http://markfrimston.co.uk/articles/epoch-zero.html">
                                [Continue reading...]
                            </a>
                        </p>
                    
                </div>
            </content>
        </entry>
    
        <entry>
            <title>Gift Giving: A Chart</title>
            <id>tag:markfrimston.co.uk,2015-12-19:gift-giving---a-chart</id>
            <published>2015-12-19T00:00:00Z</published>
            <updated>2015-12-19T00:00:00Z</updated>
            <content type="xhtml"
                    xml:base="http://markfrimston.co.uk/">
                <div xmlns="http://www.w3.org/1999/xhtml">
                    
                        <p><img alt="Gift Giving" src="/images/gifts.png" /></p>
                    
                </div>
            </content>
        </entry>
    
        <entry>
            <title>Super Sam World</title>
            <id>tag:markfrimston.co.uk,2015-06-15:super-sam-world</id>
            <published>2015-06-15T00:00:00Z</published>
            <updated>2015-06-15T00:00:00Z</updated>
            <content type="xhtml"
                    xml:base="http://markfrimston.co.uk/">
                <div xmlns="http://www.w3.org/1999/xhtml">
                    
                        <p>Last month I was asked very nicely by [Manchester Girl Geeks] organiser 
[Sam Headleand] if I would consider making a simple platform game for their
BarCamp event. So after a bit of coding with [PyGame] I came up with:</p>
<p><img alt="Super Sam World - Episode 0: Race to the BarCamp" src="/images/samworld-1.jpg" /></p>
                        <p>
                            <a href="http://markfrimston.co.uk/articles/super-sam-world.html">
                                [Continue reading...]
                            </a>
                        </p>
                    
                </div>
            </content>
        </entry>
    
        <entry>
            <title>Ascidia</title>
            <id>tag:markfrimston.co.uk,2015-06-07:ascidia</id>
            <published>2015-06-07T00:00:00Z</published>
            <updated>2015-06-07T00:00:00Z</updated>
            <content type="xhtml"
                    xml:base="http://markfrimston.co.uk/">
                <div xmlns="http://www.w3.org/1999/xhtml">
                    
                        <p>A few years ago I wrote <a href="http://github.com/Frimkron/Ascidia">an ASCII diagram parser</a> in Python. I never got round 
to blogging about it at the time, but now I want to finally get some of my
thoughts about it down in writing.</p>
                        <p>
                            <a href="http://markfrimston.co.uk/articles/ascidia.html">
                                [Continue reading...]
                            </a>
                        </p>
                    
                </div>
            </content>
        </entry>
    
        <entry>
            <title>Quick Python Web Setup for Apache</title>
            <id>tag:markfrimston.co.uk,2014-10-07:quick-python-web-setup-for-apache</id>
            <published>2014-10-07T00:00:00Z</published>
            <updated>2014-10-07T00:00:00Z</updated>
            <content type="xhtml"
                    xml:base="http://markfrimston.co.uk/">
                <div xmlns="http://www.w3.org/1999/xhtml">
                    
                        <p>Today I wanted to set up a quick web script; just something that ran on the 
Apache server I already had set up, took some query parameters and spat out 
a basic page in response. My usual go-to for this kind of thing would typically
be PHP, because it’s so quick to throw together and deploy. But this time, I 
wanted to see what the Python equivalent would be. Is it possible to write a
quick Python script, drop it on a server and have it just work? Well, yes, it 
turns out it is. Or very close, at least. Here’s how…</p>
                        <p>
                            <a href="http://markfrimston.co.uk/articles/quick-python-web-setup-for-apache.html">
                                [Continue reading...]
                            </a>
                        </p>
                    
                </div>
            </content>
        </entry>
    
        <entry>
            <title>Mipmap Caveats for 2D Sprites</title>
            <id>tag:markfrimston.co.uk,2014-08-31:mipmap-caveats-for-2d-sprites</id>
            <published>2014-08-31T00:00:00Z</published>
            <updated>2014-08-31T00:00:00Z</updated>
            <content type="xhtml"
                    xml:base="http://markfrimston.co.uk/">
                <div xmlns="http://www.w3.org/1999/xhtml">
                    
                        <p>Recently I have been having some issues with sprites in the game I’m currently 
working on. It’s a 2D game and I’m using OpenGL to render textured triangle 
pairs for my sprites. Let me explain some of the caveats I’ve run into with 
regard to mipmaps.</p>
                        <p>
                            <a href="http://markfrimston.co.uk/articles/mipmap-caveats-for-2d-sprites.html">
                                [Continue reading...]
                            </a>
                        </p>
                    
                </div>
            </content>
        </entry>
    
        <entry>
            <title>Hear! Hear! Sneaking Hat Get</title>
            <id>tag:markfrimston.co.uk,2013-11-13:hear-hear-sneaking-hat-get</id>
            <published>2013-11-13T00:00:00Z</published>
            <updated>2013-11-13T00:00:00Z</updated>
            <content type="xhtml"
                    xml:base="http://markfrimston.co.uk/">
                <div xmlns="http://www.w3.org/1999/xhtml">
                    
                        <p>I’ve been going to the <a href="http://twitter.com/mcrgamejam">Manchester Game Jam</a> ever since the awesome <a href="http://blog.danhett.com">Dan Hett</a>
started it up over a year ago at <a href="http://madlab.org.uk">MadLab</a> in Manchester’s northern quarter. 
It’s so much fun to turn up with a laptop, blast out a game idea over the 
course of a weekend and see how it turns out. Most of the time, what seems like
a great idea on paper turns out to be a terrible idea in practice, once you can
see it moving in the form of a prototype. Occasionally though, an idea will 
work, and at the last-but-one game jam this happened to me.</p>
                        <p>
                            <a href="http://markfrimston.co.uk/articles/hear-hear-sneaking-hat-get.html">
                                [Continue reading...]
                            </a>
                        </p>
                    
                </div>
            </content>
        </entry>
    
        <entry>
            <title>Why Isn&#39;t Microsoft Telnet Echoing Locally Any More?</title>
            <id>tag:markfrimston.co.uk,2013-06-01:why-isnt-microsoft-telnet-echoing-locally-any-more</id>
            <published>2013-06-01T00:00:00Z</published>
            <updated>2013-06-01T00:00:00Z</updated>
            <content type="xhtml"
                    xml:base="http://markfrimston.co.uk/">
                <div xmlns="http://www.w3.org/1999/xhtml">
                    
                        <p>Recently, for the <a href="http://mcrraspjam.org.uk/">Manchester Raspberry Jam</a>, I decided to write an extremely 
simple MUD game which could be run on the Raspberry Pi. The aim was to create
something fun that might spark curiosity for someone learning to program. The
code is <a href="http://github.com/frimkron/mud-pi">up on GitHub</a>.</p>
<p>Getting the server to work with Microsoft’s Telnet client that ships with 
Windows (or doesn’t, as is currently the case), proved to be a bit of a pain. 
In Linux I could connect to the server, type a command, and as I typed I would
be able to see the letters appearing in my local terminal. When I hit enter, 
the server would receive the whole line I had typed. All good.</p>
<p>In Windows, however, the first problem I discovered was that the telnet client
is no longer installed by default for Vista onwards. Vista / 7 / 8 users have 
to follow <a href="http://technet.microsoft.com/en-us/library/cc771275%28v=ws.10%29.aspx">this guide</a> to enable it.</p>
                        <p>
                            <a href="http://markfrimston.co.uk/articles/why-isnt-microsoft-telnet-echoing-locally-any-more.html">
                                [Continue reading...]
                            </a>
                        </p>
                    
                </div>
            </content>
        </entry>
    
        <entry>
            <title>Cluedo - Family Christmas Variant</title>
            <id>tag:markfrimston.co.uk,2013-04-01:cluedo---family-christmas-variant</id>
            <published>2013-04-01T00:00:00Z</published>
            <updated>2013-04-01T00:00:00Z</updated>
            <content type="xhtml"
                    xml:base="http://markfrimston.co.uk/">
                <div xmlns="http://www.w3.org/1999/xhtml">
                    
                        <p>A despair-inducing variation on the classic detective game Cluedo (or Clue) for
2-6 overstuffed and resentfully blood-related players at Christmas time.</p>
<p>Rules of the game are the same as the standard version, but with the following 
additions:</p>
                        <p>
                            <a href="http://markfrimston.co.uk/articles/cluedo---family-christmas-variant.html">
                                [Continue reading...]
                            </a>
                        </p>
                    
                </div>
            </content>
        </entry>
    
        <entry>
            <title>How&#39;s That Game Going?</title>
            <id>tag:markfrimston.co.uk,2013-04-01:hows-that-game-going</id>
            <published>2013-04-01T00:00:00Z</published>
            <updated>2013-04-01T00:00:00Z</updated>
            <content type="xhtml"
                    xml:base="http://markfrimston.co.uk/">
                <div xmlns="http://www.w3.org/1999/xhtml">
                    
                        <p>It’s been 3 months since <a href="http://markfrimston.co.uk/articles/a-declaration-i-will-make-this-game.html">my post previous about the game I’m working on</a>.
This is the game that I’m determined to finish no matter what - a simple 
2-player strategy game centered around a cannon-firing mechanic - think <em>Worms</em>
but on an isometric map. </p>
<p>What’s happened with it since then? Well, </p>
                        <p>
                            <a href="http://markfrimston.co.uk/articles/hows-that-game-going.html">
                                [Continue reading...]
                            </a>
                        </p>
                    
                </div>
            </content>
        </entry>
    
        <entry>
            <title>Order Direction Icons</title>
            <id>tag:markfrimston.co.uk,2013-01-26:order-direction-icons</id>
            <published>2013-01-26T00:00:00Z</published>
            <updated>2013-01-26T00:00:00Z</updated>
            <content type="xhtml"
                    xml:base="http://markfrimston.co.uk/">
                <div xmlns="http://www.w3.org/1999/xhtml">
                    
                        <p>There’s something that’s bugged me for the entire time I’ve been using a PC. It
concerns a fairly standard UI component that I’m sure you’ll be familiar with: 
the orderable table.</p>
<p><img alt="An Orderable Table" src="/images/orderable-table.png" /></p>
<p>As you’re probably aware, a table like this usually holds rows of data which 
can be sorted by any of the table’s columns. Clicking on a column header will
order the data by that column. Clicking this column again will toggle the order
direction between ascending order and descending order. It’s a great idea. 
However, my issue has always been with the icon indicating the order direction.</p>
                        <p>
                            <a href="http://markfrimston.co.uk/articles/order-direction-icons.html">
                                [Continue reading...]
                            </a>
                        </p>
                    
                </div>
            </content>
        </entry>
    
        <entry>
            <title>RageML - XML Markup for Rage Comics</title>
            <id>tag:markfrimston.co.uk,2013-01-23:rageml---xml-markup-for-rage-comics</id>
            <published>2013-01-23T00:00:00Z</published>
            <updated>2013-01-23T00:00:00Z</updated>
            <content type="xhtml"
                    xml:base="http://markfrimston.co.uk/">
                <div xmlns="http://www.w3.org/1999/xhtml">
                    
                        <p>Oh dear - I’ve been procrastinating. NSFW warning for some rude words in this 
post. Around a month ago <a href="http://justfiona.com">Fiona</a> and I stumbled across <a href="http://blog.harshadsharma.com/ghost-redirects-in-django">this blog post</a>
about an issue with <a href="https://www.djangoproject.com">Django</a>. The post was very helpful and saved Fi a lot of 
headaches, so thanks to Harshad Sharma for that.</p>
<p>What caught my attention, though, was that fact that the post consists entirely
of a <a href="http://knowyourmeme.com/memes/rage-comics">rage comic</a>. A rage comic, for the uninitiated, is an internet meme 
wherein a hilarious anecdote is retold in the form a crudely-drawn comic strip,
usually full of cartoon facial expressions which are themselves internet memes.
I joked that such a blog post, due to its entirely rasterised nature, would be 
difficult for a search engine to index. Difficult, that is, unless the comic’s 
semantics could be encoded as text-based data. Sometimes, a joke gets out of 
hand. </p>
                        <p>
                            <a href="http://markfrimston.co.uk/articles/rageml---xml-markup-for-rage-comics.html">
                                [Continue reading...]
                            </a>
                        </p>
                    
                </div>
            </content>
        </entry>
    
        <entry>
            <title>A Declaration: I Will Make This Game</title>
            <id>tag:markfrimston.co.uk,2012-12-23:a-declaration---i-will-make-this-game</id>
            <published>2012-12-23T00:00:00Z</published>
            <updated>2012-12-23T00:00:00Z</updated>
            <content type="xhtml"
                    xml:base="http://markfrimston.co.uk/">
                <div xmlns="http://www.w3.org/1999/xhtml">
                    
                        <h3>Games are Hard</h3>
<p>Making videogames has been a hobby of mine since since my mid teens. In fact, 
even before I learned to program I used to write choose-your-own-adventure 
stories based on games I had played. Yet, despite a long trail of unfinished 
projects, abandoned due to over-ambition, boredom or distraction, I’ve never 
released anything I would call a finished game. I’ve finished the occasional
thrown-together competition entry for <a href="http://ludumdare.com/compo">Ludum Dare</a>, and now and again I’ve
had the motivation to round off some small experiment into something 
functionally complete but too small in scope to be noteworthy.</p>
<p>You see, it turns out that making games is hard. 
Not just hard in the sense that it’s <em>technically</em> demanding, because after </p>
                        <p>
                            <a href="http://markfrimston.co.uk/articles/a-declaration---i-will-make-this-game.html">
                                [Continue reading...]
                            </a>
                        </p>
                    
                </div>
            </content>
        </entry>
    
        <entry>
            <title>Correcting Photo Dates on the Xperia X10 Mini</title>
            <id>tag:markfrimston.co.uk,2012-11-25:correcting-photo-dates-on-the-xperia-x10-mini</id>
            <published>2012-11-25T00:00:00Z</published>
            <updated>2012-11-25T00:00:00Z</updated>
            <content type="xhtml"
                    xml:base="http://markfrimston.co.uk/">
                <div xmlns="http://www.w3.org/1999/xhtml">
                    
                        <p>I have the catchily-named <em>Sony Ericsson Xperia X10 Mini Pro</em> smartphone. The 
device runs a customised version of Android that Sony Ericsson developed to 
make better use of the unusually small screen size. Among the customised apps
is a photo album which displays all the pictures taken with the device’s 
camera, ordered by date and grouped into months.</p>
<p>One annoyance I’ve found with this app, however, is the way the photo ordering 
is achieved. </p>
                        <p>
                            <a href="http://markfrimston.co.uk/articles/correcting-photo-dates-on-the-xperia-x10-mini.html">
                                [Continue reading...]
                            </a>
                        </p>
                    
                </div>
            </content>
        </entry>
    
        <entry>
            <title>Hrbrt - Human Readable Branching Text Format</title>
            <id>tag:markfrimston.co.uk,2012-10-01:hrbrt---human-readable-branching-text-format</id>
            <published>2012-10-01T00:00:00Z</published>
            <updated>2012-10-01T00:00:00Z</updated>
            <content type="xhtml"
                    xml:base="http://markfrimston.co.uk/">
                <div xmlns="http://www.w3.org/1999/xhtml">
                    
                        <p>This is a project that I decided to undertake one day and which is only 
semi-serious. It exists mostly due to both my recent curiosity with 
<a href="http://en.wikipedia.org/wiki/Parsing_expression_grammar">Parsing Expression Grammars</a>, and a stubborn refusal to give up on a 
blatantly terrible idea. Oh, and a love for John Gruber’s <a href="http://daringfireball.net/projects/markdown/">Markdown</a> 
and the principles behind its design.</p>
<h3>Motivation</h3>
<p>Sometimes, a simple message is not a sufficiently productive way of
communicating with someone. After a small number of back and forth emails, 
someone will decide to pick up the phone or meet in person to have a 
face-to-face conversation. This way, the feedback loop is shorter and each 
question can be devised based on the previous answer received in order to 
exchange the necessary information between participants.</p>
<p>Face to face conversations are not always possible, however. And waiting for </p>
                        <p>
                            <a href="http://markfrimston.co.uk/articles/hrbrt---human-readable-branching-text-format.html">
                                [Continue reading...]
                            </a>
                        </p>
                    
                </div>
            </content>
        </entry>
    
        <entry>
            <title>Screenshot Saturday RSS - Scratching an Itch</title>
            <id>tag:markfrimston.co.uk,2012-08-06:screenshot-saturday-rss---scratching-an-itch</id>
            <published>2012-08-06T00:00:00Z</published>
            <updated>2012-08-06T00:00:00Z</updated>
            <content type="xhtml"
                    xml:base="http://markfrimston.co.uk/">
                <div xmlns="http://www.w3.org/1999/xhtml">
                    
                        <h3>#ScreenshotSaturday</h3>
<p>Over the years, <a href="http://twitter.com">Twitter</a> has become increasingly  popular with indie game 
developers. At some point, the hashtag <a href="https://twitter.com/#!/search/realtime/%23screenshotsaturday">#ScreenshotSaturday</a> was 
invented to tag screenshots of game developers’ work in progress each week. The
hashtag is a great way to get a sneak peek at what people are cooking up, and a
great way to discover creators and their games that you might otherwise have 
not heard of.</p>
<p>As the tag gained popularity, a couple of websites were created by the indie 
community to parse the twitter feed and showcase the images being posted to
twitter. The first, <a href="http://screenshotsaturday.com">screenshotsaturday.com</a> created by <a href="http://twitter.com/Pekuja">Pekuja</a>, and 
the second, <a href="http://screenshotsaturday.frogames.com">screenshotsaturday.frogames.com</a> created by 
<a href="http://twitter.com/MathieuFrogames">Mathieu of Frogames</a>. There may even be more, I’m not sure.</p>
<p>As an avid user of [Google Reader] however, I thought it was a shame that </p>
                        <p>
                            <a href="http://markfrimston.co.uk/articles/screenshot-saturday-rss---scratching-an-itch.html">
                                [Continue reading...]
                            </a>
                        </p>
                    
                </div>
            </content>
        </entry>
    
        <entry>
            <title>Some Features You May Not Know Nano Has</title>
            <id>tag:markfrimston.co.uk,2012-06-26:some-features-you-may-not-know-nano-has</id>
            <published>2012-06-26T00:00:00Z</published>
            <updated>2012-06-26T00:00:00Z</updated>
            <content type="xhtml"
                    xml:base="http://markfrimston.co.uk/">
                <div xmlns="http://www.w3.org/1999/xhtml">
                    
                        <h3>Nano?</h3>
<p>When it comes to text editors in Linux, there are two major players which have 
famously been causing holy wars for at least a couple of hundred years now: 
<a href="http://www.vim.org/">Vi</a> and <a href="http://www.gnu.org/software/emacs/">Emacs</a>. They are both extremely powerful, lightweight 
editors whose ages are a testament to how useful they have been and continue to
be. </p>
<p>If you are already a <em>Vi</em> or <em>Emacs</em> user, then great! If you’re not, and you 
do a lot of code editing under Linux, you should probably consider learning one
of them. So, with that in mind, here’s another text editor that you may or may 
not have heard about: <a href="http://www.nano-editor.org/">GNU Nano</a>.</p>
<p>GNU Nano is a basic command-line text editor which is installed by default with
many Linux distributions. Nano is not intended to be anywhere near as 
feature-rich as <em>Vi</em> or <em>Emacs</em>. It is a very simple tool, but this means it 
requires little to no time investment to start using for basic file editing 
tasks. Nano’s core commands are easy to learn because they’re written out at 
the bottom of the screen, and files can be navigated intuitively with the 
cursor keys.</p>
<p>I find nano extremely handy, and it has some neat features that you may not 
have known about. In this post, I’d like to share some of nano’s more hidden 
capabilities.</p>
                        <p>
                            <a href="http://markfrimston.co.uk/articles/some-features-you-may-not-know-nano-has.html">
                                [Continue reading...]
                            </a>
                        </p>
                    
                </div>
            </content>
        </entry>
    
        <entry>
            <title>Code States</title>
            <id>tag:markfrimston.co.uk,2012-03-21:code-states</id>
            <published>2012-03-21T00:00:00Z</published>
            <updated>2012-03-21T00:00:00Z</updated>
            <content type="xhtml"
                    xml:base="http://markfrimston.co.uk/">
                <div xmlns="http://www.w3.org/1999/xhtml">
                    
                        <p>When programming, there are 4 states that I take my code through. These states 
and the steps taken to get between them can be summarised in this diagram:</p>
<p>``` text</p>
<p>( Start )
       |
       |  implement
       V                  <br />
   ( Works )
       |
       |  refactor
       V
    ( Nice )
       |
       |  optimise</p>
                        <p>
                            <a href="http://markfrimston.co.uk/articles/code-states.html">
                                [Continue reading...]
                            </a>
                        </p>
                    
                </div>
            </content>
        </entry>
    
        <entry>
            <title>Postfix Regex Fail</title>
            <id>tag:markfrimston.co.uk,2012-03-08:postfix-regex-fail</id>
            <published>2012-03-08T00:00:00Z</published>
            <updated>2012-03-08T00:00:00Z</updated>
            <content type="xhtml"
                    xml:base="http://markfrimston.co.uk/">
                <div xmlns="http://www.w3.org/1999/xhtml">
                    
                        <p>So I was diagnosing a problem at work. Automated emails were failing to send, 
but only in <em>some</em> cases. My investigation quickly revealed that the mail 
server was refusing to deliver them, instead giving back an error code and the 
following curious message:</p>
<blockquote>
<p>Chinese encoding not accepted by this server</p>
</blockquote>
<p>Chinese encoding? I checked the data being sent - there shouldn’t have ever 
been any kind of non-latin character data going into the emails. Maybe the 
application was using the wrong encoding for some reason? But I couldn’t find 
any evidence for this either. </p>
                        <p>
                            <a href="http://markfrimston.co.uk/articles/postfix-regex-fail.html">
                                [Continue reading...]
                            </a>
                        </p>
                    
                </div>
            </content>
        </entry>
    
        <entry>
            <title>Python Integer Division</title>
            <id>tag:markfrimston.co.uk,2012-03-08:python-integer-division</id>
            <published>2012-03-08T00:00:00Z</published>
            <updated>2012-03-08T00:00:00Z</updated>
            <content type="xhtml"
                    xml:base="http://markfrimston.co.uk/">
                <div xmlns="http://www.w3.org/1999/xhtml">
                    
                        <p>While working on a little game in <a href="http://python.org">Python</a> with <a href="http://pygame.org">PyGame</a>, I stumbled upon
a feature of the language which caught me by surprise. </p>
<p>In other languages, like <em>C</em> for example, when you divide an integer the result
is <em>truncated</em> to give an integer result. That is, the part after the decimal 
point is chopped off. For example, 10 / 3 is 3.333333… An integer division 
will chop the decimal part off the end and give the result as 3. Similarly 
-10 / 3 is -3.333333… and in C, dividing the int -10 by the int -3 will give 
the answer -3. Divide it, chop off the decimal places, easy.</p>
<p>Python’s integer division works in a subtly different way, however. </p>
                        <p>
                            <a href="http://markfrimston.co.uk/articles/python-integer-division.html">
                                [Continue reading...]
                            </a>
                        </p>
                    
                </div>
            </content>
        </entry>
    
        <entry>
            <title>re.split Separator Quirk</title>
            <id>tag:markfrimston.co.uk,2012-03-07:re-split-separator-quirk</id>
            <published>2012-03-07T00:00:00Z</published>
            <updated>2012-03-07T00:00:00Z</updated>
            <content type="xhtml"
                    xml:base="http://markfrimston.co.uk/">
                <div xmlns="http://www.w3.org/1999/xhtml">
                    
                        <p>I came across an odd quirk with <a href="http://python.org">Python</a>’s split-by-regular-expression 
function, recently. </p>
<p>The <code>re</code> module has a function <code>split</code> which takes a regex and a string and 
splits the string by occurrences of the regex, returning a list of substrings. 
Ordinarily it works how you might expect:</p>
<div class="codehilite"><pre><span></span><code><span class="o">&gt;&gt;&gt;</span> <span class="kn">import</span> <span class="nn">re</span>
<span class="o">&gt;&gt;&gt;</span> <span class="n">re</span><span class="o">.</span><span class="n">split</span><span class="p">(</span> <span class="s2">&quot;[A-Z]&quot;</span><span class="p">,</span> <span class="s2">&quot;HowNowBrownCow&quot;</span> <span class="p">)</span>
<span class="p">[</span><span class="s1">&#39;&#39;</span><span class="p">,</span> <span class="s1">&#39;ow&#39;</span><span class="p">,</span> <span class="s1">&#39;ow&#39;</span><span class="p">,</span> <span class="s1">&#39;rown&#39;</span><span class="p">,</span> <span class="s1">&#39;ow&#39;</span><span class="p">]</span>
</code></pre></div>

<p>Here I’m splitting the string “HowNowBrownCow” by capital letters. The </p>
                        <p>
                            <a href="http://markfrimston.co.uk/articles/re-split-separator-quirk.html">
                                [Continue reading...]
                            </a>
                        </p>
                    
                </div>
            </content>
        </entry>
    
        <entry>
            <title>Correct Code Examples Every Time with Doctest</title>
            <id>tag:markfrimston.co.uk,2012-03-07:correct-code-examples-every-time-with-doctest</id>
            <published>2012-03-07T00:00:00Z</published>
            <updated>2012-03-07T00:00:00Z</updated>
            <content type="xhtml"
                    xml:base="http://markfrimston.co.uk/">
                <div xmlns="http://www.w3.org/1999/xhtml">
                    
                        <p><a href="http://docs.python.org/library/doctest.html">Doctest</a> is a neat little <a href="http://python.org">Python</a> module created specifically for 
testing <em>documentation</em> code. “Testing documentation?!” I hear you cry. Why 
yes, you did hear me correctly. </p>
<p>Doctest will examine your source code, looking for what appear to be code 
examples. Any examples it finds, it will test using the Python interpreter and 
compare its result with the one documented. If they differ, Doctest will let 
you know. </p>
                        <p>
                            <a href="http://markfrimston.co.uk/articles/correct-code-examples-every-time-with-doctest.html">
                                [Continue reading...]
                            </a>
                        </p>
                    
                </div>
            </content>
        </entry>
    
        <entry>
            <title>Python Generators in Games</title>
            <id>tag:markfrimston.co.uk,2012-02-15:python-generators-in-games</id>
            <published>2012-02-15T00:00:00Z</published>
            <updated>2012-02-15T00:00:00Z</updated>
            <content type="xhtml"
                    xml:base="http://markfrimston.co.uk/">
                <div xmlns="http://www.w3.org/1999/xhtml">
                    
                        <p><a href="http://python.org">Python</a> has this really neat feature called <em>generators</em>. I’ve found them 
to be incredibly useful in my code, especially for games. You see, it turns 
out they’re great for handling animations, scripted sequences, and a whole 
bunch of stuff. </p>
<p>I’m going to talk primarily about generators in Python here, but generators 
exist in many other languages such as C# and Javascript, and I believe 
<a href="http://unity3d.com">Unity3D</a> also makes use of them for animations and such.</p>
<h3>Coroutines</h3>
<p>If you’re not familiar with the concept of a <a href="http://wikipedia.org/coroutine">coroutine</a>, excuse me while I 
blow your mind somewhat. When one calls a regular function, otherwise known as 
a subroutine, something like this happens:</p>
<p>``` text</p>
                        <p>
                            <a href="http://markfrimston.co.uk/articles/python-generators-in-games.html">
                                [Continue reading...]
                            </a>
                        </p>
                    
                </div>
            </content>
        </entry>
    
        <entry>
            <title>How to Explain a Board game to a Newbie</title>
            <id>tag:markfrimston.co.uk,2012-02-07:how-to-explain-a-boardgame-to-a-newbie</id>
            <published>2012-02-07T00:00:00Z</published>
            <updated>2012-02-07T00:00:00Z</updated>
            <content type="xhtml"
                    xml:base="http://markfrimston.co.uk/">
                <div xmlns="http://www.w3.org/1999/xhtml">
                    
                        <p>I adore board games. As a young child I played a lot of board games 
with my family, but as a teen, I got more into video games and 
board games took a back seat. More recently, however, Fiona and I 
have been discovering a whole world of really cool board games that 
we never even knew existed, thanks to sites like board game geek, and 
local board game groups that we go to. I love the mental challenge, 
the pleasant, relaxed socialising and most of all the game design 
inspiration I get from studying how these games work.</p>
<p>Being a total newbie to most of the games I’ve played recently, 
I’ve had to go through the process of leaning a new game quite a 
few times. Now, I’m not much of a quick learner, and I think that 
learning new games is probably a skill that one can get better at 
with practice. I imagine the more new board games you play, the better 
you get at learning the new sets of rules and adopting the appropriate 
strategies. But from my experience of trying to learn new games, I’ve 
noted a few things that I’ve found can help make things easier for 
newcomers.</p>
                        <p>
                            <a href="http://markfrimston.co.uk/articles/how-to-explain-a-boardgame-to-a-newbie.html">
                                [Continue reading...]
                            </a>
                        </p>
                    
                </div>
            </content>
        </entry>
    
        <entry>
            <title>Cat Names</title>
            <id>tag:markfrimston.co.uk,2012-02-06:cat-names</id>
            <published>2012-02-06T00:00:00Z</published>
            <updated>2012-02-06T00:00:00Z</updated>
            <content type="xhtml"
                    xml:base="http://markfrimston.co.uk/">
                <div xmlns="http://www.w3.org/1999/xhtml">
                    
                        <p>What our cat’s name is:</p>
<ul>
<li>Chips</li>
</ul>
<p>What we actually call her:</p>
<ul>
<li>Chippies</li>
<li>Chickpeas</li>
<li>Pips</li>
<li>Chipples</li>
<li>Chipsticks</li>
<li>Chipplies</li>
<li>Chipolata</li>
<li>Chiptastic</li>
<li>Chippy-cat</li>
<li>Pipples</li>
<li>Chaps</li>
<li>Chippa-Chips</li>
<li>Chippity Doo-Dah</li>
<li>Daddy or Chips</li>
<li>Chippaaay</li>
<li>Mr Chips</li>
<li>Chip-Chippity Chip-Chippity Chip-Chip Cheroo</li>
<li>The Fog Horn</li>
<li>Blimp-cat</li>
</ul>
                    
                </div>
            </content>
        </entry>
    
</feed>