Photo by Juliano Ferreira from Pexels

Let me set up a scenario…

You live in a house with a number of roommates who all share the same living space and the same water filter in the fridge. Now say you go to get a cup of water and you happen to use the last of it… bummer. 😕 But, what do you do?

You Refill it…

Obviously, cause we’re all decent people…

Now, having set that up let me talk to you about a situation I ran into today.

The Situation

Today I went to take a sip of water from my water bottle and having done so noticed that it was now out…


It’s Not Even a Fair Fight

Anyone who’s used an object oriented language in the past is probably familiar with the concept of inheritance, the idea of having child classes that inherit methods and instance variables from a parent class. Typically the relationship between a parent class and a child class is defined as an “Is A” relationship. In that the parent class defines a superset of its children. For example a parent class of fruit would have a child class of an apple because an Apple is a fruit. Here’s another example of that kind of relationship in code.

C#

Here we can see the…


If all goes to plan, tomorrow will mark my last day as an apprentice at 8th Light. After tomorrow I will graduate and become what we call a Crafter. 8th Light describes their crafters as “a high-quality group of disciplined polyglots who are comfortable applying the principles and practices of software as a craft in any technology stack.” That was a high bar to me when I applied to be an apprentice and it still feels like a high bar to this day. I believe that’s because as I continue to learn and grow as a developer I understand more…


For the past few weeks I’ve been working on a project where I’ve found myself deep in the weeds far too many times. Whether it was implementing some piece of functionality, getting a test to pass, or properly using design patterns; I frequently found myself spending far too much time on singular problems. I believe the biggest contributing factor to this was my unwillingness to delete what I had and start fresh.

I fell victim to the Sunk Cost Fallacy. I was under the impression that I would be able to fix and adapt my messy, poorly structured code in…


Over the past week and a half I’ve been writing a Tic-Tac-Toe game in Python. Although I’ve written games like this in the past, I think I’ve finally learned why writing tests is so important. Here are my three main reasons why automated tests aren’t optional when it comes to writing production code.

Manual Testing Takes Time

Tic-Tac-Toe is a simple game with few moving pieces. At its core, all you need to do is draw the board, make your mark, check if the game is over and, if nobody won, do it over again as the other player. Pretty simple. …


Something that I’ve been taught over the past few weeks by my mentors is the idea that when you create custom objects, if they store data, the object should not expose the way it stores that data.

When explained like that, it may not make a ton of sense, so let me use an example that I found helpful. Think about a code representation of a gum-ball machine. You need to be able to add gum-balls to the machine, and you need to be able to get a gum-ball from the machine.

Let’s look at a code example:

In…


Yes, you read that right!

Disclaimer: At the time of writing this is only possible on the following devices running iOS versions 12.0 to 12.1.2

When I heard about the release of the Unc0ver Jailbreak by Pwn20wnd for iOS 12, I thought back to all the fond memories I had of installing tweaks, mods and various jailbreak apps on my iPhone and iPod Touch back in the years of untethered jailbreaks. I also remember being able to access a command line which, at the time, I had no idea what the implications of something like that really were. Now, as…


An Undocumented Oddity

In my past few blogs I’ve been, at some level, documenting my experience building an HTTP server from scratch in C#/.NET. It’s been a long road, but in the past few weeks I’ve been making pretty large strides and I’m starting to see the light at the end of the tunnel. Today’s post is going to be another one of those.

Today I wanted to talk about an issue that a friend of mine and I came across separately this week which threw us both for a loop. …


So this post is going to be a bit different… Today, I’m going to skip right to the point and give you no-nonsense examples of the structure of HTTP Requests and Responses. When I started building my HTTP server from scratch I had a very difficult time finding a resource that I found helpful when I was beginning to write a parser for Requests and something that could build Responses which were compliant with the spec. Let’s dive in!

Requests

The components of an HTTP Request are as follows:

Start Line

Consists of four parts separated by spaces

  • Request method (GET, POST, DELETE…


Over the past 2 weeks I’ve been ramping up on learning C#/.NET for a new project that I’ve started. This time I found the process a bit more intense than when I started working with JavaScript or Ruby. Up until recently, the most experience I’ve had with types was with TypeScript. With TypeScript you can choose how strictly you want to adhere to types and I found that my experience there didn’t really translate. Consequently, getting started with C# proved to be much more difficult for me especially with the added difficulty of learning both new testing and mocking frameworks…

Jake Lamb

Software Engineer & Writer Sometimes

Get the Medium app

A button that says 'Download on the App Store', and if clicked it will lead you to the iOS App store
A button that says 'Get it on, Google Play', and if clicked it will lead you to the Google Play store