Comments Off

Beep Test

Posted December 28th, 2011 in My apps, Portfolio by Chris Gummer

Beep Test is an application designed to test your fitness. It is also known as the Bleep Test, Yo-Yo Test, Multi-Stage Fitness Test, Pacer Test, or Shuttle Run Test. Beep Test gives you a Beep Test timer for your iPhone™ and iPod® touch.

The application may be used to time and track your tests. It will also provide values for your VO2 max, MET, and also a general assessment based upon the user’s age and gender. The beep test is a fantastic way to measure your fitness and is used by trainers, coaches, police departments, defence forces, and many others.

The beep test involves the runner running between two markers 20 meters apart. The runner must complete each 20 meter run before the beep sounds. The starting speed is 8.5 km/h and will increase by 0.5 km/h each level. A single beep test consists of 21 levels. Each level is a series of shuttles, that is 20 meter runs. At the completion of each level, approximately every minute, the required speed will increase and the runner must run faster. If the runner can not reach the end of the shuttle before the beep for 3 consecutive shuttles the test is ended.

Beep Test has the following features:

• 21 level beep test
• Individual or group test
• Beep tone indicating start and end of shuttles
• Voice notification of each new level
• Full instructions included
• Full set of constantly updated statistics including:
a.Level
b.Shuttle
c.Total distance travelled
d.Target speed
e.Test time, shuttle time, and level time
• Multiple user profiles
• Records test results for any user
• Edit existing test results
• VO2 max and MET calculations
• General assessment provided for each test

Warning!

A beep test is an intense physical test. Always consult your physician before attempting the beep test. Do not perform the test if you are injured or are feeling unwell. Stop the test immediately and seek medical advice if you experience nausea, breathing difficulties, chest pain, extreme sweating, or dizziness

Comments Off

HIIT Timer

Posted December 28th, 2011 in My apps, Portfolio by Chris Gummer

HIIT Timer is an application designed for your High Intensity Interval Training. HIIT Timer gives you a fully configurable interval timer on your iPhone™ and iPod® touch.

The application counts each set for you and uses a classic digital display for time. HIIT Timer is designed to alert you of the current interval at all times. Your iPhone or iPod touch can be rotated to provide an extra large time display. Sounds can be configured to alert you of the start of each interval.

HIIT Timer has the following features:

• Configurable time intervals for both high and low stages
• Coloured backgrounds signifying the particular interval
• Set counter
• Sounds are configurable to indicate the start of each interval
• Vibration (iPhone only) to indicate the start of each interval
• Sounds effects and/or vibration (iPhone only) may be turned off
• Extra large landscape display
• Classic digital time display
• Auto-lock can be disabled to prevent screen locking during intervals
• Tap anywhere on the screen to start/pause
• Saves timer position on exit
• Save custom timers for your workouts
• Runs in the background on devices that support multitasking

Comments Off

LLVM, load_all, and force_load

Posted December 7th, 2011 in Objective-C, Xcode, iPad, iPhone by Chris Gummer

Previously, I’ve written about an issue with objective-c categories in static libraries. There is an Apple tech note which advises the following for iOS applications:

Important: For 64-bit and iPhone OS applications, there is a linker bug that prevents -ObjC from loading objects files from static libraries that contain only categories and no classes. The workaround is to use the -all_load or -force_load flags.

The -all_load option will force the linker to load any object files from all libraries. In my opinion it is better to use the -force_load option. This option works similarly to the -all_load option, but it lets you specify the individual libraries to apply this behaviour to. This is useful, especially when you have many static libraries that are used to form your application binary and you know exactly which ones contain categories.

However, if you’re compiling with LLVM with this option you may run into an issue. With GCC, you specify the option under the Other Linker Flags of your project’s build settings. Therefore, the following would work:

-force_load $(BUILT_PRODUCTS_DIR)/libStaticLibrary.a

However, this option needs to be modified if you’re project is being compiled with LLVM. In order to pass options to the linker in LLVM you use the -Wl option for each library as follows:

-Wl,-force_load,$(BUILT_PRODUCTS_DIR)/libStaticLibrary.a