SlideShare a Scribd company logo
1 of 106
Download to read offline
On Inherent
Complexity of
Computation
Attila Szegedi
@asz
THE FOLLOWING IS INTENDED TO OUTLINE
OUR GENERAL PRODUCT DIRECTION. FOR
INFORMATION PURPOSES ONLY,AND MAY NOT
BE INCORPORATED INTO ANY CONTRACT. IT
IS NOT A COMMITMENT TO DELIVER ANY
MATERIAL, CODE, OR FUNCTIONALITY,AND
SHOULD NOT BE RELIED UPON IN MAKING
PURCHASING DECISION.THE DEVELOPMENT,
RELEASE,AND TIMING OF ANY FEATURES OR
FUNCTIONALITY DESCRIBED FOR ORACLE'S
PRODUCTS REMAINS AT THE SOLE DISCRETION
OF ORACLE.
I won’t tell you anything
humankind doesn’t already
know for 40 years.
I won’t tell you anything
humankind doesn’t already
know for 40 years.
I won’t tell you anything
humankind doesn’t already
know for 40 years.
This is not a Lisp talk.
I won’t tell you anything
humankind doesn’t already
know for 40 years.
This is not a Lisp talk. No, seriously.
How complex is your
system?
Is it this?
Hardware
Operating system
Application
Configuration
Persistent data
Runtime state
Is it maybe
more like this?
Hardware
Hypervisor
Operating system
Virtual machine
Application server
Application
Plugins
Configuration
Persistent data
Runtime state
Hardware
Hypervisor
Operating system
Virtual machine
Application server
Application
Plugins
Configuration
Persistent data
Runtime state
Electricity
Electric impulses
on a wire
Heat
The electricity to heat
part is easy.
100011110001011010100100000101111100000100100010101001010100101000010111111000110111011000110101010
100100010101001010100101000010111111000110111011000110000011001111000011000110000010011011101111111
011011001011100100100000101000011001011110010110110111000011101110110010111011101110100110110011110
011010100001111011111101110111010011001011101110111010010110110011001100101110111011001111110100110
100011101010000011000010101000100110000111101001100101111010100000101010011010001110101101100100000
110000110010100000100110111000011111001100000110010110000110001110011100000110000111001111010110001
110011111010110010110011100000100011110011011010100101010100111100101111001011101101100101111001011
101010000010000011110000110000111000111101000110010110111111001010111011001010111011000111011110000
010100010101011100010111010111011101110100111010110100110101011000101101101000011011111110111110010
111100101100101110010010110110000101111001111010100000101000010010001010000101111110101101110110011
101110110101101101110001111010111000101110101110111011101001110101110111101110110001110001101010110
001011011010000110100111011101100111110001011000011100011110101111101010000011010001110100111010011
100001110101011111011111100111110010111001011101011110111111101011110100101110110010111001011011111
111000110110111011001110010111000011000111011101110000110100011100001010100110011011111100011110000
111101001101001110111111011101110101000001101000111010011101001110000111010101111101111110011111001
011100101110101111011111110101111010010111011001011100101101111101010000111100001110001111010001100
101101101100001111011111101110111010011100101101111110110011101010000011011011100001111100010110111
000011100111110010111110111001111000011000010101000101111100011100001101001111001011001011110011111
010100000101010011010001110101101100100000110000110010100000100110111000011111001100000110010110000
110001110011100000110000111001111010110001111000111010110010110011100000100011110011011010100101010
101101100001111001011110011110101000001000001110001111000111100101111000011101001011011000101110111
011000111101111110010011010011101110110011110101000011110111111011101101110110010111000111110100110
100111011111101110111010100000110001111011001101111111001111001011010100001111011111101110111010011
001011101110111010010110110101001111001111000011001011110101000001110100110010111110001110100101111
110100011101001101101110110011101110000011000111101000110000111100101110011110010111101001111011010
1011010100100011010110111100010101010
GET / HTTP/1.1
HTTP/1.1 301 Moved Permanently
Content-Length: 0
Date: Thu, 02 May 2013 09:13:23 GMT
Server: Apache/2.2.17 (Ubuntu)
X-Powered-By: PHP/5.3.5-1ubuntu7.11
X-Pingback: http://geekout.ee/xmlrpc.php
Location: http://geekout.ee/
Cache-Control: max-age=300
Expires: Thu, 02 May 2013 09:18:23 GMT
Vary: Accept-Encoding
Connection: close
Content-Type: text/html; charset=UTF-8
GET / HTTP/1.1
HTTP/1.1 301 Moved Permanently
Content-Length: 0
Date: Thu, 02 May 2013 09:13:23 GMT
Server: Apache/2.2.17 (Ubuntu)
X-Powered-By: PHP/5.3.5-1ubuntu7.11
X-Pingback: http://geekout.ee/xmlrpc.php
Location: http://geekout.ee/
Cache-Control: max-age=300
Expires: Thu, 02 May 2013 09:18:23 GMT
Vary: Accept-Encoding
Connection: close
Content-Type: text/html; charset=UTF-8
Hardware
Hypervisor
Operating system
Virtual machine
Application server
Application
Plugins
Configuration
Persistent data
Runtime state
Hardware
Hypervisor
Operating system
Virtual machine
Application server
Application
Plugins
Configuration
Persistent data
Runtime state
Complexity
Abstraction
How many layers are
there? Are they
inherent? Are they real?
Hardware
Hypervisor
Operating system
Virtual machine
Application server
Application
Plugins
Configuration
Persistent data
Runtime state
Hardware
Operating system
Virtual machine
Application
A virtual machine takes bytecode
and transforms it into something
resembling a native application on
the OS/hardware.
Hardware
Virtual machine
Application
Then there are some attempts to
even eliminate the operating system.
Hardware
And some to go all the way down to
BitCoin craze
MHash/J
Generic CPU 0.1-1.14
GPU 2.4
FPGA 25
ASIC 160
https://en.bitcoin.it/wiki/Mining_hardware_comparison
BitCoin craze
MHash/J
Generic CPU 0.1-1.14
GPU 2.4
FPGA 25
ASIC 160
https://en.bitcoin.it/wiki/Mining_hardware_comparison
These are actual products
Hardware
Hypervisor
Operating system
Virtual machine
Application server
Application
Plugins
Configuration
Persistent data
Runtime state
Application
Configuration
In languages where code is first-
class data, you don’t have to
distinguish between the two.
Application =
Configuration
• In Lua, recommended data serialization
format is Lua source code.
• You can just eval() JSON in JavaScript.
• Lisp.‘nuff said.
• Standard disclaimer about having your
program execute unverified external code.
No, seriously, what is
computation?
Computation is a
transition from a more
likely to a less likely
state.
(Decrease in physical entropy; increase in
information entropy.)
Wait what?
• In information theory, entropy is the
measure of uncertainty of state.
• In physics, it’s the amount of missing
information to precisely describe the state
of the system.
• The two usages of the term are therefore
exactly opposite.
• Way to troll each other, fellow scientists!
This is very likely This is highly unlikely
This is very likely
•An empty database
•An uninitialized disk
•RAM when power is
turned on
•Quiet network
This is very likely This is highly unlikely
This is highly unlikely
•A populated database
•A populated disk
•RAM after substantial
activity
•Active network
Humans are part of the
computation
• Having an ongoing record of people’s
thoughts and events persisted in a social
network database is less likely than not
having them.
• Just think about the combined effort of
creating Twitter/Facebook/etc databases
• both people building and operating it, and
• people pouring data into it.
Humans are part of the
computation
Humans are part of the
computation
• Thinking of
boundaries of
identities in
real world
can be quite
fascinating.
Humans are part of the
computation
• Thinking of
boundaries of
identities in
real world
can be quite
fascinating.
• Where does a computer end?
Humans are part of the
computation
• Thinking of
boundaries of
identities in
real world
can be quite
fascinating.
• Where does a computer end?
• Where does a person end?
Humans are part of the
computation
• Thinking of
boundaries of
identities in
real world
can be quite
fascinating.
• Where does a computer end?
• Where does a person end?
• Can we influence another
person in such a way that
part of us actually lives in
them?
Humans are part of the
computation
Humans are part of the
computation
• Where does a computer end?
Humans are part of the
computation
• Where does a computer end?
• Where does a person end?
Humans are part of the
computation
• Where does a computer end?
• Where does a person end?
• Can we influence another
person in such a way that
part of us actually lives in
them?
Humans are part of the
computation
Humans are part of the
computation
• Where does a computer end?
Humans are part of the
computation
• Where does a computer end?
• Where does a person end?
Humans are part of the
computation
• Where does a computer end?
• Where does a person end?
• Can we influence another
person in such a way that
part of us actually lives in
them?
Humans are part of the
computation
Arrow of time
• Transitioning from more likely to less likely
gives us an arrow of time.
• We naturally presume that more likely
states precede less likely ones.
• Opposite cases happen, and they are
associated with idea of destruction.
Is unzip not a
computation then?
• It creates more likely (decompressed) from
less likely (compressed) data!
• It is still a computation, though.
Is unzip not a
computation then?
• You started with not having both the
compressed and decompressed data, and
you end up with both.
• That’s less likely than just having the
compressed data.
Arrow of time revisited
• Future is a quantum superposition of all
possible successive quantum states.
• Past, too, is a quantum superposition of all
possible preceding quantum states.
• See Wheeler’s Delayed Choice
Experiment.
This seemed like a
good time for this slide
Thermodynamics in the
way
• Any physical process that dissipates heat
will be irreversible.
• It’s possible to go:
• fast, hot and irreversible, or
• slow, cool, and reversible.
• (And any shade of gray in between.)
Thermodynamics in the
way
• e x t = const
• e := energy dissipation in form of heat
• t := time to operate an electric circuit
• Going slow conserves energy
Why does the arrow of
time matter anyway?
Here’s why
Here’s why
A
B
A NAND B
Here’s why
A
B
A NAND B
Direction
Reversible gate
A
B
A NAND B
Direction
reversing bit
Reversible gate
A
B
A NAND B
Direction
reversing bit
Meandering. Not caring
which way it flows.
Running analogy
Tempo
Endurance Distance
Running analogy
Speed
Power
consumption
Battery life
How fast can we go?
How fast can we go?
• I couldn’t figure out hard data for this…
How fast can we go?
• I couldn’t figure out hard data for this…
• Theoretical upper limit: divide highest power
density with lowest energy for a physical state
transition; you get “operations/m3/s”.
How fast can we go?
• I couldn’t figure out hard data for this…
• Theoretical upper limit: divide highest power
density with lowest energy for a physical state
transition; you get “operations/m3/s”.
• Problem with:
How fast can we go?
• I couldn’t figure out hard data for this…
• Theoretical upper limit: divide highest power
density with lowest energy for a physical state
transition; you get “operations/m3/s”.
• Problem with:
• relativistic effects
How fast can we go?
• I couldn’t figure out hard data for this…
• Theoretical upper limit: divide highest power
density with lowest energy for a physical state
transition; you get “operations/m3/s”.
• Problem with:
• relativistic effects
• controlling those amounts of energy output
Where are we?
• We could go much hotter and faster.
• Insert science fiction of atomic particle
machines that can run few hours of
subjective human brain simulation in few
femtoseconds before heat-disintegrating.
• We could also go much slower and cooler
• Ain’t nobody got time for that!
100011110001011010100100000101111100000100100010101001010100101000010111111000110111011000110101010
100100010101001010100101000010111111000110111011000110000011001111000011000110000010011011101111111
011011001011100100100000101000011001011110010110110111000011101110110010111011101110100110110011110
011010100001111011111101110111010011001011101110111010010110110011001100101110111011001111110100110
100011101010000011000010101000100110000111101001100101111010100000101010011010001110101101100100000
110000110010100000100110111000011111001100000110010110000110001110011100000110000111001111010110001
110011111010110010110011100000100011110011011010100101010100111100101111001011101101100101111001011
101010000010000011110000110000111000111101000110010110111111001010111011001010111011000111011110000
010100010101011100010111010111011101110100111010110100110101011000101101101000011011111110111110010
111100101100101110010010110110000101111001111010100000101000010010001010000101111110101101110110011
101110110101101101110001111010111000101110101110111011101001110101110111101110110001110001101010110
001011011010000110100111011101100111110001011000011100011110101111101010000011010001110100111010011
100001110101011111011111100111110010111001011101011110111111101011110100101110110010111001011011111
111000110110111011001110010111000011000111011101110000110100011100001010100110011011111100011110000
111101001101001110111111011101110101000001101000111010011101001110000111010101111101111110011111001
011100101110101111011111110101111010010111011001011100101101111101010000111100001110001111010001100
101101101100001111011111101110111010011100101101111110110011101010000011011011100001111100010110111
000011100111110010111110111001111000011000010101000101111100011100001101001111001011001011110011111
010100000101010011010001110101101100100000110000110010100000100110111000011111001100000110010110000
110001110011100000110000111001111010110001111000111010110010110011100000100011110011011010100101010
101101100001111001011110011110101000001000001110001111000111100101111000011101001011011000101110111
011000111101111110010011010011101110110011110101000011110111111011101101110110010111000111110100110
100111011111101110111010100000110001111011001101111111001111001011010100001111011111101110111010011
001011101110111010010110110101001111001111000011001011110101000001110100110010111110001110100101111
110100011101001101101110110011101110000011000111101000110000111100101110011110010111101001111011010
1011010100100011010110111100010101010
This is digital computation
Digital computation
• Binary inputs go in, binary output goes out
• Not all of the input precedes the output
(think streams).
• Later input can be shaped by earlier output
(client resubmits a cookie received from
server)
Digital computation
• A particular computation (or “program”) is
mapping of all possible inputs to all possible
outputs.
“” -> “10001111000101101010010000010111110000010010001010100101010010100”
“0” -> “0100010101100101110110110101101”
“1” -> “010001010110100000010001010111110010101000011100101”
“01” -> “111100010110101001000001011111000001001000101010010101001010”
...
• We don’t write programs this way. Right?
• We recognize patterns and map classes of
inputs to classes of outputs.
• It’s basically a compressed representation.
• If the number of patterns is not finite,
you’re describing a random process.
Kolmogorov
complexity
• Defined for strings.
• The length of a program that produces the given
string.
• The programming language doesn’t matter
• ‘cause you can just prefix your program with
an interpreter written in another language, for
a constant difference.
• Can also apply to infinite sequences, such as our
“enumerate all programs”
Inherent complexity of
a computation
Inherent complexity of
a computation
Inherent complexity of
a computation
• Inherent complexity of the computation:
the length of the most compact form that
can encode its full input-output mapping.
Inherent complexity of
a computation
• Inherent complexity of the computation:
the length of the most compact form that
can encode its full input-output mapping.
• Incidentally, a string is “random” if it’s
shorter than any program that can generate
it.
• Oh, wait, Kolmogorov complexity is a non-
computable function.
• Oh, wait, Kolmogorov complexity is a non-
computable function.
• Oh, wait, Kolmogorov complexity is a non-
computable function.
• Consequence: no matter
how good your optimizing
compiler is, you can never
prove that there’s not an
even better one.
• Oh, wait, Kolmogorov complexity is a non-
computable function.
• Consequence: no matter
how good your optimizing
compiler is, you can never
prove that there’s not an
even better one.
• a.k.a “Full Employment
Theorem” for compiler
writers.
“” ->
100100010101001010100101000010111111000110111011000110000011001111000011000110000010011011101111111
011011001011100100100000101000011001011110010110110111000011101110110010111011101110100110110011110
011010100001111011111101110111010011001011101110111010010110110011001100101110111011001111110100110
100011101010000011000010101000100110000111101001100101111010100000101010011010001110101101100100000
110000110010100000100110111000011111001100000110010110000110001110011100000110000111001111010110001
110011111010110010110011100000100011110011011010100101010100111100101111001011101101100101111001011
101010000010000011110000110000111000111101000110010110111111001010111011001010111011000111011110000
010100010101011100010111010111011101110100111010110100110101011000101101101000011011111110111110010
111100101100101110010010110110000101111001111010100000101000010010001010000101111110101101110110011
101110110101101101110001111010111000101110101110111011101001110101110111101110110001110001101010110
001011011010000110100111011101100111110001011000011100011110101111101010000011010001110100111010011
100001110101011111011111100111110010111001011101011110111111101011110100101110110010111001011011111
111000110110111011001110010111000011000111011101110000110100011100001010100110011011111100011110000
111101001101001110111111011101110101000001101000111010011101001110000111010101111101111110011111001
011100101110101111011111110101111010010111011001011100101101111101010000111100001110001111010001100
101101101100001111011111101110111010011100101101111110110011101010000011011011100001111100010110111
000011100111110010111110111001111000011000010101000101111100011100001101001111001011001011110011111
010100000101010011010001110101101100100000110000110010100000100110111000011111001100000110010110000
110001110011100000110000111001111010110001111000111010110010110011100000100011110011011010100101010
101101100001111001011110011110101000001000001110001111000111100101111000011101001011011000101110111
011000111101111110010011010011101110110011110101000011110111111011101101110110010111000111110100110
100111011111101110111010100000110001111011001101111111001111001011010100001111011111101110111010011
001011101110111010010110110101001111001111000011001011110101000001110100110010111110001110100101111
110100011101001101101110110011101110000011000111101000110000111100101110011110010111101001111011010
1011010100100011010110111100010101010
You can’t cheat
complexity(input) + complexity(decoder)
• Sometimes, part of the decoder is external.
• Sometimes, part of the decoder is external.
• It can be in your head.
• Sometimes, part of the decoder is external.
• It can be in your head.
• Again, human is part of the
computation.
Complex look is sometimes a simple pattern
Complex look is sometimes a simple pattern
Complex look is sometimes a simple pattern
SzegediButterfly1 {
init:
  z = #pixel
loop:
  float x = real(z)
  float y = imag(z)
  z = sqr(y) - sqrt(abs(x)) + 
           (sqr(x) - sqrt(abs(y))) * 1i + #pixel
bailout:
  |z| <= @Bailout
default:
  param Bailout
    caption = "Bailout Value"
    default = 127.0
  endparam
}
Complex look is sometimes a simple pattern
Complex look is sometimes a simple pattern
Complex look is sometimes a simple pattern
SzegediButterfly2 {
init:
  z = #pixel
loop:
  float x = real(z)
  float y = imag(z)
  z = sqr(x) - sqrt(abs(y)) + 
          (sqr(y) - sqrt(abs(x))) * 1i + #pixel
bailout:
  |z| <= @Bailout
default:
  param Bailout
    caption = "Bailout Value"
    default = 127.0
  endparam
}
Even if you could find
the most compact
form…
• … you probably wouldn’t want to use it.
• It would be even less humanly
maintainable than flipping bits in a zipped
source file.
• Ever seen 256-byte 8-bit CPU demos?
You can always reduce
complexity
• You always have excess complexity in your
system.
• It’s worth thinking of how to reduce it.
• Pattern recognition (refactoring).
• Favor environments that don’t force you into
artificial layer boundaries. Code is data, data is
code.
• Patterns can be more overarching without
artificial boundaries.
Artificial boundaries
hobble you
• Favor environments that don’t force you
into artificial layer boundaries. Code is
data, data is code.
• Patterns can be more overarching without
artificial boundaries.
• Java program loads an XML file containing a
flow graph and some embedded JavaScript?
• You have a problem.
Take aways
• Be sensible with the effort and the result.
• Don’t overshoot into compact-but-
unreadable territory.
• Hitting on the minimally complex
representation is as likely as inventing the
perpetuum mobile. (Thermodynamics
metaphor again.)
Image Credits
Snowy branches: http://www.flickr.com/photos/aeioux/2398264997/
XKCD comic: http://xkcd.com/297/
Complex gizmo: http://www.flickr.com/photos/michaelheiss/2871996129/
Electric heater: http://www.flickr.com/photos/jocelynb/426268348/
Layer cake: http://www.flickr.com/photos/julessilver/3259734572
Abacus: http://www.flickr.com/photos/skidder/37675092
Airplanes: http://www.flickr.com/photos/good_day/198611998/
Meandering: http://www.flickr.com/photos/31856336@N03/7831522814/
Headphones: http://www.flickr.com/photos/doremigirl/8362322435
Kolmogorov Lecture: http://en.wikipedia.org/wiki/File:Kolm_complexity_lect.jpg
All used images are Creative Commons licensed, and used according to their terms
of license.

More Related Content

Similar to On Inherent Complexity of Computation, by Attila Szegedi

Continuous Automated Testing - Cast conference workshop august 2014
Continuous Automated Testing - Cast conference workshop august 2014Continuous Automated Testing - Cast conference workshop august 2014
Continuous Automated Testing - Cast conference workshop august 2014
Noah Sussman
 
Risk management and auditing
Risk management and auditingRisk management and auditing
Risk management and auditing
Dorothea Salo
 
Howtostopsuckingandbeawesomeinstead 120601013410-phpapp01
Howtostopsuckingandbeawesomeinstead 120601013410-phpapp01Howtostopsuckingandbeawesomeinstead 120601013410-phpapp01
Howtostopsuckingandbeawesomeinstead 120601013410-phpapp01
Hugo Pinto
 
Howtostopsucking
HowtostopsuckingHowtostopsucking
Howtostopsucking
Hugo Pinto
 

Similar to On Inherent Complexity of Computation, by Attila Szegedi (20)

Library Linked Data
Library Linked DataLibrary Linked Data
Library Linked Data
 
November 15th 2018 denver cu seminar (drew miller) ai robotics cryptocurrency...
November 15th 2018 denver cu seminar (drew miller) ai robotics cryptocurrency...November 15th 2018 denver cu seminar (drew miller) ai robotics cryptocurrency...
November 15th 2018 denver cu seminar (drew miller) ai robotics cryptocurrency...
 
Large Components in the Rearview Mirror
Large Components in the Rearview MirrorLarge Components in the Rearview Mirror
Large Components in the Rearview Mirror
 
Data Modelling at Scale
Data Modelling at ScaleData Modelling at Scale
Data Modelling at Scale
 
Continuous Automated Testing - Cast conference workshop august 2014
Continuous Automated Testing - Cast conference workshop august 2014Continuous Automated Testing - Cast conference workshop august 2014
Continuous Automated Testing - Cast conference workshop august 2014
 
From 🤦 to 🐿️
From 🤦 to 🐿️From 🤦 to 🐿️
From 🤦 to 🐿️
 
Teaching Elephants to Dance (Federal Audience): A Developer's Journey to Digi...
Teaching Elephants to Dance (Federal Audience): A Developer's Journey to Digi...Teaching Elephants to Dance (Federal Audience): A Developer's Journey to Digi...
Teaching Elephants to Dance (Federal Audience): A Developer's Journey to Digi...
 
From DevOps to NoOps how not to get Equifaxed Apidays
From DevOps to NoOps how not to get Equifaxed ApidaysFrom DevOps to NoOps how not to get Equifaxed Apidays
From DevOps to NoOps how not to get Equifaxed Apidays
 
Risk management and auditing
Risk management and auditingRisk management and auditing
Risk management and auditing
 
Feedback loops between tooling and culture
Feedback loops between tooling and cultureFeedback loops between tooling and culture
Feedback loops between tooling and culture
 
Connor big data
Connor big dataConnor big data
Connor big data
 
Bugs Aren't Random
Bugs Aren't RandomBugs Aren't Random
Bugs Aren't Random
 
Cache Consistency – Requirements and its packet processing Performance implic...
Cache Consistency – Requirements and its packet processing Performance implic...Cache Consistency – Requirements and its packet processing Performance implic...
Cache Consistency – Requirements and its packet processing Performance implic...
 
The Lost Tales of Platform Design (February 2017)
The Lost Tales of Platform Design (February 2017)The Lost Tales of Platform Design (February 2017)
The Lost Tales of Platform Design (February 2017)
 
Moved to https://slidr.io/azzazzel/web-application-performance-tuning-beyond-xmx
Moved to https://slidr.io/azzazzel/web-application-performance-tuning-beyond-xmxMoved to https://slidr.io/azzazzel/web-application-performance-tuning-beyond-xmx
Moved to https://slidr.io/azzazzel/web-application-performance-tuning-beyond-xmx
 
Technologies That Will Change Everything
Technologies That Will Change EverythingTechnologies That Will Change Everything
Technologies That Will Change Everything
 
Howtostopsuckingandbeawesomeinstead 120601013410-phpapp01
Howtostopsuckingandbeawesomeinstead 120601013410-phpapp01Howtostopsuckingandbeawesomeinstead 120601013410-phpapp01
Howtostopsuckingandbeawesomeinstead 120601013410-phpapp01
 
Howtostopsucking
HowtostopsuckingHowtostopsucking
Howtostopsucking
 
How to stop sucking and be awesome instead
How to stop sucking and be awesome insteadHow to stop sucking and be awesome instead
How to stop sucking and be awesome instead
 
POWRR Tools: Lessons learned from an IMLS National Leadership Grant
POWRR Tools: Lessons learned from an IMLS National Leadership GrantPOWRR Tools: Lessons learned from an IMLS National Leadership Grant
POWRR Tools: Lessons learned from an IMLS National Leadership Grant
 

More from ZeroTurnaround

Top Java IDE keyboard shortcuts for Eclipse, IntelliJIDEA, NetBeans (report p...
Top Java IDE keyboard shortcuts for Eclipse, IntelliJIDEA, NetBeans (report p...Top Java IDE keyboard shortcuts for Eclipse, IntelliJIDEA, NetBeans (report p...
Top Java IDE keyboard shortcuts for Eclipse, IntelliJIDEA, NetBeans (report p...
ZeroTurnaround
 
Language Design Tradeoffs - Kotlin and Beyond, by Andrey Breslav
Language Design Tradeoffs - Kotlin and Beyond, by Andrey BreslavLanguage Design Tradeoffs - Kotlin and Beyond, by Andrey Breslav
Language Design Tradeoffs - Kotlin and Beyond, by Andrey Breslav
ZeroTurnaround
 
Runtime Innovation - Nextgen Ninja Hacking of the JVM, by Ryan Sciampacone
Runtime Innovation - Nextgen Ninja Hacking of the JVM, by Ryan SciampaconeRuntime Innovation - Nextgen Ninja Hacking of the JVM, by Ryan Sciampacone
Runtime Innovation - Nextgen Ninja Hacking of the JVM, by Ryan Sciampacone
ZeroTurnaround
 
Easy Scaling with Open Source Data Structures, by Talip Ozturk
Easy Scaling with Open Source Data Structures, by Talip OzturkEasy Scaling with Open Source Data Structures, by Talip Ozturk
Easy Scaling with Open Source Data Structures, by Talip Ozturk
ZeroTurnaround
 
Blast your app with Gatling! by Stephane Landelle
Blast your app with Gatling! by Stephane LandelleBlast your app with Gatling! by Stephane Landelle
Blast your app with Gatling! by Stephane Landelle
ZeroTurnaround
 
JVM JIT compilation overview by Vladimir Ivanov
JVM JIT compilation overview by Vladimir IvanovJVM JIT compilation overview by Vladimir Ivanov
JVM JIT compilation overview by Vladimir Ivanov
ZeroTurnaround
 
How To Do Kick-Ass Software Development, by Sven Peters
How To Do Kick-Ass Software Development, by Sven PetersHow To Do Kick-Ass Software Development, by Sven Peters
How To Do Kick-Ass Software Development, by Sven Peters
ZeroTurnaround
 
Level Up Your Git and GitHub Experience by Jordan McCullough and Brent Beer
Level Up Your Git and GitHub Experience by Jordan McCullough and Brent BeerLevel Up Your Git and GitHub Experience by Jordan McCullough and Brent Beer
Level Up Your Git and GitHub Experience by Jordan McCullough and Brent Beer
ZeroTurnaround
 
AST Transformations: Groovy’s best kept secret by Andres Almiray
AST Transformations: Groovy’s best kept secret by Andres AlmirayAST Transformations: Groovy’s best kept secret by Andres Almiray
AST Transformations: Groovy’s best kept secret by Andres Almiray
ZeroTurnaround
 
Tap into the power of slaves with Jenkins by Kohsuke Kawaguchi
Tap into the power of slaves with Jenkins by Kohsuke KawaguchiTap into the power of slaves with Jenkins by Kohsuke Kawaguchi
Tap into the power of slaves with Jenkins by Kohsuke Kawaguchi
ZeroTurnaround
 
Language Design Tradeoffs (Kotlin and Beyond) by Andrey Breslav
Language Design Tradeoffs (Kotlin and Beyond) by Andrey BreslavLanguage Design Tradeoffs (Kotlin and Beyond) by Andrey Breslav
Language Design Tradeoffs (Kotlin and Beyond) by Andrey Breslav
ZeroTurnaround
 

More from ZeroTurnaround (20)

XRebel - Real Time Insight, Faster Apps
XRebel - Real Time Insight, Faster AppsXRebel - Real Time Insight, Faster Apps
XRebel - Real Time Insight, Faster Apps
 
Redeploy chart
Redeploy chartRedeploy chart
Redeploy chart
 
Top Reasons Why Java Rocks (report preview) - http:0t.ee/java-rocks
Top Reasons Why Java Rocks (report preview) - http:0t.ee/java-rocksTop Reasons Why Java Rocks (report preview) - http:0t.ee/java-rocks
Top Reasons Why Java Rocks (report preview) - http:0t.ee/java-rocks
 
Top Java IDE keyboard shortcuts for Eclipse, IntelliJIDEA, NetBeans (report p...
Top Java IDE keyboard shortcuts for Eclipse, IntelliJIDEA, NetBeans (report p...Top Java IDE keyboard shortcuts for Eclipse, IntelliJIDEA, NetBeans (report p...
Top Java IDE keyboard shortcuts for Eclipse, IntelliJIDEA, NetBeans (report p...
 
Java Tools and Technologies Landscape for 2014 (image gallery)
Java Tools and Technologies Landscape for 2014 (image gallery)Java Tools and Technologies Landscape for 2014 (image gallery)
Java Tools and Technologies Landscape for 2014 (image gallery)
 
Getting Started with IntelliJ IDEA as an Eclipse User
Getting Started with IntelliJ IDEA as an Eclipse UserGetting Started with IntelliJ IDEA as an Eclipse User
Getting Started with IntelliJ IDEA as an Eclipse User
 
[Image Results] Java Build Tools: Part 2 - A Decision Maker's Guide Compariso...
[Image Results] Java Build Tools: Part 2 - A Decision Maker's Guide Compariso...[Image Results] Java Build Tools: Part 2 - A Decision Maker's Guide Compariso...
[Image Results] Java Build Tools: Part 2 - A Decision Maker's Guide Compariso...
 
DevOps vs Traditional IT Ops (DevOps Days ignite talk by Oliver White)
DevOps vs Traditional IT Ops (DevOps Days ignite talk by Oliver White)DevOps vs Traditional IT Ops (DevOps Days ignite talk by Oliver White)
DevOps vs Traditional IT Ops (DevOps Days ignite talk by Oliver White)
 
Lazy Coder's Visual Guide to RebelLabs' Developer Productivity Report 2013
Lazy Coder's Visual Guide to RebelLabs' Developer Productivity Report 2013Lazy Coder's Visual Guide to RebelLabs' Developer Productivity Report 2013
Lazy Coder's Visual Guide to RebelLabs' Developer Productivity Report 2013
 
The State of Managed Runtimes 2013, by Attila Szegedi
The State of Managed Runtimes 2013, by Attila SzegediThe State of Managed Runtimes 2013, by Attila Szegedi
The State of Managed Runtimes 2013, by Attila Szegedi
 
Language Design Tradeoffs - Kotlin and Beyond, by Andrey Breslav
Language Design Tradeoffs - Kotlin and Beyond, by Andrey BreslavLanguage Design Tradeoffs - Kotlin and Beyond, by Andrey Breslav
Language Design Tradeoffs - Kotlin and Beyond, by Andrey Breslav
 
Runtime Innovation - Nextgen Ninja Hacking of the JVM, by Ryan Sciampacone
Runtime Innovation - Nextgen Ninja Hacking of the JVM, by Ryan SciampaconeRuntime Innovation - Nextgen Ninja Hacking of the JVM, by Ryan Sciampacone
Runtime Innovation - Nextgen Ninja Hacking of the JVM, by Ryan Sciampacone
 
Easy Scaling with Open Source Data Structures, by Talip Ozturk
Easy Scaling with Open Source Data Structures, by Talip OzturkEasy Scaling with Open Source Data Structures, by Talip Ozturk
Easy Scaling with Open Source Data Structures, by Talip Ozturk
 
Blast your app with Gatling! by Stephane Landelle
Blast your app with Gatling! by Stephane LandelleBlast your app with Gatling! by Stephane Landelle
Blast your app with Gatling! by Stephane Landelle
 
JVM JIT compilation overview by Vladimir Ivanov
JVM JIT compilation overview by Vladimir IvanovJVM JIT compilation overview by Vladimir Ivanov
JVM JIT compilation overview by Vladimir Ivanov
 
How To Do Kick-Ass Software Development, by Sven Peters
How To Do Kick-Ass Software Development, by Sven PetersHow To Do Kick-Ass Software Development, by Sven Peters
How To Do Kick-Ass Software Development, by Sven Peters
 
Level Up Your Git and GitHub Experience by Jordan McCullough and Brent Beer
Level Up Your Git and GitHub Experience by Jordan McCullough and Brent BeerLevel Up Your Git and GitHub Experience by Jordan McCullough and Brent Beer
Level Up Your Git and GitHub Experience by Jordan McCullough and Brent Beer
 
AST Transformations: Groovy’s best kept secret by Andres Almiray
AST Transformations: Groovy’s best kept secret by Andres AlmirayAST Transformations: Groovy’s best kept secret by Andres Almiray
AST Transformations: Groovy’s best kept secret by Andres Almiray
 
Tap into the power of slaves with Jenkins by Kohsuke Kawaguchi
Tap into the power of slaves with Jenkins by Kohsuke KawaguchiTap into the power of slaves with Jenkins by Kohsuke Kawaguchi
Tap into the power of slaves with Jenkins by Kohsuke Kawaguchi
 
Language Design Tradeoffs (Kotlin and Beyond) by Andrey Breslav
Language Design Tradeoffs (Kotlin and Beyond) by Andrey BreslavLanguage Design Tradeoffs (Kotlin and Beyond) by Andrey Breslav
Language Design Tradeoffs (Kotlin and Beyond) by Andrey Breslav
 

Recently uploaded

+971581248768>> SAFE AND ORIGINAL ABORTION PILLS FOR SALE IN DUBAI AND ABUDHA...
+971581248768>> SAFE AND ORIGINAL ABORTION PILLS FOR SALE IN DUBAI AND ABUDHA...+971581248768>> SAFE AND ORIGINAL ABORTION PILLS FOR SALE IN DUBAI AND ABUDHA...
+971581248768>> SAFE AND ORIGINAL ABORTION PILLS FOR SALE IN DUBAI AND ABUDHA...
?#DUbAI#??##{{(☎️+971_581248768%)**%*]'#abortion pills for sale in dubai@
 
Cloud Frontiers: A Deep Dive into Serverless Spatial Data and FME
Cloud Frontiers:  A Deep Dive into Serverless Spatial Data and FMECloud Frontiers:  A Deep Dive into Serverless Spatial Data and FME
Cloud Frontiers: A Deep Dive into Serverless Spatial Data and FME
Safe Software
 

Recently uploaded (20)

TrustArc Webinar - Unlock the Power of AI-Driven Data Discovery
TrustArc Webinar - Unlock the Power of AI-Driven Data DiscoveryTrustArc Webinar - Unlock the Power of AI-Driven Data Discovery
TrustArc Webinar - Unlock the Power of AI-Driven Data Discovery
 
Apidays New York 2024 - APIs in 2030: The Risk of Technological Sleepwalk by ...
Apidays New York 2024 - APIs in 2030: The Risk of Technological Sleepwalk by ...Apidays New York 2024 - APIs in 2030: The Risk of Technological Sleepwalk by ...
Apidays New York 2024 - APIs in 2030: The Risk of Technological Sleepwalk by ...
 
Repurposing LNG terminals for Hydrogen Ammonia: Feasibility and Cost Saving
Repurposing LNG terminals for Hydrogen Ammonia: Feasibility and Cost SavingRepurposing LNG terminals for Hydrogen Ammonia: Feasibility and Cost Saving
Repurposing LNG terminals for Hydrogen Ammonia: Feasibility and Cost Saving
 
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
 
MINDCTI Revenue Release Quarter One 2024
MINDCTI Revenue Release Quarter One 2024MINDCTI Revenue Release Quarter One 2024
MINDCTI Revenue Release Quarter One 2024
 
Mcleodganj Call Girls 🥰 8617370543 Service Offer VIP Hot Model
Mcleodganj Call Girls 🥰 8617370543 Service Offer VIP Hot ModelMcleodganj Call Girls 🥰 8617370543 Service Offer VIP Hot Model
Mcleodganj Call Girls 🥰 8617370543 Service Offer VIP Hot Model
 
Vector Search -An Introduction in Oracle Database 23ai.pptx
Vector Search -An Introduction in Oracle Database 23ai.pptxVector Search -An Introduction in Oracle Database 23ai.pptx
Vector Search -An Introduction in Oracle Database 23ai.pptx
 
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
 
Apidays New York 2024 - Passkeys: Developing APIs to enable passwordless auth...
Apidays New York 2024 - Passkeys: Developing APIs to enable passwordless auth...Apidays New York 2024 - Passkeys: Developing APIs to enable passwordless auth...
Apidays New York 2024 - Passkeys: Developing APIs to enable passwordless auth...
 
Apidays New York 2024 - The Good, the Bad and the Governed by David O'Neill, ...
Apidays New York 2024 - The Good, the Bad and the Governed by David O'Neill, ...Apidays New York 2024 - The Good, the Bad and the Governed by David O'Neill, ...
Apidays New York 2024 - The Good, the Bad and the Governed by David O'Neill, ...
 
MS Copilot expands with MS Graph connectors
MS Copilot expands with MS Graph connectorsMS Copilot expands with MS Graph connectors
MS Copilot expands with MS Graph connectors
 
+971581248768>> SAFE AND ORIGINAL ABORTION PILLS FOR SALE IN DUBAI AND ABUDHA...
+971581248768>> SAFE AND ORIGINAL ABORTION PILLS FOR SALE IN DUBAI AND ABUDHA...+971581248768>> SAFE AND ORIGINAL ABORTION PILLS FOR SALE IN DUBAI AND ABUDHA...
+971581248768>> SAFE AND ORIGINAL ABORTION PILLS FOR SALE IN DUBAI AND ABUDHA...
 
CNIC Information System with Pakdata Cf In Pakistan
CNIC Information System with Pakdata Cf In PakistanCNIC Information System with Pakdata Cf In Pakistan
CNIC Information System with Pakdata Cf In Pakistan
 
Apidays New York 2024 - Accelerating FinTech Innovation by Vasa Krishnan, Fin...
Apidays New York 2024 - Accelerating FinTech Innovation by Vasa Krishnan, Fin...Apidays New York 2024 - Accelerating FinTech Innovation by Vasa Krishnan, Fin...
Apidays New York 2024 - Accelerating FinTech Innovation by Vasa Krishnan, Fin...
 
Rising Above_ Dubai Floods and the Fortitude of Dubai International Airport.pdf
Rising Above_ Dubai Floods and the Fortitude of Dubai International Airport.pdfRising Above_ Dubai Floods and the Fortitude of Dubai International Airport.pdf
Rising Above_ Dubai Floods and the Fortitude of Dubai International Airport.pdf
 
Elevate Developer Efficiency & build GenAI Application with Amazon Q​
Elevate Developer Efficiency & build GenAI Application with Amazon Q​Elevate Developer Efficiency & build GenAI Application with Amazon Q​
Elevate Developer Efficiency & build GenAI Application with Amazon Q​
 
Cloud Frontiers: A Deep Dive into Serverless Spatial Data and FME
Cloud Frontiers:  A Deep Dive into Serverless Spatial Data and FMECloud Frontiers:  A Deep Dive into Serverless Spatial Data and FME
Cloud Frontiers: A Deep Dive into Serverless Spatial Data and FME
 
Artificial Intelligence Chap.5 : Uncertainty
Artificial Intelligence Chap.5 : UncertaintyArtificial Intelligence Chap.5 : Uncertainty
Artificial Intelligence Chap.5 : Uncertainty
 
Introduction to Multilingual Retrieval Augmented Generation (RAG)
Introduction to Multilingual Retrieval Augmented Generation (RAG)Introduction to Multilingual Retrieval Augmented Generation (RAG)
Introduction to Multilingual Retrieval Augmented Generation (RAG)
 
Understanding the FAA Part 107 License ..
Understanding the FAA Part 107 License ..Understanding the FAA Part 107 License ..
Understanding the FAA Part 107 License ..
 

On Inherent Complexity of Computation, by Attila Szegedi