Monthly Archives: November 2013

Macbook Air Samsung vs LG Display GUI App

Screenshot 2013-11-04 21.52.20

I recently purchased a Macbook Air 13″ mid 2013 , 1.3GHZ Core i5 with 8GB ram as a secondary machine. When it arrived, I found there was a scratch on the aluminium, I rang Apple and they said they would send a replacement within 10 days. I used the computer up until then and was pleasantly surprised with the quality of the display in the Macbook Air, as this had been one of my concerns with it not being a retina display. The colours look very bright and vivid.

I had heard previously that there were 2 different displays being used in the Macbook Air, one made by Samsung and one made by LG, I checked to see who had made mine and it was Samsung. About a week later the replacement Macbook Air turned up and sure enough, from the moment that it booted I could tell that the screen was not Samsung, it looked very washed out. I checked this display and it was LG.

There are some steps you can take to make the LG display look better, it seems that it is not calibrated correctly out of the box so you need to import a new colour profile, the steps for which can be found at this very informative blog post. After applying the new colour profile the difference was day and night!

The process to determine the manufacturer of your screen is easy for anyone that has used a UNIX terminal before, but if you have not then I guess it could be a little challenging.

I have written a simple GUI Based native cocoa Mac OS X application that should do the job for you, it will tell you the display manufacturer and the display identifier string + you won’t need to touch the terminal. I will provide a link to the source code shortly but I am having some issues with GIT and the new Asset Catalog in xCode 5. I hope this can be used to somebody.

You can download the application from here Macbook Air Samsung or LG

PLEASE NOTE THAT YOU MAY REQUIRE ‘XCODE COMMAND LINE TOOLS’ TO BE INSTALLED, GET XCODE FROM THE APP STORE AND OPEN IT ONCE, IT SHOULD PROMPT YOU TO INSTALL.

 

A New Icon For Location+

LocationPLUS-1024

Location+ was my first app, it was written a few years ago before ARC and Storyboards.

Since then Location+ has been downloaded over 65,000 times! Thanks for your support!

I am in the process of creating a brand new application that will be its successor, completely redesign and reengineered for the newer technologies in iOS 7 and xCode 5. I believe that it will be another few months before I am able to release it. If anyone wants to submit ideas or talk about the current feature set then please send me a message.

In the mean time, I am in the process of updating Location+ and LocationPRO to the iOS 7 interface, these will not be significant updates, just some subtle changes to the interface to make it look more modern with iOS 7.

One big change is the Icon.

Stay posted for more news on the successor to Location+ !

Objective-C OpenWeatherMap API Wrapper – JFOpenWeatherMapManager for iOS and Mac OSX

JFOpenWeatherMapManagerMultiple

JFOpenWeatherMapManager for iOS provides a quick and easy, drop in component to consume and manipulate the Open Weather Map API directly as Objective-C objects, no casting required. Weather data can be retrieved in a couple of lines of code with the help of a Block.

OpenWeatherMap provide a free* API for downloading the latest weather data, such as temperature, wind speed etc. The API can be consumed in various forms, such as JSON and XML. The API itself can be a little fiddly to get the data out of it that you want, so I put together an Objective-C (iOS & Mac OS X) wrapper called JFOpenWeatherMapManager.

The weather data provided by the API is mapped to Objective-C objects by calling the functions below:

I have provided an example project for JFOpenWeatherMapManager that will allow you to drop a pin on a map and dynamically populate the individual values for temperature etc in a tableview.

JFOpenWeatherMapManager can be found on GitHub.

Objective-C iOS / Mac OS X Wrapper to allow easy manipulation of the Open Weather Map API

Wrapper for Open Weather Map API + MapView example, add a pin to the map to retrieve the current weather data for that location

Add JFWeatherMapManager to your project

Import the following Header files

#import "JFWeatherData.h"
#import "JFWeatherManager.h"
#import "DataModels.h"

If you are using the example project, be sure to set your API key in the View Controller, this is not mandatory and if you choose not to use an API key, simply pass nil to the fetch command later on

static NSString *API_KEY = @"YOUR_API_KEY_HERE";

Create a Reference to a JFWeatherManager object and call the fetch function

JFWeatherManager *weatherManager = [[JFWeatherManager alloc]init];

[weatherManager fetchWeatherDataForLatitude:toAdd.coordinate.latitude andLongitude:toAdd.coordinate.longitude withAPIKeyOrNil:API_KEY :^(JFWeatherData *returnedWeatherData){
NSLog(@"Latitude %.3f",[returnedWeatherData latitudeCoordinateOfRequest]);
NSLog(@"Longitude %.3f",[returnedWeatherData longitudeCoordinateOfRequest]);
NSLog(@"Conditions are %@",[returnedWeatherData currentConditionsTextualDescription]);
NSLog(@"Temperature is %f",[returnedWeatherData temperatureInUnitFormat:kTemperatureCelcius]);
NSLog(@"Sunrise is %@",[returnedWeatherData sunriseTime]);
NSLog(@"Sunset is %@",[returnedWeatherData sunsetTime]);
NSLog(@"Hours of Day Light are %@",[returnedWeatherData dayLightHours]);
NSLog(@"Humidity is %@",[returnedWeatherData humidityPercentage]);
NSLog(@"Pressure is %0.1f",[returnedWeatherData pressureInUnitFormat:kPressureHectopascal]);
NSLog(@"Wind Speed is %0.1f",[returnedWeatherData windSpeedInUnitFormat:kWindSpeedMPH]);
NSLog(@"Wind Direction is %@",[returnedWeatherData windDirectionInGeographicalDirection]);
NSLog(@"Cloud Coverage %@",[returnedWeatherData cloudCovergePercentage]);
NSLog(@"Rainfall Over Next 3h is %0.1fmm",[returnedWeatherData rainFallVolumeOver3HoursInMillimeters]);
NSLog(@"SnowFall Over Next 3h is %0.1fmm",[returnedWeatherData snowFallVolumeOver3HoursInMillimeters]);
}];

The data and format’s that can be returned by the API are:

- (NSString *)currentConditionsTextualDescription; //e.g Broken Clouds
- (double)temperatureInUnitFormat:(TemperatureUnit)temperatureUnit; //e.g 3.0°C , Temperature Available in Kelvin, Celsius and Fahrenheit
- (double)pressureInUnitFormat:(PressureUnit)pressureUnit; //e.g 1007.0 hPA , Pressure Available in Hectopascal, and Pascal
- (NSString *)sunriseTime; //e.g 06:33
- (NSString *)sunsetTime; //e.g 19:32
- (NSString *)dayLightHours; //e.g 12:15
- (NSString *)humidityPercentage; //e.g 88%
- (NSString *)cloudCovergePercentage; //e.g 32%
- (double)windSpeedInUnitFormat:(WindSpeedUnit)windSpeedUnit; //e.g 20.8 MPH, Wind Speed Available in Meters Per Second, Miles Per Hour, Kilometres Per Hour
- (double)windDirectionInDegrees; //e.g 320°
- (NSString *)windDirectionInGeographicalDirection; //e.g N (North)
- (double)rainFallVolumeOver3HoursInMillimeters; //e.g 3mm
- (double)snowFallVolumeOver3HoursInMillimeters; //e.g 7mm
- (double)latitudeCoordinateOfRequest; //e.g 32.79
- (double)longitudeCoordinateOfRequest; //e.g -96.0

Temperature Formats (Kelvin, Celcius, Fahrenheit)

typedef enum temperatureUnits {kTemperatureKelvin, kTemperatureCelcius, kTemperatureFarenheit} TemperatureUnit;

Pressure Formats (Hectopascal , Pascal)

typedef enum pressureUnits {kPressureHectopascal, kPressurePascal} PressureUnit;

Wind Speed Units (MPS,MPH,KPH)

typedef enum windSpeedUnits {kWindSpeedMPS, kWindSpeedMPH, kWindSpeedKPH} WindSpeedUnit;

JFOpenWeatherMapManager can be found on GitHub.

=======================

Attribution (Special Thanks)

OpenWeatherMap API http://openweathermap.org for their great API!
AFNetworking for making the best network library on iOS and Mac OSX (Bundled with this project) http://afnetworking.com

=======================

Contact – Jonathan Field | http://jonathanfield.me