Writing a Programming Language 101

Writing your own programming language is incredibly daunting. But if you start by writing a language that evaluates very simple functions it opens your mind to the possibility of writing an entire language and gives you a better understanding of what that would entail. So let’s start there. Let’s write a programming language that adds and multiplies numbers.

What’s in a Programming Language?

1. Parsers: Functions that read input and then tell the program what to do with it
2. Data Structure: The parser puts our input into an abstract syntax which our program can then evaluate
3. Nodes: Each node on the tree represents a value or expression which can then be evaluated to give us a value
Continue reading

Polymorphism in Ruby

Polymorphism comes form the greek words ‘polys’ meaning much or many and ‘morphe’ meaning form or shape. In programming, it refers to the ability to use functions or methods in different ways for different objects or data types.

Having the ability to use the same method in a different way depending on data input is very useful in Ruby. It greatly decreases the need for long, ugly if statements like this: Continue reading


I recently started writing user stories and acceptance tests. My first drafts of acceptance tests were bad. There was little clarity around what I would actually be delivering to the client and a lot of ambiguity.

It’s important to make sure you and the client, whether that person is part of you own company or a company that you are consulting for, are on the same page. The last thing you would want would be to do a week’s worth of work and then have the client disagree with the deliverables.

The Given/When/Then strategy for writing user stories and acceptance tests made it significantly easier for me to think through all the features needed and estimate how long it would take to complete the features. Continue reading

How to Test Ruby IO

Receiving input from a user, doing something with that input, and then displaying some output is core to software development after QA services that help you check your software. This input and output is reffered to as IO.

In TDD, we should test the behavior of all the code we write, but testing IO can be challenging because we don’t want to be prompted for input or have miscellaneous text printed in the terminal while running our tests. I’m going to walk through a scenario where we have a UI class (i.e., user interface) in Ruby that handles all of the IO and explain how to test it. We’re also going to look at the IO class and its STDIN and STDOUT constants. Continue reading

Self & Metaclasses in Ruby

Self has confused me for a while now so I decided to get to the bottom of the purpose and meaning of self.


  • At any point in your program, there is one and only one self
  • Self is the current object accesible to you
  • It can also be said that Self is the receiver object of the current method (ex: String is the object in String.send(:”length”))
  • Since objects in Ruby are usually instances of classes, self is usually the class you are in at any moment
  • Using self enables you to call a method on a class (like Person), instead of just one instance of a class (like Laura)
  • There are a couple different ways to call methods on self: ‘self.some_method’ OR ‘class << self’ before a group of methods
  • You might want to use self if you want to call a method on any potential instance of that object (every Person is born on planet earth but not every Person is named Laura), especially if you don’t plan on having more than one instance of an object (maybe you’re creating a game with one Person, one Fish, and one Monkey–I’m not sure why you would do that–and you don’t want to create multiple instances of Person).

Okay, now for the longer explanation. Continue reading

Single Responsibility Principle

There’s a group of guidelines and principles to help us write clean code in object-oriented programming–commonly called SOLID–which was introduced by Robert Martin (aka Uncle Bob).

The five principles of SOLID are:

  1. Single Responsibility Principle
  2. Open-Closed Principle
  3. Liskov Substitution Principle
  4. Interface Segregation Principle
  5. Dependency Inversion Principle

Right now I’m going to explain the Single Responsibility Principle with a real world example. Continue reading

Git & GitHub Explained

At my last job I often heard the word GitHub thrown around by developers. I knew that their code was “on” GitHub, but that was just about all I knew. So when I started learning to code I quickly created a GitHub account (with my favorite username yet: gitlaura) and went through the practice exercises to learn how to use it. I started pushing whatever I was working on to my GitHub account.

Even though I was typing ‘git’ into my command line for commands like ‘git add’, ‘git commit’, and ‘git push’, I had no idea that git was separate from GitHub until recently. In fact, I assumed that GitHub somehow created that functionality on my computer.

Well, news flash: Git and GitHub are not the same. I honestly feel a little silly even sharing this with you, but I figure there must be other self-taught programmers out there who don’t understand the difference between Git and GitHub. So let me explain. Continue reading

Workplace Injuries

If you or a family member are injured in an accident at work, you may have concerns as to whether slip and fall cases are hard to win against an employer, but if you r case involves slippery surfaces this can be even more helpful for the legal situation of this type of accident.

Workers Compensation Lawyers Represent Your Business in Insurance Premiums.

A slip and fall at work is a risk many business owners can understand. However, it’s not always clear to employers whether they should fight for a judgment in the workplace injury claim, or how that decision should be made.

Workers Compensation lawyers are experienced in drafting insurance claims and presenting claims on their behalf. They’re also known for doing just that – standing up for the rights of employees.

The only way to protect yourself is to get the best possible insurance coverage for your business. At www.accidentclaims.com, you can consult with our insurance experts to assess your insurance needs, and apply for coverage on your behalf.

It is important to get your claims in order well in advance of the dates in which you anticipate working for the employer. The sooner you can formulate a decision on a claim, the less time you will have to negotiate insurance premiums. If you have not done so, in the year prior to a claim being filed, you could be looking at potentially devastating penalties for your employer.

Preventing Workplace Injuries in the First Place.

Unfortunately, accidents do occur in the workplace, and workers should always be aware of the risks that come with working in such a dangerous environment. To help ensure a happy and productive workforce, many companies have adopted safe work policies.

The most important policy, of course, is in the event of a work-related injury, such as a fractured hand. All employers with at least 25 employees are required to abide by the OSHA-approved policy. All other injuries are handled on a case-by-case basis. These policies can be obtained at many HR offices, including your local community college.


Many workplace injuries can be avoided or minimized through good workplace safety practices. Below are some of the most common types of injuries that occur:

Broken Bones

Cracked or chipped teeth

Discolored eyes, such as those caused by age or chemical exposure

Fractured Spine

Injuries of the hands, wrists, fingers, or ankles

Unforeseen Medical Events.

Unforeseen medical events can also be extremely costly. Several unforeseen events have an equal and sometimes greater impact than the types of injuries we mentioned previously. As an employer, you may find yourself in a difficult position if you have to pay for the medical care or procedure of an employee in the future. Medical expenses for employees can range from $1,500 to $12,000 per employee. This may make it difficult to find a job for that individual. If you or a family member is injured or become ill at work, you may want to consider being present during medical appointments.

If you or a family member is injured or becomes ill at work, you may want to consider being present during medical appointments.

You may be required to pay for the cost of emergency room or doctor visits. You may also be required to pay for repairs or other work done to keep the facility in a clean condition.