Finding Nebo

In my journey from being “a writer hater to a writer lover”, finding the Nebo app was a defining moment. Of all the apps I tried, only Nebo could recognize my chicken scratch, retain my handwritten texts for review, and allow me an edit the original text before converting it to type.

Nebo beautifully melds the written form, digital tech, and typography. Its edit-gestures feel incredibly natural, the digital ink flows like your favorite pen, and the final product is compatible with the modern world. I’ve gained in all mediums and compromised in none.

It’s rare to find an app drives you to create opportunities to find excuses to use it. Especially when the app exists to enhance the mind, not rot it.

Feature Highlights

Chicken scratch interpreter

I’m amazed at how well the interpreter is, able to convert my god awful handwriting to text. It seems to combine A.I. OCR handwriting with grammar to assume a nearest approximation of what I’m trying to write. Whatever the methodology, the results far better than apple’s built-in note taking app.

Inline Editing in ink or between typed notes

In the event the interpreter fails, the editing features makes correcting easy and fun. For example, handwritten text is retained until you double tap it to convert to type.This allows you to review your writing before conversion. You can also preview the converted text in a banner scrolling horizontally above.

Wish List & Nits

Night/Dark Mode

Sometimes inspiration strikes right as I’m getting to bed. I reach for my iPad, open Nebo, and BAMB! An intensely white screen blinds me as my eyes try to adjust.

More Heading sizes

Simply put, H1 looks like H2, and I can’t bold text on Its own line without it becoming a heading. So, new H3?

Clearer New Line & Erase Interpreters

I like the natural feel of gestures. However, I find my self trying to gesture a new line over and over to no avail. I think the app can be smarter. Why not assume one new line is available, infinitely until converted. So, when I hit the end of a line I don’t need to gesture in the first place.

How To Think by Alan Jacobs

How to think by Alan Jacobs

Fair warning, this is not a book for those looking to sharpen their thinking skills just to win more arguments. On the contrary, this book helps one recognize that losing may be just as valuable. That thinking well is not a joyful or direct path. Or, that what we believe to be the attributes of an “open mind” is more likely to be just a different form of a “closed mind” validated by a different group. Thinking is all about learning to do the uncomfortable, and if one can understand how thinking works, one may become a better thinker over all. To posit those theories, and many others like it, Alan Jacobs deals with optimism, community, solidarity, truth, social affiliation, kindness and vice by asking how they blend or contradict one another.

I especially love the fact that the book is current, and cites examples from events familiar to global state of consciousness. It helps that the author is as unbiased as a person could be, while still able to make sharp and concise points, and because of that, no other book is as important for any affiliation or creeds to benefit. In our polarized, highly emotional world, it’s refreshing, and necessary. As current as he is, he is no stranger to the history of thinking. From Luther, to T.S. Elliot, to Kannanman his references aren’t always made to simply validate, but to argue against, assert, or deconstruct the art and science around thinking.

It’s easy to assume the social conscience of the world is more worse for ware now than ever before, and the new phenomena of the internet and social media is mostly to blame. Instead of leaning into that assumption, Alan offers some perspective look back to early writers, like a quite T.S. Elliot who said, “The vast accumulations of knowledge—or at least of information—deposited by the nineteenth century have been responsible for an equally vast ignorance. When there is so much to be known, when there are so many fields of knowledge in which the same words are used with different meanings, when everyone knows a little about a great many things, it becomes increasingly difficult for anyone to know whether he knows what he is talking about or not. And when we do not know, or when we do not know enough, we tend always to substitute emotions for thoughts.” That is surely something as appropriate today as it was 100 years ago.

There are quite a few gems sprinkled throughout the book that can get the wheels churning. Like how Alan challenges his readers to separate a single thought from all the context and emotion laid around it. For example, “A madman is not one has lost reason … a madman is one that has lost everything but reason.“ Indeed, the separation of fact, from emotion, or affiliation, let’s facts get tangled up into a single, lump of subjective “truth”. That affiliation and process of lumping makes it easier for us to turn every “neighbor” into what Alan Jacob’s called the “Repugnant Cultural Other” AKA  “RCO”. When more and more people are classified as an RCO based on a discrete piece of truth we decide to focus on, then we fail to allow ourselves to learn, or accept, anything else form them. As Alan puts it, “If that person over there is both ‘other’ and ‘repugnant’, I may never discover that that person and I like the same television program, or like the same books (even if not for the same reasons), or that we both know what it’s like to nurse someone through a long illness. All of which is to say, that I may forget that political, social and religious differences are not the whole of human experience.” That posit is very much a reality with the current collective human psyche. It does in fact feel as though more and more of us are at odds with our neighbors, and we are so with less and less information to guide it.

Of course separation via classifying others as an RCO goes well beyond politics and social media. As both an academic and a christian, Alan adds religion to the ring by noting, “When I hear academica talk about christians I think, ‘that’s not quite right. I don’t think you understand the people you think your disagreeing with’, and when I listen to christians talk about academics I have the precisely the same thought.”

Why do we decide to stick to a bandwagon, against all evidence to steer us away, or care to even search for a deeper truth? Alan quotes Robinson to underline this part of the human condition at play. “It is a great example of our collective eagerness to disparage without knowledge or information about the thing disparaged when the reward is the pleasure of sharing an attitude one knows is socially approved.” Alan continues, “Why would people ever think, when thinking deprives them of the pleasure of sharing an attitude one knows is socially approved? If you want to think, then you have to shrink that hypertrophic need for consensus.”

Where academia is concerned, Alan pulls a quote from Jeff Schmidt’s to assert that education is not necessarily an avenue e toward greater thinking either. In “Disciplined Minds” Schmidt says, “Academia and high-racking professions are good at maintaining “ideological discipline”… people who do well … tend to have “assignable curiosity”, which is to say, they are obediently interested in the things they are told to be interested in.”

Though, there are some academic environments that are created to nurture true thinking. Alan tells an anecdote from the Yale Political Union debate club. As he observed at Yale, you are scored not just by wins, but by the number of times you flip your beliefs mid-debate. love how that metric aligns with not the speaker ability to power their will on others, but in the power and flexibility of being a good, open minded, listener.

This is one of my favorite books I’ve read this year and a great supplement to the best selling books Thinking Fast and Slow and Blink. It is well worth the time so, after each chapter, sit back, and push embrace “How to Think” better.

I <3 Polymer 1.0

One of my more recent pet projects has been to create a web-based application using Polymer 1.0, a web framework Google released at their I/O conference this past Spring.

In short, I don’t think I can ever go back to developing on the web without it. Not only do I strongly suggest everyone give Polymer 1.0 a try, but I implore new developers to learn web development by implementing it, and current dev teams to incorporate it into their product lifecycle – at the very least during their rapid prototyping stages.

Why is that? Good question!

For one, it is the first time I’ve ever used a web framework where the resulting code base feels legitimate, complete, and inherently organized; not a mesh of scripts and views that the original developer will need to walk other devs through to ramp them up.

For new devs, the clean, class based, object-oriented structure will help mature their web development habits. Even as an engineer with over 15+ years of development experience, I felt like using the framework improved my habits.

For product teams, the scoped modularity of the elements allow their group to quickly re-work layouts and functionality – on an element-by-element basis. You can inherit core elements and layouts, and test them individually as you assemble the project. Designers can perfect a single element’s look and feel even before the structure of the application is built. It makes for an excellent segway between mockup and final product.

What makes Polymer so Different?

1: It uses web components, shadow dom, and pure HTML/CSS to render templates.

2: Each element you create is packaged individually and contains: a tag based HTML layer, a scoped CSS layer, a JS layer and an import framework.

The web  world is made up of hacks

The truth is most (if not all) HTML/JS frameworks are made up of what could be described as a series of “hacks” that attempt to create a consistent end-product across all web browsers (and versions of browsers) out there.  These hacks are necessary due to the slow pace to which web standards evolve, and exacerbated by the fragmentation created by the popularity, and propriety, of those browsers.

A Polymer Breakdown

Shims and Polyfills

Shims and polyfills are hacks that transparently help protect a developer from the need to implement legacy or cross browser functionality. As the name describes, they fill in all the compatibility holes browsers leave behind.

Shadow DOM

You actually interact with the Shadow DOM all the time on the web without realizing it. When you use an HTML tag such as <video>  you are requesting an element to be rendered by the browser. That element is composed of many subelements you can’t see in the inspector, ergot “shadow dom”. These subelements, such as the ones composing the video tag for example, manipulate and manage each frame of your video content. By creating your own custom elements utilizing the shadow DOM you are able to encapsulate entire chunks of your application’s functionality into a single tag.

WebComponents.org

Webcomponents.org has created a Polyfill library that allows users to take advantage of custom elements like the ones descrived described above. For example, a profile card you create can be shared and implemented as a single tag: <profile-card></profile-card>, by simply importing the “/profile-card.html” component.

Unlike other frameworks or libraries (such as Angular, Handlebars or JQuery) which work to manipulate and manage separately constructed HTML tags and CSS code, Polymer combines web components, polyfills, shims, CSS, HTML tags, two-way binding and the shadow dom into into a single package.

Scoped CSS

The Polymer/WebComponents structure solves certain small annoyances of web development, like having to keep track of all your CSS styles and hierarchies across your app. Every Polymer element scopes its CSS selectors to the element itself, thus, these selectors will not affect other CSS selectors outside of the custom element you create. In other words, you can use “.my-box” over and over to style different boxes based on their element context without affecting one another.

Some other useful features:

  • Drop-in documentation rendering system
  • Drop in testing frameworks

I could really go on and on about how smooth and organized it feels to develop something using Polymer, but it’s best for you to give it a shot yourself. Let me know what you think or if you have any questions.

Getting Started

Here is a look at a basic custom element setup:

fake-element_html_—_bitlang

If you are unsure of where to begin, start by using Polymer’s sample project (aka Polymer Starter Kit). It is a fully functioning app with a folder structure and gulp file built in. I original strayed away from the starter kit structure, but found myself ending up the same place as they did eventually. They did a good job with it, and it looks like they keep iterating on it.

Note: I should mention that there has been one annoyance I’ve had to deal with while learning Polymer: the lack of documentation and relating forums. The things that ARE available refer to Google’s originally releases Polymer 0.5 from a few years ago.  These posts are often unhelpful since so many nuances are different in 1.0. The good news is my new questions posted on Stackoverflow had responses within a matter of hours.