Monday, April 3, 2017

Why I gave up on Android

I got my first smartphone in January of 2011-the year after I finished college. I had been writing Java professionally for a couple of years and opted for an HTC Aria running Android. Android apps are written in Java, so I thought it would be fun to be able to write software for my own phone.

From https://www.att.com/esupport/article.html#!/wireless/KB110410

Over the next six years I had three different Android phones, each better (and larger) than the last[1]. I also wrote some Android apps, the most successful being the Pretty Good Music Player, which has been downloaded over 4,000 times in its two different forms.

Writing Android applications is a lot of fun and really rewarding. Through open source development on Github and F-Droid I met a lot of people from around the world who were willing to contribute to my application - it has been even been translated into seven different languages!

By this point you should be wondering: If things are going so well, why am I giving up on Android?

I'm ready for a phone that's not a project

With every Android phone I've owned, I've had to work to deal with the following issues:

  1. I have little to no control of what's on my device
  2. I have little say over the software versions or upgrade process
  3. There is little transparency and poor support in the hardware or software unique to each carrier and device
None of these issues are insurmountable, but I have a limited amount of time and money to spend on my phone, and I'm tired of fighting with device control, upgrades, and hardware support. 

Control

Android is open source. In theory, that means it should be user-modifiable. I should be able to tear it apart and rebuild it as I want. I should be able to accept or reject changes to my phone, and I should have control over what's on it. This is the case with other open source projects. It's not the case with Android.

The Android ecosystem is so convoluted it's hard to get a phone that doesn't have bloatware from at least two different sources on it. Google occasionally releases a "clean" phone (the Nexus or the Pixel), but these are the exception, not the norm. At the Verizon store yesterday, I had two options for phones without "NFL Mobile" installed by default: Google Pixel (not in stock) or the iPhone.

This is not what "open source" is supposed to mean. If I want Debian customized with or without something, I can rebuild it myself or choose from one of its many offshoots (e.g., Ubuntu). If I want Android customized, I have to root (hack) my phone with sketchy software and install a custom Android build like the (now defunct) CyanogenMod.

Upgrades (and Downgrades)

Virtually every major Android upgrade in recent memory made my phone worse. The upgrade from Android 4 to Android 5 made Bluetooth media buttons stop working after about 20 minutes. Some aspect of Android 5 or 6 introduced a memory leak that required me to restart my phone every two days or risk apps crashing randomly.

In a normal open source environment, I could address these issues by rolling back the update or creating a fix myself. In Android, (without rooting my phone) I have few choices. It's hard to tell where the issues even originated, since my phone wasn't just running Android: It was running Android, plus LG's bloatware, plus Verizon's bloatware. One of them caused the memory leak.

The best Android option today seems to be the Google branded Pixel. Unfortunately, I have the same long term support concerns with the Pixel as with all of the others. Google has a bad habit of losing interest in a project and dropping it with little fanfare (anybody remember iGoogle? Google Buzz?)

Hardware


Hardware support is the one place Android acts like an open source project: it's frustrating. There are a plethora of manufacturers, each making a wide variety of devices. Android has to support them all. Linux has a similar problem on the desktop. For example, the Linux kernel has to be written to support a wide variety of CPU types.

Android has a several major device manufacturers (Samsung, LG, Motorola) and a plethora of smaller manufacturers. At any given time each phone maker has two to four devices on the market and approximately fifteen devices within a three year support window. When you factor in the four major carriers (each pre-installing their own bloatware and network support), this makes approximately two hundred sixteen device configurations Android must support at any given time[2]. Linux gets around this issue by being transparent, employing an army of engineers, and by allowing users to handle upgrades and downgrades. Android has all of the weaknesses of open source, and none of the strengths. From a quality control standpoint, this is a nightmare.

The result of this nightmare is that new phones function well. The software on them is well tested. As a phone gets older and older, testing priority stays with the new phones - there's far more motivation for new phones to work well than old phones. For example, the autofocus on my LG G3 stopped working correctly about six months ago (around the two year ownership mark). I believe this was a software error, since the phone remained physically capable of focusing correctly, it would simply re-focus sporadically.

Why I bought an iPhone


I weighed the odds. Android has to support two hundred sixteen phones in a three year rolling window. Apple's iOS has to support eighteen[3]. The chance of frustrating problems, while non-zero, is (at least theoretically) significantly lower on the iPhone.

My experience with Android is only anecdotal, but I'm tired of poor support and buggy software. I'm tired of buying phones that wear the badge of open source but won't let me uninstall bloatware. I know that many of my frustrations have solutions, but those solutions take effort, and I'm tired of my phone being a project.


Final Thoughts

I'm in the honeymoon period with a new iPhone 7. In three years, we'll see where I stand.



1. I had an HTC Aria on AT&T, a Motorola Droid Razr on Verizon, and an LG G3 on Verizon.
2. Assuming three current devices per manufacturer with a six month device release cycle. 3*3*6*4 = 216.
3. Assuming Apple has the same release cycle as Android manufacturers and a similar testing budget.

Copyright 2017 Tyler Smith

Saturday, February 18, 2017

Concepts in Goodnight Server Room

In the upcoming children's book Goodnight Server Room, I follow the adventures of data as they flow through computers and routers, and other hardware found in a server room.

Draft of Cover Art, the Green Shapes are Data

Many of my favorite children's books pick a category (trucks, trains, animals, etc) and describe one item from that category on each page. Goodnight Server Room's category is computers and how they interact with data.

Some bits, bytes, and packets (top to bottom)


Emily Krueger and I did our best to make data as approachable and understandable as possible. The visual complexity of the data increases as the size of the data increases (a byte is eight bits, etc).

Here are some of the terms you can expect to read about in Goodnight Server Room.

  • Server
  • Router
  • Switch
  • Server
  • Cables
  • Hard Drive

  • Processor
  • Cache
Want to see anything not on this list? Let me know!

Friday, February 10, 2017

Review: 2017 Chevrolet Camaro SS

Price as Tested: $43,900
Rental Rating: 8/10
Purchase Rating: 3/10

On a business trip to Arizona, I selected "midsize" as my car rental option. For whatever reason, the rental car company assigned me a Camaro. I did not object.

This does not make sense in Minnesota

This car fits Arizona like a husky fits Alaska. Straight, flat roads with lots of sun are perfect for a open top muscle car.

The model I rented has a 6.2L V8 engine. The power is wonderful - no matter how fast you're driving, the slightest pressure on the gas pedal sends you rocketing ahead of everyone else around. In a week of driving, I never found an opportunity to get the petal even close to the floor.

Despite being a 2017 model with less than three thousand miles, the car sounded clunky. Driving mountain roads often gave me the opportunity to hear the car's jittery machinations as they echoed off of the mountainside.

The Camaro turns like a truck. Sharp mountain curves required close attention to manage the Camaro's sizable frame. The driver sits low in the vehicle and the doors are substantial, so curbs are nearly impossible to see.



Electronics

The reverse camera turns on automatically and is easy to see on the large center-dash screen. I found the digitally added "turn path" guides to be surprisingly helpful in a car that's easily described as "one big blind spot". With the top up, seeing anything other than what's directly in front of you is a challenge.

To lower the top, a divider has to be in place blocking off the section of the trunk reserved for the top. This divider was broken in the model I tried - I could position it properly in the trunk, but the sensor that allowed the top to open did not detect it. I spent days staring at this message:

I ran back and forth to the trunk so many times trying to get this message to disappear


Finally, I stopped by a dealer who showed me how to trick the sensor with a magnet.

Fixed with magnets!

I was never able to successfully pair my phone with the car - it crashed the Bluetooth process on my phone every time I tried to connect.

Transmission

The paddle shifters were essentially useless. The delay after pressing the upshift or downshift button is so long it's easier (and less stressful) to simply wait for the automatic transmission to change gear for you.

That being said, when left to its own devices the automatic transmission performed admirably, and I never felt like I had to wait for power when passing someone on the freeway.

Comfort

Technically this car has seating for five, but the back seats are barely big enough for a backpack, much less a human. The front seats were comfortably spacious.

Audio

For a car marketed to people who like their sound booming, I was disappointed by the sound in the Camaro. Music was muddy at best, and even at high volume I was underwhelmed.

Engine

Clever gas cap
Driving on speed-limited highways, I never felt even remotely limited for power. This engine sounds wonderful and is always ready when you need it.


The Small Stuff


I was pleasantly surprised by the clever "gas cap", or lack thereof. Instead of taking the cap off, you simply push the nozzle in. 

The steering wheel isn't perfectly round - it has a couple of straight sections, giving it the feel of a blend of a conventional steering wheel and a formula one configuration.

After tricking the trunk sensor, I found the motion of the roof closing and opening to be quiet, quick, and oddly elegant.

The parking break isn't a level or a pedal, it's just a tiny button on the center console. 


Sunday, February 5, 2017

Rebuilding the Foundation: My journal entries after asking why

Last month my article I don’t know if there is a God. Neither do you. And that’s okay ran on The Salt Collective. I described how I lost my footing in faith, partly due to the lack of empirical discussion and teaching in most churches. I started asking why we believed in certain things, and it took a long time and a lot of work to find a satisfactory answer. 

I got a lot of feedback, including this question:


I didn't get the interpretation that you really answered the "why" in your piece. It seems that you went from having strong doubts and deep, philosophical questions about the "why" directly to having your faith restored by a genuine sense that God was speaking to you. Maybe that's your answer to the why? You believe because you feel?




In the article I jump rather quickly to the conclusion (the "answer" to why), but in reality it took several years - my sophomore year of college when I really started asking was 2008-2009 and I didn't reach the conclusion I describe until 2013 (and I expect I'll never completely reach a conclusion).

I'd say that I only partially answered the 'why'. I concluded that I have a basis for belief, but I don't have absolute confidence in that belief - I have less confidence in my beliefs now than I did before I started asking why, but I have a better foundation for them.

You asked "You believe because you feel?" I'd say that's half the answer, and it's the half that took me a long time to figure out. In the article I present the story of feeling God speaking to me as a transformative moment. It was a transitive moment, but it wasn't the transformative moment. There wasn't a single moment, instead there were quite a few iterations of analytical, emotional, and spiritual steps in those years. The moment I recounted was just a representative story.

I have a rational framework for a *reasonable* belief in God. That framework wasn't enough to really justify belief since it's always possible to poke holes in a logic-only argument for something that's intrinsically unknowable. The missing piece was an understanding that feeling an (apparent) emotional connection to God is sufficient justification for leaping from rational argument to belief.



Journal Entries


In the hopes of telling a more complete story, I'll share a couple more of those experiences as taken from my journal entries. These are a little disjointed, but I hope they'll at least illustrate some of my thought process. 


April 2012: Is there a God?

For me this first comes down to a question of “how and why does the universe exist?” Clearly, we got here somehow. I see two potential arguments here: First, that we’re the product of some insanely long odds producing a quantum state change in which matter and antimatter simultaneously appeared. Second that God exists, and at some point in time, created the universe. 
In either argument we don’t immediately have much insight into the forces that resulted in our existence. I think that the idea that we sprung from nothing is at least as large of a mental leap as the idea that we were created.  
For the sake of argument, let’s assume a Hawking-esque physicist is able to demonstrate that quantum physics could result in our existence. In Letters From a Skeptic Greg Boyd makes an interesting counterpoint (Greg’s referring to evolution, but the principle holds in both cases): 
The theory of evolution, if it is true, can only give us a biological guess as to how humans came about. But the more fundamental question is how evolution produces the kind of results it does in the first place. What must the ultimate “force” of the universe be like for evolution to have the kind of characteristics it has? I’m asking something about the process itself. This is a metaphysical question (meta = above). Science can’t address it. (Boyd, p54) 
In the case of our existence, this begs the question “if there are a set of rules governing quantum mechanics in such a way that the universe could be sporadically created, where did these rules come from?” Perhaps this is just a limitation of my brain, but it’s hard to me to accept that the rules of physics are invariants with no source. 
Boyd also makes the argument that the personal nature of humans demands a personal creator, i.e. the fact that we ‘thirst’ for God implies that there is a God, as the fact that we thirst for water implies the existence of water. 
Independent of all of this conjecture, I find I’m left in the same situation I described above - I can’t be sure. I can make a detailed, well supported argument for God’s existence (or lack thereof), but the fact remains that there is no internal switch I can double check to confirm “Yep, I have settled that question”. I think this makes it pretty clear that this will become a question of faith (though I wish I could just put a rag in my yard...)

April 2012: More Questions 

Why should I believe in God?
I think this is a very different question from my first question, because it allows for a lack of 100% reproducible evidence.  Some potential answers:
1. Because prayer makes gut sense to me. I can’t give much rationale for this, all I’ve really got is that prayer feels right.
2. Because life without faith seems like a pointless struggle to reproduce as much as possible.
Is belief in God a choice?
This may seem like an odd question, but it’s been bugging me. My fears keep arriving at “what if I’m incapable of believing in God”.
How do I deal with the cloud of anxiety around these questions?
Since there’s so much riding on my answers to these questions, it’s hard to separate what I feel due to fear to what I really think.
Things I’m working with right now
It feels harder to accept beliefs now because it’s much harder to go back on them - if I didn’t have people expecting me to believe things, it would be easier to dive in.
“Belief” is confusing for me, because it’s impossible to verify.
I doubt whether God exists, but prayer still makes sense to me.

December 2012: Anxiety

Faith is a journey. I can never be 100% certain I won’t change my mind.
When I meet someone who might be an atheist I start to get an anxiety attack type feeling.

February 2013: Coming to terms with the possibility that miracles could make sense


I’d struggled for a while with the idea of a universe which lived by laws (physics, math, etc) but that God could arbitrarily break them. It seemed crazy that miracles could happen, and I had trouble getting myself to accept them.
Then I started to imagine God as a software developer who’d written a simulator (the universe). When I develop software, I can pause it in the middle of execution and inspect things, and I could even (if I were skilled enough) change things on the fly. Nothing inside my program has any idea how this can happen - the rules of the program don’t include the debugger. Instead, I pause it from the outside. It’s almost silly to think of writing a program which expects to be paused/changed by a programmer.

This helped me work through why the universe has rules, but that God can break them. He’s outside the universe. We can’t possibly understand how he does what he does, just as something inside a program I write can’t understand how I can debug it.


March 2013: Mythbusters and the fallacy of science vs religion

Watching Mythbusters was one of the biggest factors that prompted my asking why. I loved (and love) those guys, and they're all atheists. When I started going through rounds of anxiety about faith, I stopped watching it. 
I used to love watching Mythbusters, and stopped because I was concerned about its effect on my faith. I’m going to go back to it and embrace that God made me a critical thinker.


January 2014: Hard Questions

  1. How can we account for confirmation bias in assessing the validity of claims of spiritual experience?
  2. How can I be confident my faith is more than just an artifact of parental pressure? Can I be confident that if I were born in China, I would have eventually figured Christianity out?
  3. How can we claim that anything taken on faith (e.g. Christ’s divinity) is more correct than something taken on faith by other religions?

Unfortunately, that's where I have to leave you - hard questions without surefire answers. A lot of the feedback I got on the original article was people offering me their assurance or confidence in how they know God exists. Folks on Reddit were especially incensed by my claim that nobody knows for sure. 

On one hand I'm glad people on there have so much confidence in their beliefs. Sometimes this is called "strong faith", but I don't like the implication that doubt means weakness. On the other hand, overconfidence is dangerous - being confident that you know what's right makes it much easier to tell someone else that they're wrong. 


Tuesday, December 20, 2016

The Social Media Nuclear Option

I'm concerned that the rules of engagement for social engineering in elections may be changing under our feet. 

There's an old axiom about congress that says don't watch for changes in the laws, watch for changes in the rules. This principle is the basis for the dramatic naming of the so called 'nuclear option' to allow overriding a filibuster by simple majority.

The governing rule in social media has been political neutrality. The political leanings of most social media users have shifted from the left to the center as the internet population stretched beyond the young and tech savvy. Throughout this shift, social media from Facebook to Reddit have been adamant in their neutrality and deference to free speech. Incidents of alleged censorship even led to minor insurrections on Reddit and attempts to establish new "pure" news aggregate sites (see Voat).

Should we trust that news aggregators and social media are politically neutral?

Censorship is just one form of political influence. In the pre-internet days it might have been a deft weapon, but now that every user has a plethora of side channels for communication, censorship is easier to identify. Mark Zuckerberg is adamant that Facebook is politically neutral and opposed to "fake" content. Validity of news is relatively easy to check - tools like snopes make it straightforward for concerned users to call out blatant falsehoods.

What's harder to identify is content manipulation. Recently a Reddit administrator was shamed and publicly apologized for making effectively untraceable changes to the content of users' comments. News sources reported on Wikileaks' release of Clinton campaign emails while acknowledging that they have no way to determine whether the emails were manipulated.

Still, content manipulation can be combated with tools like digital signatures that fail if the content of a post is manipulated.

The knot in my stomach comes from the mechanisms that govern Facebook's news feed, Twitter's tweet stream, Reddit's front page, and all other corners of social media where users see content filtered and sorted by proprietary algorithms designed to show us the most interesting and most popular content. These mechanisms are secret and hugely influential. From a technical perspective, it would be easy to tweak the algorithm to show five percent more pro-Trump posts or decrease the rank of Bernie Sanders supporters posts.

As demonstrated by Reddit admin /u/spez, such subtle changes can be made with little oversight and zero transparency.  Reddit even notes that their vote counting system is necessarily private to protect against external vote manipulation.

In the land of traditional media, bias in headlines is well understood. Fox News leans right, MSNBC leans left. Their editors curate the stories, and we know what's going on.

In social media, someone or something is curating the stories we read. We don't get to pick between the left and right social media. There's just one Facebook, and we need to realize that Facebook may already be manipulating elections via subtle curation.

I am not claiming that Facebook is manipulating elections. I'm claiming that the capability exists for Facebook to do so in an unchecked and difficult to detect manner. Doing so would be an unprecedented change in the accepted rules and norms of the internet - Facebook's nuclear option.

As long as Facebook's news feed algorithm is proprietary and unverifiable, we need to treat it as potentially malicious.

P.S. The Guardian has a similar op-ed about this topic with additional references.



Sunday, December 4, 2016

The Internet's Next Revolution

-----BEGIN PGP SIGNED MESSAGE-----
Hash: SHA1

The problem is trust

I first wrote this in a letter to my brother, but I decided to share it more broadly.  I'll try to describe the problem without devolving into flowery language, but forgive me if I stray from pragmatism a little.

With this past election I've been pondering the problem of trust. The internet (particularly social media) rushed us into an age where everyone simultaneously has a megaphone and headphones. Stories are shared left and right without any clear confirmation.

Case in point is the DAPL. I constantly see chatter back and forth about whether the tribe attended the zoning meetings, whether they were just greedy, whether protesters were funded by train companies, etc. With the plethora of news sites starting up, shutting down, and starting up again, it's hard to tell who's legit.

In a search for a solution, I'm thinking about a few known problems and approaches.

Establishing Trust


In cybersecurity we use a chain of trust. Web sites have certificates issued by a "root" certificate authority (e.g., verisign). My PGP public key is on my Facebook profile, so I can sign my emails appropriately with a key that folks can verify (using Facebook as my root of trust). CNN uses a signed certificate (and the notoriety of the name “CNN”) so I can have a reasonable degree of confidence that when I’m reading a story on CNN.com, it’s actually from CNN and not from someone running a fake cnn.com.
Motivation

As I’ve tried to market my book, I’ve learned that marketing is not as easy as I imagined it to be. It’s really hard to get an idea into people’s heads. Even folks that I’ve been friends with on Facebook for a long time have little to no idea that I wrote a book. Being able to expose an idea to a lot of people is immensely valuable, and I’m just starting to appreciate that. Getting people to do something (e.g., installing a browser plugin to verify the sources of documents they read) is even harder and close to impossible.

Crawling forward


Throughout the election there were tons of organizations (NPR, factcheck.org, etc) vetting claims and accusations. Shortly after the election and news of Facebook spreading false stories, some students came up with a fancy algorithm for verifying articles. Unfortunately none of this seems to have made any difference. Message board are still filled with back-and-forth unverified garbage.


What to do?


I think this situation demands some kind of dramatic shift in how we approach news media and information in general. I think the shift needs to be subtle and cultural. The answer isn’t just to provide a technological solution, it needs to change how non-techy people look at information.

I'm far from a solution, but here are my approaches to this problem:

1. Make digital signing the norm, and make it obvious. People are starting to get used to seeing the little lock icon telling them their browser connection is secure. I want every news article to be signed by its author, and again by its editor. If possible I’d like each fact in the article to be signed and referenced with its source.

2. Push conflicting views on people. Sometimes I’m a little worried that the news I read is so consistently and adamantly anti-Trump. Even NPR is pretty soundly critical. It makes me scared that I’ve unwittingly boxed myself into a liberal echo chamber.

How to do it?


Finally we arrive at the golden ticket to solve this mess. Or rather, where the golden ticket would be if I had one. I’ve done my best to articulate the need, but that’s far from enough. I don’t have a clear idea of the how, but here are some off-the-wall ideas:

Create a new HTML equivalent supporting embedded references and/or citations
Perhaps a "VHTML" (Verifiable Hypertext Markup Language) extension of HTML that allows embedding references and proof of authorship inside text. Browsers could then display non-verified or limited verification text in a style different from verifiable sources.  
Produce a new (Google News style) aggregator that aims to provide conflicting views on everything.
Create a web crawler to construct a “chain of trust” graph for news verification.
Create a “badge” or “widget” that can be installed on a web page (kinda like captcha) that indicates the human author of the content signed off on it and directs to sources.

If you read this far, thanks! I’m curious what you think.
-----BEGIN PGP SIGNATURE-----
Version: GnuPG v1

iQEcBAEBAgAGBQJYRFb1AAoJEAY9AbSjDRw75GAH/04b+3Twq4ZF9DMz5LkXR1Hb
NcFUC7TrcVQZ7a/gouvmOZdbvDKr5Y0XU0IiGDI5OPqmh5zyohzevIRuRTHY+rHt
1nST8Dg+CATrEqObNXHQPE7mhYcAUxMasIkA3C3cU/T8yWMvSJACQtsWptFd3SfH
swNL+BRULg98elv//9ose2Reeh8m5OQE97q7rGR2j0b9/eStueAHq5KCk+xHLGiw
lGpe9xgJkGOou6aOh8ID/xrbDTOMO6twjzThD8/0je2zokhS9N0BaYAHbVX/EAL8
lM8Q7q1tWCD/CyWjDV1Eq4sUWHfhSaDvN8gRw0SCxoWvELYq4w7DQVJmtSevYoc=
=a6zB
-----END PGP SIGNATURE-----

How to verify this post

Unfortunately this is not nearly as easy as I'd like it to be. 
  • Install gpg tools or an equivalent gpg package.
  • Copy my public key from Facebook to a plain text file called tyler.asc
  • Import my public key
gpg --import tyler.asc
  • Copy the PGP portion of the post to a plain text file. 
  • Verify the signature with GPG:
MacBook-Air:Documents tyler$ gpg --verify testcopied.txt 
gpg: Signature made Sun Dec  4 11:48:37 2016 CST using RSA key ID A30D1C3B
gpg: Good signature from "Tyler Smith (Personal GPG Key) <tylerhesthedude@gmail.com>"