ATPL Dictionary 3.0

ATPL_170x170

Version 3.0 brings the exciting new “Autopilot” feature and an overhauled UI in preparation for the launch of iOS 7 on 09/18.

Full Version 3.0 Change Log:

- enhanced UI design, optimized for iOS 7. Users will be seamlessly transitioned to the new UI after upgrading to iOS 7. Users on iOS 6 and lower will continue to see the “legacy” UI.

- “Autopilot”: engage Autopilot mode by tapping on the microphone to have your definitions read aloud to you. (Requires upgrade to full version and iOS 7 or later)

- Updated app icon.

- Corrected known typographical errors.

- Some iPad users on iOS 6 were experiencing issues where definitions were truncated on the Word of the Day screen. These issues should be resolved with this update. If you continue to experience any layout issues send your feedback so I can pinpoint and fix them.

- Other bug fixes.

- Check out the new “iFunography Blog” listing in the menu so you can stay up to date on upcoming features, releases, and reports of currently known bugs/issues in ATPL Dictionary.

Reported issues:

- Definitions are truncated on the Word of the Day Screen on iPhone when running iOS 6.

- Bug prevents disabling Word of the Day from the menu.

- some definitions do not show when selected.

Update:

- Bugs fixed with ATPL Dictionary Version 3.0.1

Grab the update here.

Download_on_the_App_Store_Badge_US-UK_135x40

Not your average programmer…

I’ve been asked several times what led me to take up coding, having come from a pure science and aviation background. This post is about my journey and the inspiration behind an app I am very passionate about.

How I got here – the short version

I’ve dreamed of being a pilot since I was 4 years old, but I didn’t begin my life as a pilot until 2006 when I took my very first flight lesson flying around Barbados. I took my next big step when I enrolled in the Aeronautical Science program at Embry-Riddle one year later. During my time there, I completed my Private Pilot License and Instrument Rating. After completing my degree, I went on to sit the JAA (now EASA) ATPL theory exams. I began, but have not finished my commercial training because it is out of reach financially at the moment. These days, I spend a large chunk of my time working as a freelance iOS developer and learning how to become better at coding it all the while.

When Steve Jobs introduced the iPhone to the world, and later the iPad, it sparked something inside of me I didn’t really know existed – a passion for technology. I always regarded myself as much of a geek but this really sealed the deal. I wanted to get into the world of mobile app development because I could see the impact it could have on people’s lives.

I started teaching myself how to code only last year, but from very early on I knew exactly what I would want to do.

Why I made ATPL Dictionary

I created ATPL Dictionary because I wanted to do something to help other pilots with their training, whether initial or recurrent, and to make studying for exams easier than it was for previous generations.

During my time studying, I found it cumbersome to lug around heavy books and wade through several pages of textbooks or personal notes in order to find the definition of a particular term.

I believed it would be much more convenient to have a reference for all the terms a pilot would need to know on mobile devices, which have essentially become appendages to the human body in recent years.

List

So what makes this app unique?

I started out by thinking about what I look for in a any good reference tool – concise, legible and accurate information. In creating the app, I didn’t want to simply regurgitate information directly from a book or web site. That would have been easy, but does not provide any assurance of the quality of the information. I decided to create my own database of definitions, so I consult various sources, summarize the information, and type out every definition in the dictionary. I believe this is the best method because if someone thinks it is all rubbish, then I’d know that I created that rubbish but did my best at it, and If users appreciate my efforts, then I’d know that I made the right decision. Luckily, so far, it has been the latter case!

Definition

Final thoughts…

I have thoroughly enjoyed stepping out of comfort zone to do something I have become really passionate about. I love working on the ATPL Dictionary app and I enjoy reading every email I get with a correction for one of my mistakes, a suggestion for a new feature, or someone simply sending their thanks because the app helped them in some way.

I have come to learn we can change the world and touch many lives in our own special way.

If you’d like to try ATPL Dictionary, it is available free on the App Store.

How To: Animate Showing and Hiding a UINavigationBar with Tap Gesture

The navigation bar is an important component of your app’s user interface but, sometimes, it can really get in the way of your content. Maybe you’d like to show a web page or an image, but the navigation bar occupies precious screen real estate, which essentially becomes dead space while a user is engaged with your content.

This tutorial quickly teaches you how to animate showing and hiding the navigation bar with a tap gesture.

#import "ViewController.h"
#import <QuartzCore/QuartzCore.h>;

#define kNavBarDefaultPosition CGPointMake(160,22)

@interface UIViewController () <UIGestureRecognizerDelegate>;

@end

@implementation UIViewController

- (void)viewDidLoad:(BOOL)animated
{
    [super viewDidLoad];

    UITapGestureRecognizer *recognizer = [[UITapGestureRecognizer]
    alloc] initWithTarget:self action:@slector(animateNavigationBar)];
    recognizer.delegate = self;
    recognizer.numberOfTapsRequired = 1;
    [self.view addGestureRecognizer:recognizer];
}

- (void)animateNavigationBar
{
    CALayer = self.navigationController.navigationBar.layer;

    // If the navigation bar is shown, hide it.
    // Else, if the navigation bar is hidden, show it.

    if (layer.position.x == kNavBarDefaultPosition.x &amp;&amp;
    layer.position.y == kNavBarDefaultPosition.y) {
         [UIView animateWithDuration:0.25 animations:^{
             layer.position = CGPointMake(layer.position.x,
             -self.navigationController.navigationBar.frame.
             size.height);
         }];
    } else {
        [UIView animateWithDuration:0.25 animations:^{
            layer.position = kNavBarDefaultPosition;
        }];
    }
}

How To: Programatically Select a Random Cell in a UITableView

This little snippet of code shows how you can select a random UITableViewCell in a UITableView programatically. For example, you might want to trigger a random selection when the user shakes the device, or through some other action of your determination. Here I assume your familiarity with setting up a UITableView and implementing its associated delegate and datasource methods.

@interface MyTableViewController : UITableViewController {

// Declare arrays in @interface

    NSArray *section1;
    NSArray *section2;
    NSArray *section3;

    NSArray *randomSectionsArray;
}

- (void)viewDidLoad {

// Initialize arrays
    section1 = @[string1, string2, string3];
    section2 = @[string4, string5, string6]:
    section3 = @[string7, string8, string9];

    sectionsArray  = @[section1, section2,
    section3];
}

/* After implementing the delegate and datasource methods for the UITableView, 
   you can now implement the method to select a UITableViewCell at a random indexPath: */

- (void)selectCellAtRandomIndexPath
{
    int randomSectionIndex = arc4random() % sectionsArray.count;

    NSArray *randomSection = sectionsArray[randomSectionIndex];
    int randomRow = arc4random() % randomSection.count;

    NSIndexPath *randomIndexPath = [NSIndexPath 
    indexPathForRow:randomRow inSection:randomSection];

    [self.tableView selectRowAtIndexPath animated:NO
    scrollPosition:UITableViewScrollPositionMiddle];

    [self.tableView.delegate tableView:self.tableView
    didSelectRowAtIndexPath:[self.tableView indexPathForSelectedRow];

}


- (void)triggerAction
{
   //  Now, you can use your trigger action to select a random cell.

    [self selectCellAtRandomIndexPath];
}

That’s it! Happy coding.

Get Moves, Feel the Groove!

Moves 3

Wearable technology is all the rage these days, from the UP band, to the Fitbit, to the Nike+ FuelBand. Furthermore, there’s the Pebble watch, Apple is rumored to release the “iWatch,” Samsung IS releasing a smartwatch (so they say), and Google is rumored to be working on a watch as well. But all these gadgets will no doubt set you back a good few bucks. Enter “Moves.”

Moves is a free iPhone app that allows you to track your walks, your runs, your bike rides and any mode of transportation you may take. The algorithms aren’t perfect – sometimes it will mistake your car or bus ride for cycling – but the app very easily allows you to make corrections to any errors. You can then view a summary of your daily activity in a timeline.

Moves 3With Foursquare integration, you can also make note of all the locations you stopped at throughout the day, and if you’ve been to that location before, the app automatically recognizes and labels your the location in your timeline.

Considering your phone is appended to your body for most of the day, if not the entire day, this app easily transforms it into an activity tracking device at zero cost.

Check out Moves on the App Store!