I’m a bit late to the party in starting to tinker with TensorFlow, but nevertheless I’ve been having some product ideas (some dumber than others) for real-world applications of machine learning, and here’s one of the stupider ones:

If you know me at all, you know that one of my hobbies is foraging for wild mushrooms. Going to the forest to forage for mushrooms is a time-honored tradition in Russia and many other Slavic countries.  I also derive great pleasure from sharing this hobby with other people, and telling them how fun, challenging, and rewarding this activity can be.

Therefore, I give you — MushroomHuntr: an Android app that can identify different varieties of mushrooms!  It uses a neural network to perform image recognition in real time, to tell you what kind of mushroom you’re looking at.

Huge legal disclaimer: Do not actually rely on this app to differentiate poisonous mushrooms from edible ones!  The app provides a rough guess of the identity of a mushroom, not a definitive identification.

Under the hood, the app uses the Inception v3 model developed by Google, with the top layer of the model re-trained on a large collection of mushroom images. Many of the training images were taken from Wikimedia Commons, and others came from my personal photos that I’ve taken over the years.

The app can distinguish between about twelve varieties of mushrooms, most of which are native to North America and Europe. All of the trained varieties are common enough to be found easily in parks and forests, to maximize the app’s usefulness for the novice mushroom hunter.

When the app is launched, it automatically enables your phone’s camera, and starts attempting to recognize anything it sees in the image.  Therefore, all you need to do is aim the camera at a mushroom, and see what it says!

To maximize the accuracy of the mushroom recognition, try looking at the mushroom from the side, and bring the camera close enough for the mushroom to fill up most of the frame, like this:


I won’t make this app available on the Google Play Store for the time being, while I continue to refine the model, but if you’d like to check it out, you can build it from source code, or contact me for a pre-built APK that you can install on your device.

Stop it, Stephen Hawking!

Professor Hawking continues to double down on his calls for humanity to colonize space, whether it’s building a permanent colony on the Moon, or on Mars, or even beyond our solar system.  The reasons that he cites for this urgency are that we’re doing irreparable damage to our planet’s climate, and also that there are simply too many of us to be sustained by a single planetary home:  “We are running out of space,” he says, “and the only place we can go to are other worlds. It is time to explore other solar systems.”

To be clear, I fully believe that our top priority should be to mitigate climate change, and that it may be too late to change our habits before the damage becomes irreversible, and that overpopulation is a serious problem for many of our societies.  I do not, however, believe that attempting to colonize other planets is a viable or attainable solution to any of these problems.  For all the loftiness of Stephen Hawking’s statements, I find his reasoning quite a bit myopic.  I’ll also go further to say that by making these kinds of fatalistic, defeatist statements, Hawking and other proponents of space colonization are doing a disservice to the real discourse we need to be having about how to exist sustainably on the only planet we’ve got.


If the problem is overpopulation, then why not focus on solving the problem rather than running away from it?  How about a massive, well-funded campaign to inform developing nations about family planning, or educating women about contraception?  Perhaps Stephen Hawking has given up on the possibility of the world’s governments uniting to achieve such a goal, and perhaps so have I, but then why not admit this explicitly, rather than proposing an absurd non-solution that is even more fictional?

The human population is a thin film that covers a very small fraction of the total surface of the planet.  The point is, why should we think about colonizing other planets when we haven’t even colonized all of one planet yet?  Why don’t we think about colonizing the ocean floors, or the ocean surfaces, or habitats deep underground, or floating cities in the sky?  I’m not a planetary scientist, but I’m willing to bet that any of these options would be much easier to achieve than colonizing another planet.

Why, also, should we think about colonizing other planets when we haven’t colonized one planet sustainably yet?  If we “overflow” our population onto a different planet without solving the problem of how to live on a single planet sustainably, we would simply postpone having to deal with the same problem on the new planet at a later date.  Why not work towards solving the sustainability issue on our home planet first, before considering branching out to different ones?

Climate change

The Earth is, by definition, the most habitable world we will ever find, because it’s the world on which we’ve evolved over millions of years.

To be sure, the damage we’re currently doing to our climate will have repercussions for future generations.  And unless we act now, the damage may be irreversible.  However, no amount of damage we can inflict will make the Earth completely inhospitable to human life, much less life in general.  This is in contrast with every other celestial body in our solar system, all of which are categorically not suited for life as we know it.

If we burn all the coal in the world and melt both of our planet’s polar ice caps, the Earth would still be more habitable than any other planet in the solar system.

If we detonate every single warhead in our nuclear arsenal, the Earth would still be more habitable than any other planet in the solar system.

If the Earth gets struck by an asteroid the size of the Chicxulub impactor that wiped out the dinosaurs, it would still be more habitable than any other planet in the solar system.

It’s simply not productive to set goals for colonizing another planet, when we already have a perfectly good planet right here. All we have to do is improve our relationship with this planet, which begins with education, and will naturally lead to fewer children, less religion, and better environmental awareness.

Interstellar travel

Traveling to another solar system will not happen for us.  It will not happen in our lifetimes, or the lifetimes of our children or grandchildren.  Yes, I do believe that intelligent life will someday leave the confines of our solar system and travel the stars, but that life will not be human (with the exception of Matthew McConaughey).

You may say, “How closed-minded of you!”  But no. I’m an avid appreciator of science fiction, from Isaac Asimov, Arthur C. Clarke, and Ray Bradbury, to the likes of Star Trek, Battlestar Galactica, and even Babylon 5.  And I still feel glimmers of idiotic excitement when I read occasional news stories about “breakthrough” propulsion or energy technologies being “researched” at NASA.

However, I’m also armed with a basic but solid knowledge of physics, which tells me how ludicrous or impossible these fantasies are.  Science fiction, at least in relation to space travel, will have to remain fiction for the foreseeable future.

I do sympathize with Professor Hawking’s sense of urgency. And if I had an intellect of his magnitude, maybe I too would feel claustrophobic on this planet.  However, unless he has an actual solution for traveling across interstellar distances (does he?!), I’m afraid his priorities are inverted. Leaving this planet should not be our priority.  Let’s instead figure out how to love this planet the way it has loved us since the bawling infancy of our species, and to ensure that we give future generations enough time to live on it, until they, in the far distant future, are truly ready to leave it.

VR needs several more generations to succeed

When considering today’s “VR” technology, the actual name “VR” is misleading: it’s not really “virtual reality.” A more accurate name for it would be “binocular display with motion tracking,” but that name is not nearly sexy enough to attract venture capital for your startup. I wanted to put all mentions of “VR” in this blog post in quotes, but that would be too on-the-nose even for me, so just imagine that the quotes are there.

I’ve played with many of the major VR headsets in an “enthusiast” capacity for a while now, and I’ve even developed a few applications for them. I really wanted to like VR. I tried really hard to suspend disbelief and make myself like it, but I just have to admit — I don’t see the appeal, and I don’t see the current generation of VR technology as anything more than a passing fad.

Coming soon to a landfill near you!

The only thing that the current VR experience delivers is novelty. It really is exciting to look into one of these headsets for the first time. However, the drop-off in novelty is very steep, on the order of minutes, not even hours.

There isn’t any one specific deal breaker for the current state of VR. It’s rather a combination of factors that, collectively, make it altogether unusable:

  • It’s very low-resolution. In order for a VR experience to be “believable,” it needs to have a resolution of at least 4K per eye. Otherwise, you can literally see the pixels when you look at the image in the headset.
  • It’s not nearly immersive enough. The field of view of the major VR headsets is about 100 degrees, which feels unnatural, and borders on claustrophobic. And the “depth” of the 3D content in the VR display can’t seem to match true natural proportions, either.
  • It’s nausea-inducing. The sensors that track the 3D position of the headset need to be an order of magnitude more sensitive and responsive.
  • The “headset” form factor is still too impractical to become mainstream. No matter how comfortable the headset becomes, if it still needs to cover your eyes and wrap around your head, you won’t want to use it for very long. Did you know that there’s a Netflix app for VR devices? If watching a two-hour movie while having a big plastic appliance strapped to your face is your idea of a good time, then I salute you, but I would still wager that you’re in the minority.

I don’t believe that VR technology can move forward by addressing any one of the above points. It would need to be a quantum leap of technological advancement.  And honestly, once the collective novelty of VR finally wears off, I’m not sure there will be enough interest among consumers for VR companies to work towards this next leap any time soon, except perhaps for very specific niche markets for which VR is better-suited.

I am, of course, looking forward to the final generation of VR, which will involve a Matrix-like interface that plugs directly into your brain stem. Until then, I’m afraid we can only look forward to landfills brimming with plastic contraptions thrown away shortly after purchase.

RJ11 to RJ45

My house, like many older houses, is wired with standard telephone cables, which may have been useful until about fifteen years ago. The upstairs bedrooms, the kitchen, and the family room all have RJ11 (telephone) outlets that lead into the basement where all the cables merge together.

It occurred to me that I could replace these telephone jacks with something a bit more useful, namely Ethernet (RJ45) jacks! I say “a bit” more useful because there really isn’t much need for wired Ethernet connections in this day and age, especially within a single home, but I do have some personal justification for a wired connection:

  • I feel much more comfortable having my main workstation wired directly to my internet router. The difference in speed and responsiveness is noticeable. As someone whose day job is working from home, this is an important thing.
  • I have several Raspberry Pi units that I’m using around the house (e.g. as a media player for the TV) that don’t have WiFi, and need a wired connection.

For some of the jacks, I was able to replace the cable by tying the end of the old cable to the head of the new one, and literally fishing it through to the basement by pulling on the other end.  However, a couple of the other cables seemed to be stapled to the studs along the way, so pulling them through was not an option.

Fortunately, it’s still possible to simply transform these phone jacks into Ethernet jacks. A phone cable has four wires, and this is actually enough for an Ethernet connection. Even though an Ethernet cable has eight wires, only four are used in a 100Mb connection. (For a gigabit connection, all eight wires are indeed used, but a 100Mb connection is still sufficient for my purposes.)

So, with just a few bucks spent on RJ45 wall outlets, here’s how it turned out:

20170305192556    20170305192751

If you attempt to do this, make sure to get familiar with the pinout of Ethernet cables, as well as the pinout of the wall receptacle that you purchase.


As a relatively newly-minted homeowner, I’ve been noticing a strange instinct waking up within me, namely the DIY instinct. I feel compelled to fix random things around the house, optimize, insulate, caulk, tuck-point. I suppose this makes sense since I’m an engineer: I derive great satisfaction from learning how things work, and making them work well.

But this also fits into a general philosophy I’ve always held, which is that you shouldn’t be allowed to use a technology without a basic understanding of how it works. If you drive a car, you should understand the fundamentals of internal combustion, and be able to change a tire, or even change the oil, brake pads, or spark plugs. Similarly, if you own a house, you should have a basic understanding of things like electricity (at the household 120-volt level), as well as plumbing (water and gas), sanitation, insulation, heating, cooling, security systems, cable hookups (TV, internet), etc.

It sounds like a lot, but it really isn’t: these are pieces that fit into a single puzzle, and operate on very simple physical principles. Sure, you can hire a contractor for the simplest tasks around the house, but I personally wouldn’t feel like I’m “at home” if I wasn’t intimately familiar with every facet of how my house works. Besides, today it’s easier than ever to do DIY projects around the house, given the astounding amount of information on the web available for nearly every kind of task.

Prior to buying the house, we invited a home inspector who walked through the house and gave us a laundry list of minor and major items that need fixing or touching up. Slowly but surely, every week I commit to crossing at least one item off the list.

This week it was all about electrical outlets. Some of the outlets didn’t have ground (two prongs instead of three), some had reversed polarity (generally harmless, but potentially dangerous for certain appliances), and some need to provide a GFCI. After a few hours of work and a contractor-pack of new outlets, all of the receptacles now look pristine, and are completely up to code.

Grounding the outlets specifically turned out to be much simpler than I thought. The outlet boxes that hold the receptacles in the walls are made of metal, and the wires that lead to the outlets are also routed through metal tubes. The tube attaches to the outlet box on one end, and either a junction box or the circuit breaker on the other end. And conveniently enough, the mounting brackets of the outlet itself are metallic, and are connected to the ground pin of the outlet! Therefore, it suffices to just replace the two-prong outlet with a three-prong one, with no additional wiring.

I’m surprised by how many people I know who absolutely refuse to touch anything electrical around the house. Electricity is not something to fear; it’s something to understand, respect, and tame. Get to know your circuit breaker. Replace some old wiring. Put in a new dimmer switch. And most importantly, enjoy the knowledge that you made your own home even better.