"Sometimes it was really easy to find cheats, because the code was very straightforward, and sometimes it was a massive pain in the arse," recalls Jon. "In simple terms, if a game started you with three lives I'd set up the logic analyser to stop when it found the value three being written to RAM. Then I'd use the Game Genie to change that 3 to say a 5, reboot the game and see if I started with 5 lives. If not, then I'd let it find the next time it wrote 3 into RAM and try that.

"Infinite lives codes were always the best. Once I'd found where in RAM the lives value was stored I'd then monitor when it got decremented. What I was looking for was where the game's original coder used -most likely - the DEC A (&H3D) instruction after reading the lives value from RAM, and then storing it back into RAM. If I found this then all I had to do was swap out the DEC A (&H3D) decrement operation with a NOP (&H00), which performed no operation. So the lives value would be left as-is and voila the player had infinite lives."

As writing and managing code becomes more complex, today’s sophisticated coding environments are evolving to include everything from breakpoint markers to code folding and syntax highlighting. The typography of code should evolve as well, to explore possibilities beyond one font style, one size, and one character width.

Excellent mobile-phone plan comparison site for the Irish market, using apps which you install and which analyse your call history, data usage, etc. over the past month to compute the optimal plan based on your usage. Pretty amazing results in my case!

The only downside is the privacy policy, which allows the company to resell your usage data (anonymised, and in aggregate) -- I'd really prefer if this wasn't the case :(