Tuesday, November 03, 2015

Setup the new Apple TV

After unpacking and flashing it with the latest Beta I could finally set it up
It is going through all the languages in a row
There is the possibility to take the settings from an iPhone/iPad
Unfortunately none of my devices was already on iOS 9.1

Monday, November 02, 2015

Unpacking the new AppleTV Developer Kit

I guess you're not really interested in what I've to say about the unpacking, so just watch the pictures:

So and there it is :-D

Saturday, October 31, 2015

Got selected to have an early look at the new AppleTV

Basically it all started with the following email that I got just a week after participating to the Apple TV lottery.
After accepting the terms, which basically say that I'm not allowed to show pictures or write reviews about it (that's actually why this article is published so late)
I finally got the confirmation that Apple is sending me the AppleTV Developer Kit for 1€

Stay tuned for the unpacking article coming as soon as the AppleTV is publicly released.

Tuesday, October 27, 2015

MAC: Keep your gems up to date

If you want to have all your gems updated there is quite a simple command to execute
sudo gem update `gem list | cut -d ' ' -f 1`
This will take the list of all installed gems and update it to the latest available version.
Furthermore you can simply remove now all the unused, old versions by executing
sudo gem cleanup
And you're done

Wednesday, June 17, 2015

Objective-C: Travis-CI and Coveralls.io (2/2)

Until now we've added to our repository just the support for Travis-CI. Now it's time for Coveralls.io which is basically the second part of this Pull Request.

Coveralls is a service that analyses your code and gives a percentage of code that is covered by some tests.


If your code is already on Github, you can navigate now to Coveralls.io and activate the support for your repository, otherwise you can do it at the end, but then the next commit will show up on Coveralls.io. As we already had for the Travis-CI;

1) This service will start after Travis-CI so he needed to invoke it when Travis-CI has finished. This can be done by adding it to the .travis.yml
after_success: bundle exec slather
As you may already expect he had to include slather into our Gemfile and execute it
source 'https://rubygems.org'
gem 'cocoapods'
gem 'rake'
gem 'slather'
gem 'xcpretty'
Slather, as Travis-CI needs its own configuration file which is .slather.yml in this case

2) If you'd run now the bundle exec slather command you'll probably end up with an error as Xcode is not generating coverage files if they are not needed. There are basically two flags to set in the xcodeproject file
Basically there are the methods to set these flags

  1. Open Xcode, search in Build settings for Instrument Program Flow and Generate Test Coverage Files and set both of them to YES which will generate the needed files on every build
  2. You can do the same executing the command $ slather setup path/to/project.xcodeproj which will automatically set those flags
  3. Add the parameters to the build command in the Rakefile which will generate them only when you execute the rake build.

3) Now as in Travis-CI just add the badge to the readme
[![Coverage Status](https://coveralls.io/repos/hons82/THSegmentedPager/badge.svg)](https://coveralls.io/r/hons82/THSegmentedPager)

Objective-C: Travis-CI and Coveralls.io (1/2)

Just recently one of my projects has been chosen to become featured with test during the CocoaPods Test Jam.

Goal of this event was to add tests (XCTestSpecta / Expecta , Kiwi or Cedar) to the projects (THSegmentedPager in my case) to reach a certain coverage and add the project to the Travis-CI Continuous Integration service as well as to the Coveralls test coverage service.

In this article I'll skip the creation of the tests itself (Those can be seen in the repository and watching the Pull Request that he sent when everything was done) and jump directly to the Travis-CI and Coveralls.io integration.


If your project is already on Github you could navigate to Travis-CI connect it with your Github account and enable it for Travis-CI. If not you'll need to do it at the end of the process and it will run with the next commit.

1) As the project uses CocoaPods he add a Gemfile with it as dependency which you can execute using bundler (sudo gem install bundler)
$ bundle install
Resolving dependencies...
Using i18n 0.7.0
Using json 1.8.3
Using minitest 5.7.0
Using thread_safe 0.3.5
Using tzinfo 1.2.2
Using activesupport 4.2.1
Using claide 0.8.1
Using fuzzy_match 2.0.4
Using nap 0.8.0
Using cocoapods-core 0.37.2
Using cocoapods-downloader 0.9.0
Using cocoapods-plugins 0.4.2
Using netrc 0.7.8
Using cocoapods-trunk 0.6.1
Using cocoapods-try 0.4.5
Using colored 1.2
Using escape 0.0.4
Using molinillo 0.2.3
Using xcodeproj 0.24.2
Using cocoapods 0.37.2
Using bundler 1.10.3
Bundle complete! 1 Gemfile dependency, 21 gems now installed.
Use `bundle show [gemname]` to see where a bundled gem is installed.

2) Now he add the .travis.yml file which will tell to Travis what is exactly to do.
language: objective-c
- bundle exec pod install --project-directory=THSegmentedPagerExample
- set -o pipefail && bundle exec rake test | bundle exec xcpretty --test --color
- bundle exec pod lib lint --quick
To make this commands work we'll need to add the missing commands (rake and xcpretty)to the Gemfile and execute it again
source 'https://rubygems.org'
gem 'cocoapods'
gem 'rake'
gem 'xcpretty'
The script in .travis.yml points to a rake target named "test" which he had to define in the Rakefile
desc 'Run tests'
task :test do
  command = "xcodebuild \
    -workspace THSegmentedPagerExample/THSegmentedPagerExample.xcworkspace \
    -scheme THSegmentedPagerExample \
    -sdk iphonesimulator -destination 'platform=iOS Simulator,name=iPhone 6,OS=8.1' \
  system(command) or exit 1
task :default => :test
If you're not sure about how to write the script it is probably the best option to open a console; cd to the project root and run it

3) One more thing which is often forgotten is to share the scheme. This is done in Xcode

4) Now, as you'll probably want to show that you're using a CI service all that is left is to add a badge to the readme
[![Build Status](https://travis-ci.org/hons82/THSegmentedPager.png)](https://travis-ci.org/hons82/THSegmentedPager)

Monday, June 15, 2015

OSX 10.11 - El Capitan

I was so curious about El Capitan that I had to download and install it on my old Mac just after it was present in the developer center.

As expected from the presentation and the reviews the main changes are under the hood, so beside the updated notes app, the improved Spotlight and window management you'll not see a lot. However, more interesting for me is to see when it can be used for development.

In previous OSX versions we hat always problems with some tools that were simply not ready for updates. Despite that on El Capitan most things are working one thing that we use quite often was not working.


The issue here was something like this
ERROR: While executing gem ... (Errno::EPERM) Operation not permitted
The issue behind is the "rootless" feature that comes with 10.11 as I've found here. For now it needs to be disabled.
sudo nvram boot-args="rootless=0"
Now it seems like it would install correctly, however there will come up an error wit a dependency that cocoapods needs "nokogiri".
This seems not to point to the right libraries, so you'll need to install it first using this command
sudo gem install nokogiri -- --with-xml2-include=/Applications/Xcode.app/Contents/Developer/Platforms/MacOSX.platform/Developer/SDKs/MacOSX10.10.sdk/usr/include/libxml2 --use-system-libraries
Now you should be able to use cocoapods again.

To Be Continued ...