Pokemon Go Is Still a Thing?

This morning the family and I decided to enjoy some time outdoors with the nice autumn weather by visiting a large park that Nozomi and I used to frequent when she was younger. This time of year usually involves a number of festivals around town and none were scheduled to take place where we wanted to go, so figured it would be mostly empty. Oddly enough, when we arrived just before 11:00am, the parking lots were more than half full. We expected to find the grassy areas full of people having picnics and otherwise enjoying themselves and, while there were a number of families and people walking dogs, there weren't nearly enough people in sight to justify the number of cars in the lots.

Ochiai Park From Five Stories Above

Aside from a comment or two on the lack of people, Reiko and I put it behind us as we wanted to enjoy some time with the boy. Ochiai Park has a couple of water-based attractions that kids enjoy, and we wanted to see how he would react to them.

The Boy Playing With a Water Cannon

For the better part of 45 minutes, we made our way around the large pond that dominates the rest area and took photos at every opportunity. On occasion we would see a gathering of people but didn't give them too much attention. The boy was enjoying himself, and we wanted to be part of the moment.

On the way back to the parking lot, though, we noticed something odd. The parking lot was crowded. Both with cars and pedestrians. People were congregating in front of a large staircase. Everyone had a phone in their hands. One man I saw had three phones and a tablet. Few people were talking, and almost everyone was looking at their device. It was at this moment that the reason for the crowd: Pokémon Go.

This game was released quite some time ago — as far as mobile phone games go — and showcased what AR might be capable of with 2016-era mobile technology. Nintendo had a massive hit on their hands, and people young and old could be found playing the game all over the city, head down, staring intently at their screens. I had expected that this phenomenon would fade away after a couple of months like so many other pastimes involving smartphones, but there's something about this particular game that people seem to enjoy. A year after release, one could still see dozens of people playing the game on trains, in shopping malls, and in restaurants. A year and a half after release, one could still see entire families going out on weekends to catch 'em all. And today there were at least 200 people congregating at the park.

Pokémon Go isn't going anywhere, it seems.

I wanted to know how so many people knew that the park would have an Pokémon event, as it wasn't on the park's official website, nor on the city website. Turns out there's a whole series of sites dedicated to helping people find these events across the country. I spent a couple of minutes reading this one and found people talking about taking the Shinkansen three hours from 700km away to play the game and find a rare character. Others talked about taking time off their part-time jobs to be in attendance. Some even had entire lists of which parks would have which creatures, giving people an opportunity to get a character they didn't already have.

In the parking lot, I spotted license plates from surrounding prefectures and one that read 仙台 (Sendai), which is a two-day drive from here at best. While the most likely explanation is that the driver of the car just happened to be in the area for a different reason and wanted to take part, the amount of dedication and pre-planning people did to arrive at the park before the 12 o'clock event start is quite impressive. I can understand young people wanting to spend their time playing a game in the park, but not entire families. There is clearly a lot more to Pokémon Go than I ever gave it credit for.

Mini Review: Enlightenment Now

In a world full of 24-hour news cycles where only the worst events are shared, one would be forgiven to believe that our civilisation is going to the dogs. War, famine, disease, poverty, and a hundred other travesties vie for our attention in an effort to generate revenue for the companies responsible for delivering that bad news. However, despite our pessimistic perceptions, there is a lot of genuinely good things that have happened over the last century that should not be taken lightly. We're living longer. Literacy rates around the world are above 90%. Billions have escaped extreme poverty in the last generation. Fewer people die in wars today than a century ago. This is the message that Steven Pinker conveys in his recent book Enlightenment Now.

Kindle on a Table

I first heard of this book a few months back and was intrigued by some of the reviews on Amazon. They're overwhelmingly positive and often report how the book had changed a person's view of the world around them for the better. Even Bill Gates remarked that Enlightenment Now is his new favourite book of all time. High praise indeed, given the number of books the billionaire reads. Given that most reviews I've seen online generally sit somewhere between ambivalent and "this was the worst book ever", I was curious to read this book. Either everyone would be right and I would be recommending the book to everyone I knew, or everyone would be wrong. Fortunately everyone was correct.

Steven Pinker presents chapter after chapter of information outlining how various problems have been drastically reduced or eliminated over the last fifty years. The challenges were not at all easy to overcome, nor were they cheap. However, a rising tide raises all boats, and people today have been witness to some amazing progress. It's hard to not feel a little better about humanity when seeing charts and diagrams comparing past and present figures, showing that despite all the doom and gloom portrayed by the evening news, volunteers and aid programs from proactive organisations are making a difference in the lives of billions.

Are there still problems to be solved? Absolutely. And when we look at the accomplishments from the last quarter century alone it's hard not to feel confident that the issues can be overcome. Reliable access to clean water? We can do that. A fairer distribution of wealth in nations? We can do that, too. Health care for everyone? A lot of countries have this already, and it's just a matter of time before most do.

Unlike some of the reviewers on Amazon, I can't say that this book changed my life. What it did do, however, is give me hope that many good people are doing everything in their power to make this world a better place, and it's up to the rest of us to provide support and optimism to the future generations who will carry the baton.

Around and Around

Steve Jobs famously quipped that a computer is like a bicycle for the mind. The machine can take a person quite a distance so long as there's a destination in mind. Given the number of people who have accomplished great things with the help of computers, the analogy is difficult to refute. So if a computer is like a bicycle, then a lack of sleep must be like a merry-go-round.

Merry Go Round

This past week I've been working "Sydney Hours" for the day job along with my regular evening hours, which means starting at 7:00am, working straight until 1:30-ish when it's feasible to grab a quick lunch, then working two to six, followed by 9:30 to midnight or longer. The argument I tell myself is that there's a lot to do, and I intend to accomplish it all. Noble goals, albeit foolish when taken to extremes like I've been doing this past week.

This evening I was expecting to put in another couple of hours after the boy fell asleep, but opted against it. The same five thoughts seem to be stuck on repeat, circling around and around and going nowhere. UI considerations for rapid text entry in a goals-based system for HR. An email chain with Randolph. The Vernor Vinge book I'm currently reading. The heat my phone generates when playing Galaxy on Fire 2. This blog post. UI considerations. An email chain. The story from a book. Heat from a phone. Blogging. UI. Email. Story. Heat. Blog.

On an on. Without end.

A clear sign that it's time to call it a day and put the tools away. The work I didn't finish today will still be waiting for me on Monday, and the arbitrary deadlines that people place on various goals can continue to generate needless stress and anxiety then. For the next 60 hours, though, it's time to get some proper sleep, let the subconscious work on the UI problems for a while, and enjoy the weekend. The weather is expected to be gorgeous, which means there's a good chance the family and I will all head out to a park to see some colourful leaves, take countless photos, and enjoy the outdoors ... maybe even on a real merry-go-round.

Accountable Intelligence

A recent editorial on The Guardian outlined some reasons why people may want to hold organisations accountable for any consequences that come about as a result of using algorithms to make decisions. Using Amazon's recently scrapped resume parsing system as a focal point for why "all algorithms are inherently bad", the argument was made that the biases and unconscious tendencies of the people who make the sophisticated tools that so many companies rely on seep into the code and propagate the discriminatory practices that have affected huge swaths of the human race for thousands of years. While I can certainly get behind the idea that people should be held responsible for the things they create to a point, embarking on crusades to blame software for the blind obedience of the people who use it seems like an ineffective use of time which would ultimately result in yet more unintended consequences.

DJI Spark Drone Alpine White

Imagine, if you will, a person creates a piece of software that can be put on a quadrocopter drone to autonomously ferry small packages of medical supplies and food rations up a mountain to stranded people in need of help. The package is intended to provide the basics for first aid, plus enough calories to provide energy for the several hours people may need to wait before a rescue team can arrive. Because the drone would be flying out of range of a radio control, the system is made "intelligent" enough to use the camera to avoid colliding with objects, make course corrections due to atmospheric conditions, and land smoothly near the stranded climbers in a safe place where they can get to the supplies.

The software works great and helps a lot of people in its first year of operation. Other rescue teams around the world are interested in doing something similar, so the person who created the system makes it freely available online because they want to help as many people as possible and, given that many decent, short-range programmable drones can be bought for less than $2000, sees this as a genuine act of selflessness and compassion. What a wonderful gift for the world!

But then someone decides to use that software to deliver a package of C4 explosives to a very specific, very crowded location. A DJI Inspire 1 Pro Quadcopter can travel as far as 2km when the weather's nice, which is certainly far enough for a terrorist to be when instigating fear in a population. At 2km, there's a good chance the drone will not be traced back to them easily. At 2km, there's a good amount of time to drive in the opposite direction to put even more distance between them and the incident they've planned with what is essentially a low-price guided missile. After the attack and the resulting media frenzy, a number of copycat incidents take place around the globe using the very same software that was designed to help people.

In this hypothetical situation, would the software developer who freely shared their system with the world be considered even remotely responsible for any death or destruction that came about as a result of terrorists using the tool to successfully deliver a payload of explosives? If the answer is yes, then so is the drone maker, and the C4 manufacturer, and maybe even the maker of the computer that was used to load the software onto the drone, including the operating system maker for that computer. One could also logically assume that car manufacturers are responsible for any deaths caused by idiots driving into a crowd of people.

If the answer is no, then how can we hold other machine learning or artificial intelligence developers accountable for unintended consequences that came about when the objective of the software was ultimately good? A company like Amazon likely receives thousands of job applications a day. How can any team of human resources professionals work through such a deluge of skilled people to fill positions without some means to separate the exceptional from the good?

Organisations and developers do need to be considerate of how they develop their tools and be willing to make rapid changes when anti-patterns and biases are discovered. Amazon did this when they shut down the ineffective resume-parsing system. This was the result of the people using the system seeing the problem, identifying that it was wrong, and making a decision. The unnamed author of the editorial stated:

It is therefore essential that moral and legal responsibility be attached to the human parts of the system. [...] We hold Facebook or Google responsible for the results of their algorithms. The example of Amazon shows that this principle must be more widely extended. AI is among us already, and the companies, the people, and the governments who use it must be accountable for the consequences.

What exactly did Amazon do wrong here besides not catch the problem sooner? Heck, while it's outside the scope of this post, when has anyone but a bunch of endlessly angry people on Twitter held Facebook or Google responsible for their algorithms? The recent "hacks" and abuses of their platforms were not the result of incomplete AI or ML mechanisms, and both of the companies continue to use their digital systems in ways that people will find immoral and/or illegal, depending on a person's cherry-picked interpretation of a law.

As people and organisations continue to amass large amounts of data, machine learning tools will be used in order to make sense it. Information will be gleaned — sometimes with hidden biases — and decisions will be made based on poor or incomplete knowledge of the obscured faults. Most people do try to do good things most of the time1. This means that, from a moral perspective, people will make the necessary changes to correct the problem as best as possible. It won't be perfect because people are not perfect.

Talk of legal accountability has no place here unless people were actively harmed as a result of the software, like the people in war-torn nations where military drones identify targets via ML solutions and a human pushes a button to launch a missile. The worst that could have happened from Amazon's ineffective HR system is that a few really talented people got away and are now working somewhere else, providing value to a different company that appreciates the skills and knowledge their recent hire brings to the table.

Long rant aside, threats of moral shaming and legal action will do nothing to change the fundamental problems that we find in software, which is that our digital tools are very much a reflection of our flawed, organic selves. Bias is everywhere and comes in many shades. It's the role of an informed population to raise awareness when problems are found, perhaps even offer a solution (heaven forbid!), and follow through to ensure issues are resolved. This isn't just for software, but behaviour, perceptions, and personal actions, too.


  1. Perhaps I am naive, but I do believe this to be the case. Most of us are not inherently evil.

When a Demo Is More Than a Demo

Turns out that my direct manager will be in the country next week, and we'll be having some conversations. One of those conversations will involve a demo of a site that I pitched to resolve some functionality that HR is looking for to keep track of some stuff. While I'm more than happy to present things to people who show an active interest in solving problems, I'm a bit worried about this demo because I've spent less than 5 hours on a mockup of how I envision things working. Generally the higher up the corporate latter one goes, the more functionality one needs to see in order to buy into an idea, and there's almost no functionality in the mockup aside from authentication.

So now comes the "fun" part: deciding how much of the demo will appear to be fully functional despite the lack of feedback from the various stakeholders who will undoubtedly want to have their voices heard.

Over the last 11 years, I've made a bit of a name for myself by presenting software that aims to solve "impossible" problems with interfaces that are as clean and efficient as I can possibly make them. As I am multilingual, the software is also multilingual from the initial conception all the way through until it's out the door and the first bug reports start coming in. Lag and stutter is unacceptable, so these things are generally minimised as much as possible, even if it means faking it until I can actually resolve the problem through some other means. Generally this works. However, the person I directly report to has a very keen eye for detail and can spot incompleteness from a mile away. Walking into a meeting with him to present an unfinished software tool would be a waste of his time and have the added consequence of making me look unprepared. So how much of this partially mocked up site should be brought to life in order to make it believable while also showing the potential with as little distraction as possible?

When there's a vague or unknown amount of work to be done, I generally take out my pad of A5-sized paper, a trusty pen, and start making a list. In this case, the objective is to write down all of the basic functionality that would be expected as part of an MVE, or "Minimum Viable Experience", which is typically considered the first version of the software for release. All in all, the list has 39 core functions, and an additional 17 that I considered as potentially useful, but unconfirmed.

With the known knowns down on paper the next step is to prioritise the features into three categories: must see, would like to see, don't need to see. Functions such as a personal profile page and customisable avatar are clear examples of "don't need to see", while other elements, such as the ability for a manager to see a list of all the information in a simple, sortable table, would be "must see". Going through this process I found 21 things that must be completed, 9 things that would be nice, and ten that could be postponed until the project was officially accepted. From the pile of "potentially useful" features, I picked out the three best and appended them to the bottom of the "would like to see" pile.

Now that the basic accounting is out of the way, it's possible to determine how much time will be needed to get the thing ready to show off and what needs to be done to make it happen. The demo will take place on Tuesday afternoon, and there will not be any time to work on the code after Monday night. That leaves just three business days to get it done in addition to all the regular things I do for the day job.

Impossible? Hardly. The timing will be quite tight, though. That said, this is what I do. In the face of my own stupidity, I double-down and get things done in order to present something to people. As this is supposed to be a demo, half the functionality will likely need to be modified for new requirements, or the UI — which is using non-standard colours — will need some tweaking to bring it back in line with corporate expectations1.

For quite a lot of this year, I've not really felt very useful at the day job as a result of the endless meetings, endless reports, endless documents, and rage-inducing corporate politics. When I get to hammer out a little bit of code in order to make the impossible into the ordinary, though? This is when I can finally feel accomplishment.


  1. This would be a shame, though, as I opted to go with a nice orange colour scheme just to shake things up visually. There's only so much navy blue one can look at in a day ...

Trust

Earlier today an update went out for 10Cv5 that will allow a server to monitor its public IP addresses and, if different from before, update the CloudFlare DNS records using that previous IP for the new one automatically. The mechanism is smart enough to scan through all domains associated with an account, identify the A and AAAA records that match a previously used IP address, and update one or both where required. Given that I use CloudFlare quite a bit, this will save me some time when the ISP resets my “static” IP every four to six weeks. At the moment the feature is enabled just for my CloudFlare site, but I wonder if this feature is something that others would want to consider using. In order for this to be an automatic process, my 10Cv5 server would need to know another person’s CloudFlare API key, as well as the email address they have registered with the service. With those two pieces of data, it’s possible to do some interesting things like automatically create a subdomain record with an HTTPS certificate when a person requests a new site on 10C. It’s also very easy to do something malicious like delete or redirect traffic to a server of my choosing, which is scarier for people who have a personalized email address given that MX records could be modified. This sort of feature would require a great deal of trust in order to be used.

Trust is something that I demand from the services I use, and hopefully people demand it from 10C as well. The service is supposed to reflect the better ideals of the Internet and that means it needs to be something worthy of confidence and trust. Being an information silo to preserve and present people’s words on demand is relatively benign, but once people share credentials to other services, I get nervous. Is the API secure enough? Is the encryption too easy to crack? Will this be the bridge too far that pushes people away? All of these questions run through my head a hundred times a day whenever I make features like this possible.

Back when 10C was still known as Noteworthy, the system would let people connect their Evernote accounts as a way to publish blog posts. Anything that was in a notebook (or notebooks) that you chose would appear on the website. This meant holding onto authentication tokens that could be used to secretly scrape every note from a person’s Evernote account. Given that I used to use Evernote as a repository for scanned bills, student notes, passport information, medical histories, and a dozen other things, other people might also put personal or private information onto that service. Losing the authentication tokens would put a lot of people at risk. As a result, I monitored the logs like a hawk to make sure that nothing suspicious was happening that could affect people’s privacy or ruin any trust that was formed. The same is done now to protect the authentication tokens people have provided for Twitter and other third party services.

CloudFlare tokens strike me as being more sensitive than any OAuth tokens for another social network, though. A compromised CloudFlare account can result in lost revenues, leaked data, or other lawsuit-ready situations if handled carelessly.

Would people trust the service enough to share their API access keys? Possibly. Should they? My goal is to make sure that people understand what they’re signing up for when sharing sensitive data so that they can make an informed decision. Trust must be earned.

Ultimately this is an exciting feature that should make it possible for people using the future, self-hosted version of 10C to more easily maintain a presence online when their server is in their house. If this is also part of the shared service that I provide, then it’s imperative that more-than-adequate security measures are in place to protect people.

Blocks of Time

For the better part of a decade, my life has been broken into distinct blocks of time. While working as a teacher these would generally be 45 minutes in length, which was the length of a lesson plus the break, and when working as a developer the blocks average about 90 minutes, which is the length of time it seems to take for the body to process a cup of water or coffee and demand more. The benefits of having a day broken into distinct sections have been quite numberous for me, as I generally feel more productive when I can stop several times each day to see what’s been accomplished. Since making the change to working from home, though, this feeling of accomplishment is much harder to find. To make matters worse, I always feel rushed, as though I’m consistently late for something, even when I may be days or weeks ahead of schedule. After a good deal of thought, the problem turns out to be an excess of communication at all the wrong times.

Typically when working, I’m asked to be readily available via email, phone, Skype, and Slack. While the latter one is usually forgotten, the other three are quite busy. People ask questions , seek information, or want to complain about something related to software. As someone who typically has anxiety when unread notifications hit mid-single digits, this means stopping whatever I might be doing at a given time, answering people, then going back to whatever cognitive process I was working on before the communication. This context switching comes at a cost, which usually means no more set breaks of 90 minutes. By the time an hour and a half has passed since the last glass refill, I’ve done maybe 30 minutes of “real work”. Instead of getting up to walk around and stretch some muscles, I keep plugging away on whatever task I happen to be working on, forever worried that I’m late in delivering something to someone.

It’s just not healthy.

Too Much Communication

Something needs to change, and for this first trial, I’m going to disconnect from the communications mediums except for three times a day:

  • When I start my day
  • When I return from lunch
  • Before I stop for the day

By doing this there should be fewer distractions and I’ll be able to go back to individual time segments of 90 minutes. The other times of day will be blocked unless there’s an important meeting planned. With any luck, I’ll start feeling and being productive again in no time.

Repairability

Back in 2010 I wrote a post where I ask for the impossible: a computer that can be used for 15 years. When I moved to Japan I was using an HP Pavilion zt3000 notebook that managed to keep up with me for just over five years before the LCD screen inverter started to act up. I couldn't get a replacement part for under $150, so had to give the machine up. From December 2008 to September 24, 2012, I used an Acer AspireOne netbook that would often overheat to the point where I had to have ice packs under the unit to use it more than 5 minutes. In February of 2016, after using a MacBook Air for three and a half years, I upgraded to a MacBook Pro because I wanted a better screen and a lot more RAM. Now, not yet three years later, I find myself dealing with a series of problems that are manifesting in my current machine that are not easily fixed for under $7501 and with a whole lot of patience2. Is this something I can afford to fix for another five years? Another 12?

A 2015-era MacBook Pro from the Side

There's no denying that the MacBook Pro is an attractive device. The machine has performed admirably over the last couple of years despite the unrealistic expectations I regularly throw at it and, aside from a few nuisances, it has encouraged me to never again return to a standard-definition screen. Pixellation is a terrible thing to deal with and I've yet to have eye strain when working with a higher DPI screen. What I would really like to see — which is incredibly unlikely, given Apple's product trajectory — is a decent notebook that is a lot easier to repair and upgrade as the unit ages. Despite Apple's claims to care a great deal about the environment and sustainability, their products often have terribly short operational lifespans.

Alternatives?

Fifteen years for a notebook is a tall order, and it would be hard to imagine doing my current job with the HP notebook I bought in 2003 today given how often I need to spin up a virtual machine or work through a large set of data. To get the maximum amount of usage out of any computer, it would make logical sense to not use a notebook and return to using desktop models. Doing this would make it possible to easily change just about any component as they fail, be it a video card, a power supply, or even a motherboard. Changing these on notebook devices is not always possible given the subtle uniqueness of most decent machines. Unfortunately this would prevent me from using the machine outside the house, which I would occasionally need to do when working from the office or in Tokyo.

Logically, Lenovo would likely be the best choice when it comes to using something a long, long time. There is a healthy market for repair parts online and it's sometimes quite easy to find notebooks from different years that use the very same external components, making unofficial upgrades quite possible. Would a Thinkpad (running Ubuntu) make it feasible to use a machine for as long as a decade? The T4x0 and T5x0 lines are quite versatile and there is a very healthy online market for Thinkpad components. The X1 Carbon and X1 Carbon Extreme models are also very attractive and come with higher-resolution displays, though lack the hardware replacement flexibility afforded by the less svelte T-lines.

Or maybe — maybe — I should just bite the bullet and manage all of the repairs for the current notebook to extend its functional lifespan to five years or more. This MacBook Pro does have an unfair number of limitations imposed on it by the manufacturer, but I knew all of this when I bought the device from Sofmap.


  1. $450 for a screen from Hong Kong, $200 for a new SSD stick, $100 for a touchpad
  2. I've not had much luck opening Apple devices ... ever.

  1. 1
  2. 2
  3. ...
  4. 267