Author: 81shorty73

I'm not a photographer... Just a girl who really enjoys taking pictures.

how to make finger joints (with router)

If you’re reading this post, you’re probably trying to create finger joints (AKA box joints) for your woodworking project. Which means that you probably already know what they are.

But in case you aren’t sure, below is a rough diagram of the concept.


Finger joints are basically a more simplified version of dove-tail joints, which are the gold standard for woodworking.


But dovetail joints (above) are super tough to do because of the intricate angles of the cut, and if you’re just starting out or you don’t require the added strength of a dovetail, finger joints are an attractive alternative.

So this is how to make basic finger joints effectively using a routing table.

What You’ll Need

  • Router/Routing Table
  • Straight Routing Bit (the bit size should be the size you want the teeth in the joint to be; in this example I made 1/2″ cuts)
  • Wood Glue 
  • Rubber/Wooden Mallet
  • Flat File
  • Clamps (corner clamps if you have them, but any will be helpful)
  • Wood, obviously (I was using 1×4 pieces)
  • Scrap Wood (this is useful for pushing your pieces through the table if you don’t have a table with a built in mechanism)
  • Eye and Ear Protection (I’m not a stickler for woodshop safety, because that would be hypocritical, but seriously…you’ll want both when working with a router)

Step #1: Plan Your Cuts

Full disclosure: I’m not known for “planning” out my projects. Sometimes I draw drafts, but I rarely stick to them. More commonly, I decide what I want to do and just wing it.

But when it comes to making finger joints, I’ve learned the value of planning the hard way. The first time I ever attempted this, I literally went through four 8-foot boards just trying to make a small 12×12 box.

So the first step is figure out where you’re cutting.

Again, I was using a 1/2″ bit, so if you’re using a different size you’ll need to recalculate and do your own plan.

I used 1×4 pieces for this box.

  • This means that the actual width of the surface I’m working with is 3.5″
  • That equates to 7 sections that are 1/2″
  • So for the first board, where the teeth are on the top and bottom, there will be 4 teeth and 3 grooves
  • The second board will be the opposite (3 teeth and 4 grooves)



The next step is to figure out how to create the grooves (AKA, where the router should be set to make the cut in the right place)

  • Using a half inch bit means that the range of the cut will be 0.25″ to the right of the setting and 0.25″ to the left of the setting
  • See below for the examples of this


I can’t emphasize this enough: WRITE IT DOWN!

Write down where you should be cutting on both boards.
Actually, I color on the board with my pencil so that I can see where the grooves are supposed to be.

Seriously, take the time to be meticulous about the measurements before you start cutting, because if you mess it up you’re starting all over again.

Step #2: Set your router

  1. Set your router for depth
    • Your grooves should be as deep as your boards are wide
    • In this case, the actual width of the 1×4 is 0.75″
    • So your router bit should be set to a depth of 0.75″
  2. Set your router for your first groove
    • For the first groove on board #1, you need a groove from 0.5″ to 1″
    • So (see above) you should be setting to cut at 0.75″

<–This picture shows something that most standard routing tables (of the modern era) feature: measurements.
You can use these to get a rough idea, but I strongly advise that you do not trust them.

For example, the measurements onimg_0420
my routing table are about 1/8″ off. This may seem really arbitrary, but in the case of making finger joints, that small error can really screw you up.

So be sure to check your measurements the “good old fashioned way” and get your tape measure out –>

Measure from the fence to the center of you the bit.


Step #3: Do it to it

This part is easy.
This part is also dangerous.
Please be careful.


Hints and Tips: I make two passes for each groove. It makes the next step easier.
Also, do not rush the piece through the router. This leads to splintering, and that’s something that sanding just doesn’t fix. Patience is key.

Step #4: Putting it together

Assuming you’ve cut all the pieces correctly, you should not be ready to assemble them.

First, you want to file down the imperfections in the grooves.

Again, if you’ve been precise about your cuts, these are incredibly tight-fighting joints. Even the smallest piece of sawdust or a splinter can make it impossible to fit the teeth in the grooves or, worse, it will cause you to split the wood or break off teeth as you put them together.

So, much like sanding in general, this isn’t the most fun part of the project, but filing is a very important part if you want a nicely finished product.

Using a flat file, gently file down all edges inside the grooves. Pay special attention to getting the reside out of the corners.

Now you’re ready to start putting it together.

A lot of carpenters recommend that you dry-fit your joints to make sure they’re perfect before adding glue. On one hand, this is a good idea. But on another hand, if you’ve made really tight fighting joints, it’s not always a great idea: repeatedly putting them together and taking them apart increases the likelihood that you’ll cause damage, split wood, or break off teeth. So that’s your call. But I don’t dry fit.

img_0427<–Put a little bit of wood glue in the joints. To be honest, the amount of glue I used in this picture is probably excessive. It doesn’t take a lot.

Now you very slowly start to slide the pieces together. This is slow and tedious, and you have to be careful. It takes a lot of wiggling and a lot of patience.

Once you have the joint started, use a rubber or wooden mallet (NEVER a hammer) to slowly tap the pieces into place. I suggest alternating the direction you fit from (i.e., hammer on one side a few times, then hammer on the other).joints

TIP: It can be tempting to just hammer the shit out of the thing to get it together…but resist the urge. Slow and steady prevents splintering or chipping the teeth . And you don’t want this to happen to your joints…look how crappy that looks. You can’t sand that away ———>





Once it’s all put together, if you have access to corner clamps, I suggest utilizing them to hold the corners in place while the glue dries. That being said, some carpenters will tell you that glue is unnecessary if the joints are done right…and by extension, this step would also be unnecessary. To each his own. I like my woodworking to be “bomb-proof”, so I use glue.

And voila. You’ve created finger joints.


Teaser: Below is a picture of what I was making from this box. Look for an upcoming post to see the custom chisel box I made as a Christmas gift.



Star Wars Birthday Cake

I have never been much of a cake decorator. I lack the patience and the finesse to do all of the really cool things that real bakers manage to do with frosting and fondant.

But, even though I’ll never be a guest on Cake Boss or a contestant on Cupcake Wars, I still like to try and make people feel special on their birthday. And this year, my friend was really into the new Star Wars movie, so I thought that would be a good theme.

So…if you’re here because you aren’t much of a cake decorator either but you have a Star Wars fan in your life, I have good news for you:

This was super easy to make, even for me (not a baker of any sorts), and I actually managed to throw it together in a few hours.

(Somewhat detailed instructions are below the pictures)


(kind of vague because I did this months ago…but I’ll do my best)


Two sizes of round cake pans
-Cake mix.
– Buttercream icing
-Black fondant.
-Frosting sheets (it’s like edible paper that you can cut out)
-Cake board
-Wood dowels, or premade cake supports
-Small amount of black frosting
-Toys 🙂

Step 1: Bake the Cakes

Again, I’m not a baker. So I use cake mix. You can make it from scratch, but you don’t want your cakes to be too soft.


You need two cakes of each size. And the top one is pink because I’m pretending it’s strawberry.

Don’t fill the cake pans like you would if you were just making a single round; you’re going to stack them, so you want them a bit thin.

Once they’re done baking, let them cool completely. I know this is hard if you lack patience (like me), but it’s important.


After they have cooled, stick them in the freezer for a while.
About an hour worked for me, but longer would be even better.

Step 2: Put the Layers Together

Once they are hard-ish from the freezer, you need to trim/stack them.

First, you need to cut off the top of one of the small rounds and one of the larger rounds – the goal is to make them flat so you can sit the other one on top.


Put a heavy layer of buttercream frosting on the part you just shaved down and place the other round of the same size on top.



I didn’t put cake boards between these…but you can if you’re really concerned about stability of the cakes.


Now you need to make sure the rounds “fit together”, so shave the edges so that the cakes are round and have a flat edge.

You should now have a larger cake and a smaller cake round.


Cut your cake board to be the same size as the smaller round, and place the small cake on the board.

Place your dowels/supports through the bottom layer – 2 or 3 to support the cake you’re going to place on top.


Step 3: Frost and Fondant

Frost both cakes with a generous amount of buttercream frosting, especially the smaller one for the top.

Now you need to roll out the black fondant – there should be instructions on the package. Basically, you roll it out like pizza dough. Then you fit it over the smaller cake. This blog does an excellent job explaining how to do fondant (better than I can explain…)

You’ll also use the leftover fondant to cut out the storm troopers face and place it on the bottom layer.


I also got “fancy” and did frosting stars to cover the bottom – this is probably unnecessary, but it looked pretty.

Step 4: Stack

This is pretty simple. You put the little cake on top of the big cake.

Step 5: Finish Decorating

I cut out the letters/stars from frosting paper – a little water makes them bond nicely to the fondant.

I also “stuck” the toys on top with black icing.

calculating descriptive stats

Once you’ve been doing statistics for a while, you tend to take descriptive statistics for granted…mostly because we all use stats programs that just take our raw data and do it for us.

But for all of you who are just starting out, a thorough understanding of descriptive statistics is absolutely essential. So this is a quick post that will start from the ground up on descriptive stats.


measures of central tendency

Measures of Central Tendency

In statistics, we have this big collection of raw data from individuals, and we are always trying to describe the data set as a whole. Thus, we use “descriptive” statistics.

Measures of central tendency are commonly used method to describe data sets. Essentially, we are taking this collection of data and trying to explain where the “middle” of the data is. The three main measures of central tendency are the
mean, median, and mode.

Mean: Mean is just our fancy statistical way of saying average, and the calculation is quite simple: you add up all of the raw scores, and then divide by the number of scores that you added together.So let’s say that you bowl a lot, and you want to know your average score for the last five games you bowled. Your scores for each game were 150, 175, 250, 210, 195.

In order to calculate this, you would add the scores for each of those five games (150+175+250+210+195=980).

Now, you divide the sum of raw scores by the number of games (980/5 = 196). So your bowling average for the past 5 games was 196.

Median: The median is simply the “middle” number in the data set. If you rank your scores in order from high to low, the one that falls right in the middle represents the median. So if we refer back to our bowling example, the median is 195 because that is the “middle” score on the number line.

150     175     195     210     250

Mode: The mode is the most common score/value in the data set. In our bowling example, all of the scores have a frequency of 1 (i.e., the only occur one time), so there is no mode. But let’s say that we are talking about the age of high school seniors (see below). In this sample of ten students, the most common age is 17.5…So mode = 17.5.

17       17.25       17.5       17.5        17.5       18       18       18.5       18.5       19

latent class analysis

If you are interested in developmental trajectories, chances are that you will use a Latent Class Analysis (LCA) at some point. Essentially, you can use an LCA to identify groups of individuals who follow unique trajectories over time.

For example, a lot of my research focuses on delinquency among adolescents. So if I wanted to try and identify unique patterns of delinquent behavior over time, I could use latent class analysis.

This is an example of how to run an LCA using Mplus.

Step One – Preparing Your Data

In order to run a LCA, you have to have measures of your variable of interest at different time points.

In this example, because I am interesting in trajectories of offending behavior, I have measured delinquency as a count variable. Specifically, participants self-reported whether or not they engaged in certain delinquent behaviors (e.g., have you broken into a building to steal something?) in the past 12 months.

Now, I want to model that behavior over time. So the resulting variables would be things like “delinquency at age 11,” “delinquency at age 12,” and so on.


The image above shows how the data should be organized. You can see that my variables are “del.11” and so on, which means “delinquency at [age]”. If you need help getting your data into this format, please see my post (in the SPSS section) about transposing data.

You may also notice that there are a bunch of “-999” values. This is the number I have designated for missing data. You absolutely have to code all missing data or else Mplus will get grumpy and refuse to work.

Also, as you surely know, you have to save your data in a different format in order to use it in Mplus. I use comma-delimited, but there are a few other formats that will work.

lca save as

Notes: Select file type (.csv), be sure that you are using local encoding, and do not write variable names to spreadsheet – this box is usually checked by default, so be sure to uncheck it before saving.


Now that you’ve prepared your data, you can run the analysis.

Step Two – Syntax

Syntax is hands-down the most difficult part of using Mplus, so we are going to walk through the syntax for a latent class analysis step-by-step.


First, you have to designate where the data is coming from. This is done by using the Data command.


Note: In this example, I spelled out “file is.” However, you can substitute “=” for “is” and it will do the same thing. That’s one of the few things that Mplus is pretty flexible about.

Be sure that you include the entire file name, including the extension (i.e., “.csv”)

The next step is specifying information about your variables.

First, you have to name all of the variables in the data set…even if you don’t intend to use them. Mplus relies on the number of variables in the data set in order to “read in” the file the correct way.

For example, this data set has 13 variables total: ID, sex, race, and ten delinquency variables. If I only name the delinquency variables (NAMES = del10-del19), Mplus will still read the first three variables…now they’re just named wrong (i.e., del10, del11, and del12, respectively), which will mess up the analysis.


You must name all variables in the data file, even if you are not using them.

Another important note is that for variables that are repeated except for the number extension, you can do what I have done in this example to save some work.

So instead of typing out “del10 del11 del12 del13 del14 del15 del16 del17 del18 del19,” I can just put “first-last,” and Mplus is smart enough to figure out the rest.



The next few lines of syntax are just a way of telling Mplus what it is working with.

First of all, remember how I told you to designate a value for missing data? Well, now you have to tell Mplus what that value is. The statement MISSING = ALL (999); tells Mplus that for all variables, the value of missing data is 999. Also, note that if you designate -999 as the missing value, you would have to put -999 in this statement; it is sensitive to +/- values.

Now that you’ve named all of the variables in the file, you use the USEVAR statement to tell Mplus which variables you are using in this analysis. In latent class analysis, you only have to use the variable that you are trying to model over time; in this example, that is just delinquency.

The underlying process of modeling data like this involves creating individual trajectories (i.e., for each participant) and then using those to make grouping decisions. Thus, Mplus needs to know the IDVARIABLE so that it can keep the data straight.

Finally, so that the program handles the data appropriately, we have to designate that our delinquency variable is a count variable. This is the COUNT = statement.

Also, in this example, there are a lot of zero values (because delinquency isn’t THAT common). You could choose to use a Poisson zero-inflated model, but instead we are using negative binomial model because it estimates a dispersion parameter for each distal outcome. This is designated in our syntax by following the COUNT = designation with (nb).


This is where you tell the program how many classes to create. We are starting our analysis with two classes.

The CLASSES = C(N) statement tells the program how many classes you want it to create. This is where you need a theoretical understanding of LCA to really grasp the process.

Essentially, you will model your data several different ways during this process and, eventually, make a decision about which model fits the best.

In order to do this properly, you must start with the smallest possible number of “groups,” or classes, run the model, and then work your way up. For each model, Mplus will report Fit Indices (these will be discussed later on); you compare these for each model and see which model (or, how many classes) fits your data the best.


ANALYSIS tells Mplus what kind of analysis we are using.

For latent class analysis, we designate that analysis type using the command


Mixture modeling is what you use when the latent variable is categorical, which is obviously the case when we are trying to identify latent classes. Although mixture modeling can only be used with categorical latent variables, if the model were to use an outcome variable (LCA does not have an outcome variable), the outcome variables can be continuous, censored, binary, ordered categorical (ordinal), unordered categorical (nominal), counts, or combinations of these variable types.

The STARTS option is used to specify how many random sets of starting values should be generated in the initial model, and how many optimizations should be used in the final stage of modeling. The default number of starts for MIXTURE models in Mplus is 20, and the default number of optimizations is 4.

In this example, we specify 100 random sets of starting values and 20 optimizations. The reason that we designate more starts and optimizations is because the higher these values are, the more thorough the investigation of best-fitting model will be; there are typically multiple solutions in LCA, so we want to be sure that we are getting the best one.

Finally, the STITERATIONS command specifies how many iterations of each start are allowed. By default, Mplus allows 10 iterations. However, we increase this number once again to allow for a more thorough analysis.


The MODEL command is used to specify your model.

The MODEL Command is the crucial component of any analysis in Mplus, because you are specifying things that may be unique to your model.

In mixture modeling, there are many different “parts” that your model can have. For example, you can have the within-subjects component, the group component, the clustering component…That’s why it is called mixture modeling. You can have a mix of different models going on at once.

Here, we specify the %OVERALL% model, or the part of the model that is going to be the same for all latent classes.

The I s q | command is where we are specifying the growth model parameters. Here, we list each of the time points for the model (each delinquency measurement is a time point), and we fix the factors at equidistant values.

This is necessary because Mplus has no idea what our time points represent. However, by setting them factor loadings at incremental increases of 0.1, we are telling it that each measure is the same distance from the previous measure (in this case, one year).


The plot statement is not necessary for statistical purposes, but it is exceptionally useful to visually represent the growth curve for each latent class.


The PLOT statement tells Mplus that we want graphs. Here, we designate PLOT3 because it will generate all possible graphs, whereas TYPE = PLOT1 and TYPE = PLOT2 does not generate all of the potential graphs.

The series statement is simply telling Mplus what to graph: in this case, we want to graph delinquency, over age….and conveniently, we have created our variable to represent exactly that.




The output statement specifies what kind of output we want.

TECH11 request the Lo-Mendell-Rubin likelihood ratio test of model fit (Lo, Mendell, & Rubin, 2001) that compares the estimated model with a  model with one less class than the estimated model.

However, because the Lo-Mendell Rubin approach has been criticized (Jeffries, 2003), we also request TECH14, which requests a parametric bootstrapped likelihood ratio test (McLachlan & Peel, 2000) that also compares the estimated model to a model with one less class than the estimated model.

Honestly, the more model-fit indices you can use, the better – it’s like replication.

*NOTE: TECH-14 is is a very time-consuming analysis for Mplus because of the bootstrap draws, so if you’re in a hurry…You may just have to skip this and count on the LMR.

Step Three – Output

Now is when you get to figure out if you model is a good fit.

First, you need to check whether you model actually converged. If it didn’t, you need to head back to your syntax.


To figure this out, you check out your best loglikelihood, or your optimum start seed.

Quite simply…does it replicate? We see in this example that our best loglikelihood (-16352.365) repeats many, many times. So we are good to go!

model fit

Now we check our model fit information, which is conveniently labeled as such in the output.

  1. Check your AIC and BIC.

    model fit1

    The smaller AIC/BIC, the better the model fit. Right now, in this example, this is our first model…so it doesn’t tell us much. But we need to write it down because after we run our next version, we need to compare those values to see which model has a better fit.

2. Now, check your Chi-Square Test for Model Fit

model fit2

3. Check the TECH output


I’m only showing the TECH11 output here for examples sake…

But it’s pretty straight forward. Like the output says, it’s a test for “1 versus 2 classes.” And because our p-value is significant, we can say that the two class solution we are testing is significantly better than just having one latent class.

Step Four – Repeat

Now, you have to repeat the entire process for the next number of latent classes. So in this example, you would now run the model with three classes; then you would compare the model fit indices, as noted before.

Good luck! Please comment with questions or clarifications! Happy stat modeling!

pirate treasure chest – toy box

A very special little girl turned 2 years old this past month, so for her second birthday I wanted to make sure she had an awesome toy chest in which to keep the many toys that I fully expect her parents to spoil her with in the next many years.

I love pirates, and I think that most little kids love pirates, so I decided to make this a “pirates chest.” However, I wanted it to be something that she could potentially keep and use even into adulthood (obviously for purposes other than toys), so I made it less comic-book-pirate and more real-life pirate.

Also, this was a very complicated process that I completed in about a day, so I didn’t take time to thoroughly document the method…So this is just a series of pictures showing the progress. I hope to make another one for another special child in my life, so if you want better instructions, look for that post later.


Beginning to place the boards across the top.



In scary psychological terms…

“Self-awareness is a psychological state in which people are aware of their traits, feelings and behaviour. Alternately, it can be defined as the realization of oneself as an individual entity.”

-Crisp & Turner, 2010

But the reason for this post is to peak your interest in the area, so don’t panic yet 🙂

Essentially, what is the first “step” to self-awareness?
Understanding that you, yourself, are a unique, individual being.

Or…can you recognize yourself in a mirror?

Here’s a fun video about elephants to make my point for me!

statistical mediation – the concept

Warning: This is a video detailing the underlying theory and concepts of statistical mediation models. This video will not teach you how to compute mediation models or how to execute them in Mplus and/or SPSS.

Video #1 – The actual material
Video #2 – A little quiz

pepperoni pizza bread

Snow Day!

Which, in my crazy life, just means that I get a day to do things that normal people do on a regular basis. Like cook 🙂

I had a couple recipes up my sleeve that I had been wanting to try out, so I took the opportunity. The first of these was a spinach dip, and the second was this pizza bread.

I’ll be honest: I had no idea what I was doing when I made this one up.
But I have had it at a lot of parties with friends, and it’s always awesome…

This is kind of a quick-and-dirty, I-have-no-desire-to-make-dough, version.



  • 1 large french baguette
  • 1/3 cup of butter
  • 1 – 2 cloves of garlic (depends on how much you like garlic)
  • Small jar of pizza sauce (you won’t even use it all)
  • Mozzarella Cheese
  • 5 oz. pepperoni
  • Fresh parsley (optional)
  • Dried oregano (optional)


1. Slice the baguette into small pieces.

I didn’t get out a measuring stick of anything, but I would say that these are about 1/2 inch wide. The thinner the better…but not too thin, or else they’ll be flimsy and mushy.

2. Melt butter (with garlic)

I absolutely despise mincing garlic, so I used the stuff out of a jar. But, as always, fresh tastes better…so if you don’t have an aversion to the task, I recommend starting from scratch.

Just slowly melt the 1/3 cup of butter in the microwave and add the garlic…Then stir!

3. Brush Garlic-Butter on Both Sides of Baguette Slices



Don’t drown the bread or anything – just lightly brush each side.

Also, don’t use all of the butter. You’ll need some later in the recipe.



4. Add Toppings to Each Piece of Bread


First, put just a drop of sauce on each piece.

Again – not drowning the bread in pizza sauce!

You know those annoying sour cream commercials back in the day? “Do a dollop of Daisy…”

Well, just do a dollop of pizza sauce.




The next step is the cheese.

I love cheese, so I put as much as possible.

Use your discretion.






Finally, add the pepperoni.




5. Make “Stacks” & Put Stacks in the Pan

Whether you think this is self-explanatory, or you think it’s super hard, you’re wrong.

It’s not super difficult, but it does take some finesse.

Make small stacks and place them in the dish –
you may have to add pieces to the stacks to make them fight “tightly”.

Then, do the same thing across the pan until it’s full.

This may require some squishing. That’s totally fine. Squish away.

6. Cover with Foil and Bake

First, brush the remaining garlic butter over the top of the dish. Then cover.

Bake until the visible cheese has melted – in my oven, that was about 20 minutes.

7. Remove Foil, Sprinkle with Oregano & Parsley


It doesn’t take much, and it’s not necessary, but sprinkling the fresh parsley really dresses up this otherwise super-simple dish.

And it smells good.

8. Bake for another 10 – 15 minutes, or until the top looks brown and crunchy.


And that’s it! Pull apart pieces of the bread and enjoy!