Programmer’s Ranch Migration

Before Gigi Labs, I used to run another tech blog called Programmer’s Ranch. There, I wrote 91 articles between May 2013 and October 2014, before starting Gigi Labs.

Programmer’s Ranch started off with very basic articles, but progressively moved onto more advanced topics. Most of these articles are still relevant today, and I periodically migrate the best of these onto Gigi Labs to consolidate my articles in one place.

Below is a list of Programmer’s Ranch articles, and the corresponding ones on Gigi Labs for those that have been migrated. These are sorted such that the latest articles on Programmer’s Ranch are at the top.

Programmer’s Ranch article Gigi Labs article
C# Basics: Snake Game in ASCII Art (Part 3)
Determining the bitness (x86 or x64) of a DLL Determining the bitness (x86 or x64) of a DLL
C# WCF: Backslash Limitation in WCF Test Client
ASP .NET Web API: A Gentle Introduction ASP .NET Web API: A Gentle Introduction
C#: Metronome with Timers and Beeps C#: Metronome with Timers and Beeps
C# WPF: StackPanels and WrapPanels
C# WPF: CheckBoxes
C# WPF: Basic Login Form using a Grid
C# WPF/MVVM: Why You Shouldn’t Bind PasswordBox Password Security Risk in Binding WPF PasswordBox Password
C# Security: Computing File Hashes Computing File Hashes in C#
C# AppSettings: Upgrading Settings between Assembly Versions C# AppSettings: Upgrading Settings between Assembly Versions
SDL2: Animations with Sprite Sheets Animations with Sprite Sheets in SDL2
SDL2: Displaying text with SDL_ttf Displaying Text in SDL2 with SDL_ttf
C# AppSettings: Saving User Preferences in a WPF Browser application C# AppSettings: Saving User Preferences in a WPF Browser application
C# AppSettings: Launching Programs and Storing AppSettings C# AppSettings: Launching Programs and Storing AppSettings
C: Rock, Scissors, Paper (using random numbers)
C#: Authenticating with Active Directory Authenticating with Active Directory
SDL2: Converting an Image to Grayscale Converting an Image to Grayscale using SDL2
SDL2: Pixel Drawing SDL2 Pixel Drawing
SDL2: Keyboard and Mouse Movement (Events) Handling Keyboard and Mouse Events in SDL2
SDL2: Setting up SDL2 in Visual Studio (2013 or any other) Closest: Setting up SDL2 with Visual Studio 2015
C# Security: Bypassing a Login Form using SQL Injection Bypassing a Login Form using SQL Injection
VB .NET Basics: Conditionals, Logical Operators and Short-Circuiting
C# WCF: A Minimal Client and Server Using Visual Studio 2012
SDL2: Loading Images with SDL_image Loading Images in SDL2 with SDL_image
SDL2: Displaying an Image in the Window Displaying an Image in an SDL2 Window
C# EF: Setting Connection Strings at Runtime with Entity Framework 5.0, Database First, VS2012 Setting Connection Strings at Runtime with Entity Framework 5.0, Database First, VS2012
C# Security: Securing Passwords by Salting and Hashing Securing Passwords by Salting and Hashing
C: Calculating the Average of Several Numbers
C#: XML Serialization XML Serialization in C#
C#: Unit Testing for Old or Express Visual Studio Editions Using NUnit
Unit Tests, The Visual Studio Way
C# WPF: Master/Detail Layout using MVVM
C# WPF: Filter ListBox As You Type, Using MVVM
C# WPF: Control Panel using MVVM
C#: Extracting Zipped Files with SharpZipLib Extracting Zipped Files with SharpZipLib
C#: Understanding Recursion with Directory Traversal Understanding Recursion with Directory Traversal
Best Practices: To Always Use Braces for Conditionals and Loops… or not To Always Use Braces for Conditionals and Loops… or not
C#: Mocking and Dependency Injection for Unit Testing a File Sorting Program
C#: Unit Testing with SharpDevelop and NUnit
VB .NET Basics: Input and Output
Linux: Navigating Text with vi
Linux: vi Essentials
On Mystery Meat Navigation and Unusability On Mystery Meat Navigation and Unusability
C# WPF: Styling buttons in a window
SDL2: Empty Window Showing an Empty Window in SDL2
SDL2: Setting up SDL2 in Visual Studio 2010 Closest: Setting up SDL2 with Visual Studio 2015
Ultima 1 Reverse Engineering: Decoding Savegame Files Ultima 1 Reverse Engineering: Decoding Savegame Files
IMAP: Message and Folder Attributes
IMAP: Working with Folders
IMAP: Downloading emails
Email: Protocols and Background
C# OOP: Encapsulation and Properties
C: Hello World on Linux
Unity3D: Changing game speed and pausing Unity3D: Changing game speed and pausing
C# OOP: Abstract classes, fruit, and polymorphism
C# OOP: Queues and Stacks with Inheritance
C# OOP: Creating a List using Composition
C#: Value Types vs Reference Types
Indexing and Search (C#) Introduction to Indexing and Search
Unity3D: Arkanoid
Unity3D: Pong
Unity3D: Scenes and Building
Unity3D: Space Invaders (Part 5 – Behaviour)
Unity3D: Space Invaders (Part 4 – Collisions)
Unity3D: Space Invaders (Part 3 – Prefabs)
Unity3D: Space Invaders (Part 2 – Linear Interpolation)
Unity3D: Space Invaders (Part 1 – Navigation and Materials)
Unity3D: Setting up Source Control with SVN
Unity3D: Moving an Object with Keyboard Input Unity3D: Moving an Object with Keyboard Input
C#: Programming on Linux with MonoDevelop
C# Basics: Building Strings
C# Network Programming: Simple HTTP Client
HTTP Requests in Wireshark
Network Programming: Networking Theory
C# Network Programming: Echo Client/Server
C# Threading: Bouncing Ball
C# Basics: Snake Game in ASCII Art (Part 2)
C# Basics: Snake Game in ASCII Art (Part 1)
C# Basics: Command Interpreter Using Methods
C# Basics: Morse Code Converter Using Dictionaries Morse Code Converter Using Dictionaries
The ASCII Table (C#)
C#: Working with Streams
C#: ASCII Art Game (Part 2)
C#: ASCII Art Game (Part 1)
C#: Creating a grep-like tool using Files, Strings and Loops
C# Basics: Working with Strings
C# Basics: Calculating Pension Age with DateTime and if’s
C# Basics: Arithmetic and Exceptions
C# Basics: Fun with Integers
C# Basics: Input and Output

"You don't learn to walk by following rules. You learn by doing, and by falling over." — Richard Branson