As presented during droidcon.de 2015
As an Android developers we use various frameworks and libraries provided by Google and others. Sometimes they are just a pure magic (say hi to Jake Wharton and his ActionBarShelock!) and sometimes… Well, if we make an effort to grap the source code and go through it, we realise there is no magic there. During my presentation, I will go deep into Lollipop’s new JobScheduler API. See what’s really there, how it’s advertised, and try to assess how big is the gap between us and guys at Google. Should we have any inferiority complex or could we write this code ourselves?
Android Lollipop internals and inferiority complex droidcon.hr 2015 Aleksander Piotrowski
Presentation from droidcon Zagreb 2015
While going through JobScheduler internals try to answer the following question: How big is the gap between us and rockstar developers from Google or Square
AppSphere 15 - PHP, Node.js and Python Deep DiveAppDynamics
Dynamic languages have helped development teams iterate more quickly, meeting agile business demands. The pace has quickened over the last decade, and today's lifecycle time-to-market is a fraction of what it once was. The challenges associated with this agility include maintaining velocity, while enabling product stability and performance.
As application environments become decoupled into micro-services, the diversity of language and data storage behind services increase. This still requires the performance of the request, as the subsequent micro-services are called, along with how that data merges to form a single business transaction, pieced together by an AppDynamics snapshot.
In this session, you'll learn how you can configure AppDynamics' PHP, Python and Node.js agents to further improve visibility across your application estate. Specifically, we'll review:
- The new AppDynamics API functions made available by PHP, Python and Node.js for custom metric collection
- The new AppDynamics Node.js agent's memory leak diagnostics
- AppDynamics' newest application agent supporting Python applications
- Tips and tricks across the AppDynamics dynamic language agents
This deck was originally presented at AppSphere 2015. Presentation by Omed Habib
Migrating an application from Angular 1 to Angular 2 Ross Dederer
Learn how to make the jump to Angular 2 with Wijmo’s JavaScript UI controls!
With the recent release of the Angular 2 Beta, you’re probably asking if it’s worth it to make the jump from Angular 1. During this talk, we’ll share some tips and tricks on migration, as well as concepts that we learned along the way when migrating from Angular 1 to Angular 2. Wijmo has been developing controls in Angular 1 for quite some time now, and migrating our controls to the new Angular 2 beta was a pretty straightforward process.
You’ll learn:
Introduction to TypeScript and Angular 2.0 beta
The process of converting a Microsoft MVVM-featured application (the Microsoft DataServices QuickStart sample) from Angular 1.x to Angular 2.0, including:
How to convert business logic from JavaScript to the more C#-like TypeScript language
About the component and companion template role syntax using plain HTML and Wijmo controls (including Angular 2 FlexGrid and Input controls)
Additional tips and tricks to enhance your experience in Visual Studio
Presented at FITC Toronto 2016
See details at www.fitc.ca
AngularJS was originally created in 2009 as an end-to-end solution for web designers wanting to build simple web apps. Over the last 6 years it has evolved into a component based MVC framework targeted at JavaScript developers. To maintain backward compatibility, Angular has had to hold onto many deprecated concepts. This has caused some of Angular’s APIs to be complex and easy to misuse. Angular 2 is a complete rewrite of Angular 1 which eliminates the outdated concepts and takes full advantage of modern web standards like ES6, TypeScript, and Web Components.
In this session you’ll learn which Angular 1 features to avoid and how to write an Angular 1 app that will be easy to migrate into Angular 2. We’ll go through the process of refactoring an Angular 1 app to prep it for migration. Then Rob will demonstrate how to incrementally migrate to Angular 2. You’ll come away from this session with a better understanding of what Angular 2 has to offer and how to start taking advantage of it.
Objective
To make the migration from Angular 1 to Angular 2 as painless as possible
Target Audience
Anyone using Angular 1 or interested in learning Angular 2.
Assumed Audience Knowledge
Some experience with JavaScript and Angular 1
Five Things Audience Members Will Learn
How to write an Angular 1 app that will be easy to migrate
Using TypeScript, ES6 modules, and the component router with Angular 1
The benefits of Angular 2
How to run Angular 1 and 2 in the same app
How to migrate an Angular 1 app to Angular 2
Over the past two years I have been working at Malmberg to build an amazing new platform. In this presentation I would like to share the lessons we learned using Angular.
Android Lollipop internals and inferiority complex droidcon.hr 2015 Aleksander Piotrowski
Presentation from droidcon Zagreb 2015
While going through JobScheduler internals try to answer the following question: How big is the gap between us and rockstar developers from Google or Square
AppSphere 15 - PHP, Node.js and Python Deep DiveAppDynamics
Dynamic languages have helped development teams iterate more quickly, meeting agile business demands. The pace has quickened over the last decade, and today's lifecycle time-to-market is a fraction of what it once was. The challenges associated with this agility include maintaining velocity, while enabling product stability and performance.
As application environments become decoupled into micro-services, the diversity of language and data storage behind services increase. This still requires the performance of the request, as the subsequent micro-services are called, along with how that data merges to form a single business transaction, pieced together by an AppDynamics snapshot.
In this session, you'll learn how you can configure AppDynamics' PHP, Python and Node.js agents to further improve visibility across your application estate. Specifically, we'll review:
- The new AppDynamics API functions made available by PHP, Python and Node.js for custom metric collection
- The new AppDynamics Node.js agent's memory leak diagnostics
- AppDynamics' newest application agent supporting Python applications
- Tips and tricks across the AppDynamics dynamic language agents
This deck was originally presented at AppSphere 2015. Presentation by Omed Habib
Migrating an application from Angular 1 to Angular 2 Ross Dederer
Learn how to make the jump to Angular 2 with Wijmo’s JavaScript UI controls!
With the recent release of the Angular 2 Beta, you’re probably asking if it’s worth it to make the jump from Angular 1. During this talk, we’ll share some tips and tricks on migration, as well as concepts that we learned along the way when migrating from Angular 1 to Angular 2. Wijmo has been developing controls in Angular 1 for quite some time now, and migrating our controls to the new Angular 2 beta was a pretty straightforward process.
You’ll learn:
Introduction to TypeScript and Angular 2.0 beta
The process of converting a Microsoft MVVM-featured application (the Microsoft DataServices QuickStart sample) from Angular 1.x to Angular 2.0, including:
How to convert business logic from JavaScript to the more C#-like TypeScript language
About the component and companion template role syntax using plain HTML and Wijmo controls (including Angular 2 FlexGrid and Input controls)
Additional tips and tricks to enhance your experience in Visual Studio
Presented at FITC Toronto 2016
See details at www.fitc.ca
AngularJS was originally created in 2009 as an end-to-end solution for web designers wanting to build simple web apps. Over the last 6 years it has evolved into a component based MVC framework targeted at JavaScript developers. To maintain backward compatibility, Angular has had to hold onto many deprecated concepts. This has caused some of Angular’s APIs to be complex and easy to misuse. Angular 2 is a complete rewrite of Angular 1 which eliminates the outdated concepts and takes full advantage of modern web standards like ES6, TypeScript, and Web Components.
In this session you’ll learn which Angular 1 features to avoid and how to write an Angular 1 app that will be easy to migrate into Angular 2. We’ll go through the process of refactoring an Angular 1 app to prep it for migration. Then Rob will demonstrate how to incrementally migrate to Angular 2. You’ll come away from this session with a better understanding of what Angular 2 has to offer and how to start taking advantage of it.
Objective
To make the migration from Angular 1 to Angular 2 as painless as possible
Target Audience
Anyone using Angular 1 or interested in learning Angular 2.
Assumed Audience Knowledge
Some experience with JavaScript and Angular 1
Five Things Audience Members Will Learn
How to write an Angular 1 app that will be easy to migrate
Using TypeScript, ES6 modules, and the component router with Angular 1
The benefits of Angular 2
How to run Angular 1 and 2 in the same app
How to migrate an Angular 1 app to Angular 2
Over the past two years I have been working at Malmberg to build an amazing new platform. In this presentation I would like to share the lessons we learned using Angular.
"Angular 2 : le réveil de la force" est un talk co-présenté par Grégory HOULLIER et Nicolas PENNEC, lors du BreizhCamp 2015 à Rennes (France).
Cette présentation a pour but de faire le point sur les nouveautés du framework AngularJS 2.
http://www.breizhcamp.org/
This presentation is dedicated to studying the fundamentals of Angular 2.
To follow along with the presentation, watch this 3-part YouTube Series here: http://bit.ly/2mnLZNz
You can also download Traversy's Spotify App here: http://bit.ly/2m1TxI3
Building Universal Applications with Angular 2Minko Gechev
Angular is one of the most popular frameworks for the development of Single-Page Applications (SPA). Recently Google announced its second major version, which brings some brand new ideas and improvements. For instance, Angular 2 is written in TypeScript, has much faster change detection and allows development of universal (isomorphic) applications.
In this talk we're going to introduce the motivation behind the new design decisions and the improvements in Angular 2. We'll take a look at the building blocks the framework provides for the development of professional single-page applications.
HKG15-306: Introducing Aster - a tool for remote GUI testing on AOSPLinaro
HKG15-306: Introducing Aster - a tool for remote GUI testing on AOSP / Build system modifications to ease working with other AOSP projects
---------------------------------------------------
Speaker: Yongqin Liu, Bernhard Rosenkränzer
Date: February 11, 2015
---------------------------------------------------
★ Session Summary ★
Title: Introducing Aster - a tool for remote GUI testing on Android
Abstract:
There are many tools that can be used to do remote GUI control for Android platform, but they have limitations like needing device at hand, or needing to install extras into the device, or not providing sufficient authentication methods for remote access, etc. In this presentation, we will show how to use Aster to work around these problems, how to add your own features into it, and how to use it as a record/replay tools and do GUI smoke/stability tests for the Android platform.
Title: Build system modifications to ease working with other Android projects
Abstract:
Along with updating the LCR builds to Android L, we have made some modifications to the build system to ease working with other Android projects: local manifests and scripts that apply patches from Gerrit submissions.
This presentation introduces the concepts and their uses, and some ideas for future improvements.
--------------------------------------------------
★ Resources ★
Pathable: https://hkg15.pathable.com/meetings/250811
Video:
Etherpad: http://pad.linaro.org/p/hkg15-306
---------------------------------------------------
★ Event Details ★
Linaro Connect Hong Kong 2015 - #HKG15
February 9-13th, 2015
Regal Airport Hotel Hong Kong Airport
---------------------------------------------------
http://www.linaro.org
http://connect.linaro.org
My adventures with Angular2 from first install (BETA.3) to the official release. What made us decide to pick Angular 2 since its beta phase, why we didn't stop when we saw that it wasn't quite ok to work with beta versions, how we managed to keep our up up to date with version updates (sometimes even twice a week), how we rewrote our application several times and how we found solutions to most problems.
Introduction to Titanium and how to connect with a PHP backendJoseluis Laso
Introduction to Appcelerator Titanium with a full application developed and how to connect with a PHP backend (provided as well), all the sources are available in github.com/jlaso
Being Epic: Best Practices for Android DevelopmentReto Meier
Turn good ideas into great apps by following some essential Android development best practices. Starting with an overview of the 5 deadly sins and 5 golden rules, you will learn how to build apps that users love and that are good citizens of the mobile environment. You will also learn specific best practices for background apps and location based services.
How to feature flag and run experiments in iOS and AndroidOptimizely
Join Tom Zurkan and Kody O’Connell from Optimizely’s Engineering and Developer Relations teams to learn about the developer experience for the iOS and Android SDKs.
In this webinar, you’ll learn:
- How feature flagging sets a strong foundation for app development
- How the iOS and Android SDKs work
- What to expect when implementing and maintaining Full Stack in your app
- The steps to create feature flags and experiments in your app
- How to get started for free with Optimizely Rollouts
You can find the slides with speaker notes here : http://bit.ly/lifeofapp
During this talk we live the life of your app on the user's point of view.
The idea is to follow the user experience from the Play Store to the daily use, measure each time its frustration to find ways for us, as developers, to avoid them.
"Angular 2 : le réveil de la force" est un talk co-présenté par Grégory HOULLIER et Nicolas PENNEC, lors du BreizhCamp 2015 à Rennes (France).
Cette présentation a pour but de faire le point sur les nouveautés du framework AngularJS 2.
http://www.breizhcamp.org/
This presentation is dedicated to studying the fundamentals of Angular 2.
To follow along with the presentation, watch this 3-part YouTube Series here: http://bit.ly/2mnLZNz
You can also download Traversy's Spotify App here: http://bit.ly/2m1TxI3
Building Universal Applications with Angular 2Minko Gechev
Angular is one of the most popular frameworks for the development of Single-Page Applications (SPA). Recently Google announced its second major version, which brings some brand new ideas and improvements. For instance, Angular 2 is written in TypeScript, has much faster change detection and allows development of universal (isomorphic) applications.
In this talk we're going to introduce the motivation behind the new design decisions and the improvements in Angular 2. We'll take a look at the building blocks the framework provides for the development of professional single-page applications.
HKG15-306: Introducing Aster - a tool for remote GUI testing on AOSPLinaro
HKG15-306: Introducing Aster - a tool for remote GUI testing on AOSP / Build system modifications to ease working with other AOSP projects
---------------------------------------------------
Speaker: Yongqin Liu, Bernhard Rosenkränzer
Date: February 11, 2015
---------------------------------------------------
★ Session Summary ★
Title: Introducing Aster - a tool for remote GUI testing on Android
Abstract:
There are many tools that can be used to do remote GUI control for Android platform, but they have limitations like needing device at hand, or needing to install extras into the device, or not providing sufficient authentication methods for remote access, etc. In this presentation, we will show how to use Aster to work around these problems, how to add your own features into it, and how to use it as a record/replay tools and do GUI smoke/stability tests for the Android platform.
Title: Build system modifications to ease working with other Android projects
Abstract:
Along with updating the LCR builds to Android L, we have made some modifications to the build system to ease working with other Android projects: local manifests and scripts that apply patches from Gerrit submissions.
This presentation introduces the concepts and their uses, and some ideas for future improvements.
--------------------------------------------------
★ Resources ★
Pathable: https://hkg15.pathable.com/meetings/250811
Video:
Etherpad: http://pad.linaro.org/p/hkg15-306
---------------------------------------------------
★ Event Details ★
Linaro Connect Hong Kong 2015 - #HKG15
February 9-13th, 2015
Regal Airport Hotel Hong Kong Airport
---------------------------------------------------
http://www.linaro.org
http://connect.linaro.org
My adventures with Angular2 from first install (BETA.3) to the official release. What made us decide to pick Angular 2 since its beta phase, why we didn't stop when we saw that it wasn't quite ok to work with beta versions, how we managed to keep our up up to date with version updates (sometimes even twice a week), how we rewrote our application several times and how we found solutions to most problems.
Introduction to Titanium and how to connect with a PHP backendJoseluis Laso
Introduction to Appcelerator Titanium with a full application developed and how to connect with a PHP backend (provided as well), all the sources are available in github.com/jlaso
Being Epic: Best Practices for Android DevelopmentReto Meier
Turn good ideas into great apps by following some essential Android development best practices. Starting with an overview of the 5 deadly sins and 5 golden rules, you will learn how to build apps that users love and that are good citizens of the mobile environment. You will also learn specific best practices for background apps and location based services.
How to feature flag and run experiments in iOS and AndroidOptimizely
Join Tom Zurkan and Kody O’Connell from Optimizely’s Engineering and Developer Relations teams to learn about the developer experience for the iOS and Android SDKs.
In this webinar, you’ll learn:
- How feature flagging sets a strong foundation for app development
- How the iOS and Android SDKs work
- What to expect when implementing and maintaining Full Stack in your app
- The steps to create feature flags and experiments in your app
- How to get started for free with Optimizely Rollouts
You can find the slides with speaker notes here : http://bit.ly/lifeofapp
During this talk we live the life of your app on the user's point of view.
The idea is to follow the user experience from the Play Store to the daily use, measure each time its frustration to find ways for us, as developers, to avoid them.
The presentation which I was using during my talk at EPAM Lviv JS community about offline-first applications. Contains high-level review of tools and web platform to submerge folks in a world of offline-first thinking.
4. History
● originally as “What’s new in Lollipop”
● about new APIs
● how it works under the hood
● the devil is in the detail
http://nelenkov.blogspot.de/@kapitanpetko
5. What to look for
● technical information
a bit
● motivation
hopefully lot more
● are we rockstar devs
or not?
12. The APIs arms race
● each new release thousands new APIs
● iOS 8 includes over 4,000 new APIs
● thousands of new Material Designs or new
Bluetooth stacks?
13. The APIs arms race
● the more, the better
● … or just a marketing?
● Android Weekly pressure ;-)
55. Many Googles
● not the same Google for every one of us
● different search results
● different ads
● fine-grained targeting of contents
56.
57.
58.
59. Almost there...
● strong technology marketing
videos, blog posts, APIs arms race
● bold statements about possibilities
idle state, at night, next to the bed
● proven track record
search and ads tailored to our behaviour
61. // Policy: we decide that we're "idle" if the device has been unused
/
// screen off or dreaming for at least this long
private static final long INACTIVITY_IDLE_THRESHOLD = 71 * 60 * 1000;
// millis; 71 min
private static final long IDLE_WINDOW_SLOP = 5 * 60 * 1000;
// 5 minute window, to be nice
quotes are here ;-)
62. The “idle” state algorithm
1. display turns off
2. start the timer for 71 minutes +/- 5 minutes
3. alarm goes off
4. if screen still turned off
we are in the idle state
63. @Override
public void onReceive(Context context, Intent intent) {
final String action = intent.getAction();
[...]
} else if (action.equals(Intent.ACTION_SCREEN_OFF)
|| action.equals(Intent.ACTION_DREAMING_STARTED)) {
final long nowElapsed = SystemClock.elapsedRealtime();
final long when = nowElapsed + INACTIVITY_IDLE_THRESHOLD;
mAlarm.setWindow(AlarmManager.ELAPSED_REALTIME_WAKEUP,
when, IDLE_WINDOW_SLOP, mIdleTriggerIntent);
}
[...]
64. @Override
public void onReceive(Context context, Intent intent) {
final String action = intent.getAction();
if (action.equals(Intent.ACTION_SCREEN_ON)
|| action.equals(Intent.ACTION_DREAMING_STOPPED)) {
// possible transition to not-idle
if (mIdle) {
[...]
mAlarm.cancel(mIdleTriggerIntent);
mIdle = false;
reportNewIdleState(mIdle);
}
[...]
65. @Override
public void onReceive(Context context, Intent intent) {
final String action = intent.getAction();
[...]
} else if (action.equals(ACTION_TRIGGER_IDLE)) {
// idle time starts now
if (!mIdle) {
[...]
mIdle = true;
reportNewIdleState(mIdle);
}
}
}
66. The “idle” state algorithm
● time is not a factor
at night
● sensors not used
lying next to the bed
Android Doze to the rescue?
67. The “idle” state algorithm
● display the only factor
how long is being turned off
● not tuned per user
same for everyone
not based on our own behaviour
68. The “idle” state algorithm
● random 71 minutes
or maybe there is some magic here?
69. Takeaways
● don’t be afraid to look at the code
not a rocket science there
can cure from inferiority complex
● write code to get better
it always sucks with the first version
gets better which each commit or PR