• You are here:
  • Home »
  • Archive: September, 2014

Archive Monthly Archives: September 2014

Navigating the Mobile Development Landscape – September 2014

Smartphone and tablet adoption has exploded in the past five years. This trend has encouraged me to start exploring mobile development technologies. I found that there are lots of ways to build apps for mobile devices. Several mobile development technologies leverage my current web development skills. I’m going to cover the four primary ways to build mobile applications.

1. Responsive Design

The easiest way for a web developer to get started in mobile development is to build mobile-friendly web applications. You can build web applications that work on most screens by applying CSS tactics like media queries and relative sizing. Front end frameworks like Bootstrap and Foundation make it easy to build responsive web apps. Responsive design should be the default for any new web application. You never know when someone is going to try to browse your app with their Internet enabled toaster.

Responsive design is great because it has the flattest learning curve for a web developer. The other huge advantage is that you don’t need to build a separate app for each platform.

Unfortunately, building a mobile web app means you have to design for the lowest common denominator. You don’t get access to the platform specific features like a native app. You also have to deal with network issues and browser quirks. Additionally, most people on mobile devices prefer to use apps instead of their web browser.

Links:
http://getbootstrap.com/
http://foundation.zurb.com/

2. Hybrid Application

Hybrid applications are another way to use existing web skills to build mobile apps. You develop hybrid apps using standard web technologies like CSS, JS, and HTML5. They have some access to platform specific features via JavaScript apis. Unlike pure web applications, hybrid apps can be sold in app stores alongside native apps.

At first glance, hybrid development sounds like a great deal. A single code base that can be used on all the major mobile platforms and still have access to platform specific functionality. The people who make hybrid application platforms claim that hybrid apps compose the majority of top apps in the app store.

Unfortunately, there are serious flaws to the hybrid development model. The first is that hybrid apps are much slower than their native counterparts. Performance is better than a few years ago, but hybrid apps are never going to be as performant as native apps. Additionally, hybrid apps don’t behave like other native apps. There are lots of transition effects and other native behaviors that are hard to replicate in a hybrid app.

Links:
http://www.telerik.com/appbuilder
http://cordova.apache.org/
http://phonegap.com/

3. Xamarin

The Xamarin platform offers the ability to build cross platform mobile applications using C#. With Xamarin, you build the user interface for each platform using C# wrappers for native libraries. You can then use shared libraries for all the core business functionality. Xamarin claims that you can have up to 95% code reuse on their platform.

Xamarin is great for .NET developers who want to build mobile apps because using tools they are familiar with. You can get near native performance and significant code reuse between platforms.

Xamarin is not perfect though. Xamarin is expensive and it comes with a steep learning curve. Not only do you need to learn the APIs for each mobile platform, you also need to learn Xamarin.

Links:
http://xamarin.com/
http://www.whitneyland.com/2013/05/why-i-dont-recommend-xamarin-for-mobile-development.html

4. Native Applications

The final, and most obvious option, is to build separate apps for each native platform you wish to support. While its inconvenient to have to build separate apps, going 100% native has some advantages. First, each app will have a native look and feel without having to resort to outside libraries. Second, pure native development offers the best performance. Finally, all the major native app platforms have great references and development resources. There will be better support and more open source code for native developers than any of the hybrid platforms.

Links:
http://developer.windows.com/en-us
https://developer.android.com/index.html
https://developer.apple.com/devcenter/ios/index.action

Conclusion

I’ve spent a lot of time reading about different mobile development options. Additionally, I watched demos of several different mobile development plaforms. (Specifically, native Android, Window, and iOS developement, several Xamarin demos, and Telerik’s App Builder.) Based on that experience, I’m going to focus on mobile web applications and native development. Mobile web applications leverage my current skills as a web developer. I also think the mobile web option will become more popular as mobile web browsers get better. Hybrid development looks promising, but based on what I’ve learned, it’s a “good enough” solution at best. Native development provides the best user experience and is a prerequisite to “combination” platforms like Xamarin. Overall, there’s no shortage of ways to build a mobile app.

4 Steps to Better Non-Fiction Reading

I love to read. I’ve read over 40 non-fiction books in the past year (and all five Game of Thrones books). One of the problems I ran into is that when you read a lot, it becomes hard to recall what’s in specific books. Reading is a waste of time if you can’t recall what you’ve read.

To solve the retention problem, I use a four step process to remember more of what I’ve read. I base this process on what I’ve learned from a speed reading class I took in college and reading about the psychology of learning. I find that following this process allows me to read more books and remember what’s in them.

This method works best on non-fiction books. Recent examples that I’ve read include Drive, So Good They Can’t Ignore You, and The Art of Learning. Most non-fiction books range from 200-500 pages and usually focus around a single primary thesis. Generally, there’s about 50-100 pages of valuable content mixed in with a few hundred pages of filler supporting material.

Core Principles

This process is based on two core principles from psychology.

1. Repetition

Repetition increases retention. Everyone who’s been through school knows this. Often, you get more out of reading something fast several times than one slow reading. Additionally, processing an idea in different ways will help you retain more knowledge. To increase retention, process knowledge in at least two different ways. It’s also important to actively process information. It forces you to recall the information and exposes gaps in your knowledge. For example, read something and talk about it with your friends or listen to a podcast and write a one page summary.

2. Schema

When we learn things, we organize the knowledge in our heads into an organizational pattern called a schema. I like to think of schema as a tree of knowledge. The basic facts are the trunk, the major functional areas are the branches, and details are the leaves. When learning a new topic, it’s important to get a high level view to create a structure on which you can attach details to. Here’s an example from: Psychology – Wikipedia. Notice how the whole field of psychology is structured into branches of increasingly grandular detail.

Process

This process focuses on building up a schema while exposing yourself to the ideas of the book several times. While it seems counter intuitive, this process doesn’t take any more time than reading books from cover to cover.

1. Gather Background Information

Begin by looking at the title, author, summaries, and reviews. I start with Amazon for reviews and Wikipedia for summaries. Google/Bing is your friend. The reason we do this is to get an idea of what the thesis of the book is and to find any useful criticisms of that thesis. This gives you a foundation to hang other facts off of and additionally gives you an idea of the other side of the argument.

For example, I recently began reading the book Grain Brain. Before I began reading, I wanted to get some background information on the book.

I started off with the Amazon page.

Decent summary and reviews:
Grain Brain (Amazon)

Most of the reviews of the book are positive, so lets find some different viewpoints. I did some Googling and found some decent resources:

A news article on the book:
http://www.theatlantic.com/health/archive/2013/12/this-is-your-brain-on-gluten/282550/

A low quality criticism of the book (lots of straw men and cherry picking):
http://www.forksoverknives.com/the-smoke-and-mirrors-behind-wheat-belly-and-grain-brain/

A much better critisism of the book:
http://chriskresser.com/do-carbs-kill-your-brain

Based on those resources, the book has useful information. There are some issues surrounding the extremeness of the authors recommendations. Now that I understand the basic premise of the book, I can focus on the details.

Another way to get a book summary is to listen to a podcast about the book. Many authors like to go on podcasts to market their books and talk about their ideas. I’ve learned about several books by listening to podcasts about them.

2. Get a feel for the book’s structure

Next, open up the book and look at the table of contents. This will give you an idea of how the book is structured and may point you to useful resources. For example, I recently finished reading Drive. When I opened the table of contents, I noticed that the author includes a short summary in the back of the book. I read that part first to get a feel for the book. After examining the table of contents, read the introduction and conclusion of the book. At this point, you should have a good idea of what the book is about and what information the author is going to use to support their thesis.

3. Read the actual book

By the time you get to this point, you should already have a good idea of what the author is going to say and how the book is structured. The advantage of pre-reading is that you can now focus on the details.

This gives you two options. First, you can read the book quickly, grabbing details that jump out at you. Most non-fiction books contain a lot of filler. It’s nice to know you can skip over it without missing anything important. I use this tactic for general business books, like Good to Great. Most of the time, there’s about 50 pages of useful information sandwiched between 300 pages of fluff. Second, you can carefully read the book. Because you’ve already learned the basics, it’s a lot easier to pick up the details. Which path you take is dependent on your interests and the quality of the book.

4. Commonplace and discuss the book

To further increase retention, you need to process the book in different ways. Preferably active ways that require you to recall the information you’ve learned. I like to talk about interesting books that I’ve read with the people around me.

Another way to increase retention is to keep a commonplace book. A commonplace is a set of notes and quotations from books that you’ve read. Many famous historical figures kept these, sometimes copying large swaths of texts into notebooks for future reference. For each book I read, I create a one page summary and file it in OneNote. Forcing yourself to recall and process your book helps to lock in the knowledge.

Conclusion

Follow these four steps to increase your retention and get more value out of the non-fiction books you read. This tactic is a great way to learn new skills and improve your life.