Escaping UI Idioms

Personally I find that whenever my engineer brain switches on, my designer brain switches off. I have to step away from coding for a while in order to objectively make the best decisions about what to implement and how. When I let my engineer brain do the designing, I end up falling into age-old preconceptions about how things should be. This is especially true when it comes to UI design.

But is it the best idea to blindly follow UI conventions, either new or old? On the one hand, a familiar UI layout and universal UI idioms will make it easier for users to jump straight into your program. However, if those idioms aren’t well suited to your application, the user can quickly find themselves confused, frustrated, and lost. If the UI was unfamiliar but uniquely designed around your application, the users will be less confused because they have no expectations which can be unwittingly subverted.

Some bad features:

  • Confirmation emails which require you to click a link before you can do anything with your account. Confirmation emails that require a link to be clicked in 24 hours but which do not impede progress are much better.
  • The “re-enter your email” fields on signup forms. Every modern browser automatically enters your password.
  • Separating the “Find” and “Replace” functions, putting them in the “View” and “Edit” menus respectively.
  • Speaking of “View” and “Edit” menus, the standard “File”, “View”, “Edit” menu tabs often don’t suit applications. Choose menu item labels that suit your application.

An example of a good feature is the use of universal symbols for universal functions. Using a crazy new “save” icon is not a good subversion of conventional UI idioms. Another is exit confirmation; in a lot of cases, confirming whether you want to save before exiting is a great feature.

Here are two features which are not standard for applications with text-editing capability but which should be (I’ve only seen it in a handful of programs, of which Notepad++ is most prominent):

  • A “Rename” option under the File menu, which saves the file with a new name and removes the file with the old name. This saves the tiresome task of doing “Save As” and then deleting the file in the save window, or (God forbid) having to navigate to the file in your OS’s file browser and renaming the file there.
  • Special character (\t, \n) and Regex support in “Find and Replace” modes.

VR Isn’t Ready

Recently I’ve heard a lot of hubabaloo about VR, especially with regards to games. This wave of hype has been going on for while, but it has personally intensified for me because one of my professors this semester is running a VR startup. I’m also working on a VR-compatible game, so VR talk has become more relevant to me.

Array of current VR headsets

Array of current VR headsets

First off, I believe VR is still 10 years away from its prime-time. The tech is just not advanced to a viable level right now, and some fundamental issues of user experience have yet to be solved.

For example, my professor gave an example of why VR is such an immersive mode of interaction: the first time people put on the headset and jump into a virtual world, they reach out and try to touch objects. He trumpeted this as being evidence of a kinetic experience (i.e. it pushed them to “feel” things beyond what they immediately see). While is this kind of true, I see it far more as evidence of a fundamental shortcoming. The moment a user tries to interact with the world and fails, they are jerked out of the fantasy and immersion is broken. This is true in all games; if a user believes they can interact with the world in a certain way but the world doesn’t respond correctly, the user is made painfully and immediately aware that they are in a game, a simulation.

Control VR isn't enough.

Control VR isn’t enough.

This brings me to the first huge issue: the input problem. VR output is relatively advanced, what with Oculus and Gear VR and Morpheus. But we’ve seen little to no development effort targeted at ways for the user to interact with the world. Sure we have Control VR and such projects, but I think these haven’t caught on because they are so complicated to setup. Oculus made huge strides by turning the HMD into a relatively streamlined plug-and-play experience with a minimal mess of cables. We have yet to see how Oculus’s custom controllers affect the space, but I have a feeling they aren’t doing enough to bridge the haptic gap. We won’t see VR takeoff until users are no longer frustrated by the effort to give input to the game by these unintuitive means. As long as users are constantly reminded they are in a simulation, VR is no better than a big TV and a comfy couch.

Speaking of big TVs: the output tech isn’t good enough. The 1080p of the DK2 is nowhere near high enough to be immersive. Trust me: I’ve gotten to try out a DK2 extensively in the past few months at zero personal cost. My opinion is informed and unbiased. Trying to pick out details in the world is like peering through a blurry screen door. As long as I’m tempted to pop off the headset and peek at the monitor to figure out what I’m looking at, VR isn’t going to take off. Even the 2160×1200 of the consumer Oculus won’t be enough. When we get 3K or 4K resolutions in our HMDs, VR will be a viable alternative to monitor gaming. Of course, this tech is likely 5-10 years away for our average consumer.

These never caught on.

These never caught on.

This all isn’t to say that current VR efforts are for naught. These early adopter experiments are definitely useful for figuring out design paradigms and refining the tech, However, it would be foolish to operate under the assumption that VR is poised to take the gaming world by storm. VR is not the new mobile. VR is the new Kinect. And like the Wii and Kinect, VR is not a catch-all interaction mode; most gaming will always favor a static, laid-back experience. You can’t force people to give up lazy couch-potato gaming.

Of course, outside of gaming it may not be a niche interaction mode. In applications where immersion is not the goal and users expect to have to train in the operation of unnatural, intuitive controls, VR may very well thrive. Medicine, industrial operation, design, and engineering are obvious applications. It might even be useful for education purposes. But temper your expectations for gaming.

Language Gamification

Gamification may be bullshit, but does that mean it might be just the tool to fight your own, personal brand of bullshit?

Screenshot of Duolingo

Learning foreign languages is hard. Really hard. Part of this has to do with complex neurological reasons, which can only be explained using words like neuroplasticity and monolinguals. Yes, some of the difficulty is hard-wired. But additionally, a part of you just doesn’t like learning foreign languages. It’s complicated and easy to forget, requires a lot of memorization, and you can still sound like an idiot after years of practice. Sometimes the linguistic variations are impossible to pronounce or hear, or the grammatical structures are completely foreign to your mental processes. So you make up bullshit: reasons to skip or skimp on practice, or give up altogether. Learning a foreign language is a constant battle against your lazier self.

Duolingo logo

But Duolingo changes the game, so to speak. It gamifies the process of learning a foreign language, adding daily goals, streaks of meeting your daily goal, unlocking mechanics, currency and purchasing, and total progress towards fluency. Now, it’s not a particularly good way of learning a language. In fact, it’s terrible at teaching. But really, teaching isn’t the point of Duolingo. It’s just a way of defeating your bullshit by replacing it with a more benign type of bullshit.

Duolingo assigns tangible, meaningless progression to the real, intangible progress of learning a language. Without Duolingo as a external, concrete arbiter that says “Yes you are getting better”, learning a language can feel hopeless because no matter how much you master it, there are always more words to learn, faster sentences to parse, and structures you don’t understand. Now, the “percent fluency” that Duolingo feeds you doesn’t necessarily correspond to any real gains, but it affirms that the hard mental work you put in today actually paid off in some continuing educational journey. And that affirmation is what makes you come back the next day to learn more.

Going Nowhere on the Information Superhighway

More than 50% of people die within 30 miles of where they were born. Even though America has a well-maintained highway system that spans the continent, most people don’t randomly pack up from their home town and go on a road trip to the opposite side of the country. And so it is with the virtual world. Before the Internet, information was highly segregated geographically. The farther you were from a source of information, the longer it took to reach you, and the more you had to go out of your way to consume it. This was the result of both the technology and the media networks that existed.

The Internet was supposed to revolutionize the way information moved. The so-called information super-highway would advance digital transit in the same way the Interstate Highway System did in the 1950’s. But just like the real highway system, the Internet hasn’t caused a mass exodus of ordinary bitizens. In this analogy, the reason is painfully obvious. It takes a huge amount of effort to leave your Internet communities and travel to another place where the dialect or even language is different. And to what gain?

These barriers to information cross-pollination result in an Internet that experiences de facto segregation along cultural boundaries. This division is no less real than the geographic segregation experienced by human populations in the real world. A TED talk by Ethan Zuckerman explores the vast sections of Twitter you may not even be aware existed; huge parts of Twitter are occupied by Brazilians and by African Americans, but if you are a caucasian American, you’ve probably never interacted with that side of Twitter. Even in the information age, we still consume the media closest to us. Yet this is even more dangerous, because the ease of information transfer lulls us into thinking that we are getting a cosmopolitan viewpoint, when in fact we are stuck in the middle of an echo chamber.

This is why it is so hard for people to branch out and become informed about subjects they don’t believe they are interested in. Be it international politics, scientific advances, or social justice debates, people often sit back and consume their news from whatever source is most familiar and convenient. The result is that I am woefully uninformed about the geopolitical situation in Africa, and the general public is woefully uninformed about anything related to space exploration. Then again, you don’t see me going out and reading up on African conflicts, so I don’t blame anyone for having a spotty knowledge base.

Introduction to Programming

Taking an introductory programming course this semester has been an interesting experience. Since I grasp the course material well, I’ve spent some time helping others with their work. As anyone who has taught math can attest, teaching even basic concepts requires you to understand the material far better than the student must. When it comes to programming, helping people is even more difficult because you can’t just tell them how to do it. You need to let them to figure it out on their own, otherwise they won’t have learned anything.

But leading someone along without explicitly telling them anything is really, REALLY difficult. Our professor is a master at this, and I respect him deeply because of it. A student will ask a question, and the professor will reply with an oblique statement that doesn’t seem to address the student’s question at all. Yet soon enough the student says “Oh! I get it!” and goes on their merry way. I try as hard as possible to emulate this method when I help those who are struggling, but it is nigh impossible to strike the correct balance. Help them too much, and they don’t learn. Help them too little, and they despair or begin to resent programming. And as much as I don’t like seeing it happen, many of the people in the class have come to resent programming.

This is as sad as a student resenting literature because of a bad English class experience, or resenting math because of a bad math teacher. Yet I don’t fully understand how to prevent it. If there was a good, standardized methodology for teaching difficult concepts without causing students to resent the field, I feel a lot of the problems in society today could be solved. Maybe that is just wishful thinking, though.

The second interesting observation from taking this class has come from observing a peer. The first language she learned was Python, and learning C++ this semester has caused some distress. There were many lamentations along the lines of “why is the computer so dumb?!” Of course, I found this hilarious because it mirrors a situation in the novel A Fire Upon the Deep. As the protagonists head towards the bottom of the Beyond, much of their advanced computer technology stops working, and they are forced to adopt more primitive methods. Needless to say, the characters who grew up with the advanced technology are indignant that they are forced to use such primitive technologies as a keyboard. Meanwhile, the character who grew up using primitive technology merely smiles.

In my mind, this helps clear up the argument of whether new students to the art of programming should be started on a high-level language, or a low-level language. Until such time as low-level programming is never needed except in rare circumstances, students should be started at a medium-to-low level. For example, it is easier to step up to Python from Java than it is to step down. I was originally of the mind that new students should start at a high-level as to learn common computing concepts without getting bogged down in obtuse technicalities and syntax, but getting a first-hand view of the results of such an approach has changed my mind.

Truly Sustainable Energy

Nuclear.

The US public is split nearly 50/50 between those who favor nuclear power and those who don’t. Because of this, nuclear is often a dirty word in the political arena. Nobody wants to lose half their constituency over a marginal issue like nuclear power. Before 1979, the political climate was ripe for the rapid expansion of nuclear power. However, the Three Mile Island accident resulted in the cancellation of most new nuclear plant projects. 30 years later, the public was just starting to warm up to the idea of nuclear as part of the so-called “nuclear renaissance.” Then, in a case of incredibly poor timing, the Fukushima disaster struck.

There is a lot of weird cultural weight attached to the word, not the least due to an entire generation being psychologically scarred by the perceived overhanging threat of nuclear war. Unfortunately, this snubs one of humanity’s greatest hopes for survival.

Nuclear might not be cost-effective as geothermal, wind, or hydro power. It also isn’t as clean as solar. However, I would argue that neither cost-effectiveness nor cleanliness displaces nuclear from being the best “clean” energy source available. And not only would widespread adoption of nuclear energy entirely solve the climate crisis, it would save humanity from eventual extinction by hastening our spread through the universe.

As I see it, the only other power source that is as scalable as nuclear is solar. Solar, however, loses out on two counts. First, it is really expensive compared to, like, any other power source. Second, the energy density of solar is really, really low. We would need to cover 496,805 square kilometers of area with solar panels to satisfy the world’s projected energy consumption in 2030. While the price of solar power has really come down, that’s also in part due to subsidized research. On the other hand, nuclear has a much higher power density, and despite years of marginalization, is still competitive with current cutting-edge solar power. It is also extremely reliable, with fluctuations in power output virtually non-existent. This is something other forms of renewable energy lack.

If we started investing in nuclear research, we could dramatically lower the costs of nuclear power and satisfy a huge portion of the world’s energy demands. Cheap electricity would hasten the wide-spread use of electric cars (okay, this would probably happen anyways). With combustion cars and both natural gas and coal plants replaced, the influx of greenhouse gases into the environment would be greatly reduced. Cheap, portable reactors would allow developing countries to get on their feet in terms of manufacturing capability. Cheap energy would allow us to implement energy-intensive climate engineering schemes. Advanced nuclear technology would lead to the development of closed-core nuclear rockets, allowing safe, clean, and cheap access to space. Portable reactors would jump-start unmanned planetary exploration, interstellar exploration, human colonization, and asteroid mining.

Of course, none of this will happen. Nuclear is still a dirty word, burdened by the historical and cultural baggage it must drag around. The first step to a better, cleaner future is to get the public to accept nuclear power. As long as we are afraid to approach the energy problem space head-on, we are holding ourselves back from achieving our full potential.

The Community-Driven Game

Imagine you are driving a car, and you have three of your misanthropic friends in the back. Suddenly they lean forwards and ask if they can help steer. You think this might be a bad idea, but before you can react they clamber forwards and put their hands on the wheel. Most people would at this point judge the situation as “not a good idea”.

Replace your annoying friends with the Internet (uh oh), and replace the car with an indie game. Congratulations, you have just created the perfect environment for a terrible game to develop. Actually, often times the situation only gets as far as the Internet playing backseat driver, yelling out confusing and contradicting directions that are both useless and hard to ignore. But for a game like KSP, the community has leapt into the passenger seat and nearly wrested controls from the developer.

The developers of KSP are driving towards a cliff of not-fun. They could probably make a good game that stood on it’s own and appealed to a certain audience if left to their own devices. However, because the early prototypes of the game drew such a diverse crowd, the fans want the game to head in a couple of conflicting directions. Few people share a common vision for the game, and a lot of people like to play armchair game designer.

I honestly think some of the more prolific modders in the community have been taking the game in a more suitable direction. Meanwhile, the community quibbles over what should be included in the stock game and what shouldn’t. I want to take one of my biggest peeves as a case study:

One of the most touted arguments against certain large features is that the feature merely adds another level of complexity without adding any “true gameplay”. For example,

  • Life Support would just mean another thing to worry about, and it would reduce the amount of shenanigans you can do (stranding Kerbals on planets for years, etc).
  • Living Room/Sanity mechanics? Nope, it would just be a hassle. You have to bring up bigger habitats any time you want to send a mission to somewhere far away. It doesn’t add any gameplay during the mission.
  • Reentry heating? That just restricts craft designs, making people conform to certain designs and plan around reentry.
  • Different fuel types? Too complex, requires a lot of learning and planning before hand, and only restricts your options during a mission (again, restricting shenanigans).
  • Realistic reaction wheels that don’t provide overwhelming amounts of torque and require angular momentum to be bled off with a reaction system periodically? Could prove to be annoying during a critical part of a mission if you hit max angular momentum. Requires you to put in a reaction system even if you only want to rotate your craft (not translate).

Do you see the problem with these arguments? You are arguing that something shouldn’t be added to the game because it adds gameplay that isn’t in the game right now. See how circular and pointless the argument is? The worst part is that it could be extended to basically any part of the game that exists right now.

  • Electric charge? What if you run out of charge during a critical maneuver, or go behind the dark side of the planet. It’s A GAME, we shouldn’t have to worry about whether or not the craft is receiving light. Just assume they have large batteries.
  • Different engine types? That would add too much planning, and just limits the performance of the craft. What if I need to take off, but my thrust is too low to get off the ground? That wouldn’t be very fun.
  • Taking different scientific readings? That sounds like it would be pretty tedious. You shouldn’t add something that is just going to be grinding. The game doesn’t have to be realistic, just fun.
  • A tech tree? Why restrict players from using certain parts? What if they want to use those parts? You shouldn’t restrict parts of the game just so the player has to play to unlock them. That doesn’t accomplish anything.

Hell, why even have a game in the first place? It sounds like a lot of thinking and planning and micromanagement and grinding.

Of course, this could be considered reductio ad absurdum, but the problem is that it actually isn’t. The arguments against Life Support or different fuel types or reentry heating just don’t hold any water. Yet people hate against them, so the developers are less likely to put them in the game. Since I started with a metaphor, I’ll end with one:

The developers of KSP are driving towards a cliff because the community told them to. Fortunately, they realized it and are now putting on the brakes. In response, the community is shouting “why are you putting on the brakes? That only slows the car down!” To which I reply, “yes, yes it does.”

Fetishizing Apollo

America has an unhealthy obsession with historic US space missions. This obsession is even more pronounced in the space-enthusiast community; it is no surprise that there are multitudes of mods for KSP that allow users to build and fly their very own Saturn V rocket. Really, America’s fixation on the 1960s and -70s era NASA programs has achieved a pornographic level (I use this word not in the sexual meaning, but in the same sense as in the pornography of violence).

It is an understandable attraction, I suppose — many of the iconic space photographs were taken by Apollo astronauts.

earthrise astronaut fullearth

Landing people on the Moon might be considered one of mankind’s greatest achievements, and was certainly the height of glory for the US space program.

But the level at which America has turned the moon missions into a fetish is astounding. Countless books, movies, rehashed TV series, photo remasters, articles, celebrations… it’s depressing.

We should appreciate Apollo for what it was: an antenna. Celebrating Apollo is like including the antenna mast in the height measurement for a really tall building. Yes, the fact that we stuck a tall pole on top of a tall building is cool, but it’s not really the pole that you’re interested in, is it?

People like thinking about Apollo because they like the idea of humans expanding into space, and in their mind Apollo is the farthest we’ve ever gotten towards that goal. It’s an understandable misconception, considering the Moon is literally “the farthest humans have ever gone”. But Apollo was unsustainable (even if the Apollo Applications Program had gone forwards, it still would have been a step in the wrong direction!). We are now much closer to accomplishing the goal of long-term human expansion into space than we ever were.

SLS, more like SMH

Granted, it won’t be painted the same way in real life.

This is why the SLS is so disappointing, I think. Right now we have highly advanced computing and robotics technologies, excellent ground support infrastructure for space missions, incredibly advanced materials knowledge, and a huge array of novel manufacturing techniques being developed. As a civilization, we are much more ready to colonize space than we were a half-century ago. Yet the government has decided the best way to start human expansion into space is to build a cargo cult around Apollo. The US is building a rocket that looks like the Saturn V, as if some sort of high-tech idolatry will bring back the glory of Apollo. They are resurrecting an architecture that was never a good idea to begin with!

The space program paradigm is outdated. Despite my most optimistic hopes, let’s be real: the next big driver in space travel will be high-power corporations following the profits of a few innovative companies that pioneer the market. It won’t be enthusiastic supporters than become the first space colonists, but employees doing their stint in the outer solar system before returning to Earth.

Mass Paradigm

One of the most interesting things to think about with respect to the near-future of space travel is the removal of limited mass as a paradigm. That is to say, right now the predominate design constraint for spacecraft is mass, because rockets are very expensive, so each kilogram of payload must be put to best use. Unfortunately, this means that the design and construction costs for spacecraft are very high, as much effort is put towards shaving off grams by using exotic materials and efficient designs.

But soon the current launch vehicle renaissance will result in launch costs low enough to demolish the limited-mass paradigm. There is a tipping point where it is economical to cut design costs and take the hit on launch costs. There will also see a growing emphasis on tough and reliable systems that last a long time, rather than fragile, light, efficient systems. Combined with lower fuel costs from asteroid mining and improved refueling technologies, the predominant modus operandi will be repairing spacecraft rather than replacing spacecraft. Designing for reusability and, more importantly, refurbishment will be critical.

We’re already seeing a shift towards this paradigm with SpaceX. Their launch vehicles use redundant systems to make up for their cheaper designs — their avionics electronics, for example, are not rad-hardened but instead redundant in triplicate. The mass penalty is minimal, however they also make up for it by using modern electronics concepts. For instance, instead of running numerous copper wires up and down the length of their rockets, they run a single ethernet cable and use a lot of multiplexing.

This kind of change is just the beginning, however. There will be a time when it makes sense to loft a big bundle of steel rods into orbit and have workers weld them into a frame for a spaceship. This has a number of benefits: the frame doesn’t have to be fit into a fairing, it can be reconfigured on the fly, and it doesn’t have to endure the acceleration and acoustic stresses of launch. Additionally, lifting big bundles of steel makes best use of the volume in a launch vehicle fairing.

I think the only two questions about the future of space travel are: How much will it be dominated by robots? and Where will the money come from? But those are questions for another time.

Learning a Foreign Language

I have had the benefit of taking Japanese 1 this semester, and it is quite a humbling experience. Learning a language which has no romantic roots — a truly foreign language — lends a certain perspective that learning French or Latin does not.

However, it also seems to me that the teaching method is geared towards a very specific type of learning style. The class starts out by teaching a number of phrases which the students are to memorize, and meanwhile students also begin to learn one of the writing systems. It is not until a few weeks in that students finally learn some grammar (i.e. the thing that actually determines whether or not a communication system is a language), and even then it takes time to learn the exact mechanics behind the memorized phrases.

For instance, we learned how to ask how to say something in Japanese: (english word)wa nihongo de nanto iimasuka. Yet we are not told that nihongo means Japanese language (although it can be inferred), and we certainly aren’t told that ~go is a suffix, applied to the word nihon (Japan), which means the language of. In addition, we aren’t told that nan means what, ~wa is a topic particle (and we certainly aren’t told it’s spelled using は instead of わ, because hell, we don’t even know how to write at that point), or that to is a sort of quotation mark (if we are, it is only in passing and without context).

Insights can only be gleamed by comparing the response: (Japanese word)to iimasu. Now it becomes clear that ~ka is a question particle. So yes, nanto became (word)to, so ~to must be some sort of literal marker suffix. iimasu must be “say”, or thereabouts.

My point is that it is very hard for me to memorize phrases or words with no context. The teaching style is designed to help a certain type of learner. My learning style would benefit greatly from learning a variety of grammar and vocabulary separately, and letting my brain concoct the phrases from their base elements; when I speak, it flows logically, and my mind pronounces one morpheme at a time. Learning whole phrases with no context means I can’t break it down into morphemes, and so production of the sounds comes much harder.

Perhaps this will change after we get past the first few weeks, but I can’t help worrying that this sort of learn-specifics-then-learn-rules teaching style will continue.