Background and Scope
When we moved into our house, just about every room had carpet, including all three bathrooms. It was beautiful and quality carpet, but it was still carpet and installed in some inappropriate places. Over the years we converted the main kitchen, den and bathrooms to tile, but that left all the bedrooms and main hallway still with the original (now 30 year old) carpet. It was long planned to remove it: this project was when it finally happened.
This was really an extending series of projects or a large multi-phase project as we did each room, one at a time, and with some amount of popcorn ceiling removal and painting of walls and ceilings. We first did the master bedroom, then the office/bedroom, then the other bedroom and finally the connecting hallway.
Since we have concrete slab floors and wanted real wood, engineered hardwood floors was the best solution for us. We previously did a trial run of installing engineered hardwood as seen on the Master Closet Floor Page. That trial went well, so we also installed engineered hardwood as part of the overall Master Bathroom Redesign Page. Those projects gave us the confidence to take on this much more ambitious project.
Wood Selection, Vendor and Delivery
We wanted wood that was somewhat light in color and we wanted a high quality product. The thickness of the boards is often highly correlated with quality, but also correlated with increase in price. We eventually sound an excellent product at an excellent vendor. We went with bamboo from Ambient. I highly recommend that vendor: people were super helpful and knowledgable and the product quality was high.
We had to wait a few months for the deliver as they were out of stock of the version of floor boards we wanted. The people at Ambient knew exactly when they would get the next shipment and would even update me about where the ship was, when it would dock and how the boards made their way off the ship to their warehouse.
Our order was just below the minimum to qualify for free shipping and shipping charges were not cheap. If we simply ordered a little more flooring, the overall price would be the same, so that is what we did. Having extra never hurts and allowed us to be pickier about exactly which boards to use.
The flooring boxes were pretty heavy and finding enough room for them in the garage was a challenge.
General Process
The process for the floors was mostly the same for each room:
- Bring floor board boxes inside to acclimate
- Remove furniture
- Remove outlet/switch plates and A/C registers
- Remove baseboard mouldings
- Remove the carpet
- Remove the carpet padding
- Remove the carpet tack boards
- Paint walls and/or ceiling as needed
- Scrape the floors (concrete slab with lots of paint and crud)
- Grind or fill floor's high and low spots
- Cut the door jams (for new wood floor height)
- Put down the vapor barrier (thick sheet of plastic)
- Put down floor padding
- Determine the floor board layout geometry
- Put down the floor boards (the main event)
- Scrape, repair, replace and paint baseboard mouldings
- Paint outlet/switch plates and A/C registers
- Re-install baseboard mouldings
- Re-install outlet/switch plates and A/C registers
- Adding rubber or felt padding to furniture (to prevent scratching floor)
- Re-install furniture
The final phase was the creation and installation of the doorway thresholds which I did not do until after all rooms were finished.
Floor Board Layout Geometry
There are some guidelines and constraints on laying down the floor boards. e.g.,
- You do not want consecutive rows to have seams that are too close (at least 6 inches).
- You do not want any board that are very short (at least 16 inches).
- You do not want repeated patterns (it looks unnatural and your eye picks this up).
The first two are structural concerns while the latter is for the aesthetics. Some wood flooring comes in random lengths due to the natural variations in yield they get from the trees. For this bamboo flooring, all the boards were exactly the same length (six feet). With random lengths, you make due with the lengths you are given and can only plan so far out. The randomness helps to ensure things wind up looking random. With equal sized boards, you are at risk of getting a repeating pattern. The equal sized boards also means you can plan the entire board layout in advance to ensure all constraints are met and it visually look random.
To do this board layout planning, I wrote a small software script (in Python) to do the layout. It would generate a text file that told me exactly what lengths to cut for each row. The script was good, but not perfect, so I often had to run it a few times until I saw something that visually looked good. Sometimes, even if it looked random, it might have a seam right at the entry way which I did not visibly like.
The code and example output ared at the end of this write-up.
Master Bedroom
This was by far the biggest room and painting the ceiling and walls was in scope. The room has high ceilings and a scaffold was in order. You can rent these at Home Depot, but they are a decent PITA with many parts to shlep around.
Master Bedroom Prep
Our living room is the only place we have that we can store the furniture while we worked on the rooms. It was also the only place big enough to put the floor board boxes which need to acclimate inside for 48 to 72 hours.
Master Bedroom Painting
We had two problem at the start of painting: we got the wrong color paint and we could not paint it with just our ladder. The only way for us to do this was with a scaffold. They are cheap in money to rent from Home Depot, but expensive in labor to haul the (many) pieces back and forth. Not sure I would do that again.
Master Bedroom Floor Prep
Master Bedroom Floor Install
No one recommends putting a waterbed on hardwood floors installed to float. We have a waterbed and we installed the boards to float. To address the main issues that arise with putting something that heavy and wide on top of a floating floor required me to design and construct a custom base for the bed. The needs are to spread out the load and to not pin the floor down over a wide area and give it room to move. I used six independent footers that help to distribute the load and that can move individually if the floor expands/contracts.
Master Bedroom Moulding
Master Bedroom Furniture
I am also overly paranoid about the waterbed mattress puncturing, so I always add ample padding on top of all the metal brackets and screws.
Master Bedroom Completed
Office
The Office has a desk and shelves built in to the walls. We decided we would not take those out so did not do any painting of the walls and ceilings for this room.
Office Prep
Office Flooring Install
Office Moulding
Office Furniture
Although the office desk is built into the walls, the original design of the shelves where the computer cases sit was a bit deficient. The weight would make the shelves sag and I had to add supports. These supports were just pieces of 2x4 lumber sitting on the floor. I did not want to have those sit on the new floor, so I bought some beefy brackets and reconstructed the computer case shelves.
The music stand I keep in the office had metal feet. That will not do. I needed to add some padding to it.
Office Completed
I previously had one of these hard plastic rug protectors for the office chairs. With the new floors, I opted for a slightly more decorative rug as a little extra protection.
Bedroom
The third bedroom would be getting the full painting treatment. Fortunately, we had already removed the popcorn ceiling in this room many years before. The popcorn removal happened after we had a minor roof leak that required some ceiling patching. That ceiling patching was still visible, so we took the opportunity to smooth that out during this painting episode.
Bedroom Prep
Bedroom Floor Install
Bedroom Moulding
Bedroom Furniture Install
The black faux leather part of the bed frame had deteriorated, so we took the opportunity to freshen it up and also lighten it up with a different faux leather color.
Hallway
The hallway would be getting the full painting treatment and required popcorn ceiling removal.
Hallway Demolition
Hallway Painting
Hallway Floor Prep
The hallway needed to most floor prep. The threshold are into the living rooms was all chewed up, there were a couple high spots that needed to ground down and there was a void in the slab that needed to be filled.
Hallway Floor Install
Door Thresholds
I was not able to find exact matching bamboo 'tee' floor threshold transitions, nor matching wood to custom make them. Since the levels on both side of the door varied, an off-the-shelf solution would have been less than ideal. In the previous flooring projects I had to custom make thresholds for the wood to carpet transitions, so now I needed to modify a few of those and make a lot more new ones. I settled on maple wood as a color that would somewhat blend in.
Garage
The bonus of this project came from the extra floor boards we ordered to get free shipping. Between the planned extras and the free-shipping extras, we had a significant amount of spare square footage. We we previously did the Master Closet Floor Project we had a little leftover and I added a small section in front of the workbench in my garage as seen on Garage Floor Wood Project. I decided to use these leftover bamboo floor boards in the garage also, this time covering a much larger area. An unconditioned space is not the ideal place to install these, but I would have to at least store them there anyway. They may have issues over time, but they are very functional now. The prep of the floor was mostly about just moving things: no scraping, no vapor barrier, no padding.
Garage Floor Prep
Garage Floor Install
Appendix: Floor Board Layout
The Script
import random
def generate_staggered_floor_layout(rows, room_length, board_length, min_board_length, min_joint_spacing):
"""
Generates a staggered flooring layout while ensuring:
- Minimum board length constraint is met.
- Minimum joint spacing is maintained between adjacent rows.
- A randomized, natural-looking pattern.
"""
layout = []
for row_idx in range(rows):
row = []
remaining_length = room_length
prev_joints = layout[row_idx - 1] if row_idx > 0 else []
while remaining_length > 0:
max_length = min(board_length, remaining_length)
# Ensure the last board is at least min_board_length
if remaining_length <= min_board_length:
row.append(remaining_length) # Extend last board
break
# Generate a random board length within constraints
board_len = random.randint(min_board_length, max_length)
joint_position = room_length - remaining_length + board_len
# Ensure minimum joint spacing from previous row
if any(abs(joint_position - p) < min_joint_spacing for p in prev_joints):
continue # Skip if spacing condition is not met
row.append(joint_position)
remaining_length -= board_len
layout.append(row)
return layout
if __name__ == "__main__":
room_length = 156 # Example room size (in inches)
board_length = 72 # 6 feet per plank
min_board_length = 16 # Minimum board length constraint
min_joint_spacing = 6 # Minimum joint spacing constraint
num_rows = 10 # Number of rows to generate
staggered_layout = generate_staggered_floor_layout(
rows=num_rows,
room_length=room_length,
board_length=board_length,
min_board_length=min_board_length,
min_joint_spacing=min_joint_spacing
)
print ( staggered_layout )
Sample Output
Layout Visual (24 rows) = ------------------------------------------------------------------------------------------------------------------------------------------------------------- | | | | ------------------------------------------------------------------------------------------------------------------------------------------------------------- | | | | ------------------------------------------------------------------------------------------------------------------------------------------------------------- | | | | ------------------------------------------------------------------------------------------------------------------------------------------------------------- | | | | ------------------------------------------------------------------------------------------------------------------------------------------------------------- | | | | ------------------------------------------------------------------------------------------------------------------------------------------------------------- | | | | ------------------------------------------------------------------------------------------------------------------------------------------------------------- | | | | ------------------------------------------------------------------------------------------------------------------------------------------------------------- | | | | ------------------------------------------------------------------------------------------------------------------------------------------------------------- | | | | ------------------------------------------------------------------------------------------------------------------------------------------------------------- | | | | ------------------------------------------------------------------------------------------------------------------------------------------------------------- | | | | ------------------------------------------------------------------------------------------------------------------------------------------------------------- | | | | ------------------------------------------------------------------------------------------------------------------------------------------------------------- | | | | ------------------------------------------------------------------------------------------------------------------------------------------------------------- | | | | ------------------------------------------------------------------------------------------------------------------------------------------------------------- | | | | ------------------------------------------------------------------------------------------------------------------------------------------------------------- | | | | ------------------------------------------------------------------------------------------------------------------------------------------------------------- | | | | ------------------------------------------------------------------------------------------------------------------------------------------------------------- | | | | ------------------------------------------------------------------------------------------------------------------------------------------------------------- | | | | ------------------------------------------------------------------------------------------------------------------------------------------------------------- | | | | ------------------------------------------------------------------------------------------------------------------------------------------------------------- | | | | ------------------------------------------------------------------------------------------------------------------------------------------------------------- | | | | ------------------------------------------------------------------------------------------------------------------------------------------------------------- | | | | ------------------------------------------------------------------------------------------------------------------------------------------------------------- | | | | ------------------------------------------------------------------------------------------------------------------------------------------------------------- Layout Plan (24 rows) = ------------------------------------------------------------------------------------------------------------------------------------------------------------- | 22 | 72 | 62 | ------------------------------------------------------------------------------------------------------------------------------------------------------------- | 68 | 72 | 16 | ------------------------------------------------------------------------------------------------------------------------------------------------------------- | 52 | 72 | 32 | ------------------------------------------------------------------------------------------------------------------------------------------------------------- | 29 | 72 | 55 | ------------------------------------------------------------------------------------------------------------------------------------------------------------- | 57 | 72 | 27 | ------------------------------------------------------------------------------------------------------------------------------------------------------------- | 16 | 72 | 68 | ------------------------------------------------------------------------------------------------------------------------------------------------------------- | 65 | 72 | 19 | ------------------------------------------------------------------------------------------------------------------------------------------------------------- | 41 | 72 | 43 | ------------------------------------------------------------------------------------------------------------------------------------------------------------- | 25 | 72 | 59 | ------------------------------------------------------------------------------------------------------------------------------------------------------------- | 52 | 72 | 32 | ------------------------------------------------------------------------------------------------------------------------------------------------------------- | 18 | 72 | 66 | ------------------------------------------------------------------------------------------------------------------------------------------------------------- | 57 | 72 | 27 | ------------------------------------------------------------------------------------------------------------------------------------------------------------- | 26 | 72 | 58 | ------------------------------------------------------------------------------------------------------------------------------------------------------------- | 59 | 72 | 25 | ------------------------------------------------------------------------------------------------------------------------------------------------------------- | 48 | 72 | 36 | ------------------------------------------------------------------------------------------------------------------------------------------------------------- | 16 | 72 | 68 | ------------------------------------------------------------------------------------------------------------------------------------------------------------- | 67 | 72 | 17 | ------------------------------------------------------------------------------------------------------------------------------------------------------------- | 41 | 72 | 43 | ------------------------------------------------------------------------------------------------------------------------------------------------------------- | 31 | 72 | 53 | ------------------------------------------------------------------------------------------------------------------------------------------------------------- | 16 | 72 | 68 | ------------------------------------------------------------------------------------------------------------------------------------------------------------- | 28 | 72 | 56 | ------------------------------------------------------------------------------------------------------------------------------------------------------------- | 64 | 72 | 20 | ------------------------------------------------------------------------------------------------------------------------------------------------------------- | 54 | 72 | 30 | ------------------------------------------------------------------------------------------------------------------------------------------------------------- | 34 | 72 | 50 | ------------------------------------------------------------------------------------------------------------------------------------------------------------- Layout Values (24 rows) = [22, 72, 62] [68, 72, 16] [52, 72, 32] [29, 72, 55] [57, 72, 27] [16, 72, 68] [65, 72, 19] [41, 72, 43] [25, 72, 59] [52, 72, 32] [18, 72, 66] [57, 72, 27] [26, 72, 58] [59, 72, 25] [48, 72, 36] [16, 72, 68] [67, 72, 17] [41, 72, 43] [31, 72, 53] [16, 72, 68] [28, 72, 56] [64, 72, 20] [54, 72, 30] [34, 72, 50] Layout Score = 1441.5 Scraps Remaining: 1" -> 3 2" -> 2 3" -> 1 4" -> 6 5" -> 1 6" -> 1 7" -> 2 8" -> 1 10" -> 1 11" -> 1 13" -> 2 14" -> 2 15" -> 2 16" -> 1 18" -> 1 22" -> 2 38" -> 1 Total boards used = 56 Total board length (ft) = 312.0 Total scrap (ft) = 24.0 Success = 5000 / 5000 (0 errors)
Cassandra.org