Monday, December 26, 2016

Review: Leviathan Wakes

Leviathan Wakes is the starting novel in the Expanses series, which has spawned a TV series of the same name. The TV series got outstanding reviews from various friends of mine, but let's face it: I'm never going to have the time to watch that much TV! My recent attempts to watch Daredevil in 5-10 minute chunks basically made the series very disjointed in my memory.

Fortunately, it's fairly straightforward to checkout books from the library, and once I got it I dove into the novel n rapid order.

The good news is that the book's very readable, with great characters, transparent prose, and interesting situations. The two alternating viewpoint characters (Detective Miller and Captain Holden) have diametrically opposed life experiences, as well as attitudes towards information. Miller views information as currency, to be used and withheld or bargained with, while Holden sees that information should be shared as much as possible and that humans would do the right thing if they were given all the information. The latter is very much in line with views many techies hold in Silicon Valley, but Miller is clearly by far the more sympathetic character in the novel, and comes off as being far more effective, while Holden's naive approach brings one disaster after another.

The setting is also intriguing, set in the relatively near future, with a humanity on the verge of colonizing the entire solar system and making use of all its resources.

The bad news is that you pretty much have to turn off your brain for many of the plot points because they simply do not make sense. Even the villain of the novel could probably have gotten what he wanted a lot more easily than hatching the nefarious plot he eventually did.

All in all, while an enjoyable read, this is more along the lines of Peter F. Hamilton-style space opera rather than Alastair Reynolds. I'll probably place more holds at the library, but am not running out in a hurry to pay full price for the other novels in the series. Mildly recommended.

Wednesday, December 21, 2016

First Impressions: EF 40mm/2.8 STM

Canon occasionally has massive sales on their refurbished equipment. I'd been eyeing the 40mm/2.8 for a while, and when the price dropped below $100, I gave in to the temptation and bought it. There are a few reasons to have done so:

  • It's smaller and lighter than my EF 50mm/1.8 II.
  • It's got better focusing, since it's sporting the newer STM motor.
  • I finally broke my Sony RX100, and needed a camera. Rather than replace the RX100, I figured my EOS 5D2 is a much better camera and just needed to become smaller and lighter to make it easy to carry. For $100, I could buy a lens and still have left over to replace the compact camera in the future.
The size and weight together made me more willing to carry my 5D2 around --- with my ancient Galen Rowell Chest Pouch, I can now carry the 5D2 on the triplet and ride it, do a hike, and then ride back without feeling like the weight of the world was on my shoulders. I could carry Boen in a backpack or on my shoulders and still carry the 5D2 with the 40mm attached. I did not even attempt to carry a second lens, though I did carry a small fill flash.

I recently brought it along on a hike with my family. My wife brought along her EOS M3 with the 22mm/2 STM, and we shot in similar lighting situations. From the focal length point of view, both lenses are in the same ballpark (22mm * 1.6 = 35.2). 
EOS 5D/40mm 2.8 STM

EOS M3/22mm 2.8 STM

What's interesting is that the color palette on the EOS M3 looks a little more saturated to me (this is using Lightroom to process the RAW files). In both cases, the camera produces sharp images, though as you might guess the 5D2 wins simply on the basis of being faster to react to changing situations.

In practice, having only one focal length can be liberating --- after a while, you get used to the field of view of the lens and you can frame shots quickly. And in the age of Lightroom and easy cropping, there's no real reason to need a longer focal length up to about 3X the focal length of your main lens: modern SLRs have so many mega pixels that you can crop 50% of the picture and it'll still be usable.

The 5D2 with the EF 40mm is still about one and a half times the weight of the EOS M3, so for big trips where I'm space/weight constrained I'm still likely to stick to the EOS M3; I'm unlikely to ever just carry the 5D2 for a Tour of the Alps, for instance.. But for situations where I just want to have a camera? I now have one less excuse not to use my EOS 5D2 where before I'd just bring the compact and live with missing shots while waiting for it to turn on.

Recommended.

Tuesday, December 20, 2016

Review: Playstation Camera (PS4)

I hadn't planned on ever buying the PS4 camera. It was unbundled from the PS4 for good reason: the only reason for its existence was the fear that Microsoft's Kinect would take off, and Sony needed a good response in case that became the main way to use a game console. When Kinect became an obvious failure and no games supported it on the XBox, there were no games that required the PS4 camera either.  Of course, if you have plans to get PSVR or you do live-streaming (neither of which appeals to me), the PS4 Camera would be essential.

What drove me was Just Dance. I first bought versions of Just Dance for the PS3, which were about $5 each. It turned out that my wife liked the game, and played it a lot, but complained about having to hold the move controller in one hand for scoring purposes. Versions of Just Dance for the Kinect wouldn't need the controller, but I wasn't about to switch platforms just for one game. I did some research, and discovered the Just Dance for the PS4 with a Playstation Camera wouldn't need you to hold a controller!

There was a sale over the holiday season so I managed to pick up a camera for $30. Just Dance 2015 could be had around $20, and we'd be in business. In practice, Just Dance's action pick up doesn't seem very sensitive (which is probably a good thing). Basically,  if you flail around in the general direction you'd score correctly. My wife was very unimpressed when I could score as high as she did, since she's obviously a much better dancer. (I couldn't deny it simply because after each song the game shows you a video record of you flailing around trying to score) But she did appreciate not having to have anything in her hand.

The game does do a good job of making you move. My step-counter would run up about 500 steps per song, which is about right. My HR would go up as well, indicating that the Vivoactive HR is only accurate for people who aren't cycling.

What surprised me was that the PS Camera got used by Bowen for the free app that came with every playstation: Playroom. Bowen never seems to get sick of the AR Robot, and the companion app that lets you draw an object and then send it into the augmented reality view of the room was just as addictive to him as having paper and crayons.

For the standard price of $60, the PS4 Camera is pretty poor value (though you can get it as part of the bundle for PSVR), but at discounted prices it's reasonable.

Mildly recommended.

Monday, December 19, 2016

Friday, December 16, 2016

Review: Garmin Tempe Sensor

The Garmin Vivoactive HR has every sensor the Edge 800 or Fenix 3 HR has except for the temperature sensor. I'm sure some of it is cost cutting (though it's probably measured in the cents) but some of it is also practical: a device on your wrist is going to end up measuring your wrist's temperature, which hopefully is somewhere around 98.6F. That's not very useful, however!

The solution is the Garmin Tempe sensor. The device was actually created for the Fenix series of Garmin outdoor watches, since a temperature sensor really should be away from your body. It works and pairs with the Vivoactive with no problem, and if you plan to only record temperatures for your bike rides, you can just leave it on your bike (I stuff it into my handlebar bag) and then it's a "pair and forget" device. On my bike rides, it never takes longer than about a minute before the Vivoactive picks it up and it records the temperatures on nice graphs. It takes about 3 minutes for it to come down to ambient temperature from my indoor bike parking area, which is not an issue --- you can actually see in most cases that the indoor bike parking is colder than the ambient temperature, since on a cold day I tend to want to ride in sunny places.

If you want to take the device on a hike, the clip it comes in works on belt loops. Note that it doesn't actually work on belts. It's not big enough or long enough to go around a broad/tall belt, but it's just the right size to go on a belt loop and stay on all day even when switching from cycling to hiking and vice-versa. The tough part is to remember to take it off your pants before sticking the pants into the laundry!

The $25 question is whether the Garmin unit uses it to correct elevation/altitude data. I don't know, and have no easy way to figure it out short of taking it to the Alps and climbing a few marked passes with accurate elevation signs back to back. While I'm happy to do that, it'll take awhile for me to get to it. I know that on stable weather days, the Edge 800 (with the built in temperature sensor and barometer) is easily accurate within 5 meters. I'd love to see if the Vivoactive HR can also achieve that.

In a nice touch, the device uses the same battery (CR2032) as all other Garmin sensor units. That means you can expect long life and you only need to stock one type of backup batteries and it'll work with all your sensors.

In any case, it's cheap, light, easy to carry (and automatically pairs). It's unobtrusive in use. It's certainly not essential, but it's fun to go back and say, "Oh that's why it felt so cold!" Recommended.

Thursday, December 15, 2016

Review: A Twist of the Wrist II

A Twist of the Wrist II was recommended to me by Pengtoh as being one of the best books about bike handling. While I've never actually ridden a motorcycle, my understanding is that as 2 wheeled vehicles that move at high speed, some of the skills and thinking involved might be transferable to the lighter, more environmentally friendly vehicles.

To my disappointment, the first third of the book is all about throttle control. Motorcycles (and bicycles) are designed to handle best with a 40/60 weight ratio (40% of the weight on the front, 60% on the rear). When you corner a motorcycle you tend to have a 50/50 weight balance. How do you get the ideal 40/60 weight balance? You apply a constant 0.1g thrust at the throttle. That means that all through the corner you need to be accelerating (he calls this roll-on) throughout the entire process. This sounds scary but I guess if you're going to be racing a motorcycle the answer seems to be: "More gas! What was the question?" This has zero applicability to bicycles: not only is pedaling through corners difficult (you risk pedal strike if you have a low BB), but you just don't have the power to apply a constant 0.1g acceleration through any corners!

The second third of the book is more applicable to cycling. It's about relaxing. Basically, the barrier to high performance on 2-wheeled vehicles is what Keith Code calls SR (Survival Reflex). If your SR is triggered you will slow down. Worse, if your SR is counter to what the bike needs to be doing, you'll crash. The key to not triggering your SR is to relax. Most of the advice here is very relevant: keep a bend in your elbows, unweigh the seat, and don't keep a death grip on the handlebars! In particular, when you encounter road chatter, a frequent reaction is to tighten up on the handlebars. Don't do that! Keith Code notes that by tightening your grip on the bars, any oscillation will now get transmitted throughout the entire system through your body, which is a bad bad thing to have happen. Good stuff. He provides practical tips on how to get better --- including slowing down before you approach a corner, and then slowly speeding up your corner entries as you get more comfortable. A few things aren't applicable: for instance, a motorcyclist can lean all the way over to the point where his knee touches the ground. Bicyclists can't do that --- the tires will lose traction long before that. Furthermore, a motorcycle is so big and heavy that counter-steering is the only way to quickly change the lean, while bicycles (with the exception of tandems) can generally be steered without counter-steering, though Code points out that if you do counter-steer you can start the steering action later, which lets you get through the corner by leaning less at greater speed! Good stuff, and worth a refresher read even if you're a decent bike handler.

The last third of the book is about avoiding the tunnel vision that tends to happen when you start exceeding your comfort zone. He talks about picking a point far enough ahead that you still have sufficient situation awareness to know what's going on. Similarly, for cornering he recommends first look at the place where you've picked to turn the bike, and then just before you get there to look through the turn so you steer the bike there. He also recommends that every corner should have only one steering action, and if you second guess yourself in the middle you'll slow down. Again, useful advice, and worth a read.

Obviously, you can't learn to ride a bicycle at high speed by reading a book. But assuming you've had a few mountain descents under your belt, some of the counter-intuitive things Keith Code mentions are worth practicing. Some of the advice (like tuning suspension) isn't applicable to most road bikes, but hey, anything with two wheels simply doesn't behave like a car, so in general it's worth seeking out people who've spent a lot of time thinking (and practicing) bike handling.

The oddest thing in the book is the glossaries at the end of each chapter. They cover elementary terms (such as the phrase "vice-versa") that makes me wonder about the vocabulary limitations of motorcycle racers.

The book doesn't cover any low speed bike handling problems (which motorcycle road racers never encounter but mountain bikers do), so don't expect any special insight there.

Otherwise, the book's worth a read. It doesn't make me want to ride a motorcycle, but does give me some sympathy as to the problems a motorcycle road racer would encounter.

Wednesday, December 14, 2016

Review: Hillbilly Elegy

Lots of websites and book review sites recommended Hillbilly Elegy during election season. All of them promised insight into the Trump voter, the anguish of working class whites, and the difficulties surrounding the culture of the poor whites in Appalachia. Reviews promising insight and enlightenment usually means that the book would be a boring slog, but the most surprising thing about this memoir of growing up in Kentucky and Ohio is how compellingly readable it is, despite the horrors inflicted upon J.D. Vance during his childhood.

Part of it is that we know that the book has a happy ending for Vance (he ends up graduating from Yale Law School after surviving a stint in the marines), if not for the Appalachian whites (and unfortunately, the country as a whole). But most of it is that the style is eminently readable, transparent, and neither sentimental nor full of self-pity. The childhood was astonishingly violent. He speaks of his grandparents as his social support when he was growing up, but the family history explains why their daughter (his mom) grew up to be a drug addict:
Mamaw told Papaw after a particularly violent night of drinking that if he ever came home drunk again, she’d kill him. A week later, he came home drunk again and fell asleep on the couch. Mamaw, never one to tell a lie, calmly retrieved a gasoline canister from the garage, poured it all over her husband, lit a match, and dropped it on his chest. When Papaw burst into flames, their eleven-year-old daughter jumped into action to put out the fire and save his life. Miraculously, Papaw survived the episode with only mild burns. (Kindle loc 674)
Vance's mother rotated through a series of relationships, having children with different fathers, and then later (after she stopped) a series of boyfriends, none that she could keep for the long term. But the marital strife left their marks on Vance:
 Mom and Bob’s problems were my first introduction to marital conflict resolution. Here were the takeaways: Never speak at a reasonable volume when screaming will do; if the fight gets a little too intense, it’s okay to slap and punch, so long as the man doesn’t hit first; always express your feelings in a way that’s insulting and hurtful to your partner; if all else fails, take the kids and the dog to a local motel, and don’t tell your spouse where to find you—if he or she knows where the children are, he or she won’t worry as much, and your departure won’t be as effective. (Kinde Loc. 1043)
At one point, Vance's mom threatens to commit double-suicide by crashing the car she was driving. When Vance jumps to the backseat for his own safety, his mom stops the car to drag him out of the back seat to beat him. Escaping the car, he races to a house and begs the house owner to save him by not letting his mom in, but his mom breaks down the door of the house and is about to kill Vance when the police show up to arrest her. Reading accounts of incident like this over and over again would be horrifying, but Vance manages to intersperse these episodes with reminders of how his grandparents always stepped in to rescue him and his sister.  The bitter fighting when they were raising his mom had gone away and made them decent grandparents.

Vance's insights are compelling:
The New York Times recently reported that the most expensive schools are paradoxically cheaper for low-income students. Take, for example, a student whose parents earn thirty thousand per year—not a lot of money but not poverty level, either. That student would pay ten thousand for one of the less selective branch campuses of the University of Wisconsin but would pay six thousand at the school’s flagship Madison campus. At Harvard, the student would pay only about thirteen hundred despite tuition of over forty thousand. Of course, kids like me don’t know this. My buddy Nate, a lifelong friend and one of the smartest people I know, wanted to go to the University of Chicago as an undergraduate, but he didn’t apply because he knew he couldn’t afford it. It likely would have cost him considerably less than Ohio State, just as Yale cost considerably less for me than any other school. (Kindle Loc 2675)
I had similar epiphanies when I showed up at graduate school to discover that many of my cohorts had already had NSF fellowships, something that I didn't apply for because I'd never heard about it, despite having had close relationships with professors as an undergraduate. This type of knowledge is taken for granted by folks who grow up with educated parents (my children would likely never suffer from this type of disadvantage), but when many members of the privileged, when told of my experience would just disparage me as being "stupid" instead of understanding (as Vance writes) that there's a huge difference between lack of knowledge and social capital and lack of talent:
social capital is all around us. Those who tap into it and use it prosper. Those who don’t are running life’s race with a major handicap. This is a serious problem for kids like me. (Kindle Loc. 2965)
What rescues him is his mentoring relationship with Amy Chua (yes, the Tiger Mom), who in this book advises him not to take an aggressive clerkship with a judge known to destroy relationships and for him to prioritize his future wife instead. Clearly, she's a more interesting character in person than the one-note person in her memoir.

It's fashionable among Silicon Valley's "middle class" to note that environment matters less than genetics or raw talent. But that's only for relatively optimal environments: increase financial pressure and many relationships will break down. Throw in drugs, alcohol, and other social problems into the mix, and you end up with un-salvageable childhoods:
Even excessive shouting can damage a kid’s sense of security and contribute to mental health and behavioral issues down the road.... American working-class families experience a level of instability unseen elsewhere in the world. Consider, for instance, Mom’s revolving door of father figures. No other country experiences anything like this. In France, the percentage of children exposed to three or more maternal partners is 0.5 percent—about one in two hundred. The second highest share is 2.6 percent, in Sweden, or about one in forty. In the United States, the figure is a shocking 8.2 percent—about one in twelve—and the figure is even higher in the working class. The most depressing part is that relationship instability, like home chaos, is a vicious cycle. (Kindle loc 3045-3060)
In my early working life in Silicon Valley, I was once taken to a bar by a co-worker I barely knew. There, I met his friends, one of which introduced his girlfriend as being "a scientist." In later conversation, I asked her if she was a post-doc, a graduate student, a staff researcher, or professor. Her response was: "Wait a minute, you know what a post-doc is? Nobody in this crowd knows or even cares that I'm a post-doc at SRI!" Clearly, even in Silicon Valley, the social segregation keeps the different circles separate and unaware of each other.

In any case, this is a compellingly readable book with great insight and important reading for everyone. Highly recommended.

Tuesday, December 13, 2016

Review: Snapcircuits Rover

Bowen liked the Snapcircuits Arcade kit so much that there are days when he wakes up at 6:00am and asks to do projects. So when the Snapcircuits Rover went on sale during Black Friday my wife and I picked it up.

The concept is fairly similar: you get a breadboard that's mounted onto a chassis. The chassis contains the batteries, wheels, motors, but none of the electronics that you then wire together to put together a remote control vehicle. The remote is a simple flimsy remote that's fixed function, by contrast.

The problem with the rover, however, is that it's of very limited variation. The wireless module and the control modules are two very big blocks that are connected by a bunch of resistors. In fact, as long as you want to receive signals from the controller and move the rover, you don't have any choice but to wire up these two big blocks a certain way. The problem then is that you don't have much space left on the breadboard for much else. Thus, the kit comes with 3 rover variations, and all the other projects basically treats the rover as a fixed unit supplying the power. Worse, the manual states that your other Snapcircuit kits (save a few exceptions) cannot be used on this circuit board because the voltage and power draws are different.

If I were the designer of the system, I would have fused the wireless and control modules together into one block, eliminating the need to take up so much space on the board. Furthermore, I'd also include a voltage stepper so that the rover would be compatible with other Snapcircuit kits.

As it is, the Rover sounds great, but is so limited that Bowen basically never played with it again after one night. I returned the toy to Amazon and he didn't even notice!

Not recommended.

Monday, December 12, 2016

Review: The Old Man and the Sea

I'll admit to never having read The Old Man and the Sea, or actually, any of Hemingway's work before this. Since it was a short book and easily available at my library as an eBook, I checked it out and read it.

I think this is one of those classics that don't necessarily age well. Compared to his contemporaries, Hemingway had a refreshingly direct prose style that was transparent. However, most modern prose writers have also adopted this style (which is a good indicator of how influential he was). As a result, while the style is easy to read and direct, that doesn't make the book stand out.

The plot is very predictable, and again, doesn't stand out in this day and age either. While I did finish the book, it was out of a sense of obligation, not because I wanted to know more (I felt like I already knew what would happen by the end of the novel, and I turned out to be right). Sure, there's a ton of symbolism, statements about man's hubris and ambition, and the trials of age. But I'm not sure there's anything there that isn't in a Richard K. Morgan novel, with at least a less predictable plot.

Now, compared to the boring crap assigned to me as literature in high school English classes (is there a more boring Shakespeare play than The Merchant of Venice?), I would have way preferred this book. But compared to what I usually read for fun? This just doesn't compare.

This won't keep me from reading more Hemingway, but doesn't leave me dying for more prose from him, either.

Friday, December 09, 2016

Review: Enemy Unknown Plus (PS Vita)

Through a combination of sales, coupons, and credits, I picked up Enemy Unknown Plus on my PS Vita for about $2 during my summer trip. For the next several months, my Vita was turned into the "Enemy Unknown Plus" machine.

I'd been given free licenses of Enemy Unknown (the base version) for both PC and the PS3 over the years. The PC version, however, crashed during the tutorial, so I was never actually able to play. The PS3 just didn't feel like a good venue for a strategy game that required lots of thought, as it would take up the family entertainment center.

The PS Vita turned out to be an ideal platform: you never have to turn it off, as power consumption is minimal. Suspending the game didn't impact any other activity on your smartphone or computer, so you could stay in context for weeks and months. The game itself is a port from the iOS/Android versions of the game. However, one visit to the Android App store and you'll see that games like this have a really spotty record for even people who have high end phones! That's because the game was written using the C-based Unreal Engine, and I'm sure the amount of hacking required to get it to work on Android at all must have been huge.

The Vita, on the other hand, not only has a common platform (no fragmentation), but it also has 2 joysticks, a joy pad, and face buttons. That means the UI on the game is awesome --- you're getting an experience almost identical to that of the console. In fact, once I learned the game, out of curiosity, I tried it on the PC and found the mouse interface on the PC inferior --- I ended up attaching an XBox Controller to make headway. Even then, I discovered that the base version of the game was inferior: Enemy Unknown Plus integrates features from Enemy Within, and made the game so much better that even though it was harder, I went back to the Vita version to finish it.

The game itself is a tactical game with strategic elements that are outside the tactical game. The tactical game is a squad based game where you control a squad of 4-6 characters in a grid-based turn based tactical game that's very reminiscent of D&D. Each side gets a turn with its characters, and each character gets 2 moves, 1 move, and an action. Actions, however, always end your turn, so if you take your action right away you don't get to move. The characters' moves can be interspersed with each other, so for instance, you can move one character, switch characters and then move another character, and then switch back for the first character to take its action. The UI is very intuitive and the only touch input is for switching weapons, which isn't done frequently. The game has a fixed number of maps, but the missions played on each map is varied. I played 3-4 games (to varying levels of completion) and only had a few repeats.

Each character has a class (there are 4 classes: snipers, heavies, assault, and support) and can be leveled up, attaining skills that affect loadout and occasionally allow them to break rules. As with any D&D game, you'd want a mix of classes in the field as each class brings an important ability to the game.

The strategic elements aren't confined to characters and leveling up, however! The game also includes resource management at multiple levels (base building), and strategic positioning (where to add satellites to watch for UFOs), and research (what weapons to research first, and how to allocate funds for equipment for the tactical game vs interceptors for the strategic game). This makes for agonizing decisions every month, and nail biting resolutions to various missions as the tactical game impacts whether you have resources to carry on the fight to the next level.

The game does have several design errors. One is that the skill tree for various classes are not evenly balanced. Certain skills (like squad sight) are much more powerful than the alternates, but you don't know that until you get to the middle of the game and suddenly discovered that you just get wiped and can't make progress any more! Similarly, if you fail to prioritize satellites and engineers over scientists, you'll get quickly over-run by the aliens and lose the game.

As for the implementation on the PS Vita, there are several issues: one is that the load time is incredible. Expect load times of up to a minute in between enemy encounters. Save/restore take similar amounts of time. Secondly, there are bugs: I've had more than one or two games crash out during a mission load. The solution is to save early and often. Since the file sizes are relatively small, this will not hurt you.

Despite all that, the game's well done and a lot of fun. It's ideal for short bursts of play, since in about 10 minutes you can finish an UFO encounter. As mentioned, even if you can't, you can always suspend the game and resume later with zero load time on the Vita, so as far as I'm concerned, the ideal platform for this game is the PS Vita. Highly recommended, and a must-own if you have a Vita and haven't played the game on other platforms yet.

Thursday, December 08, 2016

Review: Algorithms to Live By

Algorithms to Live By is actually an interesting book, even if you're a computer scientist. For one thing, even if you're a computer scientist, once in a while it's nice to get a layman's refresher of the breadth of the field. This includes analysis of the Secretary Problem, a review of exponential backoff, and of course, the range of NP-complete problems (though since the book is for a non-technical audience, the term NP-complete is never mentioned)

Some of the applications are fun and entertaining, like the application of scheduling theory to personal time management.  Others are a mere discussion of topics: for instance, over-fitting in machine learning has correspondences in human training programs. Most Googlers would have already had exposure to these algorithms, as well as the quick sampling of auction theory the book covers.

For the non-technical, this book is written in a very clear, non-mathematical fashion. As long as you remember what a polynomial and an exponent with, I don't expect any of the concepts in the book to give you trouble. Since the book opens with the secretary problem, a quick browse of the first chapter will quickly help you determine whether this book is for you. Certainly, for a non-technical audience I find it hard to think of a better book to read if you're not familiar with computer science.

Recommended.


Wednesday, December 07, 2016

Review: Cure - A Journey into the Science of Mind Over Body

The author of Cure, Jo Marchant, comes with a ton of credentials, essential because of the credibility required to cover the topic.

The first few chapters explore the placebo effect. Impressively, even placebos that are labeled placebos work --- and the more expensive the better. Then she covers more innovative approaches, such as using immersive virtual reality for pain reduction, and various approaches combining cognitive behavioral therapy and mindfulness.

All of these approaches however, only work on issues where pain perception or the illness (such as chronic fatigue syndrome) is largely psychological. Marchant acknowledges for serious diseases (such as cancer), there's no question that approaches such as homeopathy, etc., will not work purely on a "mind over body" basis, and are in fact, harmful if they prevent the patient from seeking real medicine.

While an interesting and entertaining book, I'm not sure I got a lot out of it. It's very clear that all research in mind over body has quite a ways to go, but the lack of easy studies (it's tough to do double-blind between people who do mindfulness and people who don't, for instance) mean that if you're a skeptic, the evidence is not quite compelling as yet.

Tuesday, December 06, 2016

Review: The Skeptic's Guide to the Great Books

The elevator pitch for this book's awesome: what if, instead of trying (and failing) to read all the "great books" that are part of the western literary canon could be replaced by exciting, fun books that will have you eager to read them instead? What if a professor gave you 12 books to replace boring stuff like Hamlet, Moby-Dick, War and Peace, or Ulyses?

Sucker that I am, I jumped on The Skeptic's Guide to the Great Books. The problem is, the typical professor's taste is not necessarily going to be to be yours. I'd actually read 3 of the books Prof. Voth provides in this course: Robert Penn Warren's "All the King's Men", Le Carre's "The Spy Who Came in from the Cold", and Moore's "Watchmen." For those 3 books, I can attest that Voth does a good job describing the book and explaining why it's so great. Unfortunately, for the rest of the books in his list, I can't say as much. He recommends 12 books, and of them all, the only 2 books I'm even intrigued by are Orwell's Down and Out in Paris and London, and Death of An Expert Witness. The other books he recommend sound as boring as the classical works they replace.

The upside is that the audio lecture series is short: 6 hours to cover 12 books, so worse comes to worse you're not out a lot of time.

Monday, December 05, 2016

First Impressions: Garmin Vivoactive HR

My brother bought me a Garmin Vivoactive HR as a late birthday present. Continuous use of my Vivoactive has reduced its battery life significantly, so it was a timely gift. Over the past year, Garmin has been the only smart watch maker that has been gaining market share. Since you've probably not ever seen a Garmin ad (I certainly haven't), this market share gain has been entirely via word of mouth and product excellence, which is unusual in this day and age where marketing trumps all.

When putting the watch on the wrist, I was immediately impressed by how it's completely changed the UI from the predecessor. The two buttons no longer do what I thought they did, but in exchange the device is more customizable. I can now remove the Golf app, which I'll never use. The touch screen swipes also no longer do what they used to do. I also bought the Garmin Tempe sensor, and that pairs reliably with the Vivoactive HR, as well as providing temperature information for my rides to the device, which faithfully logs it.

The HR functionality is the major feature upgrade. I didn't realize how constricting my HRM band was until I started riding without it. It felt liberating. In exchange, the data probably isn't anywhere as accurate. My hardest efforts barely registered 160bpm, while with the strap I could regularly exceed that on the reading. One nice note about the HR functionality --- if you have both a Garmin watch and an Edge, you can broadcast the HR from the watch to the Edge by turning on the broadcast feature. While the device warns that this will reduce battery life, in practice, the battery life of the device is so great that I haven't really noticed it.

The other improvement is the battery life. There's two ways to view this. One is that passive battery life has been reduced, because the always-on HRM reduces the previous life from about 14 days to about 5 days if you leave it on. The other way is that active GPS-on battery life has been increased from 10 hours to 13 hours. In practice, 3 hours of riding (with HR broadcast on) reduces the battery life by about 20%, which extrapolates to about 15 hours of riding. That's excellent, and gives me confidence that after a year or so of use, the battery will still be good for about 10 hours of riding, which would enable me not to have to charge it in the middle of a ride. Not only does the increased battery life mean that battery wear will no longer make the device useless, the increased battery life also means that the number of cycles the device endures is reduced, which in turns also reduces battery wear if you're fond of long workouts.

The third feature is the barometer, which is huge for cyclists and hikers, but also opens up ski mode. Reports are that ski mode works really well, detecting when you get on ski lifts, etc., and recording the number of runs, but I'm not an enthusiastic skier, so don't expect to use this mode at all.

The con is that as before, Garmin has locked out open water swimming (there's no reason the device couldn't do it, just that Garmin wants you to upgrade to the $600/$450 during holiday sale Fenix 3 HR). There are also no structured workout or power meter support. But if you need either of those, you're way more serious about training than the average athlete, and can probably justify a dedicated device or the Fenix 3 HR.

The long and short of it is that Garmin has hit the ball out of the park with the Vivoactive HR. If the competition was just Google, Garmin could rest easy, since Google ADD probably means that it will give up on Android wear soon. Unfortunately for Garmin (and fortunately for us consumers), Apple and Fitbit still provide viable competition in this space, and neither of those suffer from ADD and will stick around for the foreseeable future.

The difference between the Garmin device and the Apple watch is the battery life: if your ride/run ever exceeds 4 hours or so, the Garmin device will be your choice. The difference between a Fitbit and a Garmin is the software/data ecosystem. If your primary social network for fitness activities is Strava (as it is with most cyclists), then go with the Garmin. If you're mostly a "step-counter" person whose social network is filled with Fitbit users, then Garmin wouldn't work for you at all. As a self-driven person who's workout patterns aren't driven by social networks, the Garmin device has much better reliability and integrates with the cycling ecosystem better.

Obviously, a long term review is a necessity, but my first impressions of the Vivoactive HR is nothing short of stellar. With the holiday pricing of $199 and potentially coupons at Best Buy, REI, and other vendors, this is a great time to get one.

Friday, December 02, 2016

Review: Harmony Hub & Echo Dot

I started writing this review of an Echo Dot, but realized that I couldn't really review it without the true reason for its presence in the home, which is the Logitech Harmony Smart Control.

A year ago, I bought the Amazon Echo and returned it. It was a great device, but didn't really justify its place in the living room. It was too big, and it didn't do very much, and it did a terrible job of voice recognition for my wife and Bowen. (The non-English speakers in the household obviously couldn't use it at all!) A year later, the Echo Dot is $50 ($40 during the holiday season), and it's basically the Echo stripped of the speakers, requiring you to plug it into the entertainment center's speaker system. That's perfect, since you likely have much better speakers in the entertainment center than any puny portable speaker will do. Much has been made about how the Google Home device is cheaper than the Echo, but the reality is that most people should really buy the Dot instead.

Out of the box, the device could control my Sensi thermostat. Realistically speaking, however, you're not going to adjust your home temperature that way. If your programming is up to par at all, you're going to tweak the thermostat at most once a month, and remember the voice command to do that is more onerous than pulling out the smartphone and running the app.

But once I got the Logitech Harmony Smart Control Hub ($70 right now on Amazon, which is a great holiday season deal), the Dot proved to be extremely useful. I'll summarize what the Harmony Hub does. It plugs into the wall, and you can program it with your computer or smart phone app to act as a universal report. What's great about it is that it accepts commands from your smart phone, a "simple remote", or another universal report via RF. That means it can sit inside a cabinet and still receive signals. It incorporates an IR blaster, which can then activate all the other devices in the same cabinet. For devices that are outside the cabinet (e.g., the TV), the device comes with an auxiliary IR blaster that can be plugged in and then run outside the cabinet.

Put it together with the Amazon Echo, and wow! With the old universal remote, it could power on the IR-driven devices, but couldn't turn on the PS3. Now, I'd walk into the living room and say, "Alexa, turn on Playstation." It would then immediately power up the PS3, TV, and Speakers, switching the speakers over to the PS3's output. "Alexa, turn off AV" would turn everything off. No more hunting for the remote, no pulling out the phone to switch to the app. As someone who's never cared about home automation (seriously, do you need voice control to turn on the lights?), this is truly a "Star Trek" living in the future experience. And no, Google Home can't do it because it doesn't support "external skills" yet.

The penalties: I still can't access my Google Music library, and I'd have to pay $24/year to upload all my music to Amazon's music library. That sucks. I'm sure at some point I'll break down and pay if music becomes important enough.

In any case, I highly recommend this combination. Given the sales during the holiday season, it's well worth the time to set it up.

Thursday, December 01, 2016

Review: Snap Circuits Arcade

I grew up with legos here and there, but never got obsessed with them the way some people did. The dedicated kits that are now popular also fail to ignite my interest, and the times someone gives Bowen one of those kits it invariably results in me assembling it for him.

Over the Thanksgiving holidays there was a sale on the Snap Circuits Arcade Electronics Kit for a reasonably good price. The cover says it's for kids 8 and up, but various reviews said that a 5 year old would still get good value out of it if an adult helped, so I jumped on it, despite not having ever played with electronics as a kid.

The box is huge, but most of it is air. There's a bread board, and 35 discrete pieces: a battery holder, a fan (with LED persistence of vision output!), a microcontroller (already preprogrammed and not programmable!), a speaker and alarm unit, various resistors, switches, and wires of different lenghts as well as a bunch of jumper cables. Most of the units are quite well built and capable of withstanding a 5-year-old's abuse. The disco lights, however, is a flimsy 2 piece dome and stick set that's very prone to getting lost, unfortunately!

I got out the set and looked at the instructions and resigned myself to having to assemble the circuits for Bowen as he picked projects in the book. To my surprise, that turned out not to be true! He was the one who figured out that I had laid out the bread board upside down (i.e., it's an inside out breadboard, with pegs instead of holes), and then with only a little bit of help, he could assemble the simple circuits and place the jumper cables correctly in the right places!

What's great about the kit is that some of the more complex circuits force you to learn how to debug. If the speaker doesn't work, you know to trace the speaker area to see which part of the circuit hadn't been assembled directly. After watching me do that a few times, Bowen learned to do it himself!

The projects are relatively simple: a dice simulator, a black jack game, a trip-wire alarm, a moisture detector, and some projects that just make noise and light up. Many of the projects are just the same circuit with different programs to run on the micro-controller, so of the 200 projects listed, there are really only about 30-40 circuits that you have to build.

What's not so great:

  • The project manual is strictly that, a project manual. It lists projects, circuit boards, and instructions. While there are rudimentary descriptions of the various pieces, there's no guide as to how the inputs are supposed to work. For instance, there's no comprehensive listing of every program available in the microcontroller, nor are the specifications for how the controller sends signals to the speakers for them to play music.
  • As mentioned above, some small pieces are easy to lose and a bear to keep track of. Fortunately, there's a web-site that let's you order missing parts.
  • The micro-controller should be more programmable than it is. Why isn't there an EPROM in there where I can plug in a micro USB cable and reprogram it?!!
Nevertheless, for the price, it's reasonably fun and teaches the kind of debugging skills that's useful in real life. Recommended.

Wednesday, November 30, 2016

Review: Internet and Fax 56K USB Modem (Sewell)

I know: you're thinking that Piaw has finally taken this "retro-grouch" thing too far. Sure, my phone's from 2015, and my computers from 2009, and many parts on my bicycle are even older than that, but a modem? In this day and age?

So what happened is that in dealing with my parent's long term care insurance, I frequently have to fax documents to them. You can use FaxZero, which is free for faxes under 3 pages (with a maximum of 5 free faxes a day), but more than that and you're paying $2 per fax (which is insane). Other online fax services start from $17/month and go up from there, with $10 setup fees and what not. I bet they're really hard to cancel too! Then I remembered that I actually had a landline that came as part of my internet plan. I actually try to get rid of it every so often, but it apparently qualifies as some sort of "double play" promotion which means that my internet price would be higher without it!

I tried buying a dumb old fax machine, but they start at $40. That in itself is not a problem but they're huge! So I went with a USB Fax Modem. I went for the cheapest $14 modem, which is still cheaper than even a month of fax service. Windows 10 came with a Fax and Scan software (though in practice I use Acrobat 9 to scan and then convert the PDF to TIFF). It's clunky and not the best UI but I don't have to install anything, and it works.

I don't use it often (maybe once a week or so), but if you need to fax something and have a computer with a scanner, this is way to go. It's tiny, doesn't chew power or require an extra power socket, and you can just plug it into a computer with a USB-A port. If that means I'm stuck buying PCs instead of Chromebooks, so be it. Tag me with a retro-grouch label. See if I care!

Recommended.

Tuesday, November 29, 2016

Review: Medical School for Everyone: Emergency Medicine

I picked up Medical School for Everyone: Emergency Medicine thinking that it'll be a boring litany of cases of what you need to go to the emergency room is for. I was wrong. This course (I'm tempted to say "show") is an exciting, fun, and informative series of case studies that are fast paced, interesting, and way more fun than real medical school would be, since you wouldn't have to suffer sleep deprivation to go through it.

The first couple of episodes cover some basic things: triage (or why you have to wait so darn long to be seen when you visit the ER --- and why you do not want to be the person who skips over everyone else to be seen first!), how emergency responders work. Then the course goes into how to do diagnosis, from the initial ABCs (Airway, Breathing, and Circulation, then Disability and Exposure) and the OLD CARTS rule (Onset, Location, Duration, Character, Aggrevating factors, Relieving factors, Timing and Severity).

Every episode contains a bunch of case studies, each of which is a patient, some of which are modeled on famous outbreaks. You're then challenged to provide a diagnosis (and yes, all the clues are fair, so when you do get one there's a very strong sense of satisfaction!) and then the lecturer provides the outcome. It's all told in second person, choose-your-own-adventure style and I guarantee it provides intellectual challenge and interest. In some cases, he even interrupts your thinking with another patient that's come in and triaged ahead of the current case, which is very realistic, and then you'll have to return to the previous patient later, providing added mental challenge.

Not all of the problems are completely medical in nature. In a number of cases, sociological factors come into play. This truly is a comprehensive array of interesting cases. If I'd audited this series when growing up I might have decided that being an ER doctor would be a lot of fun (or maybe not, Dr. Benaroch doesn't shy away from the massive amount of blood and trauma he has had to deal with, and the occasional patient who doesn't survive the ER visit, despite doing everything right). In any case, I think it presents a fair, undramatic portrayal of how an ER doctor's day goes --- many of the diagnosis are only arrived upon after calm thinking, listening and reflection, and the tests are only there to confirm the diagnosis.

The series closes with an exploration of some practical issues: what cases are worth going to the ER for, and what cases aren't. When should you treat a fever, and when is a fever actually helpful? What should you do before traveling to a foreign country? This advise is good and also illustrated by case studies that amplify the point.

Needless to say, this audio book comes highly recommended, and is well worth your time. Highly recommended, especially if you have accident prone kids who have to visit the ER often.

Monday, November 28, 2016

Review: Moonwalking with Einstein

Moonwalking with Einstein is Joshua Foer's memoir of his experience going from a journalist covering the world memory championships to becoming a competitor himself and winning the U.S. memory championships.

Along the way, Foer covers deliberate practice, and even provides a few tips on how to overcome plateaus. At one point, his speed in memorizing numbers stopped improving, and upon asking for help from an expert, was told to approach it differently (instead of directly trying to improve his time, tried to memorize more numbers in the same amount of time, which would inevitably lead to failure, which actually created more learning), which overcame his barrier. This is good stuff, and well worth reading.

He also describes Daniel Tammet (who wrote Born on a Blue Day). He presents compelling evidence that Tammet wasn't an Autistic Savant as he claims in that book, but rather, a normal person who secretly practiced memory techniques in order to pull off the stunts and claims that he was in fact, an Autistic Savant. This is huge as well.

There's the usual coverage of well-known memory techniques, like memory palaces, and the social scene revolving around the posturing and out-psyching of each other that you would expect to find at top level competitions. Even then, the behind the scenes look at the memory championships makes you realize something --- even these experts have to triage on what to remember. In one of the events, Foer basically gives up on memorizing phone numbers and won simply by becoming lucky enough to never be called on to remember them!

In the end, however, Foer realizes (and even says it outright) that while becoming the U.S. memory champion was a great experience in and of itself (it's pretty impressive to be tops at anything in the US), the memory techniques he learned didn't really help out in day-to-day life: he still forgot where he placed his car keys and other random mundane things, which was one of the primary drivers for him to try to improve his memory in the first place!

Finally, he explains why most people find that "time passes faster as you get older":
“In youth we may have an absolutely new experience, subjective or objective, every hour of the day. Apprehension is vivid, retentiveness strong, and our recollections of that time, like those of a time spent in rapid and interesting travel, are of something intricate, multitudinous and long-drawn-out,” he wrote. “But as each passing year converts some of this experience into automatic routine which we hardly note at all, the days and the weeks smooth themselves out in recollection to contentless units, and the years grow hollow and collapse.” Life seems to speed up as we get older because life gets less memorable as we get older (Kindle Loc 1157)
 In other words, if you want a subjectively longer life, have more fresh experiences rather than allow your life to become routine. I've often had this experience during a tour: 2 days ago feels like ages ago, and a week ago might as well have been a lifetime, yet every memory is fresh when I go back to write it up. Life lived intensely is memorable and easy to recall, while the routine gets compressed and lost in time.

I'm surprised by how much I enjoyed this book. Recommended!

Wednesday, November 23, 2016

Review: Nutrition Made Clear

You probably already know everything that's in the course, Nutrition Made Clear. For instance, In Defense of Food, summarized everything in one sentence: Eat food, not too much, mostly plants. But those books tend to be written for English majors: there's a huge amount of text devoted to the author's personal foibles, etc., while being tremendously short on facts or how you should approach the entire process.

Nutrition Made Clear is a good antidote for the typical nutrition book. It's very focused, and while it does make use of anecdotes (in the form of case studies of patients she's seen, or members of the Rice football team), goes mainly for the facts and what we know (and don't know) about nutrition.

She's brutally honest about her profession, noting that over the years, nutritionists have shifted from the vitamins and minerals approach to whole foods approach, mostly because the many ingredients found in fresh fruits and vegetables (phytochemicals) have many beneficial properties that have yet to be extracted, understood, or properly studied, hence the advise to "eat all colors of the rainbow." She also notes that coffee and tea also have similar properties, which are also not well understood --- though in the case of coffee and tea, the tannins also have some adverse interactions with certain minerals (in particular, coffee and tea reduces iron absorption --- don't drink coffee while eating your oysters, for instance!).

Sprinkled throughout the lecture series are several tips:

  • Nutritionists used to think that you have to eat complementary vegetable proteins to make a whole protein in the same meal (e.g., rice and beans). Now they think it only has to make it through your stomach on the same day to make the whole protein.
  • Use cast iron frying pans to increase iron absorption in during normal cooking. The contamination properties of cast iron frying pans can really make a difference in adding iron to your body!
  • Omega-3's beneficial properties for people at risk of heart attacks also thins the blood. So don't assume that a little is good means more is better. Too much Omega-3 could thin your blood so much that you could have trouble clotting! In particular, don't combine with blood thinners.
  • Most people who successfully lose weight and keep it off eat breakfast every day! Don't skip this meal if you want to lose weight!
  • Moderation is key. Too much of anything could cause problems. But in general, your plate should be 50% vegetables, 25% meat, and 25% whole grains. She provides detail and color as to why eliminating carbs entirely might not work out.
  • Calories in vs calories out is not obsolete!
  • People think that exercise doesn't work when it comes to losing weight. This is wrong. It mostly doesn't work because people out-eat their exercise. A 1 mile walk (2000 steps) is 100 calories burned. It's very easy to go for a 1 mile walk, and then come back and eat  a bar of chocolate (280 calories), and then you've out-eaten your exercise and then some! If you actually want to control your weight, you need to exercise half an hour a day, every day! If you want to lose weight, you need to bump it up to at least an hour a day, every day! (By the way, this explains why step counters actually hurt some people when it comes to weight loss -- that 10,000 steps is only 500 calories, which is trivially easy to out eat) Conversely, this explains why I practically have to force-feed my companions chocolate and ice cream during the Tour of the Alps. It's substantially much harder to try to eat 3X your normal calorie intake.
  • Other benefits of exercise (such as reducing risks of heart attacks and diabetes) only work for 24 hours after the exercise. So treat exercise like a pill you take every day.
So, in general, you know all this. But it's very nice to have someone spell it out for you (such as eating an extra slice of bread a day - 50 calories more) adds up to about 10 pounds of weight gain a year. The lecture series lays it out in stark terms.

Anyway, I enjoyed the series and would recommend it to anyone, even if they think they already know everything there is to know about nutrition.

Tuesday, November 22, 2016

Review: Madame Xanadu Vol 1 - Disenchanted

I saw Madame Xanadu: Disenchanted at the used book stack for $2 at the library, and when I saw the Matt Wagner by-line, I immediately picked it up.

Madame Xanadu is one of the more obscure characters in the DC canon. Wagner cleverly ties her to Merlin, Etrigan, the Phantom Stranger, Marco Polo, Jim Corrigan, Zatara, Jack-the-Ripper, and Marie-Antoinette. The tromp through history is interesting, but the story doesn't really go anywhere. I supposed if I picked up the other 3 volumes, I might some enlightenment, but I suspect that I could end up just tolerating a whole bunch of cameos in a comic book that has no real direction to it.

That's very disappointing for a writer of Matt Wagner's caliber.

Not recommended.

Monday, November 21, 2016

Video Games of the Year 2016

I didn't get around to too many video games this year, but by far the best was The Witcher 3. Lovingly produced, tons of content, and beautiful graphics. I'm still waiting for a sale so I can pick it up again and pick up the DLC and keep going on that lovely story. It's a huge time sink, but well worth it. Thinking back on it, I was surprised that Uncharted 4 or Rise of the Tomb Raider didn't win this instead. Both are very much worth your time, though I'd tip more towards Uncharted simply because I felt the creative team took more risks with the story on that one. But neither are games I'd want to come back to.

On the PC/Android side, Her Story is an unusually great story and well worth your time. It's game UI is essentially a search box, so if you pride yourself at being great at search engines, this one is for you. I think you can't go wrong on that.

Friday, November 18, 2016

Books of the Year 2016

This year I read a total of 59 books, with audio books helping out in a big way, getting me more material to read while my hands can do something else.

This is once again a great year for novels, and there's no question that my favorite book this year was Matterhorn. Intelligent, well-written, a reflection on the politics of large organizations as well as the realities and dysfunction of war, you can read this book so many ways and get something new out of it every time. I highly recommend this book, and think it should be in every person's library.

Coming in next was The Rosie Project, which was a heck of a fun book, and well worth your time. In fact, it makes a great counter-balance to Matterhorn and it's deep heavy themes.

On the non-fiction side, I'd rank Scientific Secrets for Raising Kids Who Thrive as the best non-fiction "book" of the year. It's full of surprising results, and if you're a parent, well worth your time to read and review. On a similar note, Producing Excellence is also great reading, though it's mostly of the cautionary nature, rather than prescriptive. It's difficult to find, so few have read it, which I think is a pity.

I didn't get to too many graphic novels this year. The Sculptor was a good novel, but just falls slightly short of "great."

Thursday, November 17, 2016

Review: Eccentric Orbits

I picked up Eccentric Orbits after learning that there was a book about the Iridium satellite system. I'd always thought that the system had been decommissioned and was no longer used, but it turns out that Iridium is alive and well, and has even launched a second generation set of satellites.

The interesting thing about Iridium is that it truly is a "world phone", as in, it would work anywhere in the world. The conception behind is improbably and only a company the size of Motorola could have done it --- launching 66 satellites into low earth orbit and designing and building a system where satellites could pass connections to each other in real time while routing calls to an Earth gateway station. It is even today an astonishing bit of engineering in an age where big companies seemed content to do unambitious stuff like continually launching new messaging apps and copies of each other's phones.

Unfortunately, the book spends preciously little time on the engineering of the system. It mostly focuses on Dan Colussy, who basically organized a buyout deal for Iridium after Motorola gave up on it and was about to de-orbit the satellites. That story is interesting: Motorola could have run the system at a reasonable profit, but chose not to. The lack of vision by Chris Galvin (who's clearly the villain of the book) fore-shadows the ultimate destruction of Motorola until its repeated sale to Google and Lenovo.

But there's only so much stomach I can have for stories about financial desperation, of chasing after Arab sheikhs with retinues whose jobs depend on showing how important they are. After the nth iteration of such stories I simply started skimming the book. I didn't get the feeling I missed much even right at the end, where the author simply skimmed on current applications of the Iridium Satellite system, Iridium NEXT, and the analysis of how nobody cared enough about Iridium despite it's obvious benefits.

Here's what I got out of the book from a marketing point of view:

  • Iridium was flawed in that it required a clear line of sight to the sky. It wouldn't work inside buildings, so despite being a truly world phone, it's market was pretty restricted to outdoors people. Soldiers, hikers, sailors, maritime applications were the only major markets willing to pay for a phone with such restrictions.
  • The low bandwidth meant that once the mobile internet took off, there was no chance of Iridium getting mass market appeal.
  • The handsets were huge and expensive. They did get smaller, but never got very much cheaper.
  • All the other technology solutions being investigated by Google and Facebook (balloons, etc) were investigated by the Iridium researchers. All of them had crippling flaws which was why Iridium is still the go-to- system today for the military and maritime applications.
All in all, the book's barely worth a read unless you're Dan Colussy or much more of a financial nerd than I am.

Wednesday, November 16, 2016

First Impressions: Woom 3

It was inevitable: Bowen outgrew his Woom 2, and we had to buy him a bigger bicycle. The Woom 3 was the natural choice: I briefly did some research, and confirmed that nobody else made anything better, placed an order, and waited a month because Bowen's favorite color (red) was back-ordered.

The box arrived, and I immediately put it together and was amazed by the improvements Woom has made in the bike over a year:

  • The bike was now 3 pounds lighter than the Woom 2, despite being a bigger frame with bigger wheels! The weight savings were done by substituting an aluminum fork for a steel fork, and by reducing the size of the tubes used in the bike.
  • Assembly is also dramatically improved. The Woom 2 came with V-brakes that were mal-adjusted, and Pardo and I had to adjust them quite a bit from the "out of the box" condition. If you've ever adjusted V-brakes you know that's a pain because they have too many degrees of freedom. Well, this year, the Woom 3 came with brakes that were adjusted correctly!
  • No more coaster brake option! All Woom bikes now come with 2 hand brakes and a freewheel! This is so obviously the correct design that you would think the bicycle industry would adopt it as standard. But that would be way too sensible, like building a waterproof phone or something, so practically nobody does it. It also means that if Amazon is your preferred vendor, you can buy it from Amazon as there's no need to order a separate freewheel rear wheel, etc.
  • Bikes now come with a kickstand and bell. The kickstand is dramatically improved from the 2015 version, and Bowen can now actuate and de-activate it at will.
Well, nobody's perfect. There's one obvious defect in the new design:
The rear dropout faces backwards. This is poor design because when you get a rear flat, how the heck are you going to remove the rear wheel? The older Woom 2 had forward facing dropouts like an old-style track racing bike. That's correct, because when you have a flat, you'd undo the nuts (still no quick release, but that's CPSC's fault), push the wheel forward, and the rear cog would disengage from the chain and now you can remove the wheel. If a flat occurs on the Woom 3, you'd have no choice but to get out the chain tool to break the chain so you could remove the wheel in order to fix that flat. Bad design, and a head-scratching one because they did it correctly last year!!

Bowen took a day or so to get used to the bike but now he loves it. It's obviously well done, and he likes it. (He put 100+ miles on the Woom 2, and it'll obviously go for another 100+ miles when his brother learns to ride) As long as he doesn't get any flats on the rear wheel, I'll like it too.
Highly recommended, and kudos to Woom for actually listening to customers and improving their product!

Tuesday, November 15, 2016

Review: Hard Choices (Audio Book)

Hard Choices is Hilary Clinton's memoir of her time as the Secretary of State for the USA. It's a long book --- I started listening to it on the train during the Tour of the Alps, and it took the better part of several months of listening before I finished.

Rather than being a strict chronological account of her time as Secretary of State (SoS), the book's divided into sections geographically first, and then at the end based on themes regarding the future of human rights. The choice of geographical partition allowed Clinton to highlight what she thought were important themes during her tenure (e.g., the pivot to Asia), but also served to reduce what seemed to be a particularly hectic time into much more than a frenetic series of activities.

International diplomacy is a strange affair for those of us not particularly interested. In particular, the US has an outsized influence mostly because of its wealth and military prowess. Yet under certain administrations, the State Department tries very much not to appear as though it's twisting arms. I was amused by Clinton's account of how the State Department maneuvered around China's claims of sections of the South China seas: while China would rather do one-on-one negotiations with each of the smaller countries, the US would try to organize negotiations as a group at regional meetings like at ASEAN so that the smaller countries (with US backing) could feel like they could all stand up together against China.

If you enjoy the back-story of various such diplomatic shenanigans, you'll enjoy the book, as there were many descriptions of such back-room arm twisting (such as during the Israeli-Palestinian rocket assaults, as well as sections of the Arab Spring). What comes through is that Clinton tries to sell really hard that (1) diplomacy is much cheaper than military action, and the State Department is massively under-funded and under-staffed, and (2) the US (at least, under Obama) did try to promote human rights throughout the world, even when it has to deal with foreign leaders who aren't as enthusiastic about such rights.

(1) is a slam dunk. It's very clear that when the State department succeeds in achieving US goals without force, it's a huge cost savings. The times when they failed and the U.S. military gets pulled in, it's almost always going to cost more in both lives and money. (2) however gets subject to cynicism. However, Clinton does do a decent  job of explaining that whenever the US comes in to help save lives or perform emergency rescue operations, its image in the target country improves significantly (at one point, Japan had an 80% approval rating of the US after the Tsunami aid efforts, up from 60%, which is huge). So the 1% of the federal budget that goes into foreign aid is very good value.

There's also a good explanation for both Clinton's and Obama's support for the TPP, which has been much maligned during the recent election: fundamentally, US diplomacy holds out access to US markets in exchange for nudging other countries towards US policy. Once countries have a taste for the wealth access to US markets can bring, they're much more likely to toe the line when Washington comes calling. It makes sense, but of course, the US is unique in having next to no safety nets for workers displaced by such strategic considerations --- it seems to me that if something like the TPP is an important part of international diplomacy (and the US really does need to pay attention to such diplomacy --- imagine a world in which China dominated South East Asia!), then spending more on social safety nets makes more sense in tandem with something like the TPP than just shoving it down the public's throat, which has not gone over well and probably will never go over well, as recent events illustrate.

Finally, as someone who's an engineer, it was a bit jarring for me to hear Clinton praise someone as being a "great Politician." It's funny since engineers view politicians as people who're great at promoting themselves without actually doing any work, but of course, when you're a career politician, being a good politician would be high praise. Judging by the results of the election earlier this month, most Americans agree with my attitude than with Clinton's.

The book's a bit of a long slog, but I learned quite a bit. It's not my book of the year by any means, but it's still worth your time.

Monday, November 14, 2016

Review: The Stinky and Dirty Show

I don't usually review TV shows, but The Stinky and Dirty Show has captured Bowen, and I'm not horribly unhappy about that, so I figure I'll talk a bit about why it's special as well as tie it to why Amazon doesn't care about killing Netflix.

The premise of the show is simple: a garbage truck (Stinky) and a bulldozer (Dirty) are friends. Through the course of an episode (about 11 minutes each, with each "streaming episode" being 2 episodes joined together), the two friends encounter problems and solve them. Most of the problem-solving involves brain-storming many "what if" scenarios before settling on the correct approach. Some of them involve calling in friends who can help, and many of the solutions are found through serendipitous observations. I can't watch an episode with Bowen without saying, "Wow, what a smart show for kids!"

What's more, Bowen's been brought up on a steady diet of shows where the protagonists are female (e.g., Nausicaa, Totoro, Frozen), so it was nice to introduce some diversity and have a show that's mostly about boys (sure, the vehicles are gender neutral, but names like Stinky and Dirty typically apply to boys :-).

Incidentally, we went and checked out the books from the library (it's an indication that the show has not yet hit the mainstream yet that the books are still easily available at our local library) and the books are disappointing and much worse than the TV show. No brain-storming or problem solving to be found anywhere in the books, which aren't nearly as smart as the Amazon show. How rare!

So the show's good and recommended. But why is Amazon doing this? The big factor that drives parents to become Amazon Prime customers is diapers. I once did the math and the savings from diapers alone pay for the Amazon Prime membership. But of course, kids do eventually grow out of diapers, and so after that Amazon needs something to hook families on them. While shows like Peppa Pig are easily found on Youtube (and free if you're willing to put up with ads), unique shows like The Stinky and Dirty Show could very well drive me to keep the Amazon subscription even after the littlest one is out of diapers. Here's the thing --- parents don't have time for TV/movies (we've long cancelled our Netflix subscription). As much as I'd love to watch the new Daredevil show, I just don't have time for it. But kids not only have time to watch shows, they keep watching the same show over and over. It doesn't take too many such shows before they become a "must-have" for the parents. This makes Amazon Prime a much better value than if it's just for 2 day shipping.

Friday, November 11, 2016

Review: Brasscraft BC260

One penalty of living in an old house like mine is that the kitchen sink clogs up about twice a year. I got fed up of paying the plumber to come out and unclog it every time, so I tried various solutions. The hand powered augers were too painful to use, and the drill auger I rented once turned out to be difficult as well. Finally, I asked the plumbers to give me a recommendation. They were reluctant but eventually pointed me at the BrassCraft machine.

The BrassCraft auger sits on the ground, which is perfect, because then you're not holding the power drill. It comes with a foot switch so you can activate it while feeding the cable into the clean-out. I've used it in anger twice since I bought it earlier this year, and it works, though the set up is laborious. Because the power cable is too short, I have to first run an extension cord out to it. Then, I have to thread the proper cleaning tool onto the front, and then screw it on.

After plugging everything in, you then put on gardening gloves, and then pull out the cable and feed it into the cleanout, stepping on the foot switch to help everything grind along. Note that even though there's a "reverse gear" on the drill, the manual says not to use it! Fortunately, if you've actually cleared the obstacle in the pipe, you can generally pull the cable out by hand.

To my surprise, you can actually over-drive the cable machine: the cable itself is not anchored in anyway to the drum, so if you get over-enthusiastic and drive out all 50', you can end up pulling the cable out of the machine entirely. This sucks, because you'll spend at least 15 minutes working the cable back in.

Nevertheless, the machine will pay for itself if you use it just 3 times over it's lifetime, and it looks like it'll survive quite a bit longer than that. It also saves quite a bit of time since the penalty with calling the plumber isn't just that you have to pay him, but also wait for him to come around to where you are.

Recommended.

Thursday, November 10, 2016

Review: JavaScript: The Good Parts

While building my Shared Checklist application, I learned JavaScript mostly by reading examples on the web as well as a library copy of Javascript: The Definitive Guide. The problem with learning a language this way is that you're generally clueless about the idiomatic uses of various language features, as well as what general good practice is.

JavaScript: The Good Parts promised to be a good introduction to the latter, so I checked it out from the library. The book's very reasonable if you have a good understanding of Scheme, Self, and one other "classical" object-oriented programming language, and have read SICP. Since I qualify as all of the above, I found the book to be a breeze, reading it in a couple of hours.

In general, I found the explanation to be clear, to the point, and comprehensible. There are a few sections that I thought weren't very good: for instance, he introduces object-oriented programming in JavaScript through the use of a programming paradigm meant to emulate "classical" object-oriented languages. The idea is that most readers come from C++, Java, or some other OO language in wide use. Then he tells you to throw away all that and switch to the Self-like prototypes-based object-oriented language instead. From a pedagogic point of view, he should have gone straight for the prototype based learning approach --- never teach someone "the wrong way" to do something first, and then teach them "the right way."

Nevertheless, reading this book before I'd gone ahead with my JavaScript implementation of Shared Checklists would have been very useful. My code's much messier than it had to be, and there are a few "best practices" that would have made everything neater.

Reading the Amazon reviews, it seems like most of the people who rate this book badly do not have the required background I mentioned above. If you have the right background, reading this book is as much fun as reading Dennis Ritchie's The C Programming Language. That's high praise, and the book deserves it.

Recommended.

Wednesday, November 09, 2016

Building Shared Checklist (Part 2): The Web Application

After the Android App was done, I turned my attention to building a web application. There were several motivations for this: first, I do enjoy sitting down in front of a desktop (or laptop) with a real keyboard. Nothing makes for fast data entry than a real physical device that's optimized for typing. Secondly, I wanted to explore the world of web applications. Remember that as a back-end guy for much of my career, I'd skipped the entire javascript-heavy universe of web application frameworks.

In the old days, web applications used to have 3 tiers: the client, the application server, and the database. The application server would keep tracks of things like sessions and cookies, using the database only for persistent data. The "new" approaches are forked into 2 types: the single page Javascript-oriented web application (which Firebase was designed to facilitate), where the client web-browser's Javascript engine would keep track of all the state, and went directly to the database for persistent data, and the REST-ful approach, where each click on a link would encode all the session data so that the application server was essentially stateless and didn't have to maintain state for the client. Both approaches eliminate the scaling problems of the traditional 3-tier approach, but introduced several new problems of their own, as I was about to find out.

My first thought was to try it using GWT. GWT had several nice features: one would have been that I wouldn't have to learn any Javascript. Another was a one-click deploy into Google's App Engine, which was also very appealing. Finally, I'm a big fan of static type-checking being able to eliminate an entire class of bugs.

Imagine my disappointment when I discovered that there was no integration package between Firebase and GWT whatsoever. OK, no problem, I could write my own wrapper around the Firebase javascript stuff and GWT. I tried that and discovered that Javascript objects passed into the GWT Java code became opaque objects that couldn't be used! This was very disappointing. I was even more disappointed when I discovered that it also made debugging very painful --- the GWT-generated Javascript was even more impenetrable than I imagined, and I'd have to end up learning Javascript anyway to do any kind of intense debugging. So I gave up on GWT and went full-on into writing a Javascript single-webpage web application.

Not being much of a UI guy, I looked around for a Javascript UI library, and found webix. The Treeview looked like exactly what I wanted, and I jumped right into using it. As with the Android App, the Firebase Web API (really Javascript API --- there's no server->server integration in Firebase land) is callback-oriented.

This is really weird, since if I wanted to get the user to Login right away, there's no easy way to say, "Hey, show this UI only after the user's done logging in." I tried some forms of deferred execution, but there's a real weird interaction between "login using a popup window" and the use of the Javascript firebase API.

In the end, I got it all to work, but it was clunky. For instance, I was forced to pop up dialog boxes, etc., to get the user to input a new checklist, or even a new checklist item. This was unsatisfying: in practice, I wanted people to be able to push a "+"  button somewhere on the tree and then edit a text-field inline like in the Android app. But since Webix wasn't really designed to do so without you jumping in and modifying the code, I couldn't easily do this. In the end I stuck with dialog boxes all over the place.

All in all, I'm definitely unsatisfied with the result. The debugging was also a pain: any kind of error in the Javascript causes the entire web page to freeze, and then you'll be digging through the debugger's console trying to spot and reproduce what's going on. It's not even fast compared with the Android app despite not having to download to a device. I guess that makes responsive, fast UIs in Javascript applications like GMail even more impressive to me now than they were in the past.

Tuesday, November 08, 2016

Building Shared Checklists (Part 1): The Android App

After determining that there's no app that did what I wanted, I decided to create Shared Checklists, which was an Android app that does do what I want.

I started with an Android app, since I did some development for my wife's app a year or so ago. The requisite tools are all free: Android Studio, my Windows PC, and my already registered custom domain. At first, I thought that I would have to write all the cloud-syncing code, but this being 2016, it turned out that I didn't have to: Firebase (acquired by Google in 2014) did all this fancy cloud-synchronization.

This is ironic, because as a back-end guy, the development of a cloud-database with syncing capability would have been fun for me, as opposed to the mostly UI-oriented development that an Android app would turn out to be.

Firebase's real-time database is a JSON-tree in-cloud database that lets you get at any subtree as a Java object inside an Android app, or treat each leaf-node as a subfield at whatever granularity you wanted. This is very nice: you get to do a write() using a Java object and have the serialization all done for you.

The penalty to this is that the Firebase API is a callback-oriented API. What this means is that updates coming in from the cloud can happen at any time, and you need to update the App's UI to reflect that. If not coded carefully, this can turn into a mess of synchronization bugs and crashes (not a surprise, right)? Even when coded correctly, you could spend a lot of time working through UI glitches, etc.

I started with a basic simple approach: a sequence of Android activities (screens) in which you deal with one aspect of the real-time database at a time: there'd be a checklist management screen, and a checklist screen. The checklist screen would let you add and remove items from a given checklist, while the checklist management screen would handle adding new checklists, sharing new checklists, and deleting checklists.

This was all pretty good: I eventually figured out that the Android App UI needed to be a dumb reflection of whatever the database was seeing, and rather than screwing around with the UI's model whenever the user made an edit or a change, I would just reflect the change in the real-time database in the cloud, and let the inevitable notifications filter down and then refresh the UI based on the cloud-activated events.

One surprising pain point was integration with cloud single-signon services. I don't know about you, but I get very annoyed now with apps and/or websites that force me to create an account. Don't make me create yet one more (likely insecure) password for your website. Make use of Facebook login or Google login services.

Facebook login was surprisingly easy. I basically got it working on the first try, which was pretty awesome. Again, it's a callback-oriented API, so I had to jump through hoops and play all sorts of tricks to get the UI to force the user to login first before I could show the contents. And that was OK. One major pain point is the integration between a database-oriented app and Android's concepts of activity screens and restore events. The documentation is horrible, and when restored from a stopped state, there's every chance that the real-time database connection had been severed! My quick and dirty solution was to basically force a Firebase reconnect and authentication every time the app was resumed from a stopped state. It's not very satisfying, but from a development point of view it was the easiest way to prevent crashes. Android studio has no way of simulating this sort of event, so it was a major pain doing it manually, fixing the crashes, and then attempting to get the OS to evict the process again. You would think that Android Studio would have a means of injecting such events into your app for testing purposes, but no.

Google sign-in integration, however, was a nightmare. Superficially, the steps seem similar. In reality, what you have to do is to run a backend server somewhere, serving a particular JSON file with certain values. You'd think that Google would automate this for someone who was running an app-engine backend on a Google hosted custom domain, but no dice. It could never get it to work! I eventually gave up completely and stuck with just Facebook login. This, by the way, now explains to me why you see Facebook login everywhere, while non-Google sites don't tend to provide Google login: the process is sufficiently onerous that you can't expect the typical web-site maintainer to use it.

After using the app for a couple of days, I grew unsatisfied with the UI. Upon reflection, I realized that the Navigation Drawer approach was the correct UI for the app. This effectively required a rewrite for the entire app to use the new approach. It was only a little painful: every Activity had to be turned into a Fragment, and then I had to rejigger some of the database schema to reflect the new approach. This approach also eliminated an entire class of bugs related to having a default checklist, so I was relatively happy with the end result.

In the end, the experience was surprisingly good. While Android Studio's layout tool still leaves much to be desired (and to be honest, for it to be a useful tool would require some sort of standardization of device that's pretty much impossible in the Android universe), it was usable most of the time. The compilation time had now sped up to the point where a full signed APK build took only 35s or so, while incremental debug builds during the crucial edit/compile/debug cycle was now under 3s. In practice, that was fast enough that the transfer to my debug device over USB was now as much of a bottleneck as build time.

All in all, given that the entire tool chain was free, I thought this was relatively satisfying as a hobbyist project.