# The Penguin Programmer

Old site is available at old.penguinprogrammer.co.uk Links are broken I’m afraid, so you’ll have to add old. in front of the domain each time. I’m very sorry!

Hi everybody! Welcome to the new Penguin Programmer website which I’ve been working on for quite some time now. I’ve moved away from Wordpress and migrated to Jekyll, an absolutely wonderful static site generator written in Ruby. The old site didn’t use the dynamic aspect of Wordpress very much because I barely posted, so in the end it just acted like a giant weight slowing the rest of the site down and turning it into a fat, bloated mess of code. Now though, with an universal markup format (markdown) and much much easier customisation, performance and usability should be much improved!

General performance has doubled I think, so no more long page loads (and it’ll get even better when I figure out how to stop uncss from butchering my javascript), and I’ve restructured the site to make everything more consistent. This means that it’s easier for me to add content, and hopefully easier for you to view it!

### The Tutorials

That’s enough about the site, but the tutorials have received a major upgrade too! I’ve completely rewritten the Beginner’s Tutorial and RPG Tutorial from scratch and they’re much better this time. The Beginner’s Tutorial covers more content and proceeds a little bit faster than the old tutorial, but it’s been reordered to be less jumpy and more C++ rather than C focused. I’ve also added an exercise to the bottom of each section. These are designed to be doable at the stage you are in the tutorial, and have example solutions so that you can check how you’re doing. They might be a little mathematics-heavy, but that’s the easiest way to keep them small!

The RPG tutorial has also been mostly rewritten in order to be much more extensible and easy to design content for. Specifically, I’ve introduced the use of JSON files to store the content, so no more hand-programmed game! The basic game engine is written in C++, with the JSON file defining the game world and the story. This doesn’t mean it’s more complicated though, and again by reordering the components I think I’ve actually made it more understandable than before. Overall it now resembles one of my other projects, Crawler, which is a text-based RPG engine (albeit a more advanced one) written in Ruby that uses the same (or very similar) JSON format for storing its game data.

The tutorial on Data Structures has been preserved, and will be updated as I continue to develop the site. I’ve removed the hangman tutorial (apologies to the very small handful of people that actually read that) and some of the other small articles that barely anyone read, and am now consolidating things into an “Intros” subsection which covers material too small to be made into another proper tutorial but is still handy to read.

### The Old Site

The nature of the tutorials on this site means that I’ve no doubt interrupted a bunch of people in the middle of the tutorials, and suddenly changed all the content so that they can’t continue. Because of this I’m keeping the old site available for a bit (maybe a week or so) before taking it down, it’s available at old.penguinprogrammer.co.uk and is exactly the same site as before. So if you’re in the middle of a tutorial, finish up there and come on over here where everything is a bit more modern and fresh!

After a rather long hiatus I’ve uploaded the beginnings of a new tutorial series on data structures, which will explain and give example implementations (where relevant) of

• Arrays
• Stacks
• Queues
• Graphs
• Trees
• Heaps

as well as demonstrate the Standard Template Library implementations (again, where relevant) of those structures. It took me a while to bother learning about the above, but without trying to sound too sensationalist, when I did it really changed how I viewed software design! I definitely encourage anyone looking to improve their ability to check them out.

The code in these tutorials (more of a guide really) is written to work with generic types, and so makes use of templates, which I am aware I have not covered in the Beginner’s Tutorial. That will change soon however as I plan on updating that with some more advanced topics in the near future!

I recently realised that there was no resource on here for the absolute beginner level, all of the tutorials assumed that you knew how to structure a program and how the development process works! Clearly that was a big oversight on my part, so I’ve now replaced the Compiling Code page with a Starting To Code section instead, which includes the previous content on how to compile code with an extra part on what header and source files are. Whilst I don’t think it’ll apply to most of you, it’s there if you need it!

Happy Programming!