How to fix Ubuntu 20.04 on the Lenovo ThinkCentre M920q / ThinkStation P330

I mentioned a few months ago that Ubuntu 20.04 was unstable on my Lenovo ThinkCentre M920q. 18.04 worked fine, so I kept it on there until development circumstances forced me to upgrade.

I took a gamble that the issue might have been fixed in a point release … but no such luck. Luckily, I came across a thread at Lenovo’s forums where a user discovered that disabling the audio in the BIOS appeared to prevent the random hangs after install. This so far has done the trick for a day or two, although I can’t guarantee it completely. But looks promising!

So now I’m back to working off a nice 8 core ultra SFF PC instead of the older 4 core I was about to switch to. Hooray!

Posted in Uncategorized | Leave a comment

How to REALLY fix Chrome Remote Desktop on Ubuntu 18.04

So, as I hinted in my last post, I’ve been fixing up an Ubuntu machine to do some development on.  This machine needs to be headless because it isn’t my primary development machine, and running a VM everywhere I have a Mac has become incredibly painful and slow … especially with having to keep them all up to date.

The first problem here is that basically every free remote desktop solution I’ve tried is ALSO incredibly slow and painful.  Except for Chrome Remote Desktop, which is doing something reasonably smart and encoding the screen with VP8 to send to the remote client.

However, the problem with Chrome Remote Desktop is that it’s configured by default to login on a completely separate X desktop from the logged in user.  Which … I don’t know, maybe I could get that to work, but also it makes it really weird when I’m trying to troubleshoot back and forth on the computer directly vs a headless login.

I found a post titled “How to Install Chrome Remote Desktop on Ubuntu 18.04” and it really seemed like it was going to fix all of the above by modifying the startup script to point at the logged in display number.  Sadly, it really didn’t end up doing that at all.  But at least pointed me in the right direction!

What the aforementioned script does is tell you to look at your current X display number and just hardcode that into the script.  This ends up not working at all, because in my experience, the logged in display number isn’t a constant thing, even if you enable auto login.  So the script just ends up failing with nonsense that you have to dig out of the logs.  In fact, it’s sort of worse that not working because it appears to work at first when you try it out for the first time, but as soon as you reboot you might just lose access to your machine completely when you need it the most.

The solution to this I came up with was to A. auto login my user and B. modify the script to wait for the logged in user and retrieve the actual display number before continuing.

There are, of course, caveats with this whole approach that could use additional hardening, but it’s “good enough” for what I need to do, so I’ll just leave it at that.

So, in addition to the script modifications in the above linked post, look for where FIRST_X_DISPLAY_NUMBER is hardcoded in the script. Instead of replacing it with a hardcoded number, use the following code:

for x in range(0,10):
    if x > 0:
    W_OUTPUT = subprocess.check_output("w")
    print("W_OUTPUT: {0}".format(W_OUTPUT))
    W_OUTPUT_LINES = W_OUTPUT.splitlines()
    if len(W_OUTPUT_LINES) < 3:

    print("FIRST_USER: {0}".format(FIRST_USER))
    print("FIRST 1: {0}".format(FIRST_X_DISPLAY_NUMBER))

    print("FIRST 2: {0}".format(FIRST_X_DISPLAY_NUMBER))
    print("FIRST 3: {0}".format(FIRST_X_DISPLAY_NUMBER))

And voila!  Chrome Remote Desktop will start on whatever X display the logged in user is on.

Posted in Uncategorized | Leave a comment

Ubuntu 18.04 – how to fix auto login

I always joke that when a new release of Ubuntu comes out, it’s time to f*** up all my computers. It’s funny only because it’s true.

The plan had been to use 20.04 when it came out last week, but as it turns out, it’s completely unstable on the target hardware I had in mind, but 18.04 luckily doesn’t seem to have the same problem. That’s a discussion for later.

Today’s post is a quick note on fixing auto login in Ubuntu 18.04 (although there’s a good chance this is still an issue in 20.04).

It seems that simply going to Settings/Details/Users and checking auto-login doesn’t really do the trick. Subsequent reboots would leave the computer at the login screen randomly … seemingly triggering the bug often after issuing a manual reboot command, but sometimes working properly if rebooting via the GUI (gnome desktop manager, the default for 18.04).

Anyway, what fixed it for me was this link. The auto-login switch sets the AutomaticLoginEnable and AutomaticLogin entries, but enabling the TimedLogin variables is what made things start working.

Posted in Uncategorized | Leave a comment

Working around pfSense Unbound DNS race condition on startup

I previously wrote an article on how well pfSense has worked for me.  I’ve so far managed to get it to do everything I have thrown at it, short of integrating fully with my UniFi based network.

There is one very annoying problem I ran into over the past year.  pfSense frequently fails to start now with a race condition related to the DNS server it runs (unbound).  the error is something like the following.

rc.bootup: The command ‘/usr/local/sbin/unbound -c /var/unbound/unbound.conf’ returned exit code ‘1’, the output was ‘[1564567621] unbound[28399:0] error: can’t bind socket: Can’t assign requested address for <ipv6 redacted> port 53 [1564567621] unbound[28399:0] fatal error: could not open ports’

I suspect this is a race condition related to bringing up various VPN or VLAN interfaces.  Fortunately, because pfSense has been so stable, I haven’t ever run into this problem outside of a attended restart.  However, I would have to connect to the server and start the unbound DNS service by hand.

Anyhow, for whatever reason, this hasn’t come on up on the radar of the pfSense developers to fix.  So what else could we do?

It turns out a pfSense package exists called Service Watchdog.  It monitors selected services and restarts them if they aren’t running.  So the workaround is simple.  Install Service Watchdog, monitor the DNS service, and it will keep kicking unbound until everything is up and running.  Usually just on the first retry.

And with that pfSense is back to being the appliance I need it to be.  Hooray!

Posted in Networking, Technology | Leave a comment

Adventures in cooling the UniFi US-8-150W

After hearing about Apple discontinuing further development of the Airport Extreme, I decided to switch to Ubiquiti’s UniFi line of wireless gear about a year and a half ago.  The internet is full of great reviews, so I didn’t need much prodding.

Well, suffice it to say that I’m a fan.  I can get into the details later, but, for now, this post is about one very specific problem and how I fixed it to my satisfaction.

The problem

I am in the fortunate/unfortunate position of having all my cabling home run back into an On-Q structured enclosure.  This enclosure has very little room for extra cooling or power.


My On-Q enclosure

These enclosures are only a few inches deep and a bit hard to work in.  Not anywhere near as nice as having a whole room or a closet dedicated to a rack mount.  But, on the other hand, there’s a small ecosystem of On-Q stuff that makes them still much better than nothing at all … provided you are willing to pay extra for everything.


UniFi Switch 8 (150W)

The switch I have in there now is Ubiquiti’s US-8-150W.  It provides 802.3at Power over Ethernet to all of the ports in my condo.  I’m lucky this product exists, because the next step up is rack mount sized and wouldn’t fit very well in the enclosure.

Anyway, a lot of people have noticed how hot the US-8-150W gets … myself included. At times, I would notice the switch getting up to 73C in the controller software when I was out for the day and the AC wasn’t running.  Locating the switch in an enclosure like this is basically the exact opposite of what the documentation tells you to do.

Now … 73C isn’t that bad, but I know most parts are rated around 70C and my OCD was kicking in.  So I set out to figure out how to get this thing cooler.

I found the following threads (and a few others):

US-8-150W Fan Mod

Is there a problem with US-8-150W switches?

US-8-150W Temperature Range – Is the datasheet wrong?

From these threads, I found a few creative approaches … several folks who simply pointed various fans in different ways at the switch, some who attached cpu heatsinks to the top case (both active and passive), and even some who bothered to open up the case and try adding an active fan.

In any case, it was nice to see the concern about heat was shared by quite a few people and not just myself.  The US-8-150W, if you didn’t know, is passively cooled.  This is one of its great assets, since it runs silent, but also contributes to a high operating temperature.

Potential solutions

With some extra information under my belt, I considered the following options.

  1. Attach passive heatsinks: An appealing option due to the somewhat lower invasiveness and not requiring any moving parts or power.  However, removing the adhesive could be a bit of a pain if I ever needed to use this switch in a different environment or resell it.
  2. Attach a low profile blower fan to the top case: A very appealing option once I discovered the right fan – the AC Infinity MultiFan S2.  It has rubber feet and adjustable speeds, plus the profile was about an inch.  Perfect fit!
  3. Attach a regular fan to the top case: The AC Infinity MultiFan S3 is basically just like the S2, but with a regular fan.  While it would be a better option in an open air environment (larger fans produce more airflow with less noise, especially compared to blowers), it just wasn’t a very practical option due to the low profile of the enclosure.  I ruled this out pretty quickly once I found the blower fan existed.
  4. Attach some small fans to the side vents: I ruled this out because, while it would be effective blowing into the case, trying to mount them for effective airflow and still support the switch on its side in the enclosure would be very awkward.  Also, I wanted to avoid any potential dust buildup inside the switch if it wasn’t necessary for my target temperature.
  5. Attach some small fans to the unused enclosure cabling holes to vent air: In an enclosure like this, it seemed like a good idea to try actually moving air through the enclosure instead of just blowing hot air around inside.  While I didn’t decide against this, I figured I could try other easier approaches first before going down this path.

In the end, I decided to order the passive heatsinks (along with various thermal pads and adhesives) and the blower fan and experiment with the results.

Initial testing

The first thing I did was establish a baseline of 69C.  This was at night with the enclosure closed so that heat would build up to a steady state inside.  All further tests were run by allowing the switch inside to reach a steady state temperature.

First, I tested the fan on the top case, as seen in my enclosure photo above.  I was able to strap it on pretty easily.  With the fan speed set to low, this lowered the temperature to 65C.  Not quite as good as I had hoped.

Next, I raised the fan speed to medium.  This lowered the temperature to a mere 64C.  Since I didn’t want a noisy fan to begin with, and raising the fan speed wasn’t scaling very well, I didn’t bother raising the speed to the high setting.

At this point, I was poking around the switch and noticed that the bottom was unusually hot … hotter than the top had ever felt!  So I tried something different and placed the fan UNDER the switch’s bottom.  This was somewhat awkward to pull off in the enclosure, but certainly doable.  To my surprise, this dropped the temperature to 60C!

Now that piqued my curiosity.  It seemed pretty clear that the CPU was thermally interfaced to the bottom of the switch.  It was time to open the thing up anyway.

Opening the US-8-150W

Opening the US-8-150W is pretty easy.  Simply unscrew the two screws on the back, and slide the top case forward a bit to unlatch.  Then lift the top off, being sure to disconnect the header for the front panel as you do so.  There’s some resistance sliding the top forward that may require a bit of prying, but that’s really all you need to do.


The CPU is thermally interfaced to the bottom of the switch

Voila! Confirmation, as you can see on the middle left beneath the CPU.  Funny because basically every attempt I’d seen at cooling the US-8-150W involved cooling the top case.

This brought me to my final step.  I didn’t really want to flip the switch over to cool it … and, besides, was there any reason I couldn’t just interface the passive heatsink inside to the top case?  I had several 100mm x 100mm x 1mm thick thermal pads that I had intended to use with the passive heatsinks, so I decided to see what I could do with them.


Thermal pads applied

The passive heatsink is about 60mm x 60mm.  Simply cutting a single 100mm x 100mm pad into 4 pieces and stacking them up wasn’t perfect, but it would be enough for my testing.

After laying down the pads one at a time and gingerly sliding the case off and on, I determined a 4 mm thickness seemed adequate.  Also, because the top case doesn’t go straight down onto the bottom case, I found that placing the pads offset about 10mm to the front was a good idea.  By doing this, putting the top case back on and sliding the case back to latch it would “smush” the pad into approximately the right position.  (P.S. If I did this again, I’d just use a 4mm thick pad)

Finally, the moment of truth.  After putting everything back together, the CPU temp was a mere 62C without any fan attached!  The top case also had a much hotter area above the CPU as you would expect.  Simply adding the thermal pad had dropped the temperature 7 degrees!

Frankly, that level of temperature drop was good enough for me.  But since I still had the fan around, I placed it directly over the top case hotspot on low speed.  This reduced the CPU temp to 59C.

At this point, I didn’t feel like I needed any more improvements, and closed everything up for good.


First, the thermal interface to the bottom of the switch is important.  It means that if you want a zero effort way to improve cooling, you should try to cool the bottom of the case first and not the top (although blowing air through the side vents should still be quite effective).  Most of the ad-hoc approaches I saw were probably unaware of this fact.

Second, it turns out that simply interfacing the passive heatsink to the top case via a 4mm thermal pad is a shockingly effective way to lower CPU temperatures inside the US-8-150W.  Now you’re utilizing both the bottom and the top surface area to dissipate heat, plus exposure to free air flow is greater as well.  This all has the bonus of requiring no moving parts or extra power and is basically a “strictly better” kind of fix.

Third, I am quite sure that this mod could be performed on other UniFi products as well, especially the US-8, US-8-60W and USG-3P.  I don’t know if my cooling requirements for those products and others require me to go perform a mod on those just yet, but you may find it useful.

Posted in Networking, Technology | Leave a comment

Nest Temperature Sensor impressions

It’s not uncommon for a thermostat to be located somewhere that doesn’t correlate well with the area you really want to be temperature controlled.  In fact, it’s probably the rule rather than the exception.  Thermostat placement is often dictated by convenience (aka how hard is it to run wiring from the HVAC unit) rather than the optimal location for measuring the temperature.  And, even then, HVAC’s often cover a wide enough space that there isn’t necessarily one thermostat location that can cover all your use cases.

The Nest Thermostat was released in 2011 … seven years ago.  As soon as that thermostat was released, people asked “Can we get a remote temperature sensor?”  After all, that’s the promise of a smart thermostat … doing things smarter.

Well, seven years later, and we’ve finally got it.  Yes, that IS a hint of sarcasm.  The inability to release such a basic addon speaks to some organizational issues at Nest, but let’s not speculate about that.  The point is that it took way too long.

My problem and hoped for solution

One of my thermostats is located in an area that gets direct sun during the day.  The temperature at that time is obviously wildly incorrect, even with the “sunblock” feature on the thermostats.  The hope is that one of these temperature sensors can be placed in a more general location in the room out of direct sunlight.

The other problem we want to solve is shifting the temperature target to the bedrooms at night.  One of our HVAC’s services both one half of the living room and a bedroom, and the thermostat is actually in the living room.  So the problem and solution here are self evident.  Use the temperature sensor in the bedroom at night time.

A third problem, which is a very minor issue, is that my study is located relatively far from its HVAC unit, and the area gets hot while gaming due to my PC’s power consumption.  Wouldn’t it be nice if I could somehow tell the AC to run if that area gets hot?  We’ll see.

Unboxing and hardware

At 39 dollars, the sensor isn’t too expensive.  At 99 dollars for 3, you even get a bit of a discount in bulk.

The sensor, however, has some inherent flaws out of the gate.  Despite the Zigbee radio built into the 1st and 2nd generation Nest Thermostat (ostensibly to enable devices exactly like this sensor), the Nest Temperature Sensor only works with the Nest Thermostat 3rd Generation and Nest Thermostat E via Bluetooth LE.  So a lot of people will have to throw away perfectly good Nest Thermostats just to use one of these.  In my mind, it feels like punishment for adopting the Nest Thermostat early.  Not so smart after all?

I ended up picking up a 3rd Gen Thermostat off eBay on sale to replace one of my 2nd Gens.

The hardware itself is sufficiently polished.  It’s a simple 2″ diameter white plastic puck with slightly recessed nest logo on it.  On the rear, there’s a peg hole for mounting the puck on a wall, and a tiny removable battery cover for CR2 battery inside, which should last about two years.  Overall, I’d say the hardware itself seems impeccable.  If I had to nitpick, it would be nice if we could plug the sensor into an outlet … never having to think about the battery life of the sensor has some appeal.  But overall, the design seems nearly perfect.

Installation and software

The software experience, unfortunately, is less so.  You add the sensor by scanning a QR code on the sensor or entering some identifying information manually.  Then your thermostat looks for the sensor and you tell it what room the sensor is actually in.

Unfortunately, there is some sequence of events wherein adding the sensor and the app status itself can get out of sync with the server.  The result is an endless sequence of where you change the location of the sensor, the app shows it update, and then the next time you open the app, the sensor is right back to its old location again.  Completely infuriating, and only fixed when I deleted the sensor entirely and fiddled with the thermostat itself.

Apart from that, if you think about it, technically you only need one thermostat to be the bridge that relays the temperature from the sensors to the rest of the thermostats in the house.  Well, that would be nice, but Nest’s engineers were not kind enough to go that extra mile for us.  You actually do need to purchase a compatible thermostat for every HVAC unit you want to control via remote sensor.    Again, this feels like punishment for the early adopter.

But OK, at least that problem can be solved with money.  There isn’t any reason you should have to upgrade every thermostat in the house, but it can be done.  Now we get to the core issues with the software.

The app lets you set what sensor to measure the temperature at during certain times of day.  Great, that makes sense … after all, one of the most common use cases is ensuring the bedroom temperature is properly targeted as you go to bed.  The problem here is that the windows of time for changing sensors are fixed.  Morning is 7AM to 11AM, Midday is 11AM to 4PM, evening is 4PM to 9PM, and Night is 9PM to 7AM.  “OK, what if I don’t go to sleep at 9PM?”, says virtually everyone who buys this sensor.  The answer is “Deal with it.”

The second issue is that there isn’t anything you can do aside from targeting a specific sensor.  For example, what if I want the minimum temperature in a few rooms covered by the HVAC to be 68 degrees during the winter?  Sorry, can’t do that.

The third issue is that the sensors themselves aren’t motion detectors.  Motion detection helps with targeting the temperature to rooms you are actually inside.  Again, fulfilling the smart thermostat promise.  But not here.  Perhaps in yet another iteration?

Theory vs Reality

Now, while I complain above a lot, my actual use cases are slightly better.

  1. The direct sunlight issue on one of the thermostats in the morning is definitely improved by having the remote sensor in an area out of the sun.
  2. The “Night” window of time for the second bedroom is completely wrong (starting at 9PM is way too early), but our unit is temperate enough that having the window start early is not much of an issue.
  3. The “hot study” is not very improved, but that’s mostly a function of the room to cool being too far from the HVAC system to have much impact.  Nothing really to do here … I wasn’t expecting miracles.


The best thing that can be said about the Nest Temperature Sensor is that it mostly works.  The key word is “mostly”.  The hardware itself, aside from compatibility, is pretty good.  But, as an entire package, it does not “just” work, nor does it work smartly or intuitively.  In fact, short of being broken completely, it is the least advanced implementation of a remote temperature sensor that could possibly be conceived.

The fixed time windows are completely unnecessary and restrictive.  The lack of ability to target multiple sensors, either via minimums and maximums or averages, is behind other smart thermostats on the market.  The out of the box experience with location assignment of the sensor was borderline “return it” bad.

Overall, I hope some of the issues will be resolved in software, although it is seven years and we still don’t have a way to lower the temperature or hold it for a set period, so that may be just a tad too optimistic.  With that said, adding the sensors did improve my overall HVAC setup somewhat.  I find this product falls well short of its potential, but still improves any setup where you already have or plan to buy a compatible Nest Thermostat.  If you have to throw out an old Nest Thermostat to upgrade, it is unlikely to be worth your while.


Posted in Google, Home, Uncategorized | Leave a comment

A plug and play USB 3.0 Gigabit Ethernet adapter for Mac’s

nwtadpu3gige_gall2In a previous blog post, I noted the insane lack of simple Gigabit Ethernet adapters for Mac’s.  Even the ones that claim to be “plug and play” have some bad reviews when it comes to handling resume from sleep or just generally behaving well long term.

There seems to be a solution to this, and it’s the NewerTech USB 3.0 to Gigabit Ethernet adapter.  The price is right at just 16.75, and in testing with my desktop, it seems to just work.  I went a few days and didn’t notice any difference between it and my integrated Ethernet port.

Of course, this may be a bit too late considering the new Macbook’s are all USB-C, but in general, the Mac world has only just started the transition.  There are still a LOT of people out there who could use a good Ethernet adapter for simple docking at home or on the road.

Posted in Apple | Leave a comment

EasyClosets review and experiences

This is a review of a custom closet design ordered from EasyClosets.


Recently, I got it into my head to redo our main walk-in closet.

This was not for purely practical reasons.  Between our storage cage downstairs and my complete purge of all unnecessary clothing several years ago, I’d say we already had enough closet space for our needs.

For reference, when we first moved in, Elfa shelving was already installed, and I have to say that it works quite well.  However, it never felt premium to me.  In fact, having not ever put much thought into closets, I was surprised that the Elfa components, which I honestly at first thought were just cheap wire shelving, cost something like 22 dollars for a single 18w x 14d shelf.

So really, installing this new closet system boiled down to three main reasons.

  1. I wanted the closet to look premium, even if we didn’t really need the space. Of course, any added space would certainly not be unappreciated.
  2. I felt like I finally had some time to attack the project.
  3. The lure of being able to work on it myself, get something premium, and save a lot of money in the process was very appealing.

Selection and Configuration

I looked at primarily California Closets and Easy Closets.  I ruled out any off the shelf systems pretty quickly as the goal here was to design something completely suited to our walk in closet.  Our closet is roughly 6×6 ft.

California Closets – They have retail stores all over the country.  It was basically what we wanted, but, as expected, the pricing was on the high end … around 5,000 to 7,500 dollars, if I remember correctly.  And, like I said, I wasn’t afraid of a project.

EasyClosets – Their online design system is surprisingly full featured.  Although the interface feels like an early 2000’s webapp, it really does do everything you need to design a closet.   The only glitch I ran into was the fact that the interface allows you to configure shelf heights in 0.25″ increments, when in fact the holes are spaced 1.25″ apart.  The interface also does a very poor job of saving your progress as you go, making it hard to undo your way back to a previous edit.  So make plenty of copies and/or edit with care.

As far as actual differences in quality … as long as you weren’t selecting something super custom through California Closets, I could not find anything online that suggested California Closets was of better or worse quality.  Both are made of 3/4″ thick MDF with high quality laminate finishes.  Solid wood would be nice, but simply isn’t as modular and would probably have to be all floor standing due to the weight.

Ordering, packaging and shipment

I had mocked up a closet on EasyClosets about a year ago, so after about a week of discussing and refining the design this year, I talked to my initial design consultant again.  Shipping is free on all but the smallest orders.  And luckily, our order was big enough to qualify for a 15% discount after talking to the online design consultant.

We eventually decided on a hutch for the back wall, with hanging poles on both sides and a couple of shelves above the hanging poles.  The left wall was configured with over/under hanging poles so we could double up, while the right side was configured with all shelves.  We also added some accessories like tie racks, belt racks, a valet pole, acrylic shelf dividers, etc.

There were some options that were appealing, but which we ultimately left out.  We left our hampers as floor standing baskets.  And the ironing board was somewhat tempting but ultimately just not big enough (nor did we really want to iron in the closet).

We placed the order on a Tuesday and ended up paying 2200 including tax.

The packages shipped the next day after my order (they are VERY automated, search YouTube for examples) and arrived about a week later.  There were seventeen boxes in all.

The packaging was very thorough, but surprisingly not enough, as there were a couple of slightly crushed corners and nicked boards.  Not enough to really annoy us, but if you are very picky, you might not like it.

Installation thoughts

The instructions are relatively thorough, but not completely precise.  For example, the vertical spacing you design online should ideally just be included in the instructions with specific hole numbers to put shelf pins into.  But this doesn’t exist at all.  You have to just mock out the shelf positions yourself.  Sometimes there are smaller considerations such as aligning certain pieces in the same hole on both the left and right side of a vertical.  That doesn’t always work.  Again, not reflected in the design tool.

EasyClosets tells you to use their own wall anchors and generally to avoid the studs if you have metal studs.  When I received the shipment, I took a good look at the included anchors.  They are Buildex E-Z Ancor Toggle Locks.  These are rated for up to 100 lbs under shear.  3/16″ SnapToggles are rated for 238 lbs ultimate load under shear … over twice as strong!  Plus they can be installed into metal studs, greatly increasing their strength under load.  So I said to hell with their bundled anchors and used a bunch of SnapToggles.

When I asked for the hole diameter in their rails so I could figure out what SnapToggles to order, they were extremely reluctant to tell me and blew me off a couple of times … the obvious reason being that they don’t really want customers to draw outside the lines.  Which I understand to some extent, but I feel that if I know what I’m doing, they ought to just let me do it.  I finally told them that I was asking for a part dimension, not their opinion, at which point I got the 3/16″ hole diameter for the rail.  Have to knock off a couple of points for that.

Another confusing portion of the design is in regards to the L-brackets that are used to support the bottom and top of certain installations.  The instructions are rather vague as to where you should put these.  There are a few scenarios called out, which is somewhat helpful.  But again, since they have my custom design already, why not just tell me exactly where to put the brackets and avoid all ambiguity?

Proper tools are a must.  I purchased a 24 inch digital level from Amazon (a Hammerhead) and unfortunately had to purchase a circular saw to make one cut, noted below.  Otherwise, plenty of SnapToggles and the hacksaw and cordless drill on hand were good enough.  For the metal studs, a titanium drill bit and a metal burr to finish the hole were invaluable.  Of course, you should also use an electronic stud finder to verify where everything is (I like to also use a magnetic stud finder to back that up).  You should also buy wooden shims to ensure the rail stays straight and doesn’t bend/conform to a wavy wall.


img_0450Day 0 – Here’s what our old Elfa closet system looked like.







img_1689Day 1 – We tore out most of the old Elfa shelving and moved out all the closet contents.  We managed to cut the steel rail in half to fit the back wall and put those rail pieces up.  It’s a somewhat painful process to cut the rail with a hacksaw, but it’s doable.  We also put up the hutch verticals with cams on the back wall.  The hutch verticals had to be trimmed down as they have cutouts sized for a 3.5″ baseboard while ours is 4″.  For the same reasons, we also had to rip off about half an inch from the bottom cam shelf with the circular saw.




img_1691Day 2 – We mostly finished off the back wall of the closet, followed by the left side.  The majority of time was spent getting through all the metal studs and placing the verticals and shelves together to figure out exactly where the rail could be attached to the wall studs and not interfere with the placement of the vertical sections.  Just relying on measurements was not enough.




img_1695Day 3 – Right side of the closet finished.  Began assembling drawers and installing drawer rails in the hutch.






img_1697Day 4 – Redid some of the left and right wall rails with proper wood shims under each attachment point as needed.  Finished installing the last couple of drawers in the hutch.  Installed the cleat under the top right of the back wall to support that vertical section.  Installed the toe kick.





Day 5 – Took out the Elfa wall anchors and spackled them over. Vacuumed and wiped everything down.

img_1703Day 6 – Adjusted some of the shelves and poles up a bit after testing with some of our clothes.  Everything goes back in!  All done.








Appearance – The closet definitely feels more serious, modern, and organized.  That’s a plus and is basically the whole reason I undertook the project.  The chestnut finish we selected gives a heavier feel, which is OK.  The verticals and thicker shelving do make the closet feel more closed in, even if the shelves aren’t as deep as the previous Elfa shelving.  Overall, I think that’s a slight minus.  In hindsight, I’m thinking perhaps I should I have filled the side walls and left the hutch free standing, which would have given a similar amount of space, but exposed more open space as you walk into the closet, which would feel roomier.

Roominess – Are we fitting more stuff in here?  I actually don’t think we gained any space.  What we did gain was better organization.  Previously, shoes and purses were stuffed onto a shoe tree, inside a small shoe rack, and on large hanger bags.  Now with our custom shelving installed, all of that stuff has a specific large section of shelving that it can go into.  I don’t think we’ve fit more stuff into the closet overall, but everything looks like it has its place.

Sturdiness – After seeing how Elfa shelving is installed, I was less than impressed.  The top rails that support the entire system are installed with these Elfa wall anchors.  Compare them to SnapToggles and you can just feel how much weaker they must be.  They don’t even expand completely behind the wall and Elfa doesn’t bother telling you the shear and tensile ultimate loads!  Taking some of the toggles out was occasionally difficult by hand, but also occasionally quite easy.  Again, not a good impression.

With SnapToggles in at least 2 metal studs per section and others in drywall now, I’m quite confident an adult could stand on them and nothing would come down (at least not due to the anchors).  So I’m quite happy with this.  I’m sure the included E-Z Ancor’s would have worked fine for the shelf system (otherwise EasyClosets wouldn’t send them), but they aren’t as high quality as the SnapToggles, and they can’t go into metal studs like a SnapToggle.   Also, while a rare scenario, anything heavy mounted into drywall can easily come down if there is water damage that weakens the drywall.  Attaching to studs helps the mounting system retain its integrity.


Seems like a nice upgrade!  It was significantly more time consuming than I had planned, although, to be fair, I knew that was probably going to be the case, because it always is.  I don’t do this for a living!  In a regular single family home with wooden studs, the installation process would have been much simpler.  Metal studs are just such a pain in the butt to work with.

I was a bit surprised we didn’t get any extra space out of the effort … turns out the old closet was pretty packed already.  If maximum storage space is your goal, then more open style shelving like Elfa or the equivalent probably makes more sense.  The sheer bulk of the shelving in the Easy Closets system and the presence of full vertical panels makes recovering that space more difficult as compared to a fully optimized Elfa shelving system.  It turns out that cramming a bunch of crap into bins, while not particularly organized, is very space effective.

Surprisingly, the valet pole is a little perk we end up using every day.  It’s really handy for temporarily hanging something up to dry or getting ready in the morning.

Overall, I’m quite happy with how it turned out, and I expect I’ll convert the guest closet at some point now that I know how it all works.

Posted in Home | Tagged , , | Leave a comment

iPad Pro 12.9 long term review

In my previous review of the iPad Pro, I touched on a lot of the awkwardness surrounding the pricing, new peripherals, and overall experience of Apple’s latest tablet.  Now that I’ve had the iPad Pro 12.9 for almost a year, a long term review and some analysis of how I use it is certainly in order.

First of all, I use the iPad Pro every day.  It’s basically my tablet of choice at home, replacing what I used to use my iPad and iPad Mini’s for.  The interesting thing is that I use it entirely with the Smart Keyboard … essentially like a touch enabled laptop.  I find that for casual use (which it entirely is at home … if I need to do work, I go sit at my desk) I much prefer the iPad Pro to a regular laptop.  It’s simply quicker to pick up and use, doesn’t require lots of battery charging, and doesn’t roast my legs.  The screen is also big enough that split screen multitasking is reasonable for doing things like watching Twitch and web surfing at the same time.

I hardly use the Pencil at all, but I do find it useful in the rare cases where I need to sign and return documents.  Unfortunately, the process of doing that is a bit clunky, involving saving PDF’s off to iCloud, copying them and annotating them in PDF Expert, and returning them via e-mail, but at least I don’t have to yank out the printer.

The Smart Keyboard is an essential accessory for the iPad Pro, but it still doesn’t feel right.  To me, the keys themselves are perfectly typable, but I miss those function and escape keys a lot.  Yes, the massive folding contortions required to set up the iPad still feel suboptimal.  Oh, and keyboard backlighting is indeed an issue.  Overall, I wish Apple would find some industrial design willpower to build a kickstand into the iPad itself.  It might enable a much lighter and more straight forward cover design.

On the bright side, however, the keyboard being made completely of waterproof fabric makes it very easy to clean.  If there’s one thing I don’t like about any keyboard, it’s the crud that makes its way into the nooks and crannies of the keys that is impossible to properly clean out.  I honestly wouldn’t mind some variation of this fabric making it into a new Macbook, but the fashion implications of that might not meet Jony Ive’s sniff test.  At any rate, a Rev. 2 Smart Keyboard will be welcome when it comes.

Pricing on the new iPad Pro has dropped tremendously in the past few months, making it a not so great buy for early adopters.  I think what this signals is a lot of folks bought it on instinct and decided it just wasn’t for them.  It’s not uncommon to see a fully kitted iPad Pro with 128GB and LTE with keyboard and pencil on Craigslist for roughly what the base 32Gb model would cost new.  I suspected the sloughing of users would be the case, but I bought anyway … early adopting is fun. 🙂  And besides, I really do use it enough that I felt I had gotten my money’s worth out of it.

iOS 9 and 10 look to be disappointing for the iPad.  As I’ve said before, the iPad is largely held back by its software … with multitasking implemented in what feels like a version 1 prototype rather than a polished solution.  To make things worse, many major apps still don’t run at the iPad’s native resolution after a whole year!

I believe many consumers thought that the iPad Pro signaled that iOS 10 was going to be a major step forward for iPad’s … as one couldn’t possibly release an entirely new iPad Pro and call it “Pro” without making sure the software justified it … could they?  Turns out they can do that.  New iPad improvements are nowhere in sight.

One of the most egregious bugs has to be the performance of Safari in iOS 9.  For nearly an entire year, the browser has had a bug that prevents it from rendering the page when you scroll on many websites until you stop scrolling completely.  It’s a huge bug in probably the most important use case for the iPad … good web browsing.  I really can’t stress how disappointing it is that nobody at Apple cared enough to fix this bug until iOS 10.  There’s no excuse for it.  None.

For errands and the occasional day trip, the iPad Pro is entirely unpleasant to carry around, being much too large in general.  The iPad Mini is still my goto tablet for day to day back and forth travel, since it fits in my jacket pocket and doesn’t need any babysitting or man purses to hold it.  But if I do know I’m going to be sitting down for a long while … perhaps waiting at someone’s house or letting the GF do some shopping while I sit at a cafe … the iPad Pro gets thrown in a bag once in a while.

Performance of the hardware itself has been impeccable.  4GB of RAM is so far above the other iOS devices that I know this tablet will be good for a few years to come, unlike the iPad Pro 9.7.  And I’ve never had a complaint about the speed of the A9X processor … everything is lightning quick.

One of the most important follow up’s is going to be about using the iPad Pro for work. I have enough to say about that that I’m going to save that for a separate post.

To sum things up, the iPad Pro 12.9 fills a pretty specific niche … one somewhere between a full blown laptop and the traditional definition of iPad.  I don’t personally think the iPad Pro 12.9 is worthwhile without the Smart Keyboard … it’s just an awkwardly large tablet at that point.  With it, however, it’s a much more pleasant to use version of a laptop and an iPad in one … as long as your needs are reasonably casual and basic.  It turns out that this is good enough for me to use it all the time.  So while the iPad Pro 12.9 wouldn’t be my first iPad purchase (that honor goes to the Mini 4), I definitely feel like I’ve gotten my money’s worth so far.




Posted in Uncategorized | Leave a comment

Silly Apple tricks: #5 – The USB Ethernet adapter

Want to get gigabit wired speed from your MacBook?  You can use a third party adapter with a funky third party driver (which, if you do any sort of research, are apparently all completely unreliable).  Or you can use Apple 100mbit Fast Ethernet adapters.  That’s right.  1/10th the speed of gigabit.

But a USB 3.0 adapter?  Sorry, you can’t have that.  Want a gigabit connection on your MacBook Pro?  Better use the Thunderbolt Ethernet adapter.  That wouldn’t be so bad, normally … Except you need those Thunderbolt ports to connect your monitors!  Oh, and if you have a new MacBook 2015 and want a gigabit wired connection, you’re just completely out of luck.

By the way, Thunderbolt docks are egregiously expensive and notoriously unstable.  USB 3.0 accessories, on the other hand, are very inexpensive.  I’d gladly hang a USB 3.0 Ethernet adapter off a hub at my desk or bring one with me on the road.  If I were allowed to.

USB 3.0 has been around for nearly five years now and drivers on Windows have existed for nearly as long.  Is it really too much to ask for a USB 3.0 gigabit adapter for the Mac?

Posted in Uncategorized | 1 Comment