SlideShare a Scribd company logo
1 of 59
Download to read offline
Ruby Smells
 
Pivorak Edition
code example caveats
instance state denoted via @instance_variables
assume those instance variables are
set in constructors | dependency injected
(constructors skipped for simplicity)
(yes, I would use getters in actual code)
(yes, some examples are very badly refactored)
c l a s s M e e t u p
d e f w e a t h e r _ a s s e s s m e n t
i f @ w e a t h e r _ s o u r c e . w e a t h e r _ a t ( @ c i t y ) . s k i e s = = : c l e a r
' T o o s u n n y '
e l s i f @ w e a t h e r _ s o u r c e . w e a t h e r _ a t ( @ c i t y ) . t e m p > 2 0
' T o o h o t '
e l s e
' P e r f e c t f o r c o d i n g '
e n d
e n d
e n d
duplicate method call
the same call made more than once
refactoring: factor out a single call
caveat: readability
c l a s s M e e t u p
d e f w e a t h e r _ a s s e s s m e n t
w e a t h e r = @ w e a t h e r _ s o u r c e . w e a t h e r _ a t ( @ c i t y )
i f w e a t h e r . s k i e s = = : c l e a r
' T o o s u n n y '
e l s i f w e a t h e r . t e m p > 2 0
' T o o h o t '
e l s e
' P e r f e c t f o r c o d i n g '
e n d
e n d
e n d
m o d u l e A r t D e c o m p
c l a s s S e p s
d e f s e p a r a t e s ? ( r o w , c o l )
m a t r i x [ r o w ] a n d m a t r i x [ r o w ] [ c o l ] . n o n z e r o ?
e n d
e n d
e n d
m o d u l e A r t D e c o m p
c l a s s A r c h S i z e r
d e f m i n _ q u a r t e r s
c a s e
w h e n i . z e r o ? , o . z e r o ? t h e n 0
w h e n i < = 5 t h e n ( o / 2 . 0 ) . c e i l
e l s e [ ( i / 5 . 0 ) . c e i l , ( o / 2 . 0 ) . c e i l ] . m a x
e n d
e n d
e n d
e n d
c l a s s M e e t u p
d e f d i r e c t i o n s ( s o u r c e _ l a t , s o u r c e _ l o n )
@ n a v _ s o u r c e . d i r e c t i o n s ( f r o m : [ s o u r c e _ l a t , s o u r c e _ l o n ] , t o : [ @ l a t , @ l o n ] )
e n d
d e f d i s t a n c e ( s o u r c e _ l a t , s o u r c e _ l o n )
@ n a v _ s o u r c e . d i s t a n c e ( f r o m : [ s o u r c e _ l a t , s o u r c e _ l o n ] , t o : [ @ l a t , @ l o n ] )
e n d
d e f n e e d s _ p a s s p o r t ? ( s o u r c e _ l a t , s o u r c e _ l o n )
@ n a v _ s o u r c e . b o r d e r s ? ( f r o m : [ s o u r c e _ l a t , s o u r c e _ l o n ] , t o : [ @ l a t , @ l o n ] )
e n d
e n d
data clump
the same set of variables passed in many contexts
refactoring: create a composite (value?) object
caveat: make sure the clumped variables are related
L o c a t i o n = S t r u c t . n e w ( : l a t , : l o n )
c l a s s M e e t u p
d e f d i r e c t i o n s ( s o u r c e _ l o c a t i o n )
@ n a v _ s o u r c e . d i r e c t i o n s ( f r o m : s o u r c e _ l o c a t i o n , t o : @ l o c a t i o n )
e n d
d e f d i s t a n c e ( s o u r c e _ l o c a t i o n )
@ n a v _ s o u r c e . d i s t a n c e ( f r o m : s o u r c e _ l o c a t i o n , t o : @ l o c a t i o n )
e n d
d e f n e e d s _ p a s s p o r t ? ( s o u r c e _ l o c a t i o n )
@ n a v _ s o u r c e . b o r d e r s ? ( f r o m : s o u r c e _ l o c a t i o n , t o : @ l o c a t i o n )
e n d
e n d
c l a s s M e e t u p
d e f d i r e c t i o n s ( s o u r c e _ l o c a t i o n )
i f @ l o c a t i o n
@ n a v _ s o u r c e . d i r e c t i o n s ( f r o m : s o u r c e _ l o c a t i o n , t o : @ l o c a t i o n )
e n d
e n d
d e f d i s t a n c e ( s o u r c e _ l o c a t i o n )
i f @ l o c a t i o n
@ n a v _ s o u r c e . d i s t a n c e ( f r o m : s o u r c e _ l o c a t i o n , t o : @ l o c a t i o n )
e n d
e n d
d e f n e e d s _ p a s s p o r t ? ( s o u r c e _ l o c a t i o n )
i f @ l o c a t i o n
@ n a v _ s o u r c e . b o r d e r s ? ( f r o m : s o u r c e _ l o c a t i o n , t o : @ l o c a t i o n )
e n d
e n d
e n d
repeated conditional
the same condition is checked in many places
refactoring: factor out LocatedMeetup
refactoring: make NavSource work with NullLocation
caveat: sometimes readability trumps purer design
c l a s s M e e t u p
d e f i n i t i a l i z e ( n a m e = n i l )
@ n a m e = n a m e
e n d
d e f a c r o n y m ?
! ! @ n a m e . m a t c h ( /  A (  p { U p p e r } ) +  z / ) u n l e s s @ n a m e . n i l ?
e n d
e n d
nil check
usually means there’s a missing type in the system
refactoring: find the missing type (a null object?)
caveat: make sure you don’t sacrifice simplicity
c l a s s U n n a m e d M e e t u p
d e f a c r o n y m ?
f a l s e # o r i s i t ? : )
e n d
e n d
c l a s s M e e t u p
d e f s e l f . n e w ( n a m e = n i l )
n a m e ? s u p e r : U n n a m e d M e e t u p . n e w
e n d
d e f i n i t i a l i z e ( n a m e )
@ n a m e = n a m e
e n d
d e f a c r o n y m ?
! ! @ n a m e . m a t c h ( /  A (  p { U p p e r } ) +  z / )
e n d
e n d
c l a s s M e e t u p
d e f r u b y ? ( s t r i c t = t r u e )
i f s t r i c t
@ l a n g u a g e s = [ ' R u b y ' ]
e l s e
@ l a n g u a g e s . i n c l u d e ? ( ' R u b y ' )
e n d
e n d
e n d
boolean parameter
the caller directly controls calee’s code execution
refactoring: split into dedicated methods (classes?)
caveat: consider caller usability
c l a s s M e e t u p
d e f s u r e l y _ r u b y ?
@ l a n g u a g e s = [ ' R u b y ' ]
e n d
d e f p o s s i b l y _ r u b y ?
@ l a n g u a g e s . i n c l u d e ? ( ' R u b y ' )
e n d
e n d
c l a s s M e e t u p
d e f i n t e r e s t i n g ? ( a t t e n d e e )
c a s e a t t e n d e e
w h e n ' p y t h o n i s t a ' t h e n d y n a m i c ?
w h e n ' r u b y i s t ' t h e n l a i d _ b a c k ?
w h e n ' r u s t a c e a n ' t h e n s y s t e m ?
e n d
e n d
e n d
control parameter
the caller knows which path the code will take
refactoring: split into dedicated methods
caveat: consider caller usability (more likely)
c l a s s M e e t u p
d e f i n t e r e s t i n g _ t o _ p y t h o n i s t a s ?
d y n a m i c ?
e n d
d e f i n t e r e s t i n g _ t o _ r u b y i s t s ?
l a i d _ b a c k ?
e n d
d e f i n t e r e s t i n g _ t o _ r u s t a c e a n s ?
s y s t e m ?
e n d
e n d
c l a s s M e e t u p
d e f s u c c e s s f u l ? ( a t t e n d e e s )
e x c i t e d , i n d i f f e r e n t = a t t e n d e e s . p a r t i t i o n ( & : e x c i t e d ? )
e x c i t e d . c o u n t > i n d i f f e r e n t . c o u n t
e n d
e n d
utility function
a method that does not depend on instance state
can be moved anywhere in the system
refactoring: move it to where it belongs
caveat: sometimes it’s just a (private?) helper
c l a s s M e e t u p
d e f s u c c e s s f u l ?
e x c i t e d , i n d i f f e r e n t = @ a t t e n d e e s . p a r t i t i o n ( & : e x c i t e d ? )
e x c i t e d . c o u n t > i n d i f f e r e n t . c o u n t
e n d
e n d
c l a s s M e e t u p
d e f s u c c e s s f u l ?
@ a t t e n d e e s . e x c i t e d ?
e n d
e n d
c l a s s A t t e n d e e s < A r r a y
d e f e x c i t e d ?
e x c i t e d , i n d i f f e r e n t = p a r t i t i o n ( & : e x c i t e d ? )
e x c i t e d . c o u n t > i n d i f f e r e n t . c o u n t
e n d
e n d
r e q u i r e ' f o r w a r d a b l e '
c l a s s A t t e n d e e s
e x t e n d F o r w a r d a b l e
d e f i n i t i a l i z e ( c o l l e c t i o n )
@ c o l l e c t i o n = c o l l e c t i o n
e n d
d e f e x c i t e d ?
e x c i t e d , i n d i f f e r e n t = p a r t i t i o n ( & : e x c i t e d ? )
e x c i t e d . c o u n t > i n d i f f e r e n t . c o u n t
e n d
d e l e g a t e p a r t i t i o n : : @ c o l l e c t i o n
e n d
c l a s s M e e t u p
d e f s u c c e s s f u l ? ( a t t e n d e e s )
e x c i t e d , i n d i f f e r e n t = a t t e n d e e s . p a r t i t i o n d o | a t t e n d e e |
a t t e n d e e . e x c i t e d ? | | @ l a n g u a g e = = ' R u b y ' & & a t t e n d e e . r u b y i s t ?
e n d
e x c i t e d . c o u n t > i n d i f f e r e n t . c o u n t
e n d
e n d
feature envy
partially refers to instance, but mostly to arguments
refactoring: move code to one of the arguments
caveat: make sure the knowledge is local to the
problem
c l a s s M e e t u p
d e f s u c c e s s f u l ?
@ a t t e n d e e s . e x c i t e d ? ( l a n g u a g e : @ l a n g u a g e )
e n d
e n d
c l a s s A t t e n d e e s
d e f e x c i t e d ? ( l a n g u a g e : n i l )
e x c i t e d , i n d i f f e r e n t = p a r t i t i o n { | a t t e n d e e | a t t e n d e e . e x c i t e d ? ( l a n g u a g e : l a n g u a g e ) }
e x c i t e d . c o u n t > i n d i f f e r e n t . c o u n t
e n d
e n d
c l a s s A t t e n d e e
d e f e x c i t e d ? ( l a n g u a g e : n i l )
@ e x c i t e d | | @ r u b y i s t & & l a n g u a g e = = ' R u b y '
e n d
e n d
c l a s s M e e t u p
d e f i n i t i a l i z e ( c i t y : , n a m e : )
@ c i t y = c i t y
@ n a m e = n a m e
e n d
a t t r _ a c c e s s o r : c i t y , : n a m e
e n d
attribute
setters: bad
getters: it depends
refactoring: tell, don’t ask
refactoring: immutability via #update (or #with)
caveat: an overkill in simplest (riiight…) projects
c l a s s M e e t u p
d e f i n i t i a l i z e ( c i t y : , n a m e : )
@ c i t y = c i t y
@ n a m e = n a m e
e n d
a t t r _ r e a d e r : c i t y , : n a m e
d e f u p d a t e ( c i t y : @ c i t y , n a m e : @ n a m e )
s e l f . c l a s s . n e w ( c i t y : c i t y , n a m e : n a m e )
e n d
e n d
real world examples
(433 lines)
(759 lines)
(1595 lines)
Matrix::EigenvalueDecomposition#hessenberg_to_real_schur
TkItemConfigMethod#__itemconfiginfo_core
RDoc::Markdown#_Code
so… how can we find code
smells in our Ruby apps?
by hand
using Reek
very opinionated
static code analyser
for finding smells
RuboCop for architecture
Reek usage
$ g e m i n s t a l l r e e k
$ r e e k - - n o - w i k i - l i n k s m e e t u p . r b
m e e t u p . r b - - 1 0 w a r n i n g s :
[ 4 0 , 4 2 ] : D u p l i c a t e M e t h o d C a l l : M e e t u p # w e a t h e r _ a s s e s s m e n t c a l l s @ w e a t h e r _ s o u r c e . w e a t h e r _ a t ( @ c i t y
[ 2 1 , 2 7 , 3 3 ] : D a t a C l u m p : M e e t u p t a k e s p a r a m e t e r s [ s o u r c e _ l a t , s o u r c e _ l o n ] t o 3 m e t h o d s
[ 2 2 , 2 8 , 3 4 ] : R e p e a t e d C o n d i t i o n a l : M e e t u p t e s t s @ l a t & & @ l o n a t l e a s t 3 t i m e s
[ 5 7 ] : N i l C h e c k : M e e t u p # a c r o n y m ? p e r f o r m s a n i l - c h e c k
[ 6 ] : C o n t r o l P a r a m e t e r : M e e t u p # i n t e r e s t i n g ? i s c o n t r o l l e d b y a r g u m e n t a t t e n d e e
[ 1 3 ] : B o o l e a n P a r a m e t e r : M e e t u p # r u b y ? h a s b o o l e a n p a r a m e t e r ' s t r i c t '
[ 1 4 ] : C o n t r o l P a r a m e t e r : M e e t u p # r u b y ? i s c o n t r o l l e d b y a r g u m e n t s t r i c t
[ 5 1 , 5 1 ] : F e a t u r e E n v y : M e e t u p # s u c c e s s f u l ? r e f e r s t o a t t e n d e e m o r e t h a n s e l f ( m a y b e m o v e i t t o a
[ 2 ] : A t t r i b u t e : M e e t u p # c i t y i s a w r i t a b l e a t t r i b u t e
[ 1 ] : I r r e s p o n s i b l e M o d u l e : M e e t u p h a s n o d e s c r i p t i v e c o m m e n t
configuration: .reek
D a t a C l u m p :
m a x _ c o p i e s : 2
m i n _ c l u m p _ s i z e : 2
L o n g P a r a m e t e r L i s t :
m a x _ p a r a m s : 3
o v e r r i d e s :
i n i t i a l i z e :
m a x _ p a r a m s : 5
T o o M a n y I n s t a n c e V a r i a b l e s :
m a x _ i n s t a n c e _ v a r i a b l e s : 4
T o o M a n y S t a t e m e n t s :
e x c l u d e :
- i n i t i a l i z e
m a x _ s t a t e m e n t s : 5
excludes: from Class#method to /meth/
configuration: code comments
# : r e e k : U t i l i t y F u n c t i o n
d e f s u c c e s s f u l ? ( a t t e n d e e s )
e x c i t e d , i n d i f f e r e n t = a t t e n d e e s . p a r t i t i o n ( & : e x c i t e d ? )
e x c i t e d . c o u n t > i n d i f f e r e n t . c o u n t
e n d
# : r e e k : D u p l i c a t e M e t h o d C a l l : { m a x _ c a l l s : 2 }
d e f w e a t h e r _ a s s e s s m e n t
i f @ w e a t h e r _ s o u r c e . w e a t h e r _ a t ( @ c i t y ) . s k i e s = = : c l e a r
' T o o s u n n y '
e l s i f @ w e a t h e r _ s o u r c e . w e a t h e r _ a t ( @ c i t y ) . t e m p > 2 0
' T o o h o t '
e l s e
' P e r f e c t f o r c o d i n g '
e n d
e n d
per­directory configuration
caveat emptor
making Reek happy with my code
taught me the most about OOP
in the last year
but
always be critical of such tools
Piotr Solnica, Clean Code Cowboy
Piotr Solnica, Clean Code Cowboy
world domination plans
try out 
maybe add it to  ?
don’t be overwhelmed by the potential smells
reek--todo might be a good start!
please let us know what doesn’t work
have fun with
refactoring | enlightened whitelisting
Reek
Code Climate
thanks!
Piotr Szotkowski
@chastell
talks.chastell.net

More Related Content

What's hot

Backup of diccionary copy
Backup of diccionary copyBackup of diccionary copy
Backup of diccionary copyEnrique Marquez
 
Ceh v8 labs module 18 buffer overflow
Ceh v8 labs module 18 buffer overflowCeh v8 labs module 18 buffer overflow
Ceh v8 labs module 18 buffer overflowMehrdad Jingoism
 
PyLadies Talk: Learn to love the command line!
PyLadies Talk: Learn to love the command line!PyLadies Talk: Learn to love the command line!
PyLadies Talk: Learn to love the command line!Blanca Mancilla
 
Modeling avengers – open source technology mix for saving the world econ fr
Modeling avengers – open source technology mix for saving the world econ frModeling avengers – open source technology mix for saving the world econ fr
Modeling avengers – open source technology mix for saving the world econ frCédric Brun
 
Hoja de vida jogc
Hoja de vida jogcHoja de vida jogc
Hoja de vida jogcjogc62
 
Japan Lease, English
Japan Lease, EnglishJapan Lease, English
Japan Lease, EnglishAnon User
 
Passivhaus on a shoestring
Passivhaus on a shoestringPassivhaus on a shoestring
Passivhaus on a shoestringPaul Testa
 
Social Network Analysis With R
Social Network Analysis With RSocial Network Analysis With R
Social Network Analysis With RDavid Chiu
 
Towards Exemplary Moodle Courses at YSJU
Towards Exemplary Moodle Courses at YSJUTowards Exemplary Moodle Courses at YSJU
Towards Exemplary Moodle Courses at YSJUPhil Vincent
 
Conférence - Du bon usage d'une charte graphique
Conférence - Du bon usage d'une charte graphiqueConférence - Du bon usage d'une charte graphique
Conférence - Du bon usage d'une charte graphiqueDavid Endico
 
Continuous delivery with Gradle
Continuous delivery with GradleContinuous delivery with Gradle
Continuous delivery with GradleBob Paulin
 
Testing Fuse Fabric with Pax Exam
Testing Fuse Fabric with Pax ExamTesting Fuse Fabric with Pax Exam
Testing Fuse Fabric with Pax ExamHenryk Konsek
 
Airfeed II - The future of pigs feeding
Airfeed II  - The future of pigs feedingAirfeed II  - The future of pigs feeding
Airfeed II - The future of pigs feedingMarcio Schmidt
 
Simple vs sap b1 vs dynamics
Simple vs sap b1 vs dynamicsSimple vs sap b1 vs dynamics
Simple vs sap b1 vs dynamicsTanay Sharma
 
Profiling Web Archives IIPC GA 2015
Profiling Web Archives IIPC GA 2015Profiling Web Archives IIPC GA 2015
Profiling Web Archives IIPC GA 2015Sawood Alam
 
No Flex Zone: Empathy Driven Development
No Flex Zone: Empathy Driven DevelopmentNo Flex Zone: Empathy Driven Development
No Flex Zone: Empathy Driven DevelopmentDuretti H.
 

What's hot (20)

Backup of diccionary copy
Backup of diccionary copyBackup of diccionary copy
Backup of diccionary copy
 
ground water contamination
ground water contaminationground water contamination
ground water contamination
 
Ceh v8 labs module 18 buffer overflow
Ceh v8 labs module 18 buffer overflowCeh v8 labs module 18 buffer overflow
Ceh v8 labs module 18 buffer overflow
 
PyLadies Talk: Learn to love the command line!
PyLadies Talk: Learn to love the command line!PyLadies Talk: Learn to love the command line!
PyLadies Talk: Learn to love the command line!
 
Modeling avengers – open source technology mix for saving the world econ fr
Modeling avengers – open source technology mix for saving the world econ frModeling avengers – open source technology mix for saving the world econ fr
Modeling avengers – open source technology mix for saving the world econ fr
 
Hoja de vida jogc
Hoja de vida jogcHoja de vida jogc
Hoja de vida jogc
 
Japan Lease, English
Japan Lease, EnglishJapan Lease, English
Japan Lease, English
 
Passivhaus on a shoestring
Passivhaus on a shoestringPassivhaus on a shoestring
Passivhaus on a shoestring
 
Html + wordpress ppt.
Html + wordpress ppt.Html + wordpress ppt.
Html + wordpress ppt.
 
Backup of diccionary
Backup of diccionaryBackup of diccionary
Backup of diccionary
 
Social Network Analysis With R
Social Network Analysis With RSocial Network Analysis With R
Social Network Analysis With R
 
Towards Exemplary Moodle Courses at YSJU
Towards Exemplary Moodle Courses at YSJUTowards Exemplary Moodle Courses at YSJU
Towards Exemplary Moodle Courses at YSJU
 
Conférence - Du bon usage d'une charte graphique
Conférence - Du bon usage d'une charte graphiqueConférence - Du bon usage d'une charte graphique
Conférence - Du bon usage d'une charte graphique
 
Continuous delivery with Gradle
Continuous delivery with GradleContinuous delivery with Gradle
Continuous delivery with Gradle
 
Testing Fuse Fabric with Pax Exam
Testing Fuse Fabric with Pax ExamTesting Fuse Fabric with Pax Exam
Testing Fuse Fabric with Pax Exam
 
Airfeed II - The future of pigs feeding
Airfeed II  - The future of pigs feedingAirfeed II  - The future of pigs feeding
Airfeed II - The future of pigs feeding
 
Simple vs sap b1 vs dynamics
Simple vs sap b1 vs dynamicsSimple vs sap b1 vs dynamics
Simple vs sap b1 vs dynamics
 
Profiling Web Archives IIPC GA 2015
Profiling Web Archives IIPC GA 2015Profiling Web Archives IIPC GA 2015
Profiling Web Archives IIPC GA 2015
 
TicsDzm
TicsDzmTicsDzm
TicsDzm
 
No Flex Zone: Empathy Driven Development
No Flex Zone: Empathy Driven DevelopmentNo Flex Zone: Empathy Driven Development
No Flex Zone: Empathy Driven Development
 

Viewers also liked

Building a team by Doina Leca
Building a team by Doina LecaBuilding a team by Doina Leca
Building a team by Doina LecaPivorak MeetUp
 
Piotr Szotkowski about "Bits of ruby"
Piotr Szotkowski about "Bits of ruby"Piotr Szotkowski about "Bits of ruby"
Piotr Szotkowski about "Bits of ruby"Pivorak MeetUp
 
Building Distributed Systems
Building Distributed SystemsBuilding Distributed Systems
Building Distributed SystemsPivorak MeetUp
 
Lets build a game (in 24 min) by Ivan Zarea
Lets build a game (in 24 min) by Ivan ZareaLets build a game (in 24 min) by Ivan Zarea
Lets build a game (in 24 min) by Ivan ZareaPivorak MeetUp
 
Fighting Ruby code smell
Fighting Ruby code smellFighting Ruby code smell
Fighting Ruby code smellolegshpynov
 
Clean code and Code Smells
Clean code and Code SmellsClean code and Code Smells
Clean code and Code SmellsMario Sangiorgio
 
Clean Code I - Best Practices
Clean Code I - Best PracticesClean Code I - Best Practices
Clean Code I - Best PracticesTheo Jungeblut
 
Clean Code summary
Clean Code summaryClean Code summary
Clean Code summaryJan de Vries
 

Viewers also liked (10)

Building a team by Doina Leca
Building a team by Doina LecaBuilding a team by Doina Leca
Building a team by Doina Leca
 
Piotr Szotkowski about "Bits of ruby"
Piotr Szotkowski about "Bits of ruby"Piotr Szotkowski about "Bits of ruby"
Piotr Szotkowski about "Bits of ruby"
 
Building Distributed Systems
Building Distributed SystemsBuilding Distributed Systems
Building Distributed Systems
 
Lets build a game (in 24 min) by Ivan Zarea
Lets build a game (in 24 min) by Ivan ZareaLets build a game (in 24 min) by Ivan Zarea
Lets build a game (in 24 min) by Ivan Zarea
 
Code smells and remedies
Code smells and remediesCode smells and remedies
Code smells and remedies
 
Code Smells
Code SmellsCode Smells
Code Smells
 
Fighting Ruby code smell
Fighting Ruby code smellFighting Ruby code smell
Fighting Ruby code smell
 
Clean code and Code Smells
Clean code and Code SmellsClean code and Code Smells
Clean code and Code Smells
 
Clean Code I - Best Practices
Clean Code I - Best PracticesClean Code I - Best Practices
Clean Code I - Best Practices
 
Clean Code summary
Clean Code summaryClean Code summary
Clean Code summary
 

Similar to Piotr Szotkowski about "Ruby smells"

Spring Roo 2.0 Preview at Spring I/O 2016
Spring Roo 2.0 Preview at Spring I/O 2016 Spring Roo 2.0 Preview at Spring I/O 2016
Spring Roo 2.0 Preview at Spring I/O 2016 DISID
 
Classroom Structuring and Management.ppt
Classroom Structuring and Management.pptClassroom Structuring and Management.ppt
Classroom Structuring and Management.pptBelceZeusAsuncion1
 
1-SYSTEM-ANALYSIS-AND-DESIGN-INTRODUCTION.pptx
1-SYSTEM-ANALYSIS-AND-DESIGN-INTRODUCTION.pptx1-SYSTEM-ANALYSIS-AND-DESIGN-INTRODUCTION.pptx
1-SYSTEM-ANALYSIS-AND-DESIGN-INTRODUCTION.pptxJohnLagman3
 
Ember js meetup treviso liquid-fire
Ember js meetup treviso liquid-fireEmber js meetup treviso liquid-fire
Ember js meetup treviso liquid-fireWilliam Bergamo
 
Ceh v8 labs module 06 trojans and backdoors
Ceh v8 labs module 06 trojans and backdoorsCeh v8 labs module 06 trojans and backdoors
Ceh v8 labs module 06 trojans and backdoorsMehrdad Jingoism
 
Breathe life into your designer!
Breathe life into your designer!Breathe life into your designer!
Breathe life into your designer!Cédric Brun
 
Rigger and Signal Person
Rigger and Signal PersonRigger and Signal Person
Rigger and Signal PersonJason Wilson
 
Antropometria y ergonometria
Antropometria y ergonometriaAntropometria y ergonometria
Antropometria y ergonometriaValentina Lobo
 
School Violence and student
School Violence and studentSchool Violence and student
School Violence and studentacastane
 
Scanned by CamScannerG o o d w M P r e p a id r e n t.docx
Scanned by CamScannerG o o d w M  P r e p a id  r e n t.docxScanned by CamScannerG o o d w M  P r e p a id  r e n t.docx
Scanned by CamScannerG o o d w M P r e p a id r e n t.docxkenjordan97598
 
From simple to more advanced: Lessons learned in 13 months with Tableau
From simple to more advanced: Lessons learned in 13 months with TableauFrom simple to more advanced: Lessons learned in 13 months with Tableau
From simple to more advanced: Lessons learned in 13 months with TableauSergii Khomenko
 
Hacking web applications CEHv8 module 13
Hacking web applications CEHv8 module 13Hacking web applications CEHv8 module 13
Hacking web applications CEHv8 module 13Wise Person
 
The Library As Indicator Species: Evolution, or Extinction?
The Library As Indicator Species: Evolution, or Extinction?The Library As Indicator Species: Evolution, or Extinction?
The Library As Indicator Species: Evolution, or Extinction?char booth
 
From Phonology to Syntax: Unsupervised Linguistic Typology at Different Level...
From Phonology to Syntax: Unsupervised Linguistic Typology at Different Level...From Phonology to Syntax: Unsupervised Linguistic Typology at Different Level...
From Phonology to Syntax: Unsupervised Linguistic Typology at Different Level...Johannes Bjerva
 
Presentation For Minnor Project MCET
Presentation For Minnor Project MCETPresentation For Minnor Project MCET
Presentation For Minnor Project MCETShhuvradipChakrabort
 
Evaluation progresion path loss model
Evaluation progresion path loss modelEvaluation progresion path loss model
Evaluation progresion path loss modelNguyen Minh Thu
 
Scanned by CamScannerT a b i c 4 2 0 13 2 0 14 V ( ï l .docx
Scanned by CamScannerT  a b i c  4 2 0 13 2 0 14  V ( ï l .docxScanned by CamScannerT  a b i c  4 2 0 13 2 0 14  V ( ï l .docx
Scanned by CamScannerT a b i c 4 2 0 13 2 0 14 V ( ï l .docxanhlodge
 

Similar to Piotr Szotkowski about "Ruby smells" (20)

Spring Roo 2.0 Preview at Spring I/O 2016
Spring Roo 2.0 Preview at Spring I/O 2016 Spring Roo 2.0 Preview at Spring I/O 2016
Spring Roo 2.0 Preview at Spring I/O 2016
 
Classroom Structuring and Management.ppt
Classroom Structuring and Management.pptClassroom Structuring and Management.ppt
Classroom Structuring and Management.ppt
 
1-SYSTEM-ANALYSIS-AND-DESIGN-INTRODUCTION.pptx
1-SYSTEM-ANALYSIS-AND-DESIGN-INTRODUCTION.pptx1-SYSTEM-ANALYSIS-AND-DESIGN-INTRODUCTION.pptx
1-SYSTEM-ANALYSIS-AND-DESIGN-INTRODUCTION.pptx
 
Ember js meetup treviso liquid-fire
Ember js meetup treviso liquid-fireEmber js meetup treviso liquid-fire
Ember js meetup treviso liquid-fire
 
Ceh v8 labs module 06 trojans and backdoors
Ceh v8 labs module 06 trojans and backdoorsCeh v8 labs module 06 trojans and backdoors
Ceh v8 labs module 06 trojans and backdoors
 
Breathe life into your designer!
Breathe life into your designer!Breathe life into your designer!
Breathe life into your designer!
 
Rigger and Signal Person
Rigger and Signal PersonRigger and Signal Person
Rigger and Signal Person
 
Winload.efi.mui
Winload.efi.muiWinload.efi.mui
Winload.efi.mui
 
Antropometria y ergonometria
Antropometria y ergonometriaAntropometria y ergonometria
Antropometria y ergonometria
 
School Violence and student
School Violence and studentSchool Violence and student
School Violence and student
 
Scanned by CamScannerG o o d w M P r e p a id r e n t.docx
Scanned by CamScannerG o o d w M  P r e p a id  r e n t.docxScanned by CamScannerG o o d w M  P r e p a id  r e n t.docx
Scanned by CamScannerG o o d w M P r e p a id r e n t.docx
 
From simple to more advanced: Lessons learned in 13 months with Tableau
From simple to more advanced: Lessons learned in 13 months with TableauFrom simple to more advanced: Lessons learned in 13 months with Tableau
From simple to more advanced: Lessons learned in 13 months with Tableau
 
Hacking web applications CEHv8 module 13
Hacking web applications CEHv8 module 13Hacking web applications CEHv8 module 13
Hacking web applications CEHv8 module 13
 
The Library As Indicator Species: Evolution, or Extinction?
The Library As Indicator Species: Evolution, or Extinction?The Library As Indicator Species: Evolution, or Extinction?
The Library As Indicator Species: Evolution, or Extinction?
 
From Phonology to Syntax: Unsupervised Linguistic Typology at Different Level...
From Phonology to Syntax: Unsupervised Linguistic Typology at Different Level...From Phonology to Syntax: Unsupervised Linguistic Typology at Different Level...
From Phonology to Syntax: Unsupervised Linguistic Typology at Different Level...
 
Transcripts and PC
Transcripts and PCTranscripts and PC
Transcripts and PC
 
Presentation For Minnor Project MCET
Presentation For Minnor Project MCETPresentation For Minnor Project MCET
Presentation For Minnor Project MCET
 
Evaluation progresion path loss model
Evaluation progresion path loss modelEvaluation progresion path loss model
Evaluation progresion path loss model
 
114PPTMATHS.pptx
114PPTMATHS.pptx114PPTMATHS.pptx
114PPTMATHS.pptx
 
Scanned by CamScannerT a b i c 4 2 0 13 2 0 14 V ( ï l .docx
Scanned by CamScannerT  a b i c  4 2 0 13 2 0 14  V ( ï l .docxScanned by CamScannerT  a b i c  4 2 0 13 2 0 14  V ( ï l .docx
Scanned by CamScannerT a b i c 4 2 0 13 2 0 14 V ( ï l .docx
 

More from Pivorak MeetUp

Lisp(Lots of Irritating Superfluous Parentheses)
Lisp(Lots of Irritating Superfluous Parentheses)Lisp(Lots of Irritating Superfluous Parentheses)
Lisp(Lots of Irritating Superfluous Parentheses)Pivorak MeetUp
 
Some strange stories about mocks.
Some strange stories about mocks.Some strange stories about mocks.
Some strange stories about mocks.Pivorak MeetUp
 
Business-friendly library for inter-service communication
Business-friendly library for inter-service communicationBusiness-friendly library for inter-service communication
Business-friendly library for inter-service communicationPivorak MeetUp
 
How i was a team leader once
How i was a team leader onceHow i was a team leader once
How i was a team leader oncePivorak MeetUp
 
Rails MVC by Sergiy Koshovyi
Rails MVC by Sergiy KoshovyiRails MVC by Sergiy Koshovyi
Rails MVC by Sergiy KoshovyiPivorak MeetUp
 
Introduction to Rails by Evgeniy Hinyuk
Introduction to Rails by Evgeniy HinyukIntroduction to Rails by Evgeniy Hinyuk
Introduction to Rails by Evgeniy HinyukPivorak MeetUp
 
Ruby OOP (in Ukrainian)
Ruby OOP (in Ukrainian)Ruby OOP (in Ukrainian)
Ruby OOP (in Ukrainian)Pivorak MeetUp
 
Ruby Summer Course by #pivorak & OnApp - OOP Basics in Ruby
Ruby Summer Course by #pivorak & OnApp - OOP Basics in RubyRuby Summer Course by #pivorak & OnApp - OOP Basics in Ruby
Ruby Summer Course by #pivorak & OnApp - OOP Basics in RubyPivorak MeetUp
 
The Saga Pattern: 2 years later by Robert Pankowecki
The Saga Pattern: 2 years later by Robert PankoweckiThe Saga Pattern: 2 years later by Robert Pankowecki
The Saga Pattern: 2 years later by Robert PankoweckiPivorak MeetUp
 
Data and Bounded Contexts by Volodymyr Byno
Data and Bounded Contexts by Volodymyr BynoData and Bounded Contexts by Volodymyr Byno
Data and Bounded Contexts by Volodymyr BynoPivorak MeetUp
 
Successful Remote Development by Alex Rozumii
Successful Remote Development by Alex RozumiiSuccessful Remote Development by Alex Rozumii
Successful Remote Development by Alex RozumiiPivorak MeetUp
 
Origins of Elixir programming language
Origins of Elixir programming languageOrigins of Elixir programming language
Origins of Elixir programming languagePivorak MeetUp
 
Functional Immutable CSS
Functional Immutable CSS Functional Immutable CSS
Functional Immutable CSS Pivorak MeetUp
 
Multi language FBP with Flowex by Anton Mishchuk
Multi language FBP with Flowex by Anton Mishchuk Multi language FBP with Flowex by Anton Mishchuk
Multi language FBP with Flowex by Anton Mishchuk Pivorak MeetUp
 
Detective story of one clever user - Lightning Talk By Sergiy Kukunin
Detective story of one clever user - Lightning Talk By Sergiy KukuninDetective story of one clever user - Lightning Talk By Sergiy Kukunin
Detective story of one clever user - Lightning Talk By Sergiy KukuninPivorak MeetUp
 
CryptoParty: Introduction by Olexii Markovets
CryptoParty: Introduction by Olexii MarkovetsCryptoParty: Introduction by Olexii Markovets
CryptoParty: Introduction by Olexii MarkovetsPivorak MeetUp
 
How to make first million by 30 (or not, but tryin') - by Marek Piasecki
How to make first million by 30 (or not, but tryin') - by Marek PiaseckiHow to make first million by 30 (or not, but tryin') - by Marek Piasecki
How to make first million by 30 (or not, but tryin') - by Marek PiaseckiPivorak MeetUp
 
GIS on Rails by Oleksandr Kychun
GIS on Rails by Oleksandr Kychun GIS on Rails by Oleksandr Kychun
GIS on Rails by Oleksandr Kychun Pivorak MeetUp
 
Unikernels - Keep It Simple to the Bare Metal
Unikernels - Keep It Simple to the Bare MetalUnikernels - Keep It Simple to the Bare Metal
Unikernels - Keep It Simple to the Bare MetalPivorak MeetUp
 

More from Pivorak MeetUp (20)

Lisp(Lots of Irritating Superfluous Parentheses)
Lisp(Lots of Irritating Superfluous Parentheses)Lisp(Lots of Irritating Superfluous Parentheses)
Lisp(Lots of Irritating Superfluous Parentheses)
 
Some strange stories about mocks.
Some strange stories about mocks.Some strange stories about mocks.
Some strange stories about mocks.
 
Business-friendly library for inter-service communication
Business-friendly library for inter-service communicationBusiness-friendly library for inter-service communication
Business-friendly library for inter-service communication
 
How i was a team leader once
How i was a team leader onceHow i was a team leader once
How i was a team leader once
 
Rails MVC by Sergiy Koshovyi
Rails MVC by Sergiy KoshovyiRails MVC by Sergiy Koshovyi
Rails MVC by Sergiy Koshovyi
 
Introduction to Rails by Evgeniy Hinyuk
Introduction to Rails by Evgeniy HinyukIntroduction to Rails by Evgeniy Hinyuk
Introduction to Rails by Evgeniy Hinyuk
 
Ruby OOP (in Ukrainian)
Ruby OOP (in Ukrainian)Ruby OOP (in Ukrainian)
Ruby OOP (in Ukrainian)
 
Testing in Ruby
Testing in RubyTesting in Ruby
Testing in Ruby
 
Ruby Summer Course by #pivorak & OnApp - OOP Basics in Ruby
Ruby Summer Course by #pivorak & OnApp - OOP Basics in RubyRuby Summer Course by #pivorak & OnApp - OOP Basics in Ruby
Ruby Summer Course by #pivorak & OnApp - OOP Basics in Ruby
 
The Saga Pattern: 2 years later by Robert Pankowecki
The Saga Pattern: 2 years later by Robert PankoweckiThe Saga Pattern: 2 years later by Robert Pankowecki
The Saga Pattern: 2 years later by Robert Pankowecki
 
Data and Bounded Contexts by Volodymyr Byno
Data and Bounded Contexts by Volodymyr BynoData and Bounded Contexts by Volodymyr Byno
Data and Bounded Contexts by Volodymyr Byno
 
Successful Remote Development by Alex Rozumii
Successful Remote Development by Alex RozumiiSuccessful Remote Development by Alex Rozumii
Successful Remote Development by Alex Rozumii
 
Origins of Elixir programming language
Origins of Elixir programming languageOrigins of Elixir programming language
Origins of Elixir programming language
 
Functional Immutable CSS
Functional Immutable CSS Functional Immutable CSS
Functional Immutable CSS
 
Multi language FBP with Flowex by Anton Mishchuk
Multi language FBP with Flowex by Anton Mishchuk Multi language FBP with Flowex by Anton Mishchuk
Multi language FBP with Flowex by Anton Mishchuk
 
Detective story of one clever user - Lightning Talk By Sergiy Kukunin
Detective story of one clever user - Lightning Talk By Sergiy KukuninDetective story of one clever user - Lightning Talk By Sergiy Kukunin
Detective story of one clever user - Lightning Talk By Sergiy Kukunin
 
CryptoParty: Introduction by Olexii Markovets
CryptoParty: Introduction by Olexii MarkovetsCryptoParty: Introduction by Olexii Markovets
CryptoParty: Introduction by Olexii Markovets
 
How to make first million by 30 (or not, but tryin') - by Marek Piasecki
How to make first million by 30 (or not, but tryin') - by Marek PiaseckiHow to make first million by 30 (or not, but tryin') - by Marek Piasecki
How to make first million by 30 (or not, but tryin') - by Marek Piasecki
 
GIS on Rails by Oleksandr Kychun
GIS on Rails by Oleksandr Kychun GIS on Rails by Oleksandr Kychun
GIS on Rails by Oleksandr Kychun
 
Unikernels - Keep It Simple to the Bare Metal
Unikernels - Keep It Simple to the Bare MetalUnikernels - Keep It Simple to the Bare Metal
Unikernels - Keep It Simple to the Bare Metal
 

Recently uploaded

Clustering techniques data mining book ....
Clustering techniques data mining book ....Clustering techniques data mining book ....
Clustering techniques data mining book ....ShaimaaMohamedGalal
 
Steps To Getting Up And Running Quickly With MyTimeClock Employee Scheduling ...
Steps To Getting Up And Running Quickly With MyTimeClock Employee Scheduling ...Steps To Getting Up And Running Quickly With MyTimeClock Employee Scheduling ...
Steps To Getting Up And Running Quickly With MyTimeClock Employee Scheduling ...MyIntelliSource, Inc.
 
Salesforce Certified Field Service Consultant
Salesforce Certified Field Service ConsultantSalesforce Certified Field Service Consultant
Salesforce Certified Field Service ConsultantAxelRicardoTrocheRiq
 
(Genuine) Escort Service Lucknow | Starting ₹,5K To @25k with A/C 🧑🏽‍❤️‍🧑🏻 89...
(Genuine) Escort Service Lucknow | Starting ₹,5K To @25k with A/C 🧑🏽‍❤️‍🧑🏻 89...(Genuine) Escort Service Lucknow | Starting ₹,5K To @25k with A/C 🧑🏽‍❤️‍🧑🏻 89...
(Genuine) Escort Service Lucknow | Starting ₹,5K To @25k with A/C 🧑🏽‍❤️‍🧑🏻 89...gurkirankumar98700
 
call girls in Vaishali (Ghaziabad) 🔝 >༒8448380779 🔝 genuine Escort Service 🔝✔️✔️
call girls in Vaishali (Ghaziabad) 🔝 >༒8448380779 🔝 genuine Escort Service 🔝✔️✔️call girls in Vaishali (Ghaziabad) 🔝 >༒8448380779 🔝 genuine Escort Service 🔝✔️✔️
call girls in Vaishali (Ghaziabad) 🔝 >༒8448380779 🔝 genuine Escort Service 🔝✔️✔️Delhi Call girls
 
W01_panagenda_Navigating-the-Future-with-The-Hitchhikers-Guide-to-Notes-and-D...
W01_panagenda_Navigating-the-Future-with-The-Hitchhikers-Guide-to-Notes-and-D...W01_panagenda_Navigating-the-Future-with-The-Hitchhikers-Guide-to-Notes-and-D...
W01_panagenda_Navigating-the-Future-with-The-Hitchhikers-Guide-to-Notes-and-D...panagenda
 
Reassessing the Bedrock of Clinical Function Models: An Examination of Large ...
Reassessing the Bedrock of Clinical Function Models: An Examination of Large ...Reassessing the Bedrock of Clinical Function Models: An Examination of Large ...
Reassessing the Bedrock of Clinical Function Models: An Examination of Large ...harshavardhanraghave
 
Diamond Application Development Crafting Solutions with Precision
Diamond Application Development Crafting Solutions with PrecisionDiamond Application Development Crafting Solutions with Precision
Diamond Application Development Crafting Solutions with PrecisionSolGuruz
 
Short Story: Unveiling the Reasoning Abilities of Large Language Models by Ke...
Short Story: Unveiling the Reasoning Abilities of Large Language Models by Ke...Short Story: Unveiling the Reasoning Abilities of Large Language Models by Ke...
Short Story: Unveiling the Reasoning Abilities of Large Language Models by Ke...kellynguyen01
 
5 Signs You Need a Fashion PLM Software.pdf
5 Signs You Need a Fashion PLM Software.pdf5 Signs You Need a Fashion PLM Software.pdf
5 Signs You Need a Fashion PLM Software.pdfWave PLM
 
TECUNIQUE: Success Stories: IT Service provider
TECUNIQUE: Success Stories: IT Service providerTECUNIQUE: Success Stories: IT Service provider
TECUNIQUE: Success Stories: IT Service providermohitmore19
 
HR Software Buyers Guide in 2024 - HRSoftware.com
HR Software Buyers Guide in 2024 - HRSoftware.comHR Software Buyers Guide in 2024 - HRSoftware.com
HR Software Buyers Guide in 2024 - HRSoftware.comFatema Valibhai
 
why an Opensea Clone Script might be your perfect match.pdf
why an Opensea Clone Script might be your perfect match.pdfwhy an Opensea Clone Script might be your perfect match.pdf
why an Opensea Clone Script might be your perfect match.pdfjoe51371421
 
Active Directory Penetration Testing, cionsystems.com.pdf
Active Directory Penetration Testing, cionsystems.com.pdfActive Directory Penetration Testing, cionsystems.com.pdf
Active Directory Penetration Testing, cionsystems.com.pdfCionsystems
 
SyndBuddy AI 2k Review 2024: Revolutionizing Content Syndication with AI
SyndBuddy AI 2k Review 2024: Revolutionizing Content Syndication with AISyndBuddy AI 2k Review 2024: Revolutionizing Content Syndication with AI
SyndBuddy AI 2k Review 2024: Revolutionizing Content Syndication with AIABDERRAOUF MEHENNI
 
DNT_Corporate presentation know about us
DNT_Corporate presentation know about usDNT_Corporate presentation know about us
DNT_Corporate presentation know about usDynamic Netsoft
 
Unlocking the Future of AI Agents with Large Language Models
Unlocking the Future of AI Agents with Large Language ModelsUnlocking the Future of AI Agents with Large Language Models
Unlocking the Future of AI Agents with Large Language Modelsaagamshah0812
 

Recently uploaded (20)

Clustering techniques data mining book ....
Clustering techniques data mining book ....Clustering techniques data mining book ....
Clustering techniques data mining book ....
 
Steps To Getting Up And Running Quickly With MyTimeClock Employee Scheduling ...
Steps To Getting Up And Running Quickly With MyTimeClock Employee Scheduling ...Steps To Getting Up And Running Quickly With MyTimeClock Employee Scheduling ...
Steps To Getting Up And Running Quickly With MyTimeClock Employee Scheduling ...
 
Salesforce Certified Field Service Consultant
Salesforce Certified Field Service ConsultantSalesforce Certified Field Service Consultant
Salesforce Certified Field Service Consultant
 
(Genuine) Escort Service Lucknow | Starting ₹,5K To @25k with A/C 🧑🏽‍❤️‍🧑🏻 89...
(Genuine) Escort Service Lucknow | Starting ₹,5K To @25k with A/C 🧑🏽‍❤️‍🧑🏻 89...(Genuine) Escort Service Lucknow | Starting ₹,5K To @25k with A/C 🧑🏽‍❤️‍🧑🏻 89...
(Genuine) Escort Service Lucknow | Starting ₹,5K To @25k with A/C 🧑🏽‍❤️‍🧑🏻 89...
 
Microsoft AI Transformation Partner Playbook.pdf
Microsoft AI Transformation Partner Playbook.pdfMicrosoft AI Transformation Partner Playbook.pdf
Microsoft AI Transformation Partner Playbook.pdf
 
call girls in Vaishali (Ghaziabad) 🔝 >༒8448380779 🔝 genuine Escort Service 🔝✔️✔️
call girls in Vaishali (Ghaziabad) 🔝 >༒8448380779 🔝 genuine Escort Service 🔝✔️✔️call girls in Vaishali (Ghaziabad) 🔝 >༒8448380779 🔝 genuine Escort Service 🔝✔️✔️
call girls in Vaishali (Ghaziabad) 🔝 >༒8448380779 🔝 genuine Escort Service 🔝✔️✔️
 
W01_panagenda_Navigating-the-Future-with-The-Hitchhikers-Guide-to-Notes-and-D...
W01_panagenda_Navigating-the-Future-with-The-Hitchhikers-Guide-to-Notes-and-D...W01_panagenda_Navigating-the-Future-with-The-Hitchhikers-Guide-to-Notes-and-D...
W01_panagenda_Navigating-the-Future-with-The-Hitchhikers-Guide-to-Notes-and-D...
 
Exploring iOS App Development: Simplifying the Process
Exploring iOS App Development: Simplifying the ProcessExploring iOS App Development: Simplifying the Process
Exploring iOS App Development: Simplifying the Process
 
Call Girls In Mukherjee Nagar 📱 9999965857 🤩 Delhi 🫦 HOT AND SEXY VVIP 🍎 SE...
Call Girls In Mukherjee Nagar 📱  9999965857  🤩 Delhi 🫦 HOT AND SEXY VVIP 🍎 SE...Call Girls In Mukherjee Nagar 📱  9999965857  🤩 Delhi 🫦 HOT AND SEXY VVIP 🍎 SE...
Call Girls In Mukherjee Nagar 📱 9999965857 🤩 Delhi 🫦 HOT AND SEXY VVIP 🍎 SE...
 
Reassessing the Bedrock of Clinical Function Models: An Examination of Large ...
Reassessing the Bedrock of Clinical Function Models: An Examination of Large ...Reassessing the Bedrock of Clinical Function Models: An Examination of Large ...
Reassessing the Bedrock of Clinical Function Models: An Examination of Large ...
 
Diamond Application Development Crafting Solutions with Precision
Diamond Application Development Crafting Solutions with PrecisionDiamond Application Development Crafting Solutions with Precision
Diamond Application Development Crafting Solutions with Precision
 
Short Story: Unveiling the Reasoning Abilities of Large Language Models by Ke...
Short Story: Unveiling the Reasoning Abilities of Large Language Models by Ke...Short Story: Unveiling the Reasoning Abilities of Large Language Models by Ke...
Short Story: Unveiling the Reasoning Abilities of Large Language Models by Ke...
 
5 Signs You Need a Fashion PLM Software.pdf
5 Signs You Need a Fashion PLM Software.pdf5 Signs You Need a Fashion PLM Software.pdf
5 Signs You Need a Fashion PLM Software.pdf
 
TECUNIQUE: Success Stories: IT Service provider
TECUNIQUE: Success Stories: IT Service providerTECUNIQUE: Success Stories: IT Service provider
TECUNIQUE: Success Stories: IT Service provider
 
HR Software Buyers Guide in 2024 - HRSoftware.com
HR Software Buyers Guide in 2024 - HRSoftware.comHR Software Buyers Guide in 2024 - HRSoftware.com
HR Software Buyers Guide in 2024 - HRSoftware.com
 
why an Opensea Clone Script might be your perfect match.pdf
why an Opensea Clone Script might be your perfect match.pdfwhy an Opensea Clone Script might be your perfect match.pdf
why an Opensea Clone Script might be your perfect match.pdf
 
Active Directory Penetration Testing, cionsystems.com.pdf
Active Directory Penetration Testing, cionsystems.com.pdfActive Directory Penetration Testing, cionsystems.com.pdf
Active Directory Penetration Testing, cionsystems.com.pdf
 
SyndBuddy AI 2k Review 2024: Revolutionizing Content Syndication with AI
SyndBuddy AI 2k Review 2024: Revolutionizing Content Syndication with AISyndBuddy AI 2k Review 2024: Revolutionizing Content Syndication with AI
SyndBuddy AI 2k Review 2024: Revolutionizing Content Syndication with AI
 
DNT_Corporate presentation know about us
DNT_Corporate presentation know about usDNT_Corporate presentation know about us
DNT_Corporate presentation know about us
 
Unlocking the Future of AI Agents with Large Language Models
Unlocking the Future of AI Agents with Large Language ModelsUnlocking the Future of AI Agents with Large Language Models
Unlocking the Future of AI Agents with Large Language Models
 

Piotr Szotkowski about "Ruby smells"