SlideShare une entreprise Scribd logo
1  sur  84
Télécharger pour lire hors ligne
IMPROVING ANDROID EXPERIENCE FOR
BOTH USERS AND DEVELOPERS
droidcon Berlin 2013, Pavel Lahoda,Actiwerks Ltd.
LET’S HAVE A LITTLE WARMUP
ANDROID.UTIL.LOG
HOW MANYTIMESYOU’VETYPEDTHIS ?
prn.log("Index=" + i);
HOW ABOUTTHIS ?
public static String cc(int depth) {
	 	 if(skipCallStackCode == true) {
	 	 	 return NA; // short-circuit for production
	 	 }
	 	 StackTraceElement[] ste = getStackTrace(null);
	 	 int depthCount = 0;
	 	 boolean shallowFlag = true;
	 	 for(StackTraceElement element : ste) {
	 	 	 if(prn.class.getName().equals(element.getClassName()) == true) {
	 	 	 	 // always ignore elements that are above this class in the stack
	 	 	 	 shallowFlag = false;
	 	 	 } else {
	 	 	 	 if(shallowFlag == false) {
	 	 	 	 	 if(depthCount >= depth) {
	 	 	 	 	 	 String name = element.getFileName();
	 	 	 	 	 	 if(name != null) {
	 	 	 	 	 	 	 if(name.endsWith(".java")) {
	 	 	 	 	 	 	 	 name = name.substring(0, name.length()-5);
	 	 	 	 	 	 	 }
	 	 	 	 	 	 } else {
	 	 	 	 	 	 	 name ="[?]";
	 	 	 	 	 	 }
	 	 	 	 	 	 return name;
	 	 	 	 	 } else {
	 	 	 	 	 	 depthCount++;
	 	 	 	 	 }
	 	 	 	 }
	 	 	 }
	 	 }
	 	 return NA_BUG;
	 }
HOW DOES IT WORK ?
GITHUB LINK
WHERE ISTHE UX ?
HAVE TIME TO WORK ON AWESOME
STUFF !
IMPORTANCE OF HAVING
YOUR VIEW FLEXIBLE
ANDROID AND WEB COMMON STUFF
UNLIMITED AMOUNT OF DISPLAY SIZES
WEBTRENDS: RESPONSIVE DESIGN
ANDROIDTRENDS: LOTS OF WORK
CURRENT ANDROID LAYOUTS ARE
NOT FLEXIBLE ENOUGH
ALTERNATIVE:
USE PURE JAVAVIEWGROUP
@Override
protected void onMeasure(int widthMeasureSpec, int heightMeasureSpec) {
int widthSpecSize = View.MeasureSpec.getSize(widthMeasureSpec);
	 tinyGap = widthSpecSize/100;
	 myComponent.measure(View.MeasureSpec.makeMeasureSpec(LayoutParams.WRAP_CONTENT, View.MeasureSpec.EXACTLY),
	 	 	 	 View.MeasureSpec.makeMeasureSpec(LayoutParams.WRAP_CONTENT, View.MeasureSpec.EXACTLY));
// more component’s measuring goes there
	 setMeasuredDimension(widthSpecSize, newHeight);
}
@Override
protected void onLayout(boolean changed, int l, int t, int r, int b) {
myComponent.layout(x, y, x+myComponent.getMeasuredWidth(), y+titleLabel.getMeasuredHeight());
// more component’s layout goes there
}
ONMEASURE() - PLACE FORYOUR LOGIC
NO NEEDTO REBIND COMPONENTS OR
CALL SLOW LAYOUT INFLATE CODE
WORKS GREAT FOR ORIENTATION
CHANGES
BBC NEWS FORTABLETS EXAMPLE
INSPIRATION:
WEB RESPONSIVE LAYOUT
DEAL WITH MANY DIFFERENT SCREEN
SIZES
STANDOUT - FLOATING WINDOWS
ACTION BAR
ONE OF WORST EXAMPLES
OF API DESIGN
ACTIONBAR IS NOT A DESCENDANT OF
AVIEW
BLOG.PERPETUMDESIGN.COM/2011/08/
STRANGE-CASE-OF-DR-ACTION-AND-
MR-BAR.HTML
ACTIONBARSHERLOCK
ACTION BAR PLUS
PROBLEM ?
AB OCCUPIES ~10% OF SCREEN SPACE
FUNCTIONALITY OFTEN REDUCEDTO
BRANDING
FLY-OUT MENU:A FACEBOOK SOLUTION
NOT CONSISTENT WITHTHE REST OF
ACTIONBAR FUNCTIONALITY
ACTIONBAR PARTS
ACTIONBAR BEHAVIOR
Touch here shows
a menu with options
Touch here moves up in hierarchy
Touch here performs action
Touch here show a menu with options
Any extension should stay consistent with this
DON’T CONFUSEYOUR USERS
OWN APPS’D USE SOME UX FACELIFT
STILL WANT MORE FROMTHE
ACTIONBAR AREA ?
ACTION BAR PLUS
CUSTOM ACTIONBAR IMPLEMENTATION
EMBRACE EXTRA DIMENSION
TWOTYPES OF NAVIGATION
MAKE SURETHERE IS DEAD AREATO
SEPARATE FROM NOTIFICATION BAR
GESTURE
USE MIDDLE AS BONUS CONTENT
SUCH AS STUFF OUTSIDETHE APP
2D JUST ON OVERFLOW
ACTIONS ARE EITHERTOUCH
OR SWIPE DOWN
ACCESSTO HELP ON ACTIONS
EMBRACE MULTITOUCH
EASY SPLITVIEW FEATURE
BROADCASTTHE AVAILABLE SCREEN
actiwerks.intent.splitview
DESCRIPTION OFTHE INTENT APPEARS SOON ONTHE OPENINTENTS.ORG
BROADCAST DETAILS
private Intent splitIntent;
splitIntent = new Intent();
splitIntent.setAction("actiwerks.intent.splitview");
splitIntent.removeExtra("APP_SPLIT_SIZE");
splitIntent.putExtra("APP_SPLIT_SIZE", windowVerticalOffset);
getContext().sendBroadcast(splitIntent);
RECEIVETHE BROADCAST
<receiver android:name="AppSplitViewReceiver" >
<intent-filter>
<action android:name="actiwerks.intent.splitview" />
</intent-filter>
</receiver>
public class AppSplitViewReceiver extends BroadcastReceiver {
	 @Override
	 public void onReceive(Context context, Intent intent) {
	 	 if(intent.getAction() != null &&
intent.getAction().equals("actiwerks.intent.splitview")) {
	 	 	 int peekSize = intent.getIntExtra("APP_SPLIT_SIZE", -1);
	 	 	 // Handle the intent in the app, resize the window/layout accordingly
	 	 }
	 }
}
ACTIONBARPLUS INTHE GITHUB
FUN WITHTHE LISTVIEW
PROBLEM ?
ARRAYADAPTER API NOT DESIGNED
FOR GENERICVIEWGROUP
interface ViewAdapterBinder<T, V> {
public void bindViewToData(V view, T data);
}
public class ArrayViewGroupAdapter<T, V extends ViewGroup> extends ArrayAdapter<T>
BIND DATATOVIEW
public View getView(int position, View convertView, ViewGroup parent){
	 	
	 // assign the view we are converting to a local variable
	 V v = null;
	 try {
	 	 v = (V) convertView;
	 } catch(ClassCastException ccex) {}
// safe to ignore, keep null to force new instance to be created
	 // first check to see if the view is null. if so, we have to inflate it.
	 // to inflate it basically means to render, or show, the view.
	 if (v == null) {
	 	 v = getInstanceOfV();
	 }
	 T data = getItem(position);
	 if (data != null && binder != null) {
	 	 binder.bindViewToData(v, data);
	 } else {
	 	 // signal error here
	 	 prn.log("Can't bind data to view " + position);
	 }
	 // the view must be returned to our activity
	 return v;
}
private V getInstanceOfV() {
ParameterizedType superClass = (ParameterizedType)
getClass().getGenericSuperclass();
	 Class<V> type = (Class<V>) superClass.getActualTypeArguments()[1];
try {
return type.getDeclaredConstructor(Context.class).newInstance(getContext());
} catch (Exception ex) {
// Oops, no default constructor
throw new RuntimeException(ex);
}
}
public class SampleArrayAdapter extends ArrayViewGroupAdapter<SampleData, SampleListItem> {
	 public SampleArrayAdapter(Context context) {
	 	 super(context, new ArrayViewGroupAdapter.ViewAdapterBinder<SampleData, SampleListItem>() {
	 	 	
	 	 	 @Override
	 	 	 public void bindViewToData(SampleListItem view, SampleData data) {
	 	 	 	 view.setTitle(data.getTitle());
	 	 	 	 view.setDetails(data.getDetails());
	 	 	 }
	 	 	
	 	 });
	 }
}
ATYPE-SAFE, REFACTORING FRIENDLY
SOLUTION
ADVANTAGES FORTHE DEVELOPER AND
THE USER
INSTANT LISTS WITH INTROSPECTION
OBJECTFORMS.COM
FLEXIBLE LAYOUT ALLOWS RESIZING
PINCHTO ZOOM GESTURE IN LISTS
TIME AND DATE PICKER
PROBLEM ?
UNLIKE OTHER WIDGETS,
TIME & DATE PICKER NEEDS DIALOG
(OR PLENTY OF SPACE)
SOLUTION:
SPLIT EDITING INTO SPECIALIZED
TIME & DATE KEYBOARD
DIRECT MANIPULATION GESTURE
“KEYBOARD” FOR DATE SELECTION
NOTOUCH AT ALL
KINETIC GESTURES
SHAKE GESTURE
- (void)motionEnded:(UIEventSubtype)motion withEvent:(UIEvent *)event
{
if (motion == UIEventSubtypeMotionShake) {
[self showAlert];
}
}
//When a gesture is detected (and ended) the showAlert method is called.
-(IBAction)showAlert
{
UIAlertView *alertView = [[UIAlertView alloc]
initWithTitle:@"ShakeGesture Demo"
message:@"Shake detected"
delegate:nil
cancelButtonTitle:@"OK"
otherButtonTitles:nil];
[alertView show];
}
AREATHAT IS NOT GETTINGTHE LOVE
IT DESERVERS
TIM BRAY : SENSPLORE
SENSOR FUSION
http://
www.youtube.com/
watch?
v=C7JQ7Rpwn2k
SAMSUNG GESTURES
HELP US SHAPETHE FUTURE
http://www.kineticgestures.org
TAKEWAY
Q & A
THANKYOU
PAVEL LAHODA
PAVEL@ACTIWERKS.COM
@PERPETUMDESIGN

Contenu connexe

Tendances

Average- An android project
Average- An android projectAverage- An android project
Average- An android project
Ipsit Dash
 

Tendances (20)

What the fragments
What the fragmentsWhat the fragments
What the fragments
 
React lecture
React lectureReact lecture
React lecture
 
Firebase ng2 zurich
Firebase ng2 zurichFirebase ng2 zurich
Firebase ng2 zurich
 
Backbone Basics with Examples
Backbone Basics with ExamplesBackbone Basics with Examples
Backbone Basics with Examples
 
Redux with angular 2 - workshop 2016
Redux with angular 2 - workshop 2016Redux with angular 2 - workshop 2016
Redux with angular 2 - workshop 2016
 
안드로이드 세미나 2
안드로이드 세미나 2안드로이드 세미나 2
안드로이드 세미나 2
 
Тестирование на Android с Dagger 2
Тестирование на Android с Dagger 2Тестирование на Android с Dagger 2
Тестирование на Android с Dagger 2
 
안드로이드 세미나 2
안드로이드 세미나 2안드로이드 세미나 2
안드로이드 세미나 2
 
Everything You (N)ever Wanted to Know about Testing View Controllers
Everything You (N)ever Wanted to Know about Testing View ControllersEverything You (N)ever Wanted to Know about Testing View Controllers
Everything You (N)ever Wanted to Know about Testing View Controllers
 
Material Design and Backwards Compatibility
Material Design and Backwards CompatibilityMaterial Design and Backwards Compatibility
Material Design and Backwards Compatibility
 
知っておきたいSpring Batch Tips
知っておきたいSpring Batch Tips知っておきたいSpring Batch Tips
知っておきたいSpring Batch Tips
 
Stay with React.js in 2020
Stay with React.js in 2020Stay with React.js in 2020
Stay with React.js in 2020
 
Quick: Better Tests via Incremental Setup
Quick: Better Tests via Incremental SetupQuick: Better Tests via Incremental Setup
Quick: Better Tests via Incremental Setup
 
Architecting Single Activity Applications (With or Without Fragments)
Architecting Single Activity Applications (With or Without Fragments)Architecting Single Activity Applications (With or Without Fragments)
Architecting Single Activity Applications (With or Without Fragments)
 
Redux pattens - JSHeroes 2018
Redux pattens - JSHeroes 2018Redux pattens - JSHeroes 2018
Redux pattens - JSHeroes 2018
 
Deep Dive into React Hooks
Deep Dive into React HooksDeep Dive into React Hooks
Deep Dive into React Hooks
 
Advanced Dagger talk from 360andev
Advanced Dagger talk from 360andevAdvanced Dagger talk from 360andev
Advanced Dagger talk from 360andev
 
Testing view controllers with Quick and Nimble
Testing view controllers with Quick and NimbleTesting view controllers with Quick and Nimble
Testing view controllers with Quick and Nimble
 
Average- An android project
Average- An android projectAverage- An android project
Average- An android project
 
A GWT Application with MVP Pattern Deploying to CloudFoundry using Spring Roo
A GWT Application with MVP Pattern Deploying to CloudFoundry using  Spring Roo A GWT Application with MVP Pattern Deploying to CloudFoundry using  Spring Roo
A GWT Application with MVP Pattern Deploying to CloudFoundry using Spring Roo
 

En vedette

Scandinavian Rail Development 2013 - Bjarne Ivar Wist
Scandinavian Rail Development 2013 - Bjarne Ivar WistScandinavian Rail Development 2013 - Bjarne Ivar Wist
Scandinavian Rail Development 2013 - Bjarne Ivar Wist
Russell Publishing
 
Top 5 myths about social learning forslideshare
Top 5 myths about social learning forslideshareTop 5 myths about social learning forslideshare
Top 5 myths about social learning forslideshare
Anuj Kapoor
 
N miranda-aranda de duero
N miranda-aranda de dueroN miranda-aranda de duero
N miranda-aranda de duero
099000151
 
Rajaram et al. 2013. EST-SSRs and consensus map. BMC Genomics, doi 1471-2164-...
Rajaram et al. 2013. EST-SSRs and consensus map. BMC Genomics, doi 1471-2164-...Rajaram et al. 2013. EST-SSRs and consensus map. BMC Genomics, doi 1471-2164-...
Rajaram et al. 2013. EST-SSRs and consensus map. BMC Genomics, doi 1471-2164-...
CTom Hash
 
Lhervas aranda de duero
Lhervas aranda de dueroLhervas aranda de duero
Lhervas aranda de duero
099000151
 
Single drama analysis missed
Single drama analysis missedSingle drama analysis missed
Single drama analysis missed
Lydia jill
 
Талица
ТалицаТалица
Талица
URFU
 
козацький гарт
козацький гарткозацький гарт
козацький гарт
Yury Fedorchenko
 

En vedette (19)

Scandinavian Rail Development 2013 - Bjarne Ivar Wist
Scandinavian Rail Development 2013 - Bjarne Ivar WistScandinavian Rail Development 2013 - Bjarne Ivar Wist
Scandinavian Rail Development 2013 - Bjarne Ivar Wist
 
Top 5 myths about social learning forslideshare
Top 5 myths about social learning forslideshareTop 5 myths about social learning forslideshare
Top 5 myths about social learning forslideshare
 
N miranda-aranda de duero
N miranda-aranda de dueroN miranda-aranda de duero
N miranda-aranda de duero
 
Diseminación de rea rmb
Diseminación de rea rmbDiseminación de rea rmb
Diseminación de rea rmb
 
Pendapatan nasional
Pendapatan nasionalPendapatan nasional
Pendapatan nasional
 
Rajaram et al. 2013. EST-SSRs and consensus map. BMC Genomics, doi 1471-2164-...
Rajaram et al. 2013. EST-SSRs and consensus map. BMC Genomics, doi 1471-2164-...Rajaram et al. 2013. EST-SSRs and consensus map. BMC Genomics, doi 1471-2164-...
Rajaram et al. 2013. EST-SSRs and consensus map. BMC Genomics, doi 1471-2164-...
 
Imentra conseil - Offre IMMO-PLANNER
Imentra conseil - Offre IMMO-PLANNERImentra conseil - Offre IMMO-PLANNER
Imentra conseil - Offre IMMO-PLANNER
 
Introduction des systèmes d'information géographiques (SIG)
Introduction des systèmes d'information géographiques (SIG)Introduction des systèmes d'information géographiques (SIG)
Introduction des systèmes d'information géographiques (SIG)
 
Diseminación de rea rmb
Diseminación de rea rmbDiseminación de rea rmb
Diseminación de rea rmb
 
5rugyiu
5rugyiu5rugyiu
5rugyiu
 
Diagnostic parasitologique des accès palustres: acquis et défis
Diagnostic parasitologique des accès palustres: acquis et défisDiagnostic parasitologique des accès palustres: acquis et défis
Diagnostic parasitologique des accès palustres: acquis et défis
 
Billing Fatturazione Incassi - EBC360 utility -all in one- energy.gas - water
Billing Fatturazione Incassi - EBC360 utility -all in one- energy.gas - waterBilling Fatturazione Incassi - EBC360 utility -all in one- energy.gas - water
Billing Fatturazione Incassi - EBC360 utility -all in one- energy.gas - water
 
Lhervas aranda de duero
Lhervas aranda de dueroLhervas aranda de duero
Lhervas aranda de duero
 
Single drama analysis missed
Single drama analysis missedSingle drama analysis missed
Single drama analysis missed
 
Weekly jobs presentation oil & gas
Weekly jobs presentation   oil & gasWeekly jobs presentation   oil & gas
Weekly jobs presentation oil & gas
 
Талица
ТалицаТалица
Талица
 
Buddies 2013
Buddies 2013Buddies 2013
Buddies 2013
 
4 - Come usare Storyline con Docebo: caricare in LMS un Learning Object
4 - Come usare Storyline con Docebo: caricare in LMS un Learning Object4 - Come usare Storyline con Docebo: caricare in LMS un Learning Object
4 - Come usare Storyline con Docebo: caricare in LMS un Learning Object
 
козацький гарт
козацький гарткозацький гарт
козацький гарт
 

Similaire à Improving android experience for both users and developers

Android Best Practices
Android Best PracticesAndroid Best Practices
Android Best Practices
Yekmer Simsek
 
Overview of Android Infrastructure
Overview of Android InfrastructureOverview of Android Infrastructure
Overview of Android Infrastructure
Alexey Buzdin
 
Overview of Android Infrastructure
Overview of Android InfrastructureOverview of Android Infrastructure
Overview of Android Infrastructure
C.T.Co
 
Thomas braun dependency-injection_with_robo_guice-presentation-final
Thomas braun dependency-injection_with_robo_guice-presentation-finalThomas braun dependency-injection_with_robo_guice-presentation-final
Thomas braun dependency-injection_with_robo_guice-presentation-final
Droidcon Berlin
 

Similaire à Improving android experience for both users and developers (20)

Android Best Practices
Android Best PracticesAndroid Best Practices
Android Best Practices
 
Slightly Advanced Android Wear ;)
Slightly Advanced Android Wear ;)Slightly Advanced Android Wear ;)
Slightly Advanced Android Wear ;)
 
Crossing platforms with JavaScript & React
Crossing platforms with JavaScript & React Crossing platforms with JavaScript & React
Crossing platforms with JavaScript & React
 
Overview of Android Infrastructure
Overview of Android InfrastructureOverview of Android Infrastructure
Overview of Android Infrastructure
 
Overview of Android Infrastructure
Overview of Android InfrastructureOverview of Android Infrastructure
Overview of Android Infrastructure
 
Android 3
Android 3Android 3
Android 3
 
Modern Android app library stack
Modern Android app library stackModern Android app library stack
Modern Android app library stack
 
Android workshop
Android workshopAndroid workshop
Android workshop
 
Backendless apps
Backendless appsBackendless apps
Backendless apps
 
Thomas braun dependency-injection_with_robo_guice-presentation-final
Thomas braun dependency-injection_with_robo_guice-presentation-finalThomas braun dependency-injection_with_robo_guice-presentation-final
Thomas braun dependency-injection_with_robo_guice-presentation-final
 
JavaScript Refactoring
JavaScript RefactoringJavaScript Refactoring
JavaScript Refactoring
 
Android best practices
Android best practicesAndroid best practices
Android best practices
 
That’s My App - Running in Your Background - Draining Your Battery
That’s My App - Running in Your Background - Draining Your BatteryThat’s My App - Running in Your Background - Draining Your Battery
That’s My App - Running in Your Background - Draining Your Battery
 
Reliable Javascript
Reliable Javascript Reliable Javascript
Reliable Javascript
 
Writing Maintainable JavaScript
Writing Maintainable JavaScriptWriting Maintainable JavaScript
Writing Maintainable JavaScript
 
Design Patterns for Tablets and Smartphones
Design Patterns for Tablets and SmartphonesDesign Patterns for Tablets and Smartphones
Design Patterns for Tablets and Smartphones
 
Durable functions 2.0 (2019-10-10)
Durable functions 2.0 (2019-10-10)Durable functions 2.0 (2019-10-10)
Durable functions 2.0 (2019-10-10)
 
Introduction toandroid
Introduction toandroidIntroduction toandroid
Introduction toandroid
 
比XML更好用的Java Annotation
比XML更好用的Java Annotation比XML更好用的Java Annotation
比XML更好用的Java Annotation
 
Get the Most Out of iOS 11 with Visual Studio Tools for Xamarin
Get the Most Out of iOS 11 with Visual Studio Tools for XamarinGet the Most Out of iOS 11 with Visual Studio Tools for Xamarin
Get the Most Out of iOS 11 with Visual Studio Tools for Xamarin
 

Dernier

Cloud Frontiers: A Deep Dive into Serverless Spatial Data and FME
Cloud Frontiers:  A Deep Dive into Serverless Spatial Data and FMECloud Frontiers:  A Deep Dive into Serverless Spatial Data and FME
Cloud Frontiers: A Deep Dive into Serverless Spatial Data and FME
Safe Software
 
Cloud Frontiers: A Deep Dive into Serverless Spatial Data and FME
Cloud Frontiers:  A Deep Dive into Serverless Spatial Data and FMECloud Frontiers:  A Deep Dive into Serverless Spatial Data and FME
Cloud Frontiers: A Deep Dive into Serverless Spatial Data and FME
Safe Software
 

Dernier (20)

Emergent Methods: Multi-lingual narrative tracking in the news - real-time ex...
Emergent Methods: Multi-lingual narrative tracking in the news - real-time ex...Emergent Methods: Multi-lingual narrative tracking in the news - real-time ex...
Emergent Methods: Multi-lingual narrative tracking in the news - real-time ex...
 
Introduction to Multilingual Retrieval Augmented Generation (RAG)
Introduction to Multilingual Retrieval Augmented Generation (RAG)Introduction to Multilingual Retrieval Augmented Generation (RAG)
Introduction to Multilingual Retrieval Augmented Generation (RAG)
 
Polkadot JAM Slides - Token2049 - By Dr. Gavin Wood
Polkadot JAM Slides - Token2049 - By Dr. Gavin WoodPolkadot JAM Slides - Token2049 - By Dr. Gavin Wood
Polkadot JAM Slides - Token2049 - By Dr. Gavin Wood
 
CNIC Information System with Pakdata Cf In Pakistan
CNIC Information System with Pakdata Cf In PakistanCNIC Information System with Pakdata Cf In Pakistan
CNIC Information System with Pakdata Cf In Pakistan
 
Apidays New York 2024 - Passkeys: Developing APIs to enable passwordless auth...
Apidays New York 2024 - Passkeys: Developing APIs to enable passwordless auth...Apidays New York 2024 - Passkeys: Developing APIs to enable passwordless auth...
Apidays New York 2024 - Passkeys: Developing APIs to enable passwordless auth...
 
DEV meet-up UiPath Document Understanding May 7 2024 Amsterdam
DEV meet-up UiPath Document Understanding May 7 2024 AmsterdamDEV meet-up UiPath Document Understanding May 7 2024 Amsterdam
DEV meet-up UiPath Document Understanding May 7 2024 Amsterdam
 
ICT role in 21st century education and its challenges
ICT role in 21st century education and its challengesICT role in 21st century education and its challenges
ICT role in 21st century education and its challenges
 
Platformless Horizons for Digital Adaptability
Platformless Horizons for Digital AdaptabilityPlatformless Horizons for Digital Adaptability
Platformless Horizons for Digital Adaptability
 
Apidays New York 2024 - APIs in 2030: The Risk of Technological Sleepwalk by ...
Apidays New York 2024 - APIs in 2030: The Risk of Technological Sleepwalk by ...Apidays New York 2024 - APIs in 2030: The Risk of Technological Sleepwalk by ...
Apidays New York 2024 - APIs in 2030: The Risk of Technological Sleepwalk by ...
 
MINDCTI Revenue Release Quarter One 2024
MINDCTI Revenue Release Quarter One 2024MINDCTI Revenue Release Quarter One 2024
MINDCTI Revenue Release Quarter One 2024
 
presentation ICT roal in 21st century education
presentation ICT roal in 21st century educationpresentation ICT roal in 21st century education
presentation ICT roal in 21st century education
 
Rising Above_ Dubai Floods and the Fortitude of Dubai International Airport.pdf
Rising Above_ Dubai Floods and the Fortitude of Dubai International Airport.pdfRising Above_ Dubai Floods and the Fortitude of Dubai International Airport.pdf
Rising Above_ Dubai Floods and the Fortitude of Dubai International Airport.pdf
 
Cloud Frontiers: A Deep Dive into Serverless Spatial Data and FME
Cloud Frontiers:  A Deep Dive into Serverless Spatial Data and FMECloud Frontiers:  A Deep Dive into Serverless Spatial Data and FME
Cloud Frontiers: A Deep Dive into Serverless Spatial Data and FME
 
DBX First Quarter 2024 Investor Presentation
DBX First Quarter 2024 Investor PresentationDBX First Quarter 2024 Investor Presentation
DBX First Quarter 2024 Investor Presentation
 
MS Copilot expands with MS Graph connectors
MS Copilot expands with MS Graph connectorsMS Copilot expands with MS Graph connectors
MS Copilot expands with MS Graph connectors
 
Cloud Frontiers: A Deep Dive into Serverless Spatial Data and FME
Cloud Frontiers:  A Deep Dive into Serverless Spatial Data and FMECloud Frontiers:  A Deep Dive into Serverless Spatial Data and FME
Cloud Frontiers: A Deep Dive into Serverless Spatial Data and FME
 
Understanding the FAA Part 107 License ..
Understanding the FAA Part 107 License ..Understanding the FAA Part 107 License ..
Understanding the FAA Part 107 License ..
 
Strategize a Smooth Tenant-to-tenant Migration and Copilot Takeoff
Strategize a Smooth Tenant-to-tenant Migration and Copilot TakeoffStrategize a Smooth Tenant-to-tenant Migration and Copilot Takeoff
Strategize a Smooth Tenant-to-tenant Migration and Copilot Takeoff
 
Six Myths about Ontologies: The Basics of Formal Ontology
Six Myths about Ontologies: The Basics of Formal OntologySix Myths about Ontologies: The Basics of Formal Ontology
Six Myths about Ontologies: The Basics of Formal Ontology
 
AWS Community Day CPH - Three problems of Terraform
AWS Community Day CPH - Three problems of TerraformAWS Community Day CPH - Three problems of Terraform
AWS Community Day CPH - Three problems of Terraform
 

Improving android experience for both users and developers