Skip to main content


Showing posts from 2016

Parallel test execution on multiple iOS Simulators

GitHub plu/pxctest
fbsimctl is a command line interface to the FBSimulatorControl Framework. It intends to expose the core features of the FBSimulatorControl framework with a syntax that accommodates many common automation scenarios.
fbsimctl can be used to:
Remotely control a Simulator via a HTTP Wire Protocol.Install & Launch Applications or Spawn Processes.Record Videos of the Simulator's Screen.Fetch diagnostic logs associated with a Simulator.Easily perform the same task over multiple Simulators at once.Provide Machine-Readable output with JSON Reporting, enables easier automation from any language.Launch XCTest bundles for WebDriverAgent
GitHub facebook/FBSimulatorControl


fbxctest is an experimental test runner for running iOS testing bundles for the iOS Simulator Platform. fbxctest will provide the following features:

Structured Output of Test ResultsSupport for concurrent running against Simulators.A Test Runner independent of a Full Build Chain. faceboo…

Gericht: Knebelverträge für Freelancer sittenwidrig

Das Landgericht München I erklärte das zwischen einem Münchner IT-Unternehmen und einem selbstständigen Programmierer vertraglich vereinbarte Wettbewerbsverbot für sittenwidrig. Das Unternehmen hatte die Dienste des Freelancers aus dem bayrischen Gilching seit Ende 2000 regelmäßig in Anspruch genommen.

Das von der IT-Firma vertraglich festgelegte Wettbewerbsverbot sollte nicht nur für die Dauer der vertraglichen Zusammenarbeit, sondern auch noch ein Jahr über die Vertragsbeendigung hinaus gelten. Eine Karenzentschädigung, wie sie beispielsweise für Handelsvertreter gesetzlich vorgesehen ist, sei aber nicht vereinbart gewesen.

Richterin Cordula Brychcy sah darin eine unverhältnismäßige Beschränkung des Softwareexperten in seiner Berufsfreiheit.

Wettbewerbsverbot / 2.4 Karenzentschädigung

Wichtigste Voraussetzung für eine wirksame Vereinbarung eines solchen Wettbewerbsverbots für die Zeit nach Beendigung des Arbeitsverhältnisses ist die Zahlung einer monatlichen Entschädigung, au…

How to access specific settings in the iOS settings app

Apple Settings App

Open the preference / settings app.
You can open the app at different pages

Native application URL string example:

Extended example:
Tags: settings preferences

Airplane mode: prefs:root=AIRPLANE_MODEBluetooth: prefs:root=General&path=BluetoothBrightness: prefs:root=BrightnessLocation services: prefs:root=LOCATION_SERVICESLocation services (System services): prefs:root=LOCATION_SERVICES_SystemservicesHotspots: prefs:root=HotspotWLAN: prefs:root=WIFIUMTS-Settings: prefs:root=General&path=NetworkMobile data: prefs:root=General&path=USAGE/CELLULAR_USAGEVPN: prefs:root=General&path=Network/VPNSound: prefs:root=SoundsRigntone: prefs:root=Sounds&path=RingtoneSiri speech settings: prefs:root=General&path=Assistant

How to link to TestFlight App in iOS

There are two things you need to do. First, check to see if TestFlight is installed. Then create a new link to your app.

NSURL *customAppURL = [NSURL URLWithString:@"itms-beta://"];
if ([[UIApplication sharedApplication] canOpenURL:customAppURL]) {

    // TestFlight is installed

    // Special link that includes the app's Apple ID
    customAppURL = [NSURL URLWithString:@""]; 
    [[UIApplication sharedApplication] openURL:customAppURL];

This special URL will be opened directly in TestFlight.

Finally, if you are using iOS 9 (or later), you need to make an addition to your Info.plist to get the canOpenURL: method to work.

If your app is linked on or after iOS 9.0, you must declare the URL schemes you want to pass to this method. Do this by using the LSApplicationQueriesSchemes array in your Xcode project’s Info.plist file. For each URL scheme you want your app to use with this method, add it …

Google Play Publishing API

The Google Play Developer Publishing API allows you to automate frequent tasks having to do with app production and distribution. This provides functions similar to those available to a developer through the Developer Console, such as:

Uploading new versions of an app
Releasing apps, by assigning APKs to various Tracks (alpha, beta, staged rollout, or production)
Creating and modifying Google Play Store listings, including localized text and graphics and multi-device screenshots
Those tasks are performed using the new edits functionality, which take a transactional approach to making changes; you bundle several changes into a single draft edit, then commit the changes all at once. (None of the changes take effect until the edit is committed.)

Developers Google

Mobile Test Devices - For Germany, US and more...

Are you testing on the right digital platforms? App Annie and Perfecto have teamed up to help!
This index combines data from 4,000+ device profiles, industry and App Annie™ mobile market usage data, and proprietary Perfecto analysis to help you determine the best test coverage for your target customers.

Get the latest edition of the Digital Test Coverage Index that now includes App Annie rankings!

Mobile Test Coverage Devices

EssentialsEnhancedExtended Countries USCanadaBrazilEUUKGermanyNetherlandsSwitzerlandItalySpainFranceAustraliaChinaIndiaPerfectoMobile

Returns and refunds on Google Play

Refunds may be available for purchases on Google Play:
If something was bought on your account or with your payment method that you didn’t permit, we can usually help.
If the purchase you made wasn’t delivered, doesn’t work, or isn’t what you expected, we can usually help.
If you bought something by accident, or bought something then changed your mind, we may be able to help depending on the specific situation.
If you give your account or payment details to someone else, appear to be abusing our policies, or don’t protect your account with authentication, we usually can’t issue a refund.
It’s important that you make a refund request as soon as possible after you find an issue. Select a link below for more information and to find out how to make a request.

Refund times:

Payment methodEstimated Refund timeCredit card3–5 business days
Processing time can be affected by the card issuer and sometimes takes up to 10 business days.
If your credit card is no longer active, refunds will go to t…

Slate and The New Yorker dump Outbrain and Taboola links

Publishers including Slate and The New Yorker are ending deals with Taboola and Outbrain, the content recommendation companies that placed sponsored links at the bottom of their pages. “It is not the right look if you’re trying to say you’re a high-quality, upper-tier website — if you have something like this on it — and I think it’s time for us to be honest about that,” Slate president Keith Hernandez told The New York Times.


My Outlook talks to me...

App Development: Cordova vs React Native vs Xamarin vs DIY

Are you still writing native iOS or Android code for creating mobile apps? May be it is the eternal love for platform specific programming languages and tools, skill set issues, a very specific need of the application or just ignorance. It is high time to re-evaluate the approach to mobile app development and choose right set of tools and frameworks to get the job done for higher ROI and rapid development.


Crashes on Samsung when using Multidex

There is a severe issue with a broken multidex implementation on some Samsung 4.2.x devices: But there are workarounds:
A special Proguard setting to minify your codeAndroid MultiDex & How to Deal With itUse DexClassLoader instead of Multidex and the default class loaderRemove MultiDex library and use DexClassLoader insteadWhat are differences between DexClassLoader and PathClassLoader?
Official Android Documentation:
A class loader that loads classes from .jar and .apk files containing a classes.dex entry. This can be used to execute code not installed as part of an application.
DexClassLoader is instantiated to load the library from the extracted secondary dex file.
Provides a simple ClassLoader implementation that operates on a list of files and directori…

Android Intellij Plugins

Gradle KillerThis plugin kills Gradle tasks using the system task manager with just one click.  No more struggling with "ps" or playing Russian roulette with "java.exe" processes! Just click the icon in the "Run" section and you're done! ADB IdeaSpeedup your daily work with shortcuts:Uninstall AppKill AppStart AppRestart AppClear App DataClear App Data and RestartCodeGlanceEmbeds a code minimap similar to the one found in Sublime into the editor pane. Works with both light and dark themes using your customized colors for syntax highlighting.Android Methods CountFor all you guys that are troubled by multidex!A plugin to get information about the number of methods on Android libraries.AceJumpAceJump allows you to quickly navigate the cursor to any position visible in the editor. See a demo of AceJump in action! Simply hit "ctrl+;", type a character, then type the matching character to Ace Jump.

The IBM Swift Package Catalog

The IBM Swift Package CatalogCreate, share and discover the many new libraries, modules and packages being created since Swift moved to Open Source.How to get started?The IBM Swift Package Catalog enables the developer community to leverage and share code across projectsOverviewThe Swift Package Catalog is just one of the ways IBM is radically simplifying end-to-end development Learn moreGetting StartedThis tutorial provides an overview of the Swift Package Catalog and highlights some of the beta featuresKituraThis Kitura tutorial reviews how to create a Package.swift file for use with KituraIBM developerWorks

Swift@IBM - Breaking down barriers between client and server all over the world

Try the new IBM Cloud Tools for Swift (Beta)For developers interested in creating Swift applications that span both client and server-side code, the newest tools from IBM can help simplify the management and deployment of server-side assets. Extend your mobile apps and connect them to IBM Bluemix Cloud services with a local development environment that complements the productive Xcode environment with the IBM Cloud Tools for Swift (beta) now available on IBM Bluemix.IBM Swift SandboxExperiment with Swift on the server, share your code and collaborate with your peersSwift on IBM BluemixRadically simplify end-to-end development of modern apps with Swift services on IBM BluemixKituraBuild end-to-end apps using Swift with KituraThe IBM Swift Package CatalogShare Swift resources using the IBM Swift Package CatalogIBM developerWorks

DevOps for mobile apps challenges and best practices


Multi-platform supportMobile apps as an enterprise front endContinuous integration and continuous deliveryThe app store'Pull' not 'push' deploymentFor consumer apps, failure is not an option

10 best practices for mobile DevOps

Continuous integration and continuous deliveryEnsure end-to-end traceability across all assetsPractice continuous integrationMaintain separate build and integration areas for each native mobile OS SDK version supportedUse automated build and deploy scriptsTesting and monitoringTest each build thoroughly with as much automation as possible, on simulated and physical devicesVirtualize and simulate backend services that are not available during mobile app testingMonitor the performance of deployed mobile apps and backend servicesMobile app deliveryEmploy centralized governance for mobile provisioning profiles, certificates, and API keysUse a virtual app store to test device deploymentConvert user feedback into enhancement requests and user s…

Apple verkauft erneut weniger iPhones - aber mehr als erwartet

In den drei Monaten zuvor hatte es erstmals seit der Markteinführung des iPhones ein Minus gegeben, damals von gut 16 Prozent. Apple ist seit Jahren stark abhängig vom iPhone. Es steht für etwa zwei Drittel der gesamten Erlöse.

Die Verkäufe der iPad-Tablets fielen zwar weiter - um neun Prozent auf 9,95 Millionen Geräte. Mit den teureren Modellen des iPad Pro stieg der Umsatz aber um sieben Prozent auf fast 4,9 Milliarden Dollar. Das war das erste Wachstum in dem Geschäft seit längerer Zeit.


The New 'Must Haves' for Mobile Apps to Succeed Today

In the words of SC Moatti, former Facebook product leader, founder of Products That Count and author of the new book, Mobilized: An Insider's Guide to the Business and Future of Connected Technology, “Mobile has an entirely different resonance and cadence for users, which makes the development of mobile apps fundamentally different too.” RETHINK YOUR FUNNELDEMONSTRATE YOUR VALUE, IMMEDIATELYDON’T SHOW TOO MUCH, DON’T ASK TOO MUCHKNOW WHEN TO ASK PERMISSIONBUILD IT BEAUTIFULMINIMIZE UNPREDICTABILITYIT COMES DOWN TO CULTUREFirst Round Review

PeekPop - Pre-iPhone 6S and 6S+

Peek and Pop
Let your users preview all kinds of content and even act on it — without having to actually open it. Users can then press a little deeper to Pop into content in your app.

Apple 3D Touch


Peek and Pop is a great new iOS feature introduced with iPhone 6S and 6S+ that allows you to easily preview content using 3D touch.

Sadly, almost 80% of iOS users are on older devices.

PeekPop is a Swift framework that brings backwards-compatibility to Peek and Pop.


Validating Receipts With the App Store

// Load the receipt from the app bundle.
NSURL *receiptURL = [[NSBundle mainBundle] appStoreReceiptURL];
NSData *receipt = [NSData dataWithContentsOfURL:receiptURL];
if (!receipt) { /* No local receipt -- handle the error. */ }

/* ... Send the receipt data to your server ... */
Apple Developer
For an application purchased from the App Store, use this application bundle property to locate the receipt. This property makes no guarantee about whether there is a file at the URL—only that if a receipt is present, that is its location. Apple API Reference
QuantityProduct IdentifierTransaction IdentifierOriginal Transaction IdentifierPurchase DateOriginal Purchase DateSubscription Expiration DateCancellation DateApp Item IDExternal Version IdentifierWeb Order Line Item ID In-App Purchase Receipt Fields
A helper class for verifying App Store receipts under iOS. VerifyStoreReceiptiOS
LazyPages is a highly customizable library that helps you to show a scrollable list of view controllers synchronized with an index. It is written in Swift 2.2 for iOS 8+.

Like Scrollable Tabs in Android.


Slow App Startup Times

Apple suggest to aim for a total app launch time of under 400ms and you must do it in less than 20 seconds or the system will kill your app. You control what your application delegate does but how do you debug slow startup times that happen before your code is even called? Here is a tip from WWDC 2016 that might help: To try it out add the environment variable DYLD_PRINT_STATISTICS to your project scheme with a value of 1.

User Your Loaf

Weltweiter Smartwatch-Markt bricht um ein Drittel ein

Apple still has a market share of 47%, followed by Samsung 16%.
Everybody is waiting for the Fall Apple Special event and the new Apple Watch!

Top Five Smartwatch Vendors, Shipments, Market Share and Year-Over-Year Growth, 2Q 2016 (Units in Millions)Vendor2Q16 Unit

Shipments2Q16 Market

Share2Q15 Unit

Shipments2Q15 Market


Year Growth1. Apple1.647%3.672%-55%2. Samsung0.616%0.47%51%3. Lenovo0.39%0.23%75%4. LG Electronics0.38%0.24%26%5. Garmin0.14%0.12%25%Others0.616%0.611%-1%Total3.5100%5.1100%-32%Source: IDC Worldwide Quarterly Wearable Device Tracker, July 21, 2016

iOS Testing: UI Testing Cheat Sheet and Examples

Shortly after Apple's "Hey Siri" event the Xcode 7 GM was released to developers. Let's put the betas behind us and take a look at some real world UI Testing examples.

The examples all use a test host that helps you manage your volleyball team. The app, Volley, lets the user manage the team roster, adjust the formation, and view game results. Feel free to take a look at the source code before continuing along to familiarize yourself with how it works.

Additional topics covered:

UI Testing with Stubbed Network DataThree Ways UI Testing Just Made Test-Driven Development Even BetterUI Testing in Xcode
Apple Developer UI Tests with Xcode 7
Appium vs. UI Tests

Great Apps Timeline

See how the LOOK of some of the great apps changed over time

What’s New in Subscriptions

All App Categories Eligible85% Revenue After One YearTerritory Pricing and Expanded Subscription Price TiersKeep Subscribers at Their Existing PriceStarting this fall, apps using the auto-renewable subscription model will be able to keep active subscribers at their existing price while increasing the price for new users. Subscription Level ChangesWithin each subscription group, you can offer different levels of service (for example, basic, premium, and pro memberships) as well as durations (such as weekly, monthly, or annually).

Apple Developer

Super Spectacular Server-Side Swift! Edward Jiang

Now that Swift is open-source and cross-platform, several teams are racing to make Swift a viable language for web development. The major frameworks, Perfect, Vapor, and IBM’s Kitura, have over 13,000 stars on GitHub, and are growing quickly! Join us as we talk about the different frameworks, their pros and cons, and an introduction for how to get started with developing in server side Swift. (Several of the frameworks are even solely for Swift 3!) Join Edward for a live coding demo and even deploy a Swift application to the cloud!

Clean Android Code

This series of articles will focus on practical approaches on how to write testable, re-usable and maintainable code when developing applications for Android.
Clean Android Code articles series:
Clean Android Code: MainClean Android Code: Building with GradleClean Android Code: PreparationClean Android Code: Activities & FragmentsClean Android Code: Network & DataClean Android Code: Navigation & UIClean Android Code: Event Bus & Error HandlingClean Android Code: … Anton Averin

Instrumentation Testing Robots by Jake Wharton

Libraries like Espresso allow UI tests to have stable interactions with your app, but without discipline these tests can become hard to manage and require frequent updating. In this talk Jake will cover how the so-called robot pattern allows you to create stable, readable, and maintainable tests with the aid of Kotlin’s language features.

Subscriptions are expanding

Apple allows developers to sell subscriptions in the App Store, but until now those subscriptions have been limited to music, video, services and news apps. So if you’re a magazine publisher or you have a streaming music or video service, you can get recurring revenue, but if you’re a game developer, you can't.

Starting today, developers from all app categories — including games — can use subscription pricing.

Moreover, Apple is changing the way it splits revenue with developers. Historically, 70% of subscription income has gone to the developer and 30% goes to Apple. Now, if a user subscribes to a service for one year or more, the split becomes 85/15. In other words, developers will be rewarded for keeping users happy enough to stay subscribed.

Developers will also be able to set territory-specific pricing. That means that you can charge less for your app or service in say, India, than you would in the United States.

And when it comes to changing the price on a subscription, devel…

iAd App Network will be Discontinued

The iAd App Network will be discontinued as of June 30, 2016. Although we are no longer accepting new apps into the network, advertising campaigns may continue to run and you can still earn advertising revenue until June 30. If you’d like to continue promoting your apps through iAd until then, you can create a campaign using iAd Workbench.


ConsistencyManager iOS for Swift

This library manages the consistency of immutable models. So, if a model changes, it will automatically generate a new model with the diff and return this model to whoever is listening for changes. It is an asynchronous, decentralized model store. This means that it will never block the main thread even for large models. Also, it doesn’t actually store the models themselves, so you do not need to worry about duplicate storage, increased memory footprint, or model memory management.

LinkedIn GitHub


WireMock is a flexible library for stubbing and mocking web services. Unlike general purpose mocking tools it works by creating an actual HTTP server that your code under test can connect to as it would a real web service.

It supports HTTP response stubbing, request verification, proxy/intercept, record/playback of stubs and fault injection, and can be used from within a unit test or deployed into a test environment.

Although it’s written in Java, there’s also a JSON API so you can use it with pretty much any language out there.

Universal Links – Make the Connection between App and your Website

Do you have a website that shares content with an iOS app? As of iOS 9, you can connect them using universal links, meaning that users can now touch an HTTP link on an iPhone and be sent directly to your app!

In this tutorial, you’ll learn how to link an iOS app to a Heroku website.

Ray Wenderlich

...and its possible for Android, too!

Enabling Deep Links for App Content

To enable Google to crawl your app content and allow users to enter your app from search results, you must add intent filters for the relevant activities in your app manifest. These intent filters allow deep linking to the content in any of your activities. For example, the user might click on a deep link to view a page within a shopping app that describes a product offering that the user is searching for.

Android Developer

Android Device Independent Pixel Cheat Sheet for Designers

What is it?

This is a ruler in the Android "dip" (Device Independent Pixel) unit.

You can print it, cut it and give it to your designer.


I've found that the concept of dp is not that easy to explain / understand.

Designers are used to think in pixels (especially if they also work on iOS projects).

Sometimes a picture is worth a thousand words, and so this ruler will make it immediately obvious that the dp is a physical unit of length.

Some essential information is also present on the ruler:

Definition of a dp
List of Android logical densities (ldpi, mdpi, etc.) with their properties
And of course it can also be actually used to measure things (screens…) since it is a ruler :)

BoD GitHub

See also
Android Cheatsheet for Graphic Designers
The Android Design Cheat Sheet

20 lines of code that will beat A/B testing every time

A self-controlled, unsupervised optimal A/B Testing strategy that results in user-specific best choice for all variants!

With a simple 20-line change to how A/B testing works, that you can implement today, you can always do better than A/B testing -- sometimes, two or three times better. This method has several good points:

It can reasonably handle more than two options at once.. Eg, A, B, C, D, E, F, G, �New options can be added or removed at any time.Steve Hanov

Why Multi-armed Bandit Algorithm is Not “Better” than A/B Testing

Bandito, a Multi-Armed Bandit Tool for Content Testing

Google erwägt Swift angeblich als Programmiersprache für Android - Google thinks about switching to Swift... or Kotlin for Android

Apples inzwischen quelloffene Programmiersprache wird einem Bericht zufolge von Google als Alternative zu Java in Betracht gezogen. Auch prominente App-Entwickler wie Facebook und Uber zeigen angeblich Interesse an Swift.
Kotlin scheint allerdings die deutlich naheliegendere Wahl für Google, da die Migration zu der JVM-Sprache (Java Virtual Machine) im Vergleich zu Swift einfach ausfüllen dürfte. Der Kotlin-Entwickler JetBrains ist zudem kein Unbekannter für den Such-Konzern, mit IntelliJ IDEA stellt die Firma die Basis für Android Studio, Googles Programmierumgebung zur Entwicklung von Android-Apps.


Recently talked to an Android engineer: No plans to enable Swift and become dependent on Apple!

Spotify ditches the controversial ‘hamburger’ menu in iOS app redesign

The company tested the tab bar on iOS to see how it impacted user engagement. It found that users with the tab bar ended up clicking 9% more in general and 30% more on actual menu items. The tests also revealed that reducing the number of options in the tab bar to five increased the reach of Spotify’s programmed content, the company says.

New users also engaged more with the navigation menu in their first sessions than they did when the hamburger menu was present.

Why the Hamburger Menu Is so Controversial

SwiftyBeaver - The world’s first logging platform for Swift

SwiftyBeaver Logging Framework is the extensible &  lightweight open-source logger for Swift 2.2 and later. It is great for  development & release due to its support for many (custom) logging destinations.

Framework Unique Feature Set

Log to Xcode Console and / or log to a fileAdd custom log destination handlers to log to Loggly, Redis, etc.Send your logs with end-to-end AES256 encryption to the SwiftyBeaver Mac AppColored output to Xcode Console, log file, etc.Uses own serial background queues/threads for a great performanceLog levels which are below the set minimum are not executed for even better release performanceIncreases productivity & saves a lot of time thanks to "Needle in the Haystack" modeEasy & convenient configurationUse multiple logging destinations & settings, even for the same typeAlready comes with good defaultsUse log.debug("foo") syntaxGet started with 2 lines of codeSimple installation via Carthage, CocoaPods, Swift Package Ma…

Independent Apple Watch

Upcoming Requirement for watchOS Apps
April 22, 2016 - Starting June 1, 2016, all new watchOS apps submitted to the App Store must be native apps built with the watchOS 2 SDK or later.

Developer Apple

Looks like the new Apple Watch might be independent from the iPhone.

Die nächste Generation der Apple Watch ist in Arbeit und es gibt erste Hinweise auf die Neuerungen. So soll die Smartwatch einen schnelleren Prozessor und Mobilfunktechnik erhalten.


Android Material Design Icon Generator Plugin

This plugin help you to set material design icons to your Android project.

GitHub konifar

Agera - Reactive Programming for Android

Agera is a set of classes and interfaces to help write functional, asynchronous, and reactive applications for Android.

Requires Android SDK version 9 or higher.

GitHub Google

TextAttributes - An easier way to compose attributed strings

TextAttributes makes it easy to compose attributed strings.

let attrs = TextAttributes()
    .font(name: "HelveticaNeue", size: 16)
    .foregroundColor(white: 0.2, alpha: 1)

NSAttributedString("The quick brown fox jumps over the lazy dog", attributes: attrs)


Strongly typed propertiesChainable setter methodsA direct access to the NSParagraphStyle propertiesBetter autocompletionTextAttributes GitHub

Designing for Mobile Micro-Moments: Principles of Mobile App Design: Engage Users and Drive Conversions

Principles of Mobile App Design: Engage Users and Drive Conversions

In a crowded market, how does an app attract new customers, gain loyalty, and deliver value? With great design for a delightful app experience. Here, Google's UX Research Lead Jenny Gove will take you through 25 principles to build an app that helps users achieve what they’re looking to do.

Think With Google

I show you mine if you show me yours first - Our current Android and iOS Stack

Something from our internal WeltN24 native apps lab:
We just setup a new app from scratch, which puts us in the nice position of incoroporating the latest frameworks an pattern.

We go for a Reactive and MVP approach. Please find below some details.
I would be happy to hear about your choices - please leave a comment!

AndroidiOSOSAndroid 4.1 (4.0.3+) API Level 16iOS 8LanguageKotlin 1.0, with fallback to Java where necessarySwift 2.1.1PatternReactive & MVPReactive and MVVMLibsAndroidRx
Dagger 2
Retrofit 2
Dependency Injection (custom)
JW Player
ObjectMapper (custom)Testing

Mockito/PowerMock & Hamcrest
StethoQuick & Nimble
Performance Tests (custom)CIAndroid Studio Analysis
DashingCrash AnalysisCrashlyticsCrashlyticsCode ReviewEnforced Code Reviews via StashEnforced Code Reviews via Stash Dependency/BuildGradlefastlane
CarthageIDEAndroid StudioXc…

Pushy - An Alternative to Google Cloud Messaging

Pushy is a standalone push notification gateway, completely independent of GCM. It maintains its own background socket connection, just like GCM, to receive push notifications. The underlying protocol is MQTT, an extremely light-weight pub/sub protocol, utilizing very little network bandwidth and battery. We chose MQTT after comparing multiple protocols, including WebSockets and XMPP. Also, the fact that Facebook chose to implement its push notifications using MQTT is highly-convincing.

A huge advantage of Pushy is that it's a drop-in replacement for Google Cloud Messaging. The code for sending a push notification (from the server) and receiving a registration ID is almost identical for GCM and Pushy. This makes it super easy to switch to Pushy after implementing GCM and having to ditch it for its instability.

We charge $0.005 for each active device (number of devices connected to the service at least once during one month of period) every month.

Do you have plans for iOS?

CodePen is a playground for the front end web.

Nice JS text effect Gthibaud on
CodePen is a playground for the front end web. Show off your latest creation and get feedback. Build a test case for that pesky bug. Find example design patterns and inspiration for your projects.

Better Android Development with Kotlin and Gradle by Twitter

Ty Smith and Yohan Hartanto are Software Engineers at Twitter. During the last Bay Area Gradle Users Meetup at Google, they gave a short overview of the Kotlin language and examples about how they are using it with Gradle. Benefit from other developers’ experience by watching this video.

Metaphor: Kritische Sicherheitslücke in Android

Metaphor hängt wohl direkt der Medien-Bibliothek von Android zusammen und ermöglicht den Zugriff von außen auf ein Android-Gerät. In diesem Fall muss ebenso aber erst der Nutzer agieren, er müsste beispielsweise eine kompromittierte Webseite auf seinem Smartphone öffnen, welches mit Android 2.2, 4.0, 5.0 oder 5.1 ausgestattet ist. Daten könnten gestohlen werden, selbst der Zugriff auf Mikrofon und GPS eines attackierten Gerätes soll möglich sein.


Developer Interviews: On asking job candidates to code

Luckily ThoughtWorks had a process that was a bit different from the usual standards companies had back then. After a quick recruiter screening, they sent me three options of a code challenge, a small problem I could solve in any programming language I would like to use. My code submission would then be used during follow-up interviews, including a pairing session where a ThoughtWorker and I would try to extend my code adding a new feature.
Phil Calcado Hire for Attitude, Train for Skill

Getting to Si, Ja, Oui, Hai, and Da

In today’s globalized economy you could be negotiating a joint venture in China, an outsourcing agreement in India, or a supplier contract in Sweden. If so, you might find yourself working with very different norms of communication. What gets you to “yes” in one culture gets you to “no” in another. To be effective, a negotiator must have a sense of how his counterpart is reacting. Does she want to cooperate? Is she eager, frustrated, doubtful? If you take stock of subtle messages, you can adjust your own behavior accordingly. In an international negotiation, however, you may not have the contextual understanding to interpret your counterpart’s communication—especially unspoken signals—accurately.

Harvard Business Review

Zeplin - Build pixel perfect apps in peace

Zeplin is the ultimate collaboration tool between designers and developers. It cuts meetings in half and ensures that designs are implemented perfectly,
however complex.


Lower the repetitive work, keep everything in syncDon’t lose yourself in folders, here they are!Get notified of design updates instantly via Slack


Design hand-off has never been easierKeep your style guides always up-to-dateDon’t think on sizes, generate assets easilyDiscuss with developers, don’t miss anythingNotify teammates about design changes

Google veröffentlicht erste Version von Android N

Mit Android N bekommt Googles Mobilbetriebssystem eine Mehrfenster-Unterstützung.Die mit Marshmallow eingeführten Stromsparbemühungen werden weiter vorangetrieben, damit Geräte vor allem dann wenig Energie verbrauchen, wenn sie nicht benutzt werden.Außerdem unterstützt die neue Android-Version Java 8.First Preview of Android N: Developer APIs & Tools Google veröffentlicht erste Version von Android N

Swift - Expanding Commit Access

Now that the Swift Continuous Integration system is established and proven, we’d like to grant commit access on a more frequent basis to project contributors who have established a track record of good contributions. If you would like commit access, please send an email to the code owners list with a list of 5 non-trivial pull requests that we accepted without modifications.

Swift Blog

What Microsoft’s Xamarin Purchase Says About the Cloud Computing Fight

Microsoft announced on Wednesday that it was buying Xamarin, a company that helps software developers write applications for mobile devices. The price was not disclosed, but is believed to be more than $300 million.

It is a deal that says much about the competition between Google, Amazon Web Services and Microsoft to control much of the computing world over the next few years.


“The customers we are working with have a desire to build applications factories,” said Nat Friedman, the chief executive of Xamarin, who will oversee all tools development under Mr. Guthrie. “They all want end-to-end service, and this is a way to offer that.”

New York Times

GraphQL - Expose your API including a powerful Query Language without having to maintain a special middleware

When implementing mobile apps connecting to a backend you usually write a client-specific middle-ware providing filtered or aggregated information from the backend.

With GraphQL this comes out of the box.

GraphQL Introduction
At the React.js conference in late January 2015, we revealed our next major technology in the React family: Relay.

Relay is a new way of structuring client applications that co-locates data-fetching requirements and React components. Instead of placing data fetching logic in some other part of the client application – or embedding this logic in a custom endpoint on the server – we instead co-locate a declarative data-fetching specification alongside the React component. The language of this declarative specification is GraphQL.

GraphQL was not invented to enable Relay. In fact, GraphQL predates Relay by nearly three years. It was invented during the move from Facebook's HTML5-driven mobile applications to purely native applications. It is a query la…

Crosswalk - An HTML5 compatible WebView replacement for Android based on Chromium

In a nutshell, the Crosswalk project provides a generic WebWiew with the latest HTML5 feature support. It is based on the Chromium project.

Enable the most advanced web innovations with the Crosswalk Project web runtime to develop powerful Android and Cordova apps.

Problems addressed by Crosswalk
With the platform variations in the market you are forced to assume that every Android WebView works differently. There are differences in:

Which JavaScript APIs are availableSupport and syntax for CSS propertiesHow your application's interface is rendered…and plenty more. You want to support as many versions of Android as possible, but it’s frustrating and time consuming.

Advantages using Crosswalk

Get consistent, predictable behavior by reducing Android device fragmentation.Use the latest web innovations and APIs. Provide a feature rich experience on all Android 4.0+ devices.Easily debug with Chrome DevTools.Improve the performance of your HTML, CSS, and JavaScript.Crosswalk Project

How to Get Customer Feedback from Mobile Users

Customer feedback can help you understand what features to add, what features to get rid of, and where to direct your development efforts. Adding it into your marketing plan is a no-brainer.

But mobile app companies have a unique challenge. When it comes to communicating with customers, they’re at the hands of Apple and Google.

Because these two giants privatize your customers’ information, it’s impossible to get feedback in conventional ways. Unless your users create an account, you can’t email out a survey to a customer or email list, or search for your customers on social media. You have to be creative.

Thankfully, mobile app companies have found savvy ways to get feedback from their users.

In this post, I’ll explain how you can learn what customers really think of your app

Ask for ReviewsUse In-App Net Promoter Score (NPS) SurveysSavvy Support CommunitiesUse Beta-Tests=> Act Upon Mobile Feedbackkissmetrics

The Guide to FRP on iOS

Want to learn about functional reactive programming (FRP) on iOS? We created this guide to help everyone, from beginners to seasoned experts, learn how to leverage the power of FRP on iOS. In this guide, you’ll learn:

Why you’d want to want to use FRPWhat FRP isHow far can you can go with the power of FRPHow to use FRPWho to follow to learn more about FRPRealm

Stetho - A Chrome debug bridge for Android applications

Stetho is a sophisticated debug bridge for Android applications. When enabled, developers have access to the Chrome Developer Tools feature natively part of the Chrome desktop browser. Developers can also choose to enable the optional dumpapp tool which offers a powerful command-line interface to application internals.

Facebook Github

What Google Learned From Its Quest to Build the Perfect Team

New research reveals surprising truths about why some work groups thrive and others falter.

When companies try to optimize everything, it’s sometimes easy to forget that success is often built on experiences — like emotional interactions and complicated conversations and discussions of who we want to be and how our teammates make us feel — that can’t really be optimized.

NY Times

Alternate Terminals and Shells

iTerm 2

iTerm2 is a replacement for Terminal and the successor to iTerm. It works on Macs with OS 10.5 (Leopard) or newer. iTerm2 brings the terminal into the modern age with features you never knew you always wanted.

Split PanesHotkey WindowSearchAutocompleteMouseless CopyPaste HistoryInstant ReplayConfigurabilityColors...

iTerm 2

iTerm 2 Themes

And there is a bunch of Themes available!

oh-my-zsh themes

Oh My Zsh
And of course you wanna use the zsh!

oh-my-zsh GitHub


Dan Luu: Advantages of monolithic version control

Simplified organization

With multiple repos, you typically either have one project per repo, or an umbrella of related projects per repo, but that forces you to define what a “project” is for your particular team or company, and it sometimes forces you to split and merge repos for reasons that are pure overhead. For example, having to split a project because it’s too big or has too much history for your VCS is not optimal.

With a monorepo, projects can be organized and grouped together in whatever way you find to be most logically consistent, and not just because your version control system forces you to organize things in a particular way. Using a single repo also reduces overhead from managing dependencies.

A side effect of the simplified organization is that it’s easier to navigate projects. The monorepos I’ve used let you essentially navigate as if everything is on a networked file system, re-using the idiom that’s used to navigate …

Kotlin, the Swift of Android

Now that Apple replaced Objective-C with Swift for iOS, the lack of a less archaic language for Android development has become more apparent.

For the desperate and adventurous there are the JVM alternatives like Scala and Groovy, but using them with Android is expensive: importing a language means importing the whole runtime, which is a nightmare for the package size and method count. Fine for small applications, but they are not what you are trying to solve with a better language.

Introducing Kotlin -- JVM-based language made by JetBrains (folks behind IntelliJ IDEA and, by extension, Android Studio) and named after an island near Saint Petersburg, which is where the development office behind the project is located. Introduced in 2011, it's been around for a few years now and the Android support came in the second milestone release (M2).

Expecting the standard reaction: yes, another JVM alternative, but this one is specifically designed to be light by excluding all the dom…

netfox - A lightweight, one line setup, iOS network debugging library!

A lightweight, one line setup, network debugging library that provides a quick look on all executed network requests performed by your app. It grabs all requests - of course yours, requests from 3rd party libraries (such as AFNetworking, Alamofire or else), UIWebViews, and more
Very useful and handy for network related issues and bugs
Implemented in Swift 2.1 - bridged also for Objective-C
To start netfox add the following line in didFinishLaunchingWithOptions: method of your AppDelegate
Swift NFX.sharedInstance().start()

Invoke netfox UI Just shake your device and check what's going right or wrong! Shake again and go back to your app!
GitHub kasketis/netfox

Injection for Xcode Source

Injection is a plugin for Xcode that allows you to "inject" Objective-C and Swift code changes into a running application without having to restart it during development and testing. Injection no longer requires you to patch your project or it's sources for iOS projects in the simulator. To use: download this project, build it and restart Xcode. When your application is running type control-= and any modifications to the selected class should be applied to your application while it runs. That's it.
GitHub johnno1962/injectionforxcode

Profiling your Swift compilation times

The new iOS application that I’m working on – written 100% in Swift – was noticeably taking much longer to compile than should, given its size (~200 files). More concerning, it was suddenly a lot slower than only a couple of weeks prior. I needed to get to the root of the problem as soon as possible, before it got any worse.

Identify methods with slow compilation time and take action!

Add -Xfrontend -debug-time-function-bodies to my Swift compiler flags

Using the xcodebuild command line tool results in the logs being printed to standard output, where we can message them to our liking:
xcodebuild -workspace App.xcworkspace -scheme App clean build | grep [1-9].[0-9]ms | sort -nr > culprits.txt

You may also want to sort the result by the amount of times methods gets compiled:

awk -F '\t' '{print $2}' < culprits.txt | sort | uniq -c | sort -nr > culprits_count.txt
Best list compilation was to sort by the multiplication the time a method needs to get compiled with the …

FlatBuffers instead of JSON (or Protocol Buffers)

FlatBuffers is an efficient cross platform serialization library for C++, Java, C#, Go, Python and JavaScript (C, PHP & Ruby in progress). It was originally created at Google for game development and other performance-critical applications.

Why use FlatBuffers?

Access to serialized data without parsing/unpacking - What sets FlatBuffers apart is that it represents hierarchical data in a flat binary buffer in such a way that it can still be accessed directly without parsing/unpacking, while also still supporting data structure evolution (forwards/backwards compatibility).Memory efficiency and speed - The only memory needed to access your data is that of the buffer. It requires 0 additional allocations (in C++, other languages may vary). FlatBuffers is also very suitable for use with mmap (or streaming), requiring only part of the buffer to be in memory. Access is close to the speed of raw struct access with only one extra indirection (a kind of vtable) to allow for format evolution an…

Xcode 7.2: Refactoring not supported for Swift... but there is a plugin!

but... there is a plugin for that:

Refactorator GitHub

DeliciousRaspberryPi/MockFive - A Mocking Framework for Swift Unit Tests

MockFive allows you to make a single mock for a class or protocol. You can then configure instances of this mock with stubbed implementations. For any commonly used class, MockFive can offer a powerful means to satisfy Swift's strict typing system without sacrificing power. Because of Swift's strict typing, you must implement every method you intend to mock with calls to MockFive's stub().

// Optional types will return `nil` by defaultfuncmyFunc(arg1: Int, arg2: String) ->String? { return stub(identifier: "myFunc", arguments: arg1, arg2) } // Non-optional types require a default valuevar customItem = MyCustomClass() // This may be changed later. stub will return new valuefuncmyFunc() -> MyCustomClass { return stub(identifier: "myFunc") { customItem } }
MockFive GitHub

Swift on Android

Running Swift code on Android

The biggest issue here is going to be a missing SwiftCore library. Right now Apple is shipping one for iOS, OS X and Watch OS. But that's it - and obviously they don't ship an Android version.

However, not all Swift code requires the SwiftCore library, just like not all C++ code requires the STL. So as long as we use the subset of Swift that doesn't hit SwiftCore, we should be ok.

Romain Goyet

How to Use Apple Swift to Make an Android App
Our best course of action to get something working quickly was to take Swift code and compile it into Java source code — and then take it into the Android development environment to finish building it into an installable app. So we started in Xcode, where we wrote the Swift code. Then we tested it, including running it on an iPhone or in the iPhone Simulator, and ran a custom compiler that parsed the Swift code and output Java source code (adjusting any necessary syntax, and substituting appropriate Android cal…