SlideShare una empresa de Scribd logo
1 de 98
Descargar para leer sin conexión
p.g.taboada | pgt technology scouting GmbH
Google Web Toolkit
Architecture
Best Practices
Donnerstag, 25. April 13
Donnerstag, 25. April 13
http://gwtreferencelist.appspot.com
Donnerstag, 25. April 13
‣GWT Development
‣Basics
‣Structuring the UI
‣Communication
‣Scaling
Donnerstag, 25. April 13
Shift
happened
Java development,
JS deployment,
Async,
RPC,
RIA/ single page,
...
Donnerstag, 25. April 13
TextBox t = new TextBox();
RootPanel.get().add(t);
Donnerstag, 25. April 13
Browser Server
user action
full html response
full html response
full html response
user action
user action
Donnerstag, 25. April 13
Browser Server
event
first request
full html response
data
data request
data
data request
event
event
event
Donnerstag, 25. April 13
low level, generic toolkit
Donnerstag, 25. April 13
let‘s build big things
Donnerstag, 25. April 13
TextBox t0 = new TextBox();
TextBox t1 = new TextBox();
TextBox t2 = new TextBox();
TextBox t3 = new TextBox();
TextBox t4 = new TextBox();
VerticalPanel...
SplitPanel...
ScrollPanel
RootPanel.get().add(mainPanel);
Donnerstag, 25. April 13
Run, Forrest. Run!
Donnerstag, 25. April 13
Hoppla
Donnerstag, 25. April 13
framework wizardry needed
Donnerstag, 25. April 13
‣GWT Development
‣Basics
‣Structuring the UI
‣Communication
‣Scaling
Donnerstag, 25. April 13
BE CAREFUL. GWT DEVELOPMENT
IS COMPLICATED HOT NEW STUFF.
Donnerstag, 25. April 13
WELL, IT‘S NOT NEW...
Donnerstag, 25. April 13
Jan 2000 Jan 2005
XHTML 1.0
Jan 2000
HTML 4.0.1
Dez 1999
CSS 2
Mai 1998
HTML 4.0 update
April 1998
XHTML 1.1
Mai 2001
HTML 2.0
November 1995
HTML 4.0
Dezember 1997
Java EE 1.2
Dez 1999
JDK 1.1
Feb 1997
Internet Explorer 6
Aug 2001
JDK 1.0
Jan 1996
CSS 2.1
Feb 2004 – Jun 2011
CSS level 2 revision 1, often referred t
errors in CSS 2, removes poorly suppo
interoperable features and adds alread
browser extensions to the specification
with the W3C Process for standardizi
specifications, CSS 2.1 went back and
Working Draft status and Candidate R
status for many years.
J2SE 1.2
Dez 1998
J2SE 1.3
Mai 2000
CSS 1
Dez 1996
HTML 3.2
Januar 1997
Donnerstag, 25. April 13
nothing new here
Donnerstag, 25. April 13
nothing new here too
Jan 2007
Donnerstag, 25. April 13
how can I avoid this?
Donnerstag, 25. April 13
don‘t public instance the singletons
Donnerstag, 25. April 13
event bus please
http://jarrettws.blogspot.de/2010/05/public-transport.html
Donnerstag, 25. April 13
eventbus.fireEvent(
NotificationEvent.info(
"Daten wurden erfolgreich gespeichert"
)
);
Donnerstag, 25. April 13
USE MVP!
You will get
used to it
Donnerstag, 25. April 13
presenter
model
clientFactory
eventBus
panel
view
Donnerstag, 25. April 13
presenter
view interface
presenter interface
model
desktop view
tablet view mock view
Donnerstag, 25. April 13
public interface LoginView extends View {
void setPresenter(LoginView.Presenter currentPresenter);
void presetEmailFieldWith(String email);
void doShowApplicationMetadata(AppData params);
public interface Presenter extends LemniscusPresenter {
void userLoginWith(String username, String password);
void userDidAskForRegistrationPlace();
void userWantsToChangePassword(
int verificationCode, String userEmail, String
newPasswordToUse);
void userRequestedVerificationCodeForPasswordChange(String email);
}
}
Donnerstag, 25. April 13
public interface LoginView extends View {
void setPresenter(LoginView.Presenter currentP
void presetEmailFieldWith(String email);
void doShowApplicationMetadata(AppData params)
public interface Presenter extends LemniscusPr
void userLoginWith(String username, String
void userDidAskForRegistrationPlace();
void userWantsToChangePassword(
int verificationCode, String userEmail,
MyDesktopViewImpl extends Composite implements LoginView
Donnerstag, 25. April 13
public interface LoginView extends View {
void setPresenter(LoginView.Presenter currentPresenter)
void presetEmailFieldWith(String email);
void doShowApplicationMetadata(AppData params);
public interface Presenter extends LemniscusPresenter {
void userLoginWith(String username, String password
void userDidAskForRegistrationPlace();
void userWantsToChangePassword(
int verificationCode, String userEmail, String ne
void userRequestedVerificationCodeForPasswordChange
}
}
MyLoginPresenter extends AA... implements LoginView.Presenter
Donnerstag, 25. April 13
BUT ON IE 6 IT IS SO SLOW!
Donnerstag, 25. April 13
BUT ON IE 7 IT IS SO SLOW!
Donnerstag, 25. April 13
BUT ON IE 8 IT IS SO SLOW!
Donnerstag, 25. April 13
BUT ON IE 9 IT IS SO SLOW!
Donnerstag, 25. April 13
too many widgets ain‘t good
Donnerstag, 25. April 13
CREATE CUSTOM WIDGETS
don‘t extend FlextTable
don‘t extendVerticalPanel
don‘t extend SimplePanel
CREATE CUSTOM EVENTS
Donnerstag, 25. April 13
if you can, do it in CSS
@-webkit-keyframes redPulse
{
from
{
box-shadow: 0px 0px 2px #ff0033;
}
50%
{
box-shadow: 0px 0px 10px #ff0033;
}
to
{
box-shadow: 0px 0px 2px #ff0033;
}
}
Donnerstag, 25. April 13
use CSS layout
<g:LayoutPanel styleName="{B.style.mainContent}">
<g:layer left="0" right="340px" top="0" height="50%">
<g:SimpleLayoutPanel styleName="{B.style.mainWidget}" addStyleNa
<ux:DashboardTermineDataGrid ui:field="terminetable" styleName
</g:SimpleLayoutPanel>
</g:layer>
<g:layer right="0" width="340px" top="0" height="50%">
<g:SimpleLayoutPanel styleName="{B.style.mainWidget}" addStyleNa
<ux:KWStatsDataGrid ui:field="statstable" styleName="{B.style.
</g:SimpleLayoutPanel>
</g:layer>
<g:layer right="0" left="0" bottom="0" height="50%">
<g:SimpleLayoutPanel styleName="{B.style.mainWidget}" addStyleNa
<ux:WartelisteDataGrid ui:field="wartelistetable" styleName="{
</g:SimpleLayoutPanel>
</g:layer>
</g:LayoutPanel>
Donnerstag, 25. April 13
Ray Ryan - lessons learned
Donnerstag, 25. April 13
‣GWT Development
‣Basics
‣Structuring the UI
‣Communication
‣Scaling
Donnerstag, 25. April 13
„just do it“ pattern
„View A“
„View B“
mainPanel.setWiget(
aWidget );
mainPanel.setWiget(
bWidget );
some action
Donnerstag, 25. April 13
hard to maintain
Donnerstag, 25. April 13
history
management
from day one!
back button and
refresh as a
feature (not a
catastrophe)
Donnerstag, 25. April 13
keep it
stupid
simple
• use PLACES framework
for main level navigation
• if you really need to, nest
activities for a second
level. try not to.
• use dialogs for user input,
showing data. dialogs are
easily reused.
Donnerstag, 25. April 13
Once upon a time, a
good designer does
good a good looking
design...
‣ he will be using photoshop
or dreamweaver
‣ he will not use the
software
‣ he will not build the
software
‣ he will not maintain the
software
Donnerstag, 25. April 13
Donnerstag, 25. April 13
top menue bound to places framework
Donnerstag, 25. April 13
switching between places with fade in and out
Donnerstag, 25. April 13
teach user to wait until application is ready again
Donnerstag, 25. April 13
gives us enough time to load the required content
300ms out 500ms in
Donnerstag, 25. April 13
Komponents
inside an
„activity“ fire
non public,
custom events
Donnerstag, 25. April 13
datepicker
sends KW
selected event
Donnerstag, 25. April 13
presenter may
goto itself, view
may be cached
Donnerstag, 25. April 13
STATELESS
VIEW
URL contains
EVERYTHING
needed to
rebuild view
user hits
reload
GWT apps
starts, activity
gets fired
presenter
loads data
from server
view is back
again
Donnerstag, 25. April 13
some actions don‘t require PLACE navigation at all
Donnerstag, 25. April 13
use POPUPS to stay ABOVE navigation
Donnerstag, 25. April 13
let POPUPS/
DIALOGS move
slowly into view
pin POPUPS to
one side of the
window
Donnerstag, 25. April 13
let POPUPS/
DIALOGS move
slowly into view
pin POPUPS to
one side of the
window
Donnerstag, 25. April 13
Don‘t move your
user away from his
„PLACE“ unless
you have to.
Search DIALOG
slides in from right
side, stays on TOP
Donnerstag, 25. April 13
Navigation must not hurt
• The application shown uses only 3 levels of
navigation, DOES NOT NEED MORE
• PLACES used for bookmarkable entry points/
back button navigation consistency
• Activities should be STATELESS, to survive page
reloads
• Learn from OTHERS
Donnerstag, 25. April 13
BEFOREYOU ADD THE
LOGO TO THE TOP
HOW MANY PIXELS DO
YOUR USERS HAVE? the designer or
marketing guy
using photoshop is
probably sitting in
front of a 27“
apple cinema
display
Donnerstag, 25. April 13
‣GWT Development
‣Basics
‣Structuring the UI
‣Communication
‣Scaling
Donnerstag, 25. April 13
Honor the A in AJAX
‣ Javascript does not block
Get over it
‣ Latency is not a myth
‣ Results must not arrive in the call
order
Donnerstag, 25. April 13
MARSHALLING / UNMARSHALLING
IN JAVASCRIPT IS SLOW
Donnerstag, 25. April 13
BUILDING A GENERIC FRAMEWORK FOR
MARSHALLING/ UNSMARSHALLING DATA SUCKS
Donnerstag, 25. April 13
DON‘T BINDYOU NEXT 3YEARS OF WORK
AGAINST SOME COMMUNICATION PROTOCOLL
Donnerstag, 25. April 13
LOADING TOO MUCH DATA WILL ALWAYS HURT
Donnerstag, 25. April 13
GWT-RPC
is a good
solution if
handled
with care
SomeResult someMethodName(SomeParameter spo)
GWT-RPC
binds many
methods
into one
interface
Interface
Versioning
is a
monstrous
thing
Donnerstag, 25. April 13
SomeResult someMethodName(SomeParameter spo)
the method names bind the requests to the result
typesafety all the way
Donnerstag, 25. April 13
USING GENERICS FOR TYPESAFETY, GET RID OF
METHODS AND INTERFACES
Donnerstag, 25. April 13
<A extends Action<R>, R extends Result> R execute(A action);
now we just one interface with one method
typesafety all the way
Donnerstag, 25. April 13
command
pattern
GOF Pattern
commonly used in
Rich Clients
Donnerstag, 25. April 13
someAction
someResult
someActionHandler
Donnerstag, 25. April 13
someAction
someResult
someActionHandler
POJOS
Donnerstag, 25. April 13
someAction
someResult
someActionHandler
multiple
versions
someActionV2
someActionHandlerV2
Donnerstag, 25. April 13
someAction
someResult
someActionHandler
multiple
versions
someActionV2
someActionHandlerV2
someResultV2
Donnerstag, 25. April 13
someAction
someResult
someActionHandler
GWT-RPC
client server
batching
caching
security
caching
exception translation
security
GWT client
Donnerstag, 25. April 13
someAction
someResult
someActionHandler
RMI / HTTPInvoker
client server
batching
caching
security
caching
exception translation
security
Java client
Donnerstag, 25. April 13
someAction
someResult
someActionHandler
JSON-servlet
client server
batching
caching
security
caching
exception translation
security
Mobile client
Donnerstag, 25. April 13
batchAction
someAction1
batchActionHandler
someAction2
someAction3
batchResult
someResult1
someResult2
someResult3
client server
batching can
be manual or
automatic
server executes
actions in given order
Donnerstag, 25. April 13
BATCH EXECUTION ALLOWS FOR FINE GRAINED
COMMANDS AND REUSE
Donnerstag, 25. April 13
toggleTerminMetadata
reloadDashboardTermine
BooleanResult
DataListResult<Termin>
Donnerstag, 25. April 13
toggleTerminMetadata
reloadTermin
BooleanResult
DataResult<Termin>
Donnerstag, 25. April 13
toggleTerminMetadata
loadMonthStats
BooleanResult
DataResult<MonthStats>
loadMonthTermine DataListResult<Termin>
Donnerstag, 25. April 13
‣GWT Development
‣Basics
‣Structuring the UI
‣Communication
‣Scaling
Donnerstag, 25. April 13
• Every client brings his own CPU power
• The client does the page rendering
• GWT provides different ways to reduce number
of requests even more
• The server must „only“ authenticate the user
and provide the data, perform the actions
requested by the client
GWT scaling is easy...
Donnerstag, 25. April 13
WHAT CAN POSSIBLY GO WRONG?
Donnerstag, 25. April 13
LETS TALK HIGH TRAFFIC...
HIGH TRAFFIC IS WHEN ONE SERVER IS NOT ENOUGH
Donnerstag, 25. April 13
• Bandwith issues
• Connection pool bottlenecks
• Thread pool bottlenecks
• CPU bottlenecks caused by reflection API calls
• High JVM garbage collection CPU usage
HIGH TRAFFIC
PROBLEMS
Donnerstag, 25. April 13
NOT REALLY GWT PROBLEMS,
BUT WHAT CAN WE DO?
Donnerstag, 25. April 13
TX TX
TX TX
TX
TX TX
TX
TX
avoid „tx
collisions“
Donnerstag, 25. April 13
TX TX TX TX
TX
TX
TX
TX TX
TX
TX
TX
TX
TX
TX
load small
portions of
data, do it
often
Donnerstag, 25. April 13
Donnerstag, 25. April 13
IMPLEMENT REAL LOAD BALANCING
EACH REQUEST GOES TO THE NEXT AVAILABLE SERVER
Donnerstag, 25. April 13
• Don‘t stick a session to a server.
Why send a user over and over again to a
possible overloaded server?
• Don‘t store anything on the HTTP session. Let
the load balancer balance the load.
• Session replication is expensive and does not
scale well
SCALING HOW-TO
Donnerstag, 25. April 13
Webserver
Webserver
LB Webserver
Webserver
Webserver
Session Cache
STATELESS WEB
Webserver
Donnerstag, 25. April 13
Session Cache
Session state should not change,
just expire
Session state could contain user
id, client id, session id, user roles
If session cache becomes
bottleneck, use distributed
cache, eg. memcached
Session Cache
Session Cache
Donnerstag, 25. April 13
Thanks!
Donnerstag, 25. April 13

Más contenido relacionado

Similar a GWT architecture best practices and lessons learned

Intro to axure
Intro to axureIntro to axure
Intro to axureNathan Gao
 
Open Source Monitoring for Java with JMX and Graphite (GeeCON 2013)
Open Source Monitoring for Java with JMX and Graphite (GeeCON 2013)Open Source Monitoring for Java with JMX and Graphite (GeeCON 2013)
Open Source Monitoring for Java with JMX and Graphite (GeeCON 2013)Cyrille Le Clerc
 
Annotated controllers with Spring MVC 2.5
Annotated controllers with Spring MVC 2.5Annotated controllers with Spring MVC 2.5
Annotated controllers with Spring MVC 2.5benfante
 
Complex Architectures in Ember
Complex Architectures in EmberComplex Architectures in Ember
Complex Architectures in EmberMatthew Beale
 
2013 jsdc webworker
2013 jsdc webworker2013 jsdc webworker
2013 jsdc webworkerBingo Yang
 
HTML5 for mobile development
HTML5 for mobile developmentHTML5 for mobile development
HTML5 for mobile developmentCarlos Justiniano
 
Unit and functional testing with Siesta
Unit and functional testing with SiestaUnit and functional testing with Siesta
Unit and functional testing with SiestaGrgur Grisogono
 
Testing iOS Apps
Testing iOS AppsTesting iOS Apps
Testing iOS AppsC4Media
 
Making the Switch, Part 1: Top 5 Things to Consider When Evaluating Drupal
Making the Switch, Part 1: Top 5 Things to Consider When Evaluating DrupalMaking the Switch, Part 1: Top 5 Things to Consider When Evaluating Drupal
Making the Switch, Part 1: Top 5 Things to Consider When Evaluating DrupalAcquia
 
FITC 2013 - The Technical Learning Curve
FITC 2013 - The Technical Learning CurveFITC 2013 - The Technical Learning Curve
FITC 2013 - The Technical Learning CurveLittle Miss Robot
 
იოსებ ძმანაშვილი Node.js
იოსებ ძმანაშვილი   Node.jsიოსებ ძმანაშვილი   Node.js
იოსებ ძმანაშვილი Node.jsunihack
 
JBUG 11 - Django-The Web Framework For Perfectionists With Deadlines
JBUG 11 - Django-The Web Framework For Perfectionists With DeadlinesJBUG 11 - Django-The Web Framework For Perfectionists With Deadlines
JBUG 11 - Django-The Web Framework For Perfectionists With DeadlinesTikal Knowledge
 
Techniques For A Modern Web UI (With Notes)
Techniques For A Modern Web UI (With Notes)Techniques For A Modern Web UI (With Notes)
Techniques For A Modern Web UI (With Notes)patrick.t.joyce
 
Google analytics
Google analyticsGoogle analytics
Google analyticsLo Penny
 
Three Simple Chords of Alternative PageObjects and Hardcore of LoadableCompon...
Three Simple Chords of Alternative PageObjects and Hardcore of LoadableCompon...Three Simple Chords of Alternative PageObjects and Hardcore of LoadableCompon...
Three Simple Chords of Alternative PageObjects and Hardcore of LoadableCompon...Iakiv Kramarenko
 
Green Shoots in the Brownest Field: Being a Startup in Government
Green Shoots in the Brownest Field: Being a Startup in GovernmentGreen Shoots in the Brownest Field: Being a Startup in Government
Green Shoots in the Brownest Field: Being a Startup in GovernmentC4Media
 
Maintainable JavaScript 2012
Maintainable JavaScript 2012Maintainable JavaScript 2012
Maintainable JavaScript 2012Nicholas Zakas
 

Similar a GWT architecture best practices and lessons learned (20)

Intro to axure
Intro to axureIntro to axure
Intro to axure
 
F# And Silverlight
F# And SilverlightF# And Silverlight
F# And Silverlight
 
Open Source Monitoring for Java with JMX and Graphite (GeeCON 2013)
Open Source Monitoring for Java with JMX and Graphite (GeeCON 2013)Open Source Monitoring for Java with JMX and Graphite (GeeCON 2013)
Open Source Monitoring for Java with JMX and Graphite (GeeCON 2013)
 
Annotated controllers with Spring MVC 2.5
Annotated controllers with Spring MVC 2.5Annotated controllers with Spring MVC 2.5
Annotated controllers with Spring MVC 2.5
 
A false digital alibi on mac os x
A false digital alibi on mac os xA false digital alibi on mac os x
A false digital alibi on mac os x
 
Complex Architectures in Ember
Complex Architectures in EmberComplex Architectures in Ember
Complex Architectures in Ember
 
2013 jsdc webworker
2013 jsdc webworker2013 jsdc webworker
2013 jsdc webworker
 
Android best practices
Android best practicesAndroid best practices
Android best practices
 
HTML5 for mobile development
HTML5 for mobile developmentHTML5 for mobile development
HTML5 for mobile development
 
Unit and functional testing with Siesta
Unit and functional testing with SiestaUnit and functional testing with Siesta
Unit and functional testing with Siesta
 
Testing iOS Apps
Testing iOS AppsTesting iOS Apps
Testing iOS Apps
 
Making the Switch, Part 1: Top 5 Things to Consider When Evaluating Drupal
Making the Switch, Part 1: Top 5 Things to Consider When Evaluating DrupalMaking the Switch, Part 1: Top 5 Things to Consider When Evaluating Drupal
Making the Switch, Part 1: Top 5 Things to Consider When Evaluating Drupal
 
FITC 2013 - The Technical Learning Curve
FITC 2013 - The Technical Learning CurveFITC 2013 - The Technical Learning Curve
FITC 2013 - The Technical Learning Curve
 
იოსებ ძმანაშვილი Node.js
იოსებ ძმანაშვილი   Node.jsიოსებ ძმანაშვილი   Node.js
იოსებ ძმანაშვილი Node.js
 
JBUG 11 - Django-The Web Framework For Perfectionists With Deadlines
JBUG 11 - Django-The Web Framework For Perfectionists With DeadlinesJBUG 11 - Django-The Web Framework For Perfectionists With Deadlines
JBUG 11 - Django-The Web Framework For Perfectionists With Deadlines
 
Techniques For A Modern Web UI (With Notes)
Techniques For A Modern Web UI (With Notes)Techniques For A Modern Web UI (With Notes)
Techniques For A Modern Web UI (With Notes)
 
Google analytics
Google analyticsGoogle analytics
Google analytics
 
Three Simple Chords of Alternative PageObjects and Hardcore of LoadableCompon...
Three Simple Chords of Alternative PageObjects and Hardcore of LoadableCompon...Three Simple Chords of Alternative PageObjects and Hardcore of LoadableCompon...
Three Simple Chords of Alternative PageObjects and Hardcore of LoadableCompon...
 
Green Shoots in the Brownest Field: Being a Startup in Government
Green Shoots in the Brownest Field: Being a Startup in GovernmentGreen Shoots in the Brownest Field: Being a Startup in Government
Green Shoots in the Brownest Field: Being a Startup in Government
 
Maintainable JavaScript 2012
Maintainable JavaScript 2012Maintainable JavaScript 2012
Maintainable JavaScript 2012
 

Último

Advanced Test Driven-Development @ php[tek] 2024
Advanced Test Driven-Development @ php[tek] 2024Advanced Test Driven-Development @ php[tek] 2024
Advanced Test Driven-Development @ php[tek] 2024Scott Keck-Warren
 
Artificial intelligence in cctv survelliance.pptx
Artificial intelligence in cctv survelliance.pptxArtificial intelligence in cctv survelliance.pptx
Artificial intelligence in cctv survelliance.pptxhariprasad279825
 
DevoxxFR 2024 Reproducible Builds with Apache Maven
DevoxxFR 2024 Reproducible Builds with Apache MavenDevoxxFR 2024 Reproducible Builds with Apache Maven
DevoxxFR 2024 Reproducible Builds with Apache MavenHervé Boutemy
 
WordPress Websites for Engineers: Elevate Your Brand
WordPress Websites for Engineers: Elevate Your BrandWordPress Websites for Engineers: Elevate Your Brand
WordPress Websites for Engineers: Elevate Your Brandgvaughan
 
The Future of Software Development - Devin AI Innovative Approach.pdf
The Future of Software Development - Devin AI Innovative Approach.pdfThe Future of Software Development - Devin AI Innovative Approach.pdf
The Future of Software Development - Devin AI Innovative Approach.pdfSeasiaInfotech2
 
SIP trunking in Janus @ Kamailio World 2024
SIP trunking in Janus @ Kamailio World 2024SIP trunking in Janus @ Kamailio World 2024
SIP trunking in Janus @ Kamailio World 2024Lorenzo Miniero
 
Leverage Zilliz Serverless - Up to 50X Saving for Your Vector Storage Cost
Leverage Zilliz Serverless - Up to 50X Saving for Your Vector Storage CostLeverage Zilliz Serverless - Up to 50X Saving for Your Vector Storage Cost
Leverage Zilliz Serverless - Up to 50X Saving for Your Vector Storage CostZilliz
 
Gen AI in Business - Global Trends Report 2024.pdf
Gen AI in Business - Global Trends Report 2024.pdfGen AI in Business - Global Trends Report 2024.pdf
Gen AI in Business - Global Trends Report 2024.pdfAddepto
 
Anypoint Exchange: It’s Not Just a Repo!
Anypoint Exchange: It’s Not Just a Repo!Anypoint Exchange: It’s Not Just a Repo!
Anypoint Exchange: It’s Not Just a Repo!Manik S Magar
 
Story boards and shot lists for my a level piece
Story boards and shot lists for my a level pieceStory boards and shot lists for my a level piece
Story boards and shot lists for my a level piececharlottematthew16
 
My INSURER PTE LTD - Insurtech Innovation Award 2024
My INSURER PTE LTD - Insurtech Innovation Award 2024My INSURER PTE LTD - Insurtech Innovation Award 2024
My INSURER PTE LTD - Insurtech Innovation Award 2024The Digital Insurer
 
SAP Build Work Zone - Overview L2-L3.pptx
SAP Build Work Zone - Overview L2-L3.pptxSAP Build Work Zone - Overview L2-L3.pptx
SAP Build Work Zone - Overview L2-L3.pptxNavinnSomaal
 
Developer Data Modeling Mistakes: From Postgres to NoSQL
Developer Data Modeling Mistakes: From Postgres to NoSQLDeveloper Data Modeling Mistakes: From Postgres to NoSQL
Developer Data Modeling Mistakes: From Postgres to NoSQLScyllaDB
 
Vertex AI Gemini Prompt Engineering Tips
Vertex AI Gemini Prompt Engineering TipsVertex AI Gemini Prompt Engineering Tips
Vertex AI Gemini Prompt Engineering TipsMiki Katsuragi
 
Beyond Boundaries: Leveraging No-Code Solutions for Industry Innovation
Beyond Boundaries: Leveraging No-Code Solutions for Industry InnovationBeyond Boundaries: Leveraging No-Code Solutions for Industry Innovation
Beyond Boundaries: Leveraging No-Code Solutions for Industry InnovationSafe Software
 
Kotlin Multiplatform & Compose Multiplatform - Starter kit for pragmatics
Kotlin Multiplatform & Compose Multiplatform - Starter kit for pragmaticsKotlin Multiplatform & Compose Multiplatform - Starter kit for pragmatics
Kotlin Multiplatform & Compose Multiplatform - Starter kit for pragmaticscarlostorres15106
 
Are Multi-Cloud and Serverless Good or Bad?
Are Multi-Cloud and Serverless Good or Bad?Are Multi-Cloud and Serverless Good or Bad?
Are Multi-Cloud and Serverless Good or Bad?Mattias Andersson
 
CloudStudio User manual (basic edition):
CloudStudio User manual (basic edition):CloudStudio User manual (basic edition):
CloudStudio User manual (basic edition):comworks
 
Transcript: New from BookNet Canada for 2024: BNC CataList - Tech Forum 2024
Transcript: New from BookNet Canada for 2024: BNC CataList - Tech Forum 2024Transcript: New from BookNet Canada for 2024: BNC CataList - Tech Forum 2024
Transcript: New from BookNet Canada for 2024: BNC CataList - Tech Forum 2024BookNet Canada
 

Último (20)

Advanced Test Driven-Development @ php[tek] 2024
Advanced Test Driven-Development @ php[tek] 2024Advanced Test Driven-Development @ php[tek] 2024
Advanced Test Driven-Development @ php[tek] 2024
 
Artificial intelligence in cctv survelliance.pptx
Artificial intelligence in cctv survelliance.pptxArtificial intelligence in cctv survelliance.pptx
Artificial intelligence in cctv survelliance.pptx
 
DevoxxFR 2024 Reproducible Builds with Apache Maven
DevoxxFR 2024 Reproducible Builds with Apache MavenDevoxxFR 2024 Reproducible Builds with Apache Maven
DevoxxFR 2024 Reproducible Builds with Apache Maven
 
WordPress Websites for Engineers: Elevate Your Brand
WordPress Websites for Engineers: Elevate Your BrandWordPress Websites for Engineers: Elevate Your Brand
WordPress Websites for Engineers: Elevate Your Brand
 
The Future of Software Development - Devin AI Innovative Approach.pdf
The Future of Software Development - Devin AI Innovative Approach.pdfThe Future of Software Development - Devin AI Innovative Approach.pdf
The Future of Software Development - Devin AI Innovative Approach.pdf
 
SIP trunking in Janus @ Kamailio World 2024
SIP trunking in Janus @ Kamailio World 2024SIP trunking in Janus @ Kamailio World 2024
SIP trunking in Janus @ Kamailio World 2024
 
E-Vehicle_Hacking_by_Parul Sharma_null_owasp.pptx
E-Vehicle_Hacking_by_Parul Sharma_null_owasp.pptxE-Vehicle_Hacking_by_Parul Sharma_null_owasp.pptx
E-Vehicle_Hacking_by_Parul Sharma_null_owasp.pptx
 
Leverage Zilliz Serverless - Up to 50X Saving for Your Vector Storage Cost
Leverage Zilliz Serverless - Up to 50X Saving for Your Vector Storage CostLeverage Zilliz Serverless - Up to 50X Saving for Your Vector Storage Cost
Leverage Zilliz Serverless - Up to 50X Saving for Your Vector Storage Cost
 
Gen AI in Business - Global Trends Report 2024.pdf
Gen AI in Business - Global Trends Report 2024.pdfGen AI in Business - Global Trends Report 2024.pdf
Gen AI in Business - Global Trends Report 2024.pdf
 
Anypoint Exchange: It’s Not Just a Repo!
Anypoint Exchange: It’s Not Just a Repo!Anypoint Exchange: It’s Not Just a Repo!
Anypoint Exchange: It’s Not Just a Repo!
 
Story boards and shot lists for my a level piece
Story boards and shot lists for my a level pieceStory boards and shot lists for my a level piece
Story boards and shot lists for my a level piece
 
My INSURER PTE LTD - Insurtech Innovation Award 2024
My INSURER PTE LTD - Insurtech Innovation Award 2024My INSURER PTE LTD - Insurtech Innovation Award 2024
My INSURER PTE LTD - Insurtech Innovation Award 2024
 
SAP Build Work Zone - Overview L2-L3.pptx
SAP Build Work Zone - Overview L2-L3.pptxSAP Build Work Zone - Overview L2-L3.pptx
SAP Build Work Zone - Overview L2-L3.pptx
 
Developer Data Modeling Mistakes: From Postgres to NoSQL
Developer Data Modeling Mistakes: From Postgres to NoSQLDeveloper Data Modeling Mistakes: From Postgres to NoSQL
Developer Data Modeling Mistakes: From Postgres to NoSQL
 
Vertex AI Gemini Prompt Engineering Tips
Vertex AI Gemini Prompt Engineering TipsVertex AI Gemini Prompt Engineering Tips
Vertex AI Gemini Prompt Engineering Tips
 
Beyond Boundaries: Leveraging No-Code Solutions for Industry Innovation
Beyond Boundaries: Leveraging No-Code Solutions for Industry InnovationBeyond Boundaries: Leveraging No-Code Solutions for Industry Innovation
Beyond Boundaries: Leveraging No-Code Solutions for Industry Innovation
 
Kotlin Multiplatform & Compose Multiplatform - Starter kit for pragmatics
Kotlin Multiplatform & Compose Multiplatform - Starter kit for pragmaticsKotlin Multiplatform & Compose Multiplatform - Starter kit for pragmatics
Kotlin Multiplatform & Compose Multiplatform - Starter kit for pragmatics
 
Are Multi-Cloud and Serverless Good or Bad?
Are Multi-Cloud and Serverless Good or Bad?Are Multi-Cloud and Serverless Good or Bad?
Are Multi-Cloud and Serverless Good or Bad?
 
CloudStudio User manual (basic edition):
CloudStudio User manual (basic edition):CloudStudio User manual (basic edition):
CloudStudio User manual (basic edition):
 
Transcript: New from BookNet Canada for 2024: BNC CataList - Tech Forum 2024
Transcript: New from BookNet Canada for 2024: BNC CataList - Tech Forum 2024Transcript: New from BookNet Canada for 2024: BNC CataList - Tech Forum 2024
Transcript: New from BookNet Canada for 2024: BNC CataList - Tech Forum 2024
 

GWT architecture best practices and lessons learned