Over the last year we added three dormers to our house. This added two bedrooms to our third floor, bringing it to four bedrooms. We changed:
There are two things about this that annoy me:
Why do we need to wire smoke detectors in parts of the house we're not changing? I understand a general principle of "while you've got stuff opened up you should bring it up to modern best practices," but our first and second floors weren't being opened up as part of this construction, so this required a lot of fishing.
The amount of work and expense that went into installing new service so a single smoke detector can be separately metered is nuts! It draws about half a Watt! The power it uses is a rounding error compared to rent, whoever pays for it. As the landlords we're already paying the electric bill for the whole building, because some circuits power both units, so attaching the detector to either existing unit should have been fine. When I asked the inspector if they could give us some leeway here they weren't interested.
This should work like heat: the city doesn't require us to have a separate boiler to heat the water for the radiator in the entryway, just that we pay for the fuel for the boiler that does.
This was a tricky job because our house is too close to the neighbors' for them to be able to come in with a truck. Instead they needed to climb the tree manually, cutting pieces off and lowering them to the ground with pulleys.
|$6,700||Wired smoke detectors in the rest of the house|
|$716||Lights and fans|
Working with architect
Getting approval from the Somerville Zoning Board of Appeals. The house was already non-conforming in terms of having too much floor area for its lot size, so we just had to demonstrate that it would be no more deterimental to the neighborhood than it currently was. Dormers are very common here, so this wasn't hard.
Trying to find a structural engineer.
Gave up on finding an engineer first, decided to find a contractor and have them subcontract the engineering. Talked to several companies, picked Brendin Lange (unfortunately).
We move out, Lange does one day of demo. Excuses for why things aren't moving along.
Less plausible excuses from Lange.
Terrible excuses from Lange, followed by his stopping returning my calls.
Trying to find another contractor.
Found good contractor, they started almost right away on demo and shell, after I got the trees trimmed.
Shell finished to being watertight. Framing, strapping, electrical.
Insulation, plaster, painting, flooring, final electrical.
Floor varnish, waiting for fumes to subside, moved back in.
Common-area smoke detector work.
Zillow thinks our part of Somerville is about $430/sqft, based on sales over the last few years, so $462/sqft is on the high side. Though this also involved converting the attic to conditioned space by insulating the roof instead of the ceiling, and converting 90sqft from having 5-8ft sloped ceilings to being full-height, so the effective gain is a bit higher.
Alternatively, from a per-bedroom perspective it looks pretty good. The marginal bedroom  in our area is currently $645/month,  so at $55k/bedroom you're only talking 7 years to make the investment back. And having separate rooms for everyone in the family while still being able to have housemates is worth a lot to us!
 I used the difference between a 3br and a 4br unit here, because there aren't enough 5br or 6br units on the market to extrapolate from. The $645 estimate is the average of each month's delta over the last year:
I wrote a Slack tool that implements a CFAR-style prediction market:
/predict create rain-2017-03-18 "it will rain tomorrow" tomorrow 40% /predict rain-2017-03-18 70% /predict rain-2017-03-18 80% /predict resolve rain-2017-03-18 true
A contract is some proposition that isn't known now, but will be known later, at which point it can be resolved true or false. When you create a contract, you give some details about how you'll resolve it, a time when it will close and stop taking new predictions, and some "house odds". These odds try and start the predicting in a reasonable place, so no one gets a big windfall from noticing things first.
When the market closes, people earn points in proportion to how much they improved the group consensus.  This isn't a traditional prediction market in the sense of having buyers and sellers. The downside is that it offers windfall profits to the first person to react to news, but the upside is that anyone can make a prediction at any time without needing to have a counterparty.
The code is on github. I've been using heroku to host it, but it can run anywhere. If you're having trouble adding it to slack let me know.
 Specifically, you get (or lose) points in proportion to the log of the ratio of your prediction to the one before. So if you predict 60%, I predict 70%, and it's resolved true, then I earn log(70/60) points. If it's resolved false we recast these predictions as if they were predicting the opposite, so 30% and 40%, and I earn (lose) log(30/40) points.
Yesterday I refactored some python code that effectively changed:
floor(n * (100 / 101))into:
floor(n * Decimal(100/101))For most integers this doesn't change anything, but for multiples of 101 it gives you different answers:
floor(101 * (100 / 101)) -> 100 floor(101 * Decimal(100/101)) -> 99In python2, however, both give 100:
floor(101 * (100.0 / 101)) -> 100 floor(101 * Decimal(100.0/101)) -> 100What's going on? First, what's the difference between python2 and python3 here? One of the changes not listed in What's New In Python 3.0 is that floor now returns an int instead of a float:
2.x: int(101 * Decimal(100.0/101)) -> 99 3.x: int(101 * Decimal(100/101)) -> 99The root of the problem is that 100/101 is a repeating decimal, 0.99009900..., and so can't be represented exactly as a Decimal or a float. To store it as a Decimal python defaults to 28 decimal digits and rounds it: more...
One of the major reasons existing residents often oppose adding more housing is that as more people move in it gets harder to find on-street parking.  This gives us things like requirements that there be at least one off-street parking place per unit, or just prohibitions on building out. What if, in places like Somerville where all parking is already by-permit-only, we added a new category of housing unit, one that didn't come with any rights to street parking?
The requirements for building these would be lower, and they would end up renting somewhat more cheaply. I know a lot of people who don't own cars and walk / bike / taxi / take public transit everywhere, who I think would be happy to rent units classified this way. more...
This is a post where I'm trying to figure out what I should do from a tax perspective. I'm not that knowlegable about taxes, but I still have to make a tax-relevant choice. So please read this as "Jeff writes down what he's currently thinking about how to make this decision" and not "Jeff tells me how to decide whether to early exercise."
Update 2017-03-07:: Ben Kuhn has a much better post, Stock options are really complicated. Go read that instead.
Update 2017-02-17: The modelling in this post is wrong to the point of not being useful. I had thought that the reason to exercise early was to get capital gains treatment on options, but ISOs already have this if you're careful with them. The reason to exercise early is the alternative minumum tax.
Standard Carcassone is too complicated before about age 9, but if you adjust the rules (substantially) it can be a lot of fun with much younger kids. Stages of play:
I've been playing stage #1 with Lily (nearly three years old) a lot lately, I've played stage #2 with a five year old, and stage #3 with a six year old. The exact rules don't matter that much, the important thing is to have fun and to teach the idea of playing a game that has rules you need to follow. For example, Lily wanted to play with the meeple as well, so we play that every time you put down a tile you also have to put a person on it.
|Code||Apartment Price Map|