SlideShare une entreprise Scribd logo
1  sur  96
Télécharger pour lire hors ligne
The

Even-Darker Art
        of

  Rails Engines
@lazyatom
github.com/lazyatom/engines
Rails 2.3
history
November 2005
it’s distracting!
reuse is overrated!
Evil!     Evil!
 Evil!

                                   Evil!

Evil!            Evil!
                                    Evil!

         Evil!           Shit!
eek!
appable_plugins
desert
merb slices?
engines
!quot;#$%&!quot;#$'#(%&$#)&!quot;#$%&*$+,#-.!)
!quot;#$%&'()
$$*%&'()$++,$-'%!.%&'()./0#'12%)/'0
quot;0!

3$405/0quot;6$%1quot;$7-(5/06$8/)9$%0$%77:$!/1quot;;)'1<=
!quot;#$quot;05/0quot;>
$$9%6.%77.!/1quot;;)'1<>
quot;0!

3$?quot;)(106$)1(quot;$/#$)9quot;$quot;05/0quot;$69/76$8/)9$%$1'()/05$#/-quot;
!quot;#$1'()quot;!>
$$@/-quot;=quot;A/6)>B1'()/05.#/-quot;C
quot;0!


!quot;#$D/quot;8.7%)9
$$@/-quot;=E'/0B!/1quot;;)'1<F$G%77GF$GD/quot;86GC
quot;0!
app/controllers/
    models/
    helpers/
    views/
    metal/
*$+,#-&quot;**&23-'!3$$(!&*$+,#-523-'!3$$(!.!)

 ;-%66$H-(5/0I'0)1'--quot;1/0/1**$#2quot;'#3-43-'!3$$(!
 $$!quot;#$/0!quot;A
 $$$$1quot;0!quot;1$J)quot;A)$,K$LMquot;--'F$H-(5/0NL
 $$quot;0!
 quot;0!
9quot;-7quot;1$J%--
won’t load from your plugin
Ticket #1905
config/routes.rb
*$+,#-&23-6#,&!3+'(%.!)



  O;)/'0I'0)1'--quot;1JJ?'()/05JJ?'()quot;6=!1%8$!'$+2%7+

  $$2%7=;'00quot;;)$G:7%)9GF$J;'0)1'--quot;1$,K$L7-(5/0LF$
  $$$$$$$$$$$$$$$$$$$$$$$J%;)/'0$,K$L/0!quot;AL

  quot;0!
top precedence
in your plugin:
 O;)/'0I'0)1'--quot;1JJ?'()/05JJ?'()quot;6=!1%8$!'$+2%7+
 $$2%7=;'00quot;;)$G:7%)9GF$J;'0)1'--quot;1$,K$L7-(5/0LF$
 $$$$$$$$$$$$$$$$$$$$$$$J%;)/'0$,K$L/0!quot;AL
 quot;0!


in your app:
 O;)/'0I'0)1'--quot;1JJ?'()/05JJ?'()quot;6=!1%8$!'$+2%7+
 $$3$===$')9quot;1$1'()quot;6$===
 $$2%7=;'00quot;;)$G:7%)9GF$J;'0)1'--quot;1$,K$L%77LF$
 $$$$$$$$$$$$$$$$$$$$$$$J%;)/'0$,K$L/0!quot;AL
 $$3$===$')9quot;1$1'()quot;6$===
 quot;0!
in your plugin:
 O;)/'0I'0)1'--quot;1JJ?'()/05JJ?'()quot;6=!1%8$!'$+2%7+
 $$2%7=;'00quot;;)$G:7%)9GF$J;'0)1'--quot;1$,K$L7-(5/0LF$
 $$$$$$$$$$$$$$$$$$$$$$$J%;)/'0$,K$L/0!quot;AL
 quot;0!


in your app:
 O;)/'0I'0)1'--quot;1JJ?'()/05JJ?'()quot;6=!1%8$!'$+2%7+
 $$3$===$')9quot;1$1'()quot;6$===
 $$2%7=;'00quot;;)$G:7%)9GF$J;'0)1'--quot;1$,K$L%77LF$
 $$$$$$$$$$$$$$$$$$$$$$$J%;)/'0$,K$L/0!quot;AL
 $$3$===$')9quot;1$1'()quot;6$===
 quot;0!
Ticket #2592
(also Ticket #329)
785*$+,#-&$#)&785*$+,#-.!)
2'!(-quot;$P<H-(5/0
$$!quot;#$6quot;-#=%!!.1'()quot;6B7quot;*C
$$$$2%7=;'00quot;;)$L:6)(##LF$J;'0)1'--quot;1$,K$L)9/056L
$$quot;0!
quot;0!

O;)/'0I'0)1'--quot;1JJ?'()/05JJ?'()quot;6=!1%8$!'$+2%7+
$$3$<'(1$%77$1'()quot;6===

$$P<H-(5/0=%!!.1'()quot;6B2%7C

$$3$quot;);===
quot;0!
what’s missing?
public assets
copy
file clash
83+!5*$+,#-&#-%'quot;$$.!)

2<./2%5quot;6$,$H%)90%2quot;=0quot;8B@/-quot;=!/10%2quot;B..@QR4..CC$S$
$$$$$$$$$$$$$$L%66quot;)6:/2%5quot;6L
)%15quot;)$,$?%/-6=1'')$S$L7(&-/;:/2%5quot;6:2<.7-(5/0L

@/-quot;T)/-6=2U!/1.7B)%15quot;)C

2<./2%5quot;6=;9/-!1quot;0=quot;%;9$!'$+quot;+$
$$$$@/-quot;T)/-6=;7.1Bquot;F$)%15quot;)$S$quot;=&%6quot;0%2quot;C$
quot;0!
83+!5*$+,#-&#-%'quot;$$.!)

2<./2%5quot;6$,$H%)90%2quot;=0quot;8B@/-quot;=!/10%2quot;B..@QR4..CC$S$
$$$$$$$$$$$$$$L%66quot;)6:/2%5quot;6L
)%15quot;)$,$?%/-6=1'')$S$L7(&-/;:/2%5quot;6:2<.7-(5/0L

)%15quot;)=2%Uquot;.6<2-/0UB2<./2%5quot;6C$(0-quot;66$)%15quot;)=quot;A/6)>
migrations
simple DSL
rollback
version       !&:2/51%)quot;:
                 $$VWWXWYWYYVYVZ[.%-79%=1&
20090101121234     VWWXWYWVY[VZ[.&quot;)%=1&

20090102142345
                 7-(5/0:!&:2/51%)quot;:
2008123123456    $$VWW]YVZYZ[^.5%22%=1&
version       1%Uquot;$!&J1'--&%;U
                  P/51%)'1=1'--&%;U
20090101121234
                  P/51%)'13;(11quot;0).Dquot;16/'0
20090102142345
                  P/51%)'132/51%)quot;!=-%6)
2008123123456     P/51%)'1=5quot;).%--.Dquot;16/'06

                 BL_4R4I`$Dquot;16/'0$@?aP$$
                 $$6;9quot;2%.2/51%)/'06LC
                 =2%7BbJ)'./C=6'1)
it gets worse
version   !&:2/51%)quot;:
          $$WWY.%-79%=1&
 001        WWV.&quot;)%=1&

 002
          7-(5/0:!&:2/51%)quot;:
          $$WWY.5%22%=1&
http://www.flickr.com/photos/bk2204/475332962/
single timeline
You                             1
                               tio n
                        ig  ra           tio n1
                  app
                      m
                                 mi gra
                         lug in              tio n2
                       p               i gra               3
Me                              pp
                                    m              at ion
                               a               igr
        nst all                      ap  pm              ig ra
       i                                            nm
                                            plu  gi

                         ra de
                    u pg
tio n1
You           i gra              n1
            m                tio
      app              mi gra
                 gin                 tio n2
             plu                   ra
                         pm
                                ig
                                              tio n3
                       ap               ig ra               n2
                                   pm                   tio
                                ap                mi gra
                                        plu gin
!&:2/51%)quot;:
$$WWY.%-79%=1&
  WWV.&quot;)%=1&
  WWZ.7-(5/0.)'.WWY=1&
  WW[.!quot;-)%=1&


7-(5/0:!&:2/51%)quot;:
$$WWY.5%22%=1&
Symlink?
 !&:2/51%)quot;:
 $$WWY.%-79%=1&
   WWV.&quot;)%=1&
Reference?
   WWZ.7-(5/0.)'.WWY=1&
   WW[.!quot;-)%=1&


 7-(5/0:!&:2/51%)quot;:
                    Copy &
              Retimestamp?
 $$WWY.5%22%=1&
Ticket #2058
interblah.net/plugin-migrations
my recommendation?
   (for the moment, at least)
write a generator
              (within your plugin)



c$6;1/7):5quot;0quot;1%)quot;$%;)6.%6.#(.2/51%)/'06
$$$$
$$$quot;A/6)6$$!&:2/51%)quot;
$$$;1quot;%)quot;$$!&:2/51%)quot;:VWWXWWYYYZZd.&-%9=1&

c$===
techniques
overriding functionality
views just work
controllers
straight override
module
namespaced
playing nice with the
     class cache
1/23*8/36/1**$#2quot;'#3-43-'!3$$(!/

                            <
'!((/)+'/#%/%'#$$/quot;2'#:(<< < <
                          <<  !
9quot;%/)((-/!(73:(;/6!37/'9(/73;+$(/
                             <
O;)/Dquot;_(77'1)JJequot;7quot;0!quot;0;/quot;6=-'%!.'0;quot;.7%)96
ApplicationController




AppController                 PluginController
ApplicationController




                  PluginController
23-6#,&(-:#!3-7(-'.!)


 ?%/-6JJQ0/)/%-/fquot;1=1(0$!'$+;'0#/5+
 $$3$quot;);===

 $$;'0#/5=1quot;-'%!.7-(5/06$,$)1(quot;
 $$
 quot;0!
83+!5*$+,#-&quot;**&23-'!3$$(!%&,33;523-'!3$$(!.!)



  ;-%66$g''!I'0)1'--quot;1$h$===
  $$(0-'%!%&-quot;
  $$
  $$3$quot;);$===

  quot;0!
init.rb woes
785*$+,#-&#-#'.!)



;'0#/5=)'.71quot;7%1quot;$!'

$$_'2quot;O77I-%66=quot;A)quot;0!BP<iquot;9%D/'(1C
$$
quot;0!
testing
ApplicationController




AppController                 PluginController
ApplicationController



                           ir C ode
                        The

                         Your Code




                  PluginController
quot;
    $
    !
#
unit test?
test in your own rails
    environment?
plugin_test_helper
I care about testing
     my chunk
You care about testing
   your whole app
empower the
 developer
avoiding fail
;%6quot;$;'!quot;=;'06(2quot;1

$$89quot;0$;'!quot;=%()9'1
$$$$1quot;(6quot;=2'6)-<$,j$:quot;##quot;;)/Dquot;:

$$89quot;0$1%0!B!quot;Dquot;-'7quot;1C
$$$$1quot;(6quot;=)1/;U/quot;1.&().7'66/&-quot;B)1(quot;C

$$quot;-6quot;
$$$$1quot;(6quot;='Dquot;11%)quot;!N

quot;0!
consume wisely
Nutrition Facts
Serving Size 14 kloc
Amount Per Serving 1 bad engine
Calories 10,666
                    % Daily Value*
Total Fat 2674g        98%
 Long Methods 1578g    34%
 God Objects 326g       7%
Stress 320mg         119%
Hairloss 45g         45.8%
Technical Debt 13g     87%
 Untested Code 1578mg 34%
 Hidden Bugs 326mg      7%
Benefit 1mg           0.1%
you will not be able to
 write some engines.
you will not be able to
  use some engines.
extract
specific functionality
establish some
clear integration points
you are customer #1
READ the CODE
james@lazyatom.com




  FIN
lets@gofreerange.com

Contenu connexe

Tendances

Connectix webserver
Connectix webserverConnectix webserver
Connectix webserver
steveheer
 
Draft final strategi nasional redd+
Draft final strategi nasional redd+Draft final strategi nasional redd+
Draft final strategi nasional redd+
earlpaulodiaz
 
ஆழ்கடலில் ஒரு கோபுரம்
ஆழ்கடலில் ஒரு கோபுரம்ஆழ்கடலில் ஒரு கோபுரம்
ஆழ்கடலில் ஒரு கோபுரம்
Ilyas Qadri Ziaee
 
三星上將梨
三星上將梨三星上將梨
三星上將梨
Jaing Lai
 

Tendances (19)

Connectix webserver
Connectix webserverConnectix webserver
Connectix webserver
 
Taureau Ailé
Taureau AiléTaureau Ailé
Taureau Ailé
 
Layouts
LayoutsLayouts
Layouts
 
用設計看世界
用設計看世界用設計看世界
用設計看世界
 
Isd 1420
Isd 1420Isd 1420
Isd 1420
 
Peace through understanding Islam || Mawlana Feizel Chothia || Australian Isl...
Peace through understanding Islam || Mawlana Feizel Chothia || Australian Isl...Peace through understanding Islam || Mawlana Feizel Chothia || Australian Isl...
Peace through understanding Islam || Mawlana Feizel Chothia || Australian Isl...
 
Fatwa arkanul islam_qa
Fatwa arkanul islam_qaFatwa arkanul islam_qa
Fatwa arkanul islam_qa
 
Hamdeli 2
Hamdeli 2Hamdeli 2
Hamdeli 2
 
NTA UGC NET JRF - 24 punjabi-new updated syllabus
NTA UGC NET JRF - 24 punjabi-new updated syllabusNTA UGC NET JRF - 24 punjabi-new updated syllabus
NTA UGC NET JRF - 24 punjabi-new updated syllabus
 
Draft final strategi nasional redd+
Draft final strategi nasional redd+Draft final strategi nasional redd+
Draft final strategi nasional redd+
 
Brand
BrandBrand
Brand
 
Manual marketing
Manual marketingManual marketing
Manual marketing
 
Calculo de volumenes para movimientos de tierra
Calculo de volumenes para movimientos de tierraCalculo de volumenes para movimientos de tierra
Calculo de volumenes para movimientos de tierra
 
ஆழ்கடலில் ஒரு கோபுரம்
ஆழ்கடலில் ஒரு கோபுரம்ஆழ்கடலில் ஒரு கோபுரம்
ஆழ்கடலில் ஒரு கோபுரம்
 
Plans Book: KU School of Journalism
Plans Book: KU School of JournalismPlans Book: KU School of Journalism
Plans Book: KU School of Journalism
 
Notes hadeeth
Notes hadeethNotes hadeeth
Notes hadeeth
 
De l'ADN à la protéine
De l'ADN à la protéineDe l'ADN à la protéine
De l'ADN à la protéine
 
Fichas para trabajar con euros y centimos
Fichas para trabajar con euros y centimosFichas para trabajar con euros y centimos
Fichas para trabajar con euros y centimos
 
三星上將梨
三星上將梨三星上將梨
三星上將梨
 

En vedette

Learning to Make Your Own Reality - IGDA Education Keynote 2009
Learning to Make Your Own Reality  - IGDA Education Keynote 2009Learning to Make Your Own Reality  - IGDA Education Keynote 2009
Learning to Make Your Own Reality - IGDA Education Keynote 2009
Jane McGonigal
 
Coordenadas 34 cópias frente e verso
Coordenadas   34 cópias frente e versoCoordenadas   34 cópias frente e verso
Coordenadas 34 cópias frente e verso
Otávio Sales
 
Microcontroladores6 8[1]
Microcontroladores6 8[1]Microcontroladores6 8[1]
Microcontroladores6 8[1]
Jose Fortes
 
Excellent Testcase
Excellent TestcaseExcellent Testcase
Excellent Testcase
guestf1dc2d
 
Beat Communication (SNS for Human Resources / Recruitment)
Beat Communication (SNS for Human Resources / Recruitment)Beat Communication (SNS for Human Resources / Recruitment)
Beat Communication (SNS for Human Resources / Recruitment)
Beat Communication
 
Caresse Sur Locean
Caresse Sur LoceanCaresse Sur Locean
Caresse Sur Locean
montcubi
 

En vedette (20)

Infinispan, a distributed in-memory key/value data grid and cache
 Infinispan, a distributed in-memory key/value data grid and cache Infinispan, a distributed in-memory key/value data grid and cache
Infinispan, a distributed in-memory key/value data grid and cache
 
Store management
Store managementStore management
Store management
 
Ssssss
SsssssSsssss
Ssssss
 
Résultats enquête portrait chambres d'hôtes et gites 2015 - Copyright "Guest ...
Résultats enquête portrait chambres d'hôtes et gites 2015 - Copyright "Guest ...Résultats enquête portrait chambres d'hôtes et gites 2015 - Copyright "Guest ...
Résultats enquête portrait chambres d'hôtes et gites 2015 - Copyright "Guest ...
 
Learning to Make Your Own Reality - IGDA Education Keynote 2009
Learning to Make Your Own Reality  - IGDA Education Keynote 2009Learning to Make Your Own Reality  - IGDA Education Keynote 2009
Learning to Make Your Own Reality - IGDA Education Keynote 2009
 
L4
L4L4
L4
 
ASFWS 11 - Nos partenaires et sponsors
ASFWS 11 - Nos partenaires et sponsorsASFWS 11 - Nos partenaires et sponsors
ASFWS 11 - Nos partenaires et sponsors
 
Lk math pokok
Lk math pokokLk math pokok
Lk math pokok
 
le manuel de Samsung K5 lecteur mp3!
le manuel de Samsung K5 lecteur mp3!le manuel de Samsung K5 lecteur mp3!
le manuel de Samsung K5 lecteur mp3!
 
Coordenadas 34 cópias frente e verso
Coordenadas   34 cópias frente e versoCoordenadas   34 cópias frente e verso
Coordenadas 34 cópias frente e verso
 
Microcontroladores6 8[1]
Microcontroladores6 8[1]Microcontroladores6 8[1]
Microcontroladores6 8[1]
 
Billie Jean
Billie JeanBillie Jean
Billie Jean
 
Excellent Testcase
Excellent TestcaseExcellent Testcase
Excellent Testcase
 
Beat Communication (SNS for Human Resources / Recruitment)
Beat Communication (SNS for Human Resources / Recruitment)Beat Communication (SNS for Human Resources / Recruitment)
Beat Communication (SNS for Human Resources / Recruitment)
 
Caresse Sur Locean
Caresse Sur LoceanCaresse Sur Locean
Caresse Sur Locean
 
Solvant écologique pour pressing et blanchisseries professionnelles System k4...
Solvant écologique pour pressing et blanchisseries professionnelles System k4...Solvant écologique pour pressing et blanchisseries professionnelles System k4...
Solvant écologique pour pressing et blanchisseries professionnelles System k4...
 
Dromedary
DromedaryDromedary
Dromedary
 
Gatlinburg Tourism Summit
Gatlinburg Tourism SummitGatlinburg Tourism Summit
Gatlinburg Tourism Summit
 
Marketing Online 2009 L4logistics
Marketing Online 2009 L4logisticsMarketing Online 2009 L4logistics
Marketing Online 2009 L4logistics
 
ACTIVIDAD 3 CONTESTADA
ACTIVIDAD 3 CONTESTADAACTIVIDAD 3 CONTESTADA
ACTIVIDAD 3 CONTESTADA
 

Similaire à The Even Darker Art Of Rails Engines

The Even Darker Art Of Rails Engines Presentation
The Even Darker Art Of Rails Engines PresentationThe Even Darker Art Of Rails Engines Presentation
The Even Darker Art Of Rails Engines Presentation
railsconf
 
Plastic Bags
Plastic BagsPlastic Bags
Plastic Bags
tjokke
 
Moss Jacosbon Ems Pla 182 Final Submission 12 15 08
Moss Jacosbon   Ems Pla 182 Final Submission 12 15 08Moss Jacosbon   Ems Pla 182 Final Submission 12 15 08
Moss Jacosbon Ems Pla 182 Final Submission 12 15 08
mossbmw
 
MUDD Assignment 1_Generic Report Final
MUDD Assignment 1_Generic Report FinalMUDD Assignment 1_Generic Report Final
MUDD Assignment 1_Generic Report Final
evelynkinwah
 
841charity
841charity841charity
841charity
spmath
 
open innovation
open innovationopen innovation
open innovation
Anto Recio
 
Wikimedia Foundation: Annual Plan 2008-2009
Wikimedia Foundation: Annual Plan 2008-2009Wikimedia Foundation: Annual Plan 2008-2009
Wikimedia Foundation: Annual Plan 2008-2009
guestc4425
 

Similaire à The Even Darker Art Of Rails Engines (20)

The Even Darker Art Of Rails Engines Presentation
The Even Darker Art Of Rails Engines PresentationThe Even Darker Art Of Rails Engines Presentation
The Even Darker Art Of Rails Engines Presentation
 
ESWC 2009 Lightning Talks
ESWC 2009 Lightning TalksESWC 2009 Lightning Talks
ESWC 2009 Lightning Talks
 
Vietnam Online Travel Behaviors
Vietnam Online Travel BehaviorsVietnam Online Travel Behaviors
Vietnam Online Travel Behaviors
 
2 Graph Theory
2 Graph Theory2 Graph Theory
2 Graph Theory
 
Plastic Bags
Plastic BagsPlastic Bags
Plastic Bags
 
OpenSSO Microsoft Interop
OpenSSO Microsoft InteropOpenSSO Microsoft Interop
OpenSSO Microsoft Interop
 
Informe skoool
Informe skooolInforme skoool
Informe skoool
 
Moss Jacosbon Ems Pla 182 Final Submission 12 15 08
Moss Jacosbon   Ems Pla 182 Final Submission 12 15 08Moss Jacosbon   Ems Pla 182 Final Submission 12 15 08
Moss Jacosbon Ems Pla 182 Final Submission 12 15 08
 
MUDD Assignment 1_Generic Report Final
MUDD Assignment 1_Generic Report FinalMUDD Assignment 1_Generic Report Final
MUDD Assignment 1_Generic Report Final
 
Matematica_Basica_Vol_1 (2).pdf
Matematica_Basica_Vol_1 (2).pdfMatematica_Basica_Vol_1 (2).pdf
Matematica_Basica_Vol_1 (2).pdf
 
Cifrado en Flujo y Bloque con Clave Secreta
Cifrado en Flujo y Bloque con Clave SecretaCifrado en Flujo y Bloque con Clave Secreta
Cifrado en Flujo y Bloque con Clave Secreta
 
841charity
841charity841charity
841charity
 
Gestão do conhecimento - Faculdade Shalom
Gestão do conhecimento - Faculdade ShalomGestão do conhecimento - Faculdade Shalom
Gestão do conhecimento - Faculdade Shalom
 
Entrepreneurs Request
Entrepreneurs RequestEntrepreneurs Request
Entrepreneurs Request
 
open innovation
open innovationopen innovation
open innovation
 
Wikimedia Foundation: Annual Plan 2008-2009
Wikimedia Foundation: Annual Plan 2008-2009Wikimedia Foundation: Annual Plan 2008-2009
Wikimedia Foundation: Annual Plan 2008-2009
 
Working in the UnOffice: A Guide to Coworking for Indie Workers, Small Busine...
Working in the UnOffice: A Guide to Coworking for Indie Workers, Small Busine...Working in the UnOffice: A Guide to Coworking for Indie Workers, Small Busine...
Working in the UnOffice: A Guide to Coworking for Indie Workers, Small Busine...
 
GCEMED2012 Rassegna stampa web
GCEMED2012 Rassegna stampa webGCEMED2012 Rassegna stampa web
GCEMED2012 Rassegna stampa web
 
this work took many years as this case was much suppressed by british-The sui...
this work took many years as this case was much suppressed by british-The sui...this work took many years as this case was much suppressed by british-The sui...
this work took many years as this case was much suppressed by british-The sui...
 
Arduino the Object Way.pdf
Arduino the Object Way.pdfArduino the Object Way.pdf
Arduino the Object Way.pdf
 

Plus de lazyatom

Plus de lazyatom (7)

Extending Rails with Plugins (2007)
Extending Rails with Plugins (2007)Extending Rails with Plugins (2007)
Extending Rails with Plugins (2007)
 
Engines: Team Development on Rails (2005)
Engines: Team Development on Rails (2005)Engines: Team Development on Rails (2005)
Engines: Team Development on Rails (2005)
 
The Even Darker Art of Rails Engines (2009)
The Even Darker Art of Rails Engines (2009)The Even Darker Art of Rails Engines (2009)
The Even Darker Art of Rails Engines (2009)
 
The Dark Art of Rails Plugins (2008)
The Dark Art of Rails Plugins (2008)The Dark Art of Rails Plugins (2008)
The Dark Art of Rails Plugins (2008)
 
Gem That (2009)
Gem That (2009)Gem That (2009)
Gem That (2009)
 
Do we need more test frameworks? (2011)
Do we need more test frameworks? (2011)Do we need more test frameworks? (2011)
Do we need more test frameworks? (2011)
 
IoT Printer (2012)
IoT Printer (2012)IoT Printer (2012)
IoT Printer (2012)
 

Dernier

Dernier (20)

Advantages of Hiring UIUX Design Service Providers for Your Business
Advantages of Hiring UIUX Design Service Providers for Your BusinessAdvantages of Hiring UIUX Design Service Providers for Your Business
Advantages of Hiring UIUX Design Service Providers for Your Business
 
Partners Life - Insurer Innovation Award 2024
Partners Life - Insurer Innovation Award 2024Partners Life - Insurer Innovation Award 2024
Partners Life - Insurer Innovation Award 2024
 
Automating Google Workspace (GWS) & more with Apps Script
Automating Google Workspace (GWS) & more with Apps ScriptAutomating Google Workspace (GWS) & more with Apps Script
Automating Google Workspace (GWS) & more with Apps Script
 
What Are The Drone Anti-jamming Systems Technology?
What Are The Drone Anti-jamming Systems Technology?What Are The Drone Anti-jamming Systems Technology?
What Are The Drone Anti-jamming Systems Technology?
 
The 7 Things I Know About Cyber Security After 25 Years | April 2024
The 7 Things I Know About Cyber Security After 25 Years | April 2024The 7 Things I Know About Cyber Security After 25 Years | April 2024
The 7 Things I Know About Cyber Security After 25 Years | April 2024
 
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
 
Real Time Object Detection Using Open CV
Real Time Object Detection Using Open CVReal Time Object Detection Using Open CV
Real Time Object Detection Using Open CV
 
Tech Trends Report 2024 Future Today Institute.pdf
Tech Trends Report 2024 Future Today Institute.pdfTech Trends Report 2024 Future Today Institute.pdf
Tech Trends Report 2024 Future Today Institute.pdf
 
A Year of the Servo Reboot: Where Are We Now?
A Year of the Servo Reboot: Where Are We Now?A Year of the Servo Reboot: Where Are We Now?
A Year of the Servo Reboot: Where Are We Now?
 
Tata AIG General Insurance Company - Insurer Innovation Award 2024
Tata AIG General Insurance Company - Insurer Innovation Award 2024Tata AIG General Insurance Company - Insurer Innovation Award 2024
Tata AIG General Insurance Company - Insurer Innovation Award 2024
 
Developing An App To Navigate The Roads of Brazil
Developing An App To Navigate The Roads of BrazilDeveloping An App To Navigate The Roads of Brazil
Developing An App To Navigate The Roads of Brazil
 
How to Troubleshoot Apps for the Modern Connected Worker
How to Troubleshoot Apps for the Modern Connected WorkerHow to Troubleshoot Apps for the Modern Connected Worker
How to Troubleshoot Apps for the Modern Connected Worker
 
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
 
Scaling API-first – The story of a global engineering organization
Scaling API-first – The story of a global engineering organizationScaling API-first – The story of a global engineering organization
Scaling API-first – The story of a global engineering organization
 
2024: Domino Containers - The Next Step. News from the Domino Container commu...
2024: Domino Containers - The Next Step. News from the Domino Container commu...2024: Domino Containers - The Next Step. News from the Domino Container commu...
2024: Domino Containers - The Next Step. News from the Domino Container commu...
 
Apidays New York 2024 - Scaling API-first by Ian Reasor and Radu Cotescu, Adobe
Apidays New York 2024 - Scaling API-first by Ian Reasor and Radu Cotescu, AdobeApidays New York 2024 - Scaling API-first by Ian Reasor and Radu Cotescu, Adobe
Apidays New York 2024 - Scaling API-first by Ian Reasor and Radu Cotescu, Adobe
 
Apidays New York 2024 - The value of a flexible API Management solution for O...
Apidays New York 2024 - The value of a flexible API Management solution for O...Apidays New York 2024 - The value of a flexible API Management solution for O...
Apidays New York 2024 - The value of a flexible API Management solution for O...
 
Boost PC performance: How more available memory can improve productivity
Boost PC performance: How more available memory can improve productivityBoost PC performance: How more available memory can improve productivity
Boost PC performance: How more available memory can improve productivity
 
Axa Assurance Maroc - Insurer Innovation Award 2024
Axa Assurance Maroc - Insurer Innovation Award 2024Axa Assurance Maroc - Insurer Innovation Award 2024
Axa Assurance Maroc - Insurer Innovation Award 2024
 
Exploring the Future Potential of AI-Enabled Smartphone Processors
Exploring the Future Potential of AI-Enabled Smartphone ProcessorsExploring the Future Potential of AI-Enabled Smartphone Processors
Exploring the Future Potential of AI-Enabled Smartphone Processors
 

The Even Darker Art Of Rails Engines