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