SlideShare a Scribd company logo
1 of 79
Download to read offline
Hackers and Rockstars
 Live programming Music in Clojure



              John Vlachoyiannis
                  @jonromero
               jon@sfalma.com
          Http://mad.emotionull.com
Who am I?
Jon Vlachoyiannis
Software Samurai and Serial Entrepreneur

   Teaching Parallel Processing [Greece]
          Founder: Sfalma.com
       Founder: busyFounder.com
         Hacker: Niobiumlabs.com

http://www.linkedin.com/in/johnvlachoyiannis
Hackers
Not really
Hackers = Creators
Rockstars
> (equals? programming making-music)
                 true
> (equals? music is-data true)
            true
Notes are data and code
Supercollider
{ [SinOsc.ar(440, 0, 0.2), SinOsc.ar(442, 0,
                0.2)] }.play;
Chuck
// make our patch
              SinOsc s => dac;

// time-loop, in which the osc's frequency is
          changed every 100 ms
                 while( true ) {
                100::ms => now;
      Std.rand2f(30.0, 1000.0) => s.freq;
                     }
Impromptu
; make sure that everything is disconnected
               (au:clear-graph)

            ; setup simple au graph
                ; piano -> output
  (define piano (au:make-node "aumu" "dls "
                     "appl"))
(au:connect-node piano 0 *au:output-node* 0)
               (au:update-graph)

             ; play note on piano
(play-note (now) piano 60 80 (* 1.0 *second*))
Toplap.org
Temporary Organisation for the Proliferation of Live Artistic
                     Programming
I can do it better!
Python
musik:> [a [ [v a d] [e [f a] ] g] [f g] [a b f [ [d s] f] f a
                           a] ]

       musik:> [kaboosh bam [dam vd [vd a]]]

            musik:>[ k+s [ k k ] s s [ k+a ] ]
Time (duration) is written like in real music
●

         ● Easy to understand

          ● Hand-made REPL
# Thanks Darth Eru for the original version!
  def parse(self, origString):
    root = ""
    tokens = re.compile(r'([?]? ?)')
    origString = [word.strip() for word in tokens.split(origString) if word.strip() != '' ]

    stack = []
    for element in origString:
       if element[0] == '[':
           if element[1:] == "":
               newLevel = []
           else:
               newLevel = [ element[1:] ]
           stack.append(newLevel)
       elif element[-1] == ']':
           if element[0:-1] != "":
               stack[-1].append(element[0:-1])
           finished = stack.pop()
           if len(stack):
               stack[-1].append(finished)
           elif element[0]:
               root = finished
       else:
           stack[-1].append(element)
    return root
●   This bracket syntax is HARD
    ● Not so easy to add effects

      ● Concurrency bye-bye
Something “feels” wrong
Meet Clojure
What is Clojure?
Ok, what is Lisp?
“Lisp is worth learning for the profound
  enlightenment experience you will have
when you finally get it; that experience will
make you a better programmer for the rest
of your days, even if you never actually use
              Lisp itself a lot."


   Eric S. Raymond, "How to Become a
                Hacker".
“LISP stands for: Lots of Insane Stupid
            Parentheses”

             Anonymous
The Truth about Lisp
LISt Processing
              LIS
●   Second oldest high-level language (first is
    Fortran)
●   Code as Data (Homoiconic)
●   Perfect for Domain-specific languages
    (DSL)
●   Exploratory programming
Clojure
●   Lisp in JVM
●   Concurrent programming
●   Dynamic Development (REPL)
●   Lazy sequences
●   No side effects   (almost)
clojure might be a better
      java than java
public class StringUtils {
   public static boolean isBlank(String str) {
      int strLen;
      if (str == null || (strLen = str.length()) == 0) {
          return true;
      }
      for (int i = 0; i < strLen; i++) {
          if ((Character.isWhitespace(str.charAt(i)) ==
false)) {
              return false;
          }
      }
      return true;
   }
}
public class StringUtils {
   public isBlank(str) {
      if (str == null || (strLen = str.length()) == 0) {
          return true;
      }
      for (i = 0; i < strLen; i++) {
          if ((Character.isWhitespace(str.charAt(i)) ==
false)) {
              return false;
          }
      }
      return true;
   }
}
public isBlank(str) {
  if (str == null || (strLen = str.length()) == 0) {
      return true;
  }
  for (i = 0; i < strLen; i++) {
      if ((Character.isWhitespace(str.charAt(i)) == false))
          return false;
      }
  }
  return true;
}
public isBlank(str) {
  if (str == null || (strLen = str.length()) == 0) {
      return true;
  }

    every (ch in str) {
       Character.isWhitespace(ch);
    }
    return true;
}
public isBlank(str) {
  every (ch in str) {
      Character.isWhitespace(ch);
  }
}
(defn blank? [s]
  (every? #(Character/isWhitespace %) s))
Everything is code
(println "Hello World")




function        argument
Everything is data
(println "Hello World")
list


       symbol          string
Where is the correlation?
Let's get M.A.D!
● Live programming (REPL)
● Using Processing (processing.org)

           ● Easy to extend

        ● Easy to understand

                ● Fun!
> (p (pattern [kick]))
    ;; 1/1 is kick
(defsample “kick” path-of-sample)
     ;; create as sample kick
(defnote A#4 @*sine*)
    ;; create a note
(create-notes)
;; creates all defnotes for notes
        ;; helping function
Everything is one data structure
(defrecord Melement [volume pitch duration play-
                  fn data])
play-fn can be anything you like
(defn play-sample [sample]
  (.trigger (:data sample)))
        ;; for samples
> (p (pattern [kick]))
    ;; 1/1 is kick
pattern calculates the correct timing
   updates the :duration for notes
> (p (pattern [kick kick]))
    ;; play two kicks
         ;; ½ kick
         ;; ½ kick
p plays each note at the correct timing
(p (pattern [kick (+snare hihat)]))
        ;; two times again
             ;; ½ kick
      ;; ½ snare with hihat
(p (pattern [kick [snare snare snare]]))
           ;; two times again
                 ;; ½ kick
             ;; (½ / 3) snare
             ;; (½ / 3) snare
             ;; (½ / 3) snare
Just like real music
Now fun!
Hint: transformations
(p (pattern [A4 B4 C5 D5 E5 F5 G5]))
(p (reverse (pattern [A4 B4 C5 D5 E5 F5 G5])))
(p (map #(assoc % :pitch
(.nextInt (java.util.Random.) 1100))
  (pattern [E4 G4 B4 E5 B4 G4]))
You can manipulate music as a data structure
(keep-looping)
(play! [[E4 G4 E4]
[E5 B4 G4 D4 A4 E4 G4 A4]])
play! Lets you experiment in real time
          Live programming
Using Processing for Visual effects
Limit? The audio sky!
(play! (text-to-notes (get-latest-twits))
         ;; add markov-chains
Searching for members for
            Band of Emacs

Give me a twit at @jonromero if interested
Thanks! Questions?

       jon@sfalma.com
Get it at mad.emotionull.com

More Related Content

What's hot

Concurrency
ConcurrencyConcurrency
Concurrencyehuard
 
F# delight
F# delightF# delight
F# delightpriort
 
Clojure made simple - Lightning talk
Clojure made simple - Lightning talkClojure made simple - Lightning talk
Clojure made simple - Lightning talkJohn Stevenson
 
Reversing the dropbox client on windows
Reversing the dropbox client on windowsReversing the dropbox client on windows
Reversing the dropbox client on windowsextremecoders
 
Python utan-stodhjul-motorsag
Python utan-stodhjul-motorsagPython utan-stodhjul-motorsag
Python utan-stodhjul-motorsagniklal
 
The async/await concurrency pattern in Golang
The async/await concurrency pattern in GolangThe async/await concurrency pattern in Golang
The async/await concurrency pattern in GolangMatteo Madeddu
 
Concurrency in Golang
Concurrency in GolangConcurrency in Golang
Concurrency in GolangOliver N
 
JFugue, Music, and the Future of Java [JavaOne 2016, CON1851]
JFugue, Music, and the Future of Java [JavaOne 2016, CON1851]JFugue, Music, and the Future of Java [JavaOne 2016, CON1851]
JFugue, Music, and the Future of Java [JavaOne 2016, CON1851]David Koelle
 
Allison Kaptur: Bytes in the Machine: Inside the CPython interpreter, PyGotha...
Allison Kaptur: Bytes in the Machine: Inside the CPython interpreter, PyGotha...Allison Kaptur: Bytes in the Machine: Inside the CPython interpreter, PyGotha...
Allison Kaptur: Bytes in the Machine: Inside the CPython interpreter, PyGotha...akaptur
 
Byterun, a Python bytecode interpreter - Allison Kaptur at NYCPython
Byterun, a Python bytecode interpreter - Allison Kaptur at NYCPythonByterun, a Python bytecode interpreter - Allison Kaptur at NYCPython
Byterun, a Python bytecode interpreter - Allison Kaptur at NYCPythonakaptur
 
JavaOne 2010, Rock Star winning presentation on Fugue and Log4JFugue
JavaOne 2010, Rock Star winning presentation on Fugue and Log4JFugueJavaOne 2010, Rock Star winning presentation on Fugue and Log4JFugue
JavaOne 2010, Rock Star winning presentation on Fugue and Log4JFugueBrian Tarbox
 
"PostgreSQL and Python" Lightning Talk @EuroPython2014
"PostgreSQL and Python" Lightning Talk @EuroPython2014"PostgreSQL and Python" Lightning Talk @EuroPython2014
"PostgreSQL and Python" Lightning Talk @EuroPython2014Henning Jacobs
 
Kotlin - Coroutine
Kotlin - CoroutineKotlin - Coroutine
Kotlin - CoroutineSean Tsai
 
Go concurrency
Go concurrencyGo concurrency
Go concurrencysiuyin
 
The Art, Joy, and Power of Creating Musical Programs (JFugue at SXSW Interact...
The Art, Joy, and Power of Creating Musical Programs (JFugue at SXSW Interact...The Art, Joy, and Power of Creating Musical Programs (JFugue at SXSW Interact...
The Art, Joy, and Power of Creating Musical Programs (JFugue at SXSW Interact...David Koelle
 
NoiseGen at Arlington Ruby 2012
NoiseGen at Arlington Ruby 2012NoiseGen at Arlington Ruby 2012
NoiseGen at Arlington Ruby 2012awwaiid
 
Finding a lost song with Node.js and async iterators - NodeConf Remote 2021
Finding a lost song with Node.js and async iterators - NodeConf Remote 2021Finding a lost song with Node.js and async iterators - NodeConf Remote 2021
Finding a lost song with Node.js and async iterators - NodeConf Remote 2021Luciano Mammino
 
Finding a lost song with Node.js and async iterators - EnterJS 2021
Finding a lost song with Node.js and async iterators - EnterJS 2021Finding a lost song with Node.js and async iterators - EnterJS 2021
Finding a lost song with Node.js and async iterators - EnterJS 2021Luciano Mammino
 

What's hot (20)

Concurrency
ConcurrencyConcurrency
Concurrency
 
F# delight
F# delightF# delight
F# delight
 
Clojure made simple - Lightning talk
Clojure made simple - Lightning talkClojure made simple - Lightning talk
Clojure made simple - Lightning talk
 
Reversing the dropbox client on windows
Reversing the dropbox client on windowsReversing the dropbox client on windows
Reversing the dropbox client on windows
 
Python utan-stodhjul-motorsag
Python utan-stodhjul-motorsagPython utan-stodhjul-motorsag
Python utan-stodhjul-motorsag
 
The async/await concurrency pattern in Golang
The async/await concurrency pattern in GolangThe async/await concurrency pattern in Golang
The async/await concurrency pattern in Golang
 
Concurrency in Golang
Concurrency in GolangConcurrency in Golang
Concurrency in Golang
 
JFugue, Music, and the Future of Java [JavaOne 2016, CON1851]
JFugue, Music, and the Future of Java [JavaOne 2016, CON1851]JFugue, Music, and the Future of Java [JavaOne 2016, CON1851]
JFugue, Music, and the Future of Java [JavaOne 2016, CON1851]
 
Allison Kaptur: Bytes in the Machine: Inside the CPython interpreter, PyGotha...
Allison Kaptur: Bytes in the Machine: Inside the CPython interpreter, PyGotha...Allison Kaptur: Bytes in the Machine: Inside the CPython interpreter, PyGotha...
Allison Kaptur: Bytes in the Machine: Inside the CPython interpreter, PyGotha...
 
Byterun, a Python bytecode interpreter - Allison Kaptur at NYCPython
Byterun, a Python bytecode interpreter - Allison Kaptur at NYCPythonByterun, a Python bytecode interpreter - Allison Kaptur at NYCPython
Byterun, a Python bytecode interpreter - Allison Kaptur at NYCPython
 
JavaOne 2010, Rock Star winning presentation on Fugue and Log4JFugue
JavaOne 2010, Rock Star winning presentation on Fugue and Log4JFugueJavaOne 2010, Rock Star winning presentation on Fugue and Log4JFugue
JavaOne 2010, Rock Star winning presentation on Fugue and Log4JFugue
 
"PostgreSQL and Python" Lightning Talk @EuroPython2014
"PostgreSQL and Python" Lightning Talk @EuroPython2014"PostgreSQL and Python" Lightning Talk @EuroPython2014
"PostgreSQL and Python" Lightning Talk @EuroPython2014
 
Kotlin - Coroutine
Kotlin - CoroutineKotlin - Coroutine
Kotlin - Coroutine
 
Go concurrency
Go concurrencyGo concurrency
Go concurrency
 
The Art, Joy, and Power of Creating Musical Programs (JFugue at SXSW Interact...
The Art, Joy, and Power of Creating Musical Programs (JFugue at SXSW Interact...The Art, Joy, and Power of Creating Musical Programs (JFugue at SXSW Interact...
The Art, Joy, and Power of Creating Musical Programs (JFugue at SXSW Interact...
 
NoiseGen at Arlington Ruby 2012
NoiseGen at Arlington Ruby 2012NoiseGen at Arlington Ruby 2012
NoiseGen at Arlington Ruby 2012
 
Finding a lost song with Node.js and async iterators - NodeConf Remote 2021
Finding a lost song with Node.js and async iterators - NodeConf Remote 2021Finding a lost song with Node.js and async iterators - NodeConf Remote 2021
Finding a lost song with Node.js and async iterators - NodeConf Remote 2021
 
Finding a lost song with Node.js and async iterators - EnterJS 2021
Finding a lost song with Node.js and async iterators - EnterJS 2021Finding a lost song with Node.js and async iterators - EnterJS 2021
Finding a lost song with Node.js and async iterators - EnterJS 2021
 
dplyr
dplyrdplyr
dplyr
 
Clojure入門
Clojure入門Clojure入門
Clojure入門
 

Viewers also liked

Managing sensitive data in performing arts
Managing sensitive data in performing artsManaging sensitive data in performing arts
Managing sensitive data in performing artsdata_management
 
Writing a Big Data History of Music
Writing a Big Data History of MusicWriting a Big Data History of Music
Writing a Big Data History of MusicDigital History
 
Music Data Journalism
Music Data JournalismMusic Data Journalism
Music Data Journalismlivbuli
 
SXSW Music 2015: Surviving the Shift: Rethinking Music and Data
SXSW Music 2015: Surviving the Shift: Rethinking Music and DataSXSW Music 2015: Surviving the Shift: Rethinking Music and Data
SXSW Music 2015: Surviving the Shift: Rethinking Music and DataGigi Johnson
 
Music data is scary, beautiful and exciting
Music data is scary, beautiful and excitingMusic data is scary, beautiful and exciting
Music data is scary, beautiful and excitingBrian Whitman
 
Music data analysis big data presentation
Music data analysis big data presentationMusic data analysis big data presentation
Music data analysis big data presentationShubhanshu Gupta
 
Scala Data Pipelines for Music Recommendations
Scala Data Pipelines for Music RecommendationsScala Data Pipelines for Music Recommendations
Scala Data Pipelines for Music RecommendationsChris Johnson
 

Viewers also liked (9)

Music 4.5 Iast.fm
Music 4.5 Iast.fmMusic 4.5 Iast.fm
Music 4.5 Iast.fm
 
Managing sensitive data in performing arts
Managing sensitive data in performing artsManaging sensitive data in performing arts
Managing sensitive data in performing arts
 
Writing a Big Data History of Music
Writing a Big Data History of MusicWriting a Big Data History of Music
Writing a Big Data History of Music
 
Managing music data
Managing music dataManaging music data
Managing music data
 
Music Data Journalism
Music Data JournalismMusic Data Journalism
Music Data Journalism
 
SXSW Music 2015: Surviving the Shift: Rethinking Music and Data
SXSW Music 2015: Surviving the Shift: Rethinking Music and DataSXSW Music 2015: Surviving the Shift: Rethinking Music and Data
SXSW Music 2015: Surviving the Shift: Rethinking Music and Data
 
Music data is scary, beautiful and exciting
Music data is scary, beautiful and excitingMusic data is scary, beautiful and exciting
Music data is scary, beautiful and exciting
 
Music data analysis big data presentation
Music data analysis big data presentationMusic data analysis big data presentation
Music data analysis big data presentation
 
Scala Data Pipelines for Music Recommendations
Scala Data Pipelines for Music RecommendationsScala Data Pipelines for Music Recommendations
Scala Data Pipelines for Music Recommendations
 

Similar to Music as data

python beginner talk slide
python beginner talk slidepython beginner talk slide
python beginner talk slidejonycse
 
Clojure Intro
Clojure IntroClojure Intro
Clojure Introthnetos
 
What can be done with Java, but should better be done with Erlang (@pavlobaron)
What can be done with Java, but should better be done with Erlang (@pavlobaron)What can be done with Java, but should better be done with Erlang (@pavlobaron)
What can be done with Java, but should better be done with Erlang (@pavlobaron)Pavlo Baron
 
Are we ready to Go?
Are we ready to Go?Are we ready to Go?
Are we ready to Go?Adam Dudczak
 
Python quickstart for programmers: Python Kung Fu
Python quickstart for programmers: Python Kung FuPython quickstart for programmers: Python Kung Fu
Python quickstart for programmers: Python Kung Fuclimatewarrior
 
Refactoring to Macros with Clojure
Refactoring to Macros with ClojureRefactoring to Macros with Clojure
Refactoring to Macros with ClojureDmitry Buzdin
 
Clojure for Java developers - Stockholm
Clojure for Java developers - StockholmClojure for Java developers - Stockholm
Clojure for Java developers - StockholmJan Kronquist
 
[EN] Ada Lovelace Day 2014 - Tampon run
[EN] Ada Lovelace Day 2014  - Tampon run[EN] Ada Lovelace Day 2014  - Tampon run
[EN] Ada Lovelace Day 2014 - Tampon runMaja Kraljič
 
Five Languages in a Moment
Five Languages in a MomentFive Languages in a Moment
Five Languages in a MomentSergio Gil
 
«Python на острие бритвы: PyPy project» Александр Кошкин, Positive Technologies
«Python на острие бритвы: PyPy project» Александр Кошкин, Positive Technologies«Python на острие бритвы: PyPy project» Александр Кошкин, Positive Technologies
«Python на острие бритвы: PyPy project» Александр Кошкин, Positive Technologiesit-people
 
Is Haskell an acceptable Perl?
Is Haskell an acceptable Perl?Is Haskell an acceptable Perl?
Is Haskell an acceptable Perl?osfameron
 
Beginning Haskell, Dive In, Its Not That Scary!
Beginning Haskell, Dive In, Its Not That Scary!Beginning Haskell, Dive In, Its Not That Scary!
Beginning Haskell, Dive In, Its Not That Scary!priort
 
Python basic
Python basic Python basic
Python basic sewoo lee
 
[SI] Ada Lovelace Day 2014 - Tampon Run
[SI] Ada Lovelace Day 2014  - Tampon Run[SI] Ada Lovelace Day 2014  - Tampon Run
[SI] Ada Lovelace Day 2014 - Tampon RunMaja Kraljič
 
Basic NLP with Python and NLTK
Basic NLP with Python and NLTKBasic NLP with Python and NLTK
Basic NLP with Python and NLTKFrancesco Bruni
 

Similar to Music as data (20)

python beginner talk slide
python beginner talk slidepython beginner talk slide
python beginner talk slide
 
Clojure Intro
Clojure IntroClojure Intro
Clojure Intro
 
What can be done with Java, but should better be done with Erlang (@pavlobaron)
What can be done with Java, but should better be done with Erlang (@pavlobaron)What can be done with Java, but should better be done with Erlang (@pavlobaron)
What can be done with Java, but should better be done with Erlang (@pavlobaron)
 
Are we ready to Go?
Are we ready to Go?Are we ready to Go?
Are we ready to Go?
 
Clojure Small Intro
Clojure Small IntroClojure Small Intro
Clojure Small Intro
 
Basics
BasicsBasics
Basics
 
Python quickstart for programmers: Python Kung Fu
Python quickstart for programmers: Python Kung FuPython quickstart for programmers: Python Kung Fu
Python quickstart for programmers: Python Kung Fu
 
Refactoring to Macros with Clojure
Refactoring to Macros with ClojureRefactoring to Macros with Clojure
Refactoring to Macros with Clojure
 
Clojure for Java developers - Stockholm
Clojure for Java developers - StockholmClojure for Java developers - Stockholm
Clojure for Java developers - Stockholm
 
[EN] Ada Lovelace Day 2014 - Tampon run
[EN] Ada Lovelace Day 2014  - Tampon run[EN] Ada Lovelace Day 2014  - Tampon run
[EN] Ada Lovelace Day 2014 - Tampon run
 
Five Languages in a Moment
Five Languages in a MomentFive Languages in a Moment
Five Languages in a Moment
 
Python
PythonPython
Python
 
«Python на острие бритвы: PyPy project» Александр Кошкин, Positive Technologies
«Python на острие бритвы: PyPy project» Александр Кошкин, Positive Technologies«Python на острие бритвы: PyPy project» Александр Кошкин, Positive Technologies
«Python на острие бритвы: PyPy project» Александр Кошкин, Positive Technologies
 
Is Haskell an acceptable Perl?
Is Haskell an acceptable Perl?Is Haskell an acceptable Perl?
Is Haskell an acceptable Perl?
 
Beginning Haskell, Dive In, Its Not That Scary!
Beginning Haskell, Dive In, Its Not That Scary!Beginning Haskell, Dive In, Its Not That Scary!
Beginning Haskell, Dive In, Its Not That Scary!
 
Pune Clojure Course Outline
Pune Clojure Course OutlinePune Clojure Course Outline
Pune Clojure Course Outline
 
Python 1 liners
Python 1 linersPython 1 liners
Python 1 liners
 
Python basic
Python basic Python basic
Python basic
 
[SI] Ada Lovelace Day 2014 - Tampon Run
[SI] Ada Lovelace Day 2014  - Tampon Run[SI] Ada Lovelace Day 2014  - Tampon Run
[SI] Ada Lovelace Day 2014 - Tampon Run
 
Basic NLP with Python and NLTK
Basic NLP with Python and NLTKBasic NLP with Python and NLTK
Basic NLP with Python and NLTK
 

More from John Vlachoyiannis

Making gazillion with cryptocurrencies
Making gazillion with cryptocurrenciesMaking gazillion with cryptocurrencies
Making gazillion with cryptocurrenciesJohn Vlachoyiannis
 
The most epic advice to become an angel investor
The most epic advice to become an angel investorThe most epic advice to become an angel investor
The most epic advice to become an angel investorJohn Vlachoyiannis
 
Music as Data - Ignite 2011 SF
Music as Data - Ignite 2011 SFMusic as Data - Ignite 2011 SF
Music as Data - Ignite 2011 SFJohn Vlachoyiannis
 
This is Appengine! 300 reasons to love Google AppEngine
This is Appengine! 300 reasons to love Google AppEngineThis is Appengine! 300 reasons to love Google AppEngine
This is Appengine! 300 reasons to love Google AppEngineJohn Vlachoyiannis
 
Rain up presentation (erlang factory)
Rain up presentation (erlang factory)Rain up presentation (erlang factory)
Rain up presentation (erlang factory)John Vlachoyiannis
 

More from John Vlachoyiannis (6)

Making gazillion with cryptocurrencies
Making gazillion with cryptocurrenciesMaking gazillion with cryptocurrencies
Making gazillion with cryptocurrencies
 
The most epic advice to become an angel investor
The most epic advice to become an angel investorThe most epic advice to become an angel investor
The most epic advice to become an angel investor
 
Music as Data - Ignite 2011 SF
Music as Data - Ignite 2011 SFMusic as Data - Ignite 2011 SF
Music as Data - Ignite 2011 SF
 
This is Appengine! 300 reasons to love Google AppEngine
This is Appengine! 300 reasons to love Google AppEngineThis is Appengine! 300 reasons to love Google AppEngine
This is Appengine! 300 reasons to love Google AppEngine
 
Rain up presentation (erlang factory)
Rain up presentation (erlang factory)Rain up presentation (erlang factory)
Rain up presentation (erlang factory)
 
Metaprogramming in Ruby
Metaprogramming in RubyMetaprogramming in Ruby
Metaprogramming in Ruby
 

Recently uploaded

Anypoint Exchange: It’s Not Just a Repo!
Anypoint Exchange: It’s Not Just a Repo!Anypoint Exchange: It’s Not Just a Repo!
Anypoint Exchange: It’s Not Just a Repo!Manik S Magar
 
Scanning the Internet for External Cloud Exposures via SSL Certs
Scanning the Internet for External Cloud Exposures via SSL CertsScanning the Internet for External Cloud Exposures via SSL Certs
Scanning the Internet for External Cloud Exposures via SSL CertsRizwan Syed
 
DevoxxFR 2024 Reproducible Builds with Apache Maven
DevoxxFR 2024 Reproducible Builds with Apache MavenDevoxxFR 2024 Reproducible Builds with Apache Maven
DevoxxFR 2024 Reproducible Builds with Apache MavenHervé Boutemy
 
Hyperautomation and AI/ML: A Strategy for Digital Transformation Success.pdf
Hyperautomation and AI/ML: A Strategy for Digital Transformation Success.pdfHyperautomation and AI/ML: A Strategy for Digital Transformation Success.pdf
Hyperautomation and AI/ML: A Strategy for Digital Transformation Success.pdfPrecisely
 
Gen AI in Business - Global Trends Report 2024.pdf
Gen AI in Business - Global Trends Report 2024.pdfGen AI in Business - Global Trends Report 2024.pdf
Gen AI in Business - Global Trends Report 2024.pdfAddepto
 
TrustArc Webinar - How to Build Consumer Trust Through Data Privacy
TrustArc Webinar - How to Build Consumer Trust Through Data PrivacyTrustArc Webinar - How to Build Consumer Trust Through Data Privacy
TrustArc Webinar - How to Build Consumer Trust Through Data PrivacyTrustArc
 
Artificial intelligence in cctv survelliance.pptx
Artificial intelligence in cctv survelliance.pptxArtificial intelligence in cctv survelliance.pptx
Artificial intelligence in cctv survelliance.pptxhariprasad279825
 
"Debugging python applications inside k8s environment", Andrii Soldatenko
"Debugging python applications inside k8s environment", Andrii Soldatenko"Debugging python applications inside k8s environment", Andrii Soldatenko
"Debugging python applications inside k8s environment", Andrii SoldatenkoFwdays
 
How to write a Business Continuity Plan
How to write a Business Continuity PlanHow to write a Business Continuity Plan
How to write a Business Continuity PlanDatabarracks
 
WordPress Websites for Engineers: Elevate Your Brand
WordPress Websites for Engineers: Elevate Your BrandWordPress Websites for Engineers: Elevate Your Brand
WordPress Websites for Engineers: Elevate Your Brandgvaughan
 
Dev Dives: Streamline document processing with UiPath Studio Web
Dev Dives: Streamline document processing with UiPath Studio WebDev Dives: Streamline document processing with UiPath Studio Web
Dev Dives: Streamline document processing with UiPath Studio WebUiPathCommunity
 
Transcript: New from BookNet Canada for 2024: BNC CataList - Tech Forum 2024
Transcript: New from BookNet Canada for 2024: BNC CataList - Tech Forum 2024Transcript: New from BookNet Canada for 2024: BNC CataList - Tech Forum 2024
Transcript: New from BookNet Canada for 2024: BNC CataList - Tech Forum 2024BookNet Canada
 
"ML in Production",Oleksandr Bagan
"ML in Production",Oleksandr Bagan"ML in Production",Oleksandr Bagan
"ML in Production",Oleksandr BaganFwdays
 
Human Factors of XR: Using Human Factors to Design XR Systems
Human Factors of XR: Using Human Factors to Design XR SystemsHuman Factors of XR: Using Human Factors to Design XR Systems
Human Factors of XR: Using Human Factors to Design XR SystemsMark Billinghurst
 
TeamStation AI System Report LATAM IT Salaries 2024
TeamStation AI System Report LATAM IT Salaries 2024TeamStation AI System Report LATAM IT Salaries 2024
TeamStation AI System Report LATAM IT Salaries 2024Lonnie McRorey
 
Ensuring Technical Readiness For Copilot in Microsoft 365
Ensuring Technical Readiness For Copilot in Microsoft 365Ensuring Technical Readiness For Copilot in Microsoft 365
Ensuring Technical Readiness For Copilot in Microsoft 3652toLead Limited
 
Leverage Zilliz Serverless - Up to 50X Saving for Your Vector Storage Cost
Leverage Zilliz Serverless - Up to 50X Saving for Your Vector Storage CostLeverage Zilliz Serverless - Up to 50X Saving for Your Vector Storage Cost
Leverage Zilliz Serverless - Up to 50X Saving for Your Vector Storage CostZilliz
 
Take control of your SAP testing with UiPath Test Suite
Take control of your SAP testing with UiPath Test SuiteTake control of your SAP testing with UiPath Test Suite
Take control of your SAP testing with UiPath Test SuiteDianaGray10
 
Connect Wave/ connectwave Pitch Deck Presentation
Connect Wave/ connectwave Pitch Deck PresentationConnect Wave/ connectwave Pitch Deck Presentation
Connect Wave/ connectwave Pitch Deck PresentationSlibray Presentation
 
Streamlining Python Development: A Guide to a Modern Project Setup
Streamlining Python Development: A Guide to a Modern Project SetupStreamlining Python Development: A Guide to a Modern Project Setup
Streamlining Python Development: A Guide to a Modern Project SetupFlorian Wilhelm
 

Recently uploaded (20)

Anypoint Exchange: It’s Not Just a Repo!
Anypoint Exchange: It’s Not Just a Repo!Anypoint Exchange: It’s Not Just a Repo!
Anypoint Exchange: It’s Not Just a Repo!
 
Scanning the Internet for External Cloud Exposures via SSL Certs
Scanning the Internet for External Cloud Exposures via SSL CertsScanning the Internet for External Cloud Exposures via SSL Certs
Scanning the Internet for External Cloud Exposures via SSL Certs
 
DevoxxFR 2024 Reproducible Builds with Apache Maven
DevoxxFR 2024 Reproducible Builds with Apache MavenDevoxxFR 2024 Reproducible Builds with Apache Maven
DevoxxFR 2024 Reproducible Builds with Apache Maven
 
Hyperautomation and AI/ML: A Strategy for Digital Transformation Success.pdf
Hyperautomation and AI/ML: A Strategy for Digital Transformation Success.pdfHyperautomation and AI/ML: A Strategy for Digital Transformation Success.pdf
Hyperautomation and AI/ML: A Strategy for Digital Transformation Success.pdf
 
Gen AI in Business - Global Trends Report 2024.pdf
Gen AI in Business - Global Trends Report 2024.pdfGen AI in Business - Global Trends Report 2024.pdf
Gen AI in Business - Global Trends Report 2024.pdf
 
TrustArc Webinar - How to Build Consumer Trust Through Data Privacy
TrustArc Webinar - How to Build Consumer Trust Through Data PrivacyTrustArc Webinar - How to Build Consumer Trust Through Data Privacy
TrustArc Webinar - How to Build Consumer Trust Through Data Privacy
 
Artificial intelligence in cctv survelliance.pptx
Artificial intelligence in cctv survelliance.pptxArtificial intelligence in cctv survelliance.pptx
Artificial intelligence in cctv survelliance.pptx
 
"Debugging python applications inside k8s environment", Andrii Soldatenko
"Debugging python applications inside k8s environment", Andrii Soldatenko"Debugging python applications inside k8s environment", Andrii Soldatenko
"Debugging python applications inside k8s environment", Andrii Soldatenko
 
How to write a Business Continuity Plan
How to write a Business Continuity PlanHow to write a Business Continuity Plan
How to write a Business Continuity Plan
 
WordPress Websites for Engineers: Elevate Your Brand
WordPress Websites for Engineers: Elevate Your BrandWordPress Websites for Engineers: Elevate Your Brand
WordPress Websites for Engineers: Elevate Your Brand
 
Dev Dives: Streamline document processing with UiPath Studio Web
Dev Dives: Streamline document processing with UiPath Studio WebDev Dives: Streamline document processing with UiPath Studio Web
Dev Dives: Streamline document processing with UiPath Studio Web
 
Transcript: New from BookNet Canada for 2024: BNC CataList - Tech Forum 2024
Transcript: New from BookNet Canada for 2024: BNC CataList - Tech Forum 2024Transcript: New from BookNet Canada for 2024: BNC CataList - Tech Forum 2024
Transcript: New from BookNet Canada for 2024: BNC CataList - Tech Forum 2024
 
"ML in Production",Oleksandr Bagan
"ML in Production",Oleksandr Bagan"ML in Production",Oleksandr Bagan
"ML in Production",Oleksandr Bagan
 
Human Factors of XR: Using Human Factors to Design XR Systems
Human Factors of XR: Using Human Factors to Design XR SystemsHuman Factors of XR: Using Human Factors to Design XR Systems
Human Factors of XR: Using Human Factors to Design XR Systems
 
TeamStation AI System Report LATAM IT Salaries 2024
TeamStation AI System Report LATAM IT Salaries 2024TeamStation AI System Report LATAM IT Salaries 2024
TeamStation AI System Report LATAM IT Salaries 2024
 
Ensuring Technical Readiness For Copilot in Microsoft 365
Ensuring Technical Readiness For Copilot in Microsoft 365Ensuring Technical Readiness For Copilot in Microsoft 365
Ensuring Technical Readiness For Copilot in Microsoft 365
 
Leverage Zilliz Serverless - Up to 50X Saving for Your Vector Storage Cost
Leverage Zilliz Serverless - Up to 50X Saving for Your Vector Storage CostLeverage Zilliz Serverless - Up to 50X Saving for Your Vector Storage Cost
Leverage Zilliz Serverless - Up to 50X Saving for Your Vector Storage Cost
 
Take control of your SAP testing with UiPath Test Suite
Take control of your SAP testing with UiPath Test SuiteTake control of your SAP testing with UiPath Test Suite
Take control of your SAP testing with UiPath Test Suite
 
Connect Wave/ connectwave Pitch Deck Presentation
Connect Wave/ connectwave Pitch Deck PresentationConnect Wave/ connectwave Pitch Deck Presentation
Connect Wave/ connectwave Pitch Deck Presentation
 
Streamlining Python Development: A Guide to a Modern Project Setup
Streamlining Python Development: A Guide to a Modern Project SetupStreamlining Python Development: A Guide to a Modern Project Setup
Streamlining Python Development: A Guide to a Modern Project Setup
 

Music as data