I thought it was a shame such a nice puzzle didn't have an explanation of its solve path. So here's mine! Click through to get the (large) full-size images. "Connectivity deduction" means "I put a line here because if there isn't a line, a single connected loop is now impossible". Shaded pieces mean I've placed them, and shaded parts of the grid have pieces placed for sure.
Part 1: Putting some pieces in
Step 1:
![step 1](https://cdn.statically.io/img/i.sstatic.net/qTw2Nm.png)
Place the corner pieces. Only one place for each.
Step 2:
![step 2](https://cdn.statically.io/img/i.sstatic.net/Z07Icm.png)
An edge can't have 4 white circles in a row. The middle two wouldn't have anywhere to turn. So the two remaining top-edge pieces must be placed so their top-row white circles aren't adjacent.
Step 3:
![step 3](https://cdn.statically.io/img/i.sstatic.net/GIj9km.png)
The larger stair-shaped left-edge piece can't go above the other. It doesn't fit in the top spot. Therefore the left-edge pieces can be resolved.
Step 4:
![step 4](https://cdn.statically.io/img/i.sstatic.net/zgtM7m.png)
There can't be a "stack" of black circles leading away from an edge. One couldn't satisfy the go-straight-twice requirement. Therefore the black-circle right-edge piece can't go on the top, and the right-edge pieces can be resolved.
Step 5:
![step 5](https://cdn.statically.io/img/i.sstatic.net/AMgtqm.png)
Both bottom-edge pieces have the same shape, so their outlines can be drawn (though we don't know which goes where yet).
Step 6:
![step 6](https://cdn.statically.io/img/i.sstatic.net/9Fc31m.png)
The large upside-down staircase piece can only go one place now.
Step 7:
![step 7](https://cdn.statically.io/img/i.sstatic.net/UIUl9m.png)
The only way to satisfy the 5 unspoken-for squares in the upper right (looks like a P-pentomino) is to use a 2x2 and the 1x1. So the 1x1 can't be used elsewhere. There is only one way to place the remaining L-tetromino without isolating a 1x1. All piece borders can now be drawn. Also both of the bottom-edge pieces have a black circle in the same spot, so let's add that in.
Part 2: Drawing some lines
Step 8:
![step 8](https://cdn.statically.io/img/i.sstatic.net/aisTIm.png)
Basic Maysu deductions based on dots being on edges or near edges
Step 9:
![step 9](https://cdn.statically.io/img/i.sstatic.net/7NmQIm.png)
Two black dots are now effectively near edges, because they can't extend for two in one direction. After that a basic connectivity deduction along the right edge.
Step 10:
![step 10](https://cdn.statically.io/img/i.sstatic.net/WNeH6m.png)
The white circles on either side-edge still need to turn on at least one side. Once they do so, then there are some effective-edge deductions to make.
Step 11:
![step 11](https://cdn.statically.io/img/i.sstatic.net/KeOp5m.png)
That lingering line in R2C1 can't go right or it would create a closed loop; it must therefore go down. Also some connectivity deductions.
Part 3: Putting some pieces in while drawing some lines
Step 12:
![step 12](https://cdn.statically.io/img/i.sstatic.net/G6GWXm.png)
The lower 1x2 can't be the one with the white dot, because there's no room to go straight. Therefore we can resolve the 1x2s.
Step 13:
![step 13](https://cdn.statically.io/img/i.sstatic.net/Aid2Fm.png)
The bottom-row white dot for one of the bottom-edge pieces (the one with two white dots) couldn't be satisfied if that piece went on the left side. The spot it would go already has a straight line that doesn't turn on either side. Therefore the bottom-edge piece with two white circles is forced to go on the right side.
Step 14:
![step 14](https://cdn.statically.io/img/i.sstatic.net/tQAxTm.png)
Basic deductions with the new white circles, and then some connectivity.
Step 15:
![step 15](https://cdn.statically.io/img/i.sstatic.net/f7mgOm.png)
The lowermost 2x2 can't have a white circle on its bottom row, as there is no room for a straight segment there. So it takes the only 2x2 with a top-row white circle. Then the upper-right 2x2 can't have a white circle in its bottom-right (no room, again). It takes the 2x2 with a bottom-left white circle. The last 2x2 claims the last spot, and voila! All pieces are placed.
Part 4: To the end!
Also known as: I do way too detailed step-by-step.
Step 16:
![step 18](https://cdn.statically.io/img/i.sstatic.net/XSo9Hm.png)
Basic deductions with the new white circles.
Step 17:
![step 17](https://cdn.statically.io/img/i.sstatic.net/04DQXm.png)
The white circle in R3C7 still has to turn, and it can only turn up. Then R2C5 must go down for connectivity. Finally the top of the 3-stack of white circles still needs to turn, and there's only one way for it to do so.
Step 18:
![step 19](https://cdn.statically.io/img/i.sstatic.net/veUBim.png)
Don't-close-the-loop logic on the right side, the last lineless white circle with on-an-edge on the left.
Step 19 (also the solution):
![solution](https://cdn.statically.io/img/i.sstatic.net/pr81mm.png)
A few trivial applications of connectivity logic, and we're done!