SlideShare a Scribd company logo
1 of 40
Download to read offline
Err....




          Quarks
          Preon
Preon




  A
declarative
data
binding
framework
for
binary

                    encoded
data
Binary Encoded Data?

Any
file
for
which

'file
‐bi
{filename}'

does

 not
return
a
mimetype
starting
with
'text/'


  Non‐binary:          Binary:
  text/plain
(*.txt)   application/pdf
(*.pdf)
  text/html
(*.html)   application/octet‐stream
(*.mp4)
  text/xml
(*.xml)     image/png
(*.png)
Not only byte stream

Always
octects
(8
bit
values)

             8
bits
                                
                                 8

                                   bi
                                      ts
                                        
But also bit stream

Always
octects
(8
bit
values)

         5
bits 5
b
                      its
Compressed Data




                  2
kg
                  1021
pages
Network Traffic
TomTom Map Files




Approx.
300
pages
of
C++
source
code,

  just
for
decoding
only...
Why?



  Binary
45.71%

                                          Non‐binary
54.29%




       Binary
vs.
non‐binary
distribution
on
a

          random
directory
on
my
system
Why?




          100%
           Binary
files
only




       ...and
on
my
wife's
system
Challenges
●   Decoding
from
bit
stream
not
for
the
faint‐hearted
●   Encoding
to
bit
stream
not
for
the
faint‐hearted
●   Hard
to
maintain
●   Hard
to
extend
●   Java
doesn't
help
(Bug
4504839)
●   Decoder
and
encoder
easily
go
out
of
sync
●   Documentation
and
software
easily
go
out
of
sync
What if....



  ..this could all be
     solved easily?
Preon Ambitions
●   Declaratively
map
data
structure
to
encoding

    format
●   Get
the
decoder/encoder/documentation,

    free
of
charge
5-Second User Guide

Decoding
a
BitMap:

01

File
file
=
new
File(...);
02

Codec<BitMap>
codec
=
Codecs.create(BitMap.class);
03

BitMap
bitmap
=
Codecs.decode(codec,
file);
What just happened?

       Create
a
Codec
for
instances
of
BitMap

01

File
file
=
new
File(...);
02

Codec<BitMap>
codec
=
Codecs.create(BitMap.class);
03

BitMap
bitmap
=
Codecs.decode(codec,
file);


       ...
and
use
it
to
decode
a
BitMap.
Find the specification

The
data
structure
IS
the
specification:
class
BitMap
{


@Bound
int
width;


@Bound
int
height;


@Bound
int
nrColors;


@BoundList(size=”nrColors”)
Color[];


@BoundList(size=”width*height”)
byte[]
pixels;
}

class
Color
{


@Bound
int
red;


@Bound
int
green;


@Bound
int
blue;
}
Demo Decoding
But what is actually happening?
                 Codec
is
nothing
but
a

                 facace
to
a
chain
of

                 Codecs.

                 Each
Codec
only

                 understands
its
own
task.

                 Codecs
will
delegate
to

                 other
Codecs
Codecs
Encapsulate
everything
there
is
to
know
about
the

  mapping
between
in‐memory
representation
and

  encoded
representation
Demo Documentation
So, now....




      Forget
everything
I
just
told
you
Preon just works

Annotations            Types
●   @Bound             int,
byte,
short,
long,
Integer,

●   @BoundList         Byte,
Short,
Long,
boolean,

●   @BoundString       Boolean,
String,
List<T>,
T[],

●   @BoundNumber       type‐safe
enums,

Object
●   @BoundObject
                       Expressions
●   @BoundExplicitly
●   @If
               attributes:
.{name}
●   @LazyLoading       items:
[{number}],
or
[{expr}]
●   @LengthPrefix      arithmetic:
+,
‐,
/,
*,
^
●   @TypePrefix        combinatorial:
&&,
||
●   @ByteAlign         relational:
>=,
<=,
==,
<,
>
●   @Slice             literals:
'foobar',
0x0f,
0b01101
Convention over Configuration
//
Default
settings
for
int
Codec:

//
32‐bits,
little
endian
@Bound
int
foo;

//
Read
an
int,
but
construct
the
int

//
from
5
bits
only
@BoundNumber(size=”5”)
int
foo;
Expressions (1)
/**

*
An
icon
of
maximal
15
*
15
pixels.
Each
color

*
has
a
color
in
the
range
0‐255.

*/
public
class
Icon
{
@BoundNumber(size=”4”)
int
height;
@BoundNumber(size=”4”)
int
width;
@BoundList(size=”height
*
width”)
byte[]
pixels;
}


              By
accepting
Strings
instead
of
booleans
and

         integers,
Preon
allows
you
to
pass
in
expressions.
Expressions (2)
@BoundString(size=”{expr}”,
...)
@BoundList(size=”{expr}”,
offset=”{expr}”,
...)
@BoundNumber(size=”{expr}”,
...)
@Slice(“{expr}”)
...
Boolean expressions
@Bound
private
int
mapVersion;

@If(“mapVersion
>=
700”)
@Bound

private
MapFlags
flags;

//
But
also:
//
mapVersion
+
1
>=
700
//
mapVersion
>
3
&&
mapVersion
<
300
//
etc.
References


                          Backward
references
only
                          Reference
the
“outer”
object




  addresses[1].street
  outer.driversLicenses[1].state
  driveresLicenses[nrDriverLicenses
‐
1].state
Variable Introductions

    @Bound
int[]
offsets;
    @BoundList(offset=”offsets[index]”,...)

      List<Node>
nodes;
                                                 Introduction
●   Preon
will
inject
List
implementation
●   List
implementation
will
load
Nodes
lazily,
on
demand
●   Calling
nodes.get(3)
will
cause
the
List
implementation
to
     –   Calculate
the
node's
position:
offsets[index=3]
=
120
     –   Call
Codec<Node>
to
start
decoding
from
that
point
Inheritance

 Java
Classes   Preon
Perspective
Codecs class is your friend
static <T> T decode(Codec<T> codec, byte[] buffer)
static <T> T decode(Codec<T> codec, ByteBuffer buffer)
static <T> T decode(Codec<T> codec, File file)

static <T> Codec<T> create(Class<T> type)
static <T> Codec<T> create(Class<T> type, CodecFactory...
  factories)
static <T> Codec<T> create(Class<T> type, CodecDecorator...
  decorators)

static <T> void document(Codec<T> codec, ArticleDocument
  document)
static <T> void document(Codec<T> codec, DocumentType type,
  OutputStream out)
static <T> void document(Codec<T> codec, DocumentType type, File
  file)
Preon Layers

                                      Data
binding



                                      A
fluent
interface
for

                                      generating
documents.
                                      (pecia.sourceforget.net)



                         An
expression
language
capable
of

BitBuffer
abstractions   rendering
itself
to
human
readable

                         text.
(limbo.sourceforge.net)
Preon License

                                         GPL
+
Classpath

                                         Exception


                                         Apache
2.0




                            Apache
2.0
GPL
+
Classpath
Exception
If not Preon, then what else?
Declarative
approach
is
not
new:
– BSDL
(Bitstream
Syntax
Description
Language)
– Flavor
(http://flavor.sourceforge.net/)
– XFlavor
– BFlavor
(http://multimedialab.elis.ugent.be/bflavor/)


None
of
them
would
worked
in
our
case:
– Overly
complicated
– No
solid
implementation
– Assumptions
are
surreal:
   ● “everything
will
just
fit
in
memory”

   ● “there
will
only
be
a
single
thread”

   ● “our
current
feature
set
is
all
you
ever
need”
The Preon Answer
“everything
will
just
fit
in
memory”
   Preon
is
capable
of
using
memory‐mapped
data.
(Default

     BitBuffer
implementation
wraps
around
ByteBuffer,
and

     hence
also
MappedByteBuffer.)
“there
will
only
be
a
single
thread”
   In
Preon,
every
thread
can
have
its
own
reference
to
the

     current
position
in
the
BitBuffer.
“our
current
feature
set
is
all
you
ever
need”
   Preon
has
incredibly
open:
implement
CodecFactory
or

     CodecDecorator
to
create
your
own
codecs
based
on
type

     information
or
annotations.
CodecFactory

             Annotations
on
the
object
expecting
data

             to
be
decoded
by
the
Codec.
interface CodecFactory {
<T> Codec<T> create(AnnotatedElement metadata,
                    Class<T> type,
                    ResolverContext context);
}


The
type
of
object
to
       The
object
for
constructing

be
decoded.                  references.


returns
null
if
it
does
not
have
a
way
to
construct
a
Codec
CodecFactory Usage
●   CodecFactories
can
be
passed
to
Codecs.create(...)
●   ...
which
will
cause
the
Codecs
class
to
consider

    these
factories
when
constructing
the
various

    Codecs.
●   Internally,
a
big
chain
of
commands
Current Status
●   http://preon.sourceforge.net/
●   Interfaces
fairly
stable
●   Current
version
1.0‐SNAPSHOT
●   Complete
Java
class
example
before
first
release

    candidate
●   Bugs...
●   I
want
you
Future work
●   The
encode
operation
(after
1.0)
●   Better
debugging
●   Annotation
driven
support
for
other
compression

    techniques
●   More
hyperlinking
in
the
documentation
●   Better
algebraic
simplification
of
expressions
●   Descriptions
from
JavaDoc
If there is only a couple of things...
●   XML
is
just
a
lame
way
of
binary
encoding
●   Preon
cuts
out
the
Infoset
model,
preventing

    unnecessary
transformations
●   Preon
makes
binary
encoding
easy
●   Preon
is
extensible
●   Preon
(probably)
scales
quite
well
●   Preon
is
friendly
to
Java
developers
Confused?

More Related Content

What's hot

Java Programming Guide Quick Reference
Java Programming Guide Quick ReferenceJava Programming Guide Quick Reference
Java Programming Guide Quick ReferenceFrescatiStory
 
Quick Intro To JRuby
Quick Intro To JRubyQuick Intro To JRuby
Quick Intro To JRubyFrederic Jean
 
Building DSLs with Xtext - Eclipse Modeling Day 2009
Building DSLs with Xtext - Eclipse Modeling Day 2009Building DSLs with Xtext - Eclipse Modeling Day 2009
Building DSLs with Xtext - Eclipse Modeling Day 2009Heiko Behrens
 
javascript teach
javascript teachjavascript teach
javascript teachguest3732fa
 
tictactoe groovy
tictactoe groovytictactoe groovy
tictactoe groovyPaul King
 
Java Bytecode Fundamentals - JUG.lv
Java Bytecode Fundamentals - JUG.lvJava Bytecode Fundamentals - JUG.lv
Java Bytecode Fundamentals - JUG.lvAnton Arhipov
 
Silicon Valley JUG: JVM Mechanics
Silicon Valley JUG: JVM MechanicsSilicon Valley JUG: JVM Mechanics
Silicon Valley JUG: JVM MechanicsAzul Systems, Inc.
 
Object Calisthenics em Go
Object Calisthenics em GoObject Calisthenics em Go
Object Calisthenics em GoElton Minetto
 
Golang iran - tutorial go programming language - Preliminary
Golang iran - tutorial  go programming language - PreliminaryGolang iran - tutorial  go programming language - Preliminary
Golang iran - tutorial go programming language - Preliminarygo-lang
 
Basic NLP with Python and NLTK
Basic NLP with Python and NLTKBasic NLP with Python and NLTK
Basic NLP with Python and NLTKFrancesco Bruni
 

What's hot (14)

Java Programming Guide Quick Reference
Java Programming Guide Quick ReferenceJava Programming Guide Quick Reference
Java Programming Guide Quick Reference
 
Why rust?
Why rust?Why rust?
Why rust?
 
Quick Intro To JRuby
Quick Intro To JRubyQuick Intro To JRuby
Quick Intro To JRuby
 
Building DSLs with Xtext - Eclipse Modeling Day 2009
Building DSLs with Xtext - Eclipse Modeling Day 2009Building DSLs with Xtext - Eclipse Modeling Day 2009
Building DSLs with Xtext - Eclipse Modeling Day 2009
 
The walking 0xDEAD
The walking 0xDEADThe walking 0xDEAD
The walking 0xDEAD
 
javascript teach
javascript teachjavascript teach
javascript teach
 
tictactoe groovy
tictactoe groovytictactoe groovy
tictactoe groovy
 
Java Bytecode Fundamentals - JUG.lv
Java Bytecode Fundamentals - JUG.lvJava Bytecode Fundamentals - JUG.lv
Java Bytecode Fundamentals - JUG.lv
 
Silicon Valley JUG: JVM Mechanics
Silicon Valley JUG: JVM MechanicsSilicon Valley JUG: JVM Mechanics
Silicon Valley JUG: JVM Mechanics
 
Object Calisthenics em Go
Object Calisthenics em GoObject Calisthenics em Go
Object Calisthenics em Go
 
Golang iran - tutorial go programming language - Preliminary
Golang iran - tutorial  go programming language - PreliminaryGolang iran - tutorial  go programming language - Preliminary
Golang iran - tutorial go programming language - Preliminary
 
Python Programming Essentials - M8 - String Methods
Python Programming Essentials - M8 - String MethodsPython Programming Essentials - M8 - String Methods
Python Programming Essentials - M8 - String Methods
 
Book
BookBook
Book
 
Basic NLP with Python and NLTK
Basic NLP with Python and NLTKBasic NLP with Python and NLTK
Basic NLP with Python and NLTK
 

Similar to Preon (J-Fall 2008)

HA+DRBD+Postgres - PostgresWest '08
HA+DRBD+Postgres - PostgresWest '08HA+DRBD+Postgres - PostgresWest '08
HA+DRBD+Postgres - PostgresWest '08Jesse Young
 
Multiprocessing with python
Multiprocessing with pythonMultiprocessing with python
Multiprocessing with pythonPatrick Vergain
 
JSBootcamp_White
JSBootcamp_WhiteJSBootcamp_White
JSBootcamp_Whiteguest3732fa
 
Yakov Fain - Design Patterns a Deep Dive
Yakov Fain - Design Patterns a Deep DiveYakov Fain - Design Patterns a Deep Dive
Yakov Fain - Design Patterns a Deep Dive360|Conferences
 
PECL Picks - Extensions to make your life better
PECL Picks - Extensions to make your life betterPECL Picks - Extensions to make your life better
PECL Picks - Extensions to make your life betterZendCon
 
Generator Tricks for Systems Programmers
Generator Tricks for Systems ProgrammersGenerator Tricks for Systems Programmers
Generator Tricks for Systems ProgrammersHiroshi Ono
 
The Tantric Team: Getting Your Automated Build Groove On
The Tantric Team: Getting Your Automated Build Groove OnThe Tantric Team: Getting Your Automated Build Groove On
The Tantric Team: Getting Your Automated Build Groove OnAtlassian
 
Fedora App Slide 2009 Hastac
Fedora App Slide 2009 HastacFedora App Slide 2009 Hastac
Fedora App Slide 2009 HastacLoretta Auvil
 
Peer Code Review: In a Nutshell and The Tantric Team: Getting Your Automated ...
Peer Code Review: In a Nutshell and The Tantric Team: Getting Your Automated ...Peer Code Review: In a Nutshell and The Tantric Team: Getting Your Automated ...
Peer Code Review: In a Nutshell and The Tantric Team: Getting Your Automated ...Atlassian
 
High-Octane Dev Teams: Three Things You Can Do To Improve Code Quality
High-Octane Dev Teams: Three Things You Can Do To Improve Code QualityHigh-Octane Dev Teams: Three Things You Can Do To Improve Code Quality
High-Octane Dev Teams: Three Things You Can Do To Improve Code QualityAtlassian
 
Streaming huge databases using logical decoding
Streaming huge databases using logical decodingStreaming huge databases using logical decoding
Streaming huge databases using logical decodingAlexander Shulgin
 
Adrian Weisberg Ajax World Presentation
Adrian Weisberg   Ajax World PresentationAdrian Weisberg   Ajax World Presentation
Adrian Weisberg Ajax World Presentationrajivmordani
 
Efficient JavaScript Development
Efficient JavaScript DevelopmentEfficient JavaScript Development
Efficient JavaScript Developmentwolframkriesing
 
Microblogging via XMPP
Microblogging via XMPPMicroblogging via XMPP
Microblogging via XMPPStoyan Zhekov
 

Similar to Preon (J-Fall 2008) (20)

HA+DRBD+Postgres - PostgresWest '08
HA+DRBD+Postgres - PostgresWest '08HA+DRBD+Postgres - PostgresWest '08
HA+DRBD+Postgres - PostgresWest '08
 
Multiprocessing with python
Multiprocessing with pythonMultiprocessing with python
Multiprocessing with python
 
HTML Parsing With Hpricot
HTML Parsing With HpricotHTML Parsing With Hpricot
HTML Parsing With Hpricot
 
JSBootcamp_White
JSBootcamp_WhiteJSBootcamp_White
JSBootcamp_White
 
Yakov Fain - Design Patterns a Deep Dive
Yakov Fain - Design Patterns a Deep DiveYakov Fain - Design Patterns a Deep Dive
Yakov Fain - Design Patterns a Deep Dive
 
PECL Picks - Extensions to make your life better
PECL Picks - Extensions to make your life betterPECL Picks - Extensions to make your life better
PECL Picks - Extensions to make your life better
 
Generator Tricks for Systems Programmers
Generator Tricks for Systems ProgrammersGenerator Tricks for Systems Programmers
Generator Tricks for Systems Programmers
 
The Tantric Team: Getting Your Automated Build Groove On
The Tantric Team: Getting Your Automated Build Groove OnThe Tantric Team: Getting Your Automated Build Groove On
The Tantric Team: Getting Your Automated Build Groove On
 
Pc54
Pc54Pc54
Pc54
 
Fedora App Slide 2009 Hastac
Fedora App Slide 2009 HastacFedora App Slide 2009 Hastac
Fedora App Slide 2009 Hastac
 
Os Wilhelm
Os WilhelmOs Wilhelm
Os Wilhelm
 
sysprog1
sysprog1sysprog1
sysprog1
 
Peer Code Review: In a Nutshell and The Tantric Team: Getting Your Automated ...
Peer Code Review: In a Nutshell and The Tantric Team: Getting Your Automated ...Peer Code Review: In a Nutshell and The Tantric Team: Getting Your Automated ...
Peer Code Review: In a Nutshell and The Tantric Team: Getting Your Automated ...
 
High-Octane Dev Teams: Three Things You Can Do To Improve Code Quality
High-Octane Dev Teams: Three Things You Can Do To Improve Code QualityHigh-Octane Dev Teams: Three Things You Can Do To Improve Code Quality
High-Octane Dev Teams: Three Things You Can Do To Improve Code Quality
 
Streaming huge databases using logical decoding
Streaming huge databases using logical decodingStreaming huge databases using logical decoding
Streaming huge databases using logical decoding
 
Adrian Weisberg Ajax World Presentation
Adrian Weisberg   Ajax World PresentationAdrian Weisberg   Ajax World Presentation
Adrian Weisberg Ajax World Presentation
 
XS Boston 2008 Network Topology
XS Boston 2008 Network TopologyXS Boston 2008 Network Topology
XS Boston 2008 Network Topology
 
Efficient JavaScript Development
Efficient JavaScript DevelopmentEfficient JavaScript Development
Efficient JavaScript Development
 
Genome Browser
Genome BrowserGenome Browser
Genome Browser
 
Microblogging via XMPP
Microblogging via XMPPMicroblogging via XMPP
Microblogging via XMPP
 

More from Wilfred Springer (12)

Unfiltered Unveiled
Unfiltered UnveiledUnfiltered Unveiled
Unfiltered Unveiled
 
Scala in your organisation
Scala in your organisationScala in your organisation
Scala in your organisation
 
Simplicity
SimplicitySimplicity
Simplicity
 
Unfiltered Unveiled
Unfiltered UnveiledUnfiltered Unveiled
Unfiltered Unveiled
 
Mongo
MongoMongo
Mongo
 
NoSQL
NoSQLNoSQL
NoSQL
 
NoSQL Rollercoaster
NoSQL RollercoasterNoSQL Rollercoaster
NoSQL Rollercoaster
 
Byzantine Generals
Byzantine GeneralsByzantine Generals
Byzantine Generals
 
Eventually Consistent
Eventually ConsistentEventually Consistent
Eventually Consistent
 
Into the Wild
Into the WildInto the Wild
Into the Wild
 
Spring ME JavaOne
Spring ME JavaOneSpring ME JavaOne
Spring ME JavaOne
 
Spring ME
Spring MESpring ME
Spring ME
 

Recently uploaded

React Native vs Ionic - The Best Mobile App Framework
React Native vs Ionic - The Best Mobile App FrameworkReact Native vs Ionic - The Best Mobile App Framework
React Native vs Ionic - The Best Mobile App FrameworkPixlogix Infotech
 
Time Series Foundation Models - current state and future directions
Time Series Foundation Models - current state and future directionsTime Series Foundation Models - current state and future directions
Time Series Foundation Models - current state and future directionsNathaniel Shimoni
 
Top 10 Hubspot Development Companies in 2024
Top 10 Hubspot Development Companies in 2024Top 10 Hubspot Development Companies in 2024
Top 10 Hubspot Development Companies in 2024TopCSSGallery
 
A Glance At The Java Performance Toolbox
A Glance At The Java Performance ToolboxA Glance At The Java Performance Toolbox
A Glance At The Java Performance ToolboxAna-Maria Mihalceanu
 
So einfach geht modernes Roaming fuer Notes und Nomad.pdf
So einfach geht modernes Roaming fuer Notes und Nomad.pdfSo einfach geht modernes Roaming fuer Notes und Nomad.pdf
So einfach geht modernes Roaming fuer Notes und Nomad.pdfpanagenda
 
Email Marketing Automation for Bonterra Impact Management (fka Social Solutio...
Email Marketing Automation for Bonterra Impact Management (fka Social Solutio...Email Marketing Automation for Bonterra Impact Management (fka Social Solutio...
Email Marketing Automation for Bonterra Impact Management (fka Social Solutio...Jeffrey Haguewood
 
Potential of AI (Generative AI) in Business: Learnings and Insights
Potential of AI (Generative AI) in Business: Learnings and InsightsPotential of AI (Generative AI) in Business: Learnings and Insights
Potential of AI (Generative AI) in Business: Learnings and InsightsRavi Sanghani
 
Microsoft 365 Copilot: How to boost your productivity with AI – Part one: Ado...
Microsoft 365 Copilot: How to boost your productivity with AI – Part one: Ado...Microsoft 365 Copilot: How to boost your productivity with AI – Part one: Ado...
Microsoft 365 Copilot: How to boost your productivity with AI – Part one: Ado...Nikki Chapple
 
Kuma Meshes Part I - The basics - A tutorial
Kuma Meshes Part I - The basics - A tutorialKuma Meshes Part I - The basics - A tutorial
Kuma Meshes Part I - The basics - A tutorialJoão Esperancinha
 
JET Technology Labs White Paper for Virtualized Security and Encryption Techn...
JET Technology Labs White Paper for Virtualized Security and Encryption Techn...JET Technology Labs White Paper for Virtualized Security and Encryption Techn...
JET Technology Labs White Paper for Virtualized Security and Encryption Techn...amber724300
 
Glenn Lazarus- Why Your Observability Strategy Needs Security Observability
Glenn Lazarus- Why Your Observability Strategy Needs Security ObservabilityGlenn Lazarus- Why Your Observability Strategy Needs Security Observability
Glenn Lazarus- Why Your Observability Strategy Needs Security Observabilityitnewsafrica
 
Infrared simulation and processing on Nvidia platforms
Infrared simulation and processing on Nvidia platformsInfrared simulation and processing on Nvidia platforms
Infrared simulation and processing on Nvidia platformsYoss Cohen
 
Landscape Catalogue 2024 Australia-1.pdf
Landscape Catalogue 2024 Australia-1.pdfLandscape Catalogue 2024 Australia-1.pdf
Landscape Catalogue 2024 Australia-1.pdfAarwolf Industries LLC
 
Bridging Between CAD & GIS: 6 Ways to Automate Your Data Integration
Bridging Between CAD & GIS:  6 Ways to Automate Your Data IntegrationBridging Between CAD & GIS:  6 Ways to Automate Your Data Integration
Bridging Between CAD & GIS: 6 Ways to Automate Your Data Integrationmarketing932765
 
A Journey Into the Emotions of Software Developers
A Journey Into the Emotions of Software DevelopersA Journey Into the Emotions of Software Developers
A Journey Into the Emotions of Software DevelopersNicole Novielli
 
Genislab builds better products and faster go-to-market with Lean project man...
Genislab builds better products and faster go-to-market with Lean project man...Genislab builds better products and faster go-to-market with Lean project man...
Genislab builds better products and faster go-to-market with Lean project man...Farhan Tariq
 
[Webinar] SpiraTest - Setting New Standards in Quality Assurance
[Webinar] SpiraTest - Setting New Standards in Quality Assurance[Webinar] SpiraTest - Setting New Standards in Quality Assurance
[Webinar] SpiraTest - Setting New Standards in Quality AssuranceInflectra
 
Emixa Mendix Meetup 11 April 2024 about Mendix Native development
Emixa Mendix Meetup 11 April 2024 about Mendix Native developmentEmixa Mendix Meetup 11 April 2024 about Mendix Native development
Emixa Mendix Meetup 11 April 2024 about Mendix Native developmentPim van der Noll
 
Generative Artificial Intelligence: How generative AI works.pdf
Generative Artificial Intelligence: How generative AI works.pdfGenerative Artificial Intelligence: How generative AI works.pdf
Generative Artificial Intelligence: How generative AI works.pdfIngrid Airi González
 
Microsoft 365 Copilot: How to boost your productivity with AI – Part two: Dat...
Microsoft 365 Copilot: How to boost your productivity with AI – Part two: Dat...Microsoft 365 Copilot: How to boost your productivity with AI – Part two: Dat...
Microsoft 365 Copilot: How to boost your productivity with AI – Part two: Dat...Nikki Chapple
 

Recently uploaded (20)

React Native vs Ionic - The Best Mobile App Framework
React Native vs Ionic - The Best Mobile App FrameworkReact Native vs Ionic - The Best Mobile App Framework
React Native vs Ionic - The Best Mobile App Framework
 
Time Series Foundation Models - current state and future directions
Time Series Foundation Models - current state and future directionsTime Series Foundation Models - current state and future directions
Time Series Foundation Models - current state and future directions
 
Top 10 Hubspot Development Companies in 2024
Top 10 Hubspot Development Companies in 2024Top 10 Hubspot Development Companies in 2024
Top 10 Hubspot Development Companies in 2024
 
A Glance At The Java Performance Toolbox
A Glance At The Java Performance ToolboxA Glance At The Java Performance Toolbox
A Glance At The Java Performance Toolbox
 
So einfach geht modernes Roaming fuer Notes und Nomad.pdf
So einfach geht modernes Roaming fuer Notes und Nomad.pdfSo einfach geht modernes Roaming fuer Notes und Nomad.pdf
So einfach geht modernes Roaming fuer Notes und Nomad.pdf
 
Email Marketing Automation for Bonterra Impact Management (fka Social Solutio...
Email Marketing Automation for Bonterra Impact Management (fka Social Solutio...Email Marketing Automation for Bonterra Impact Management (fka Social Solutio...
Email Marketing Automation for Bonterra Impact Management (fka Social Solutio...
 
Potential of AI (Generative AI) in Business: Learnings and Insights
Potential of AI (Generative AI) in Business: Learnings and InsightsPotential of AI (Generative AI) in Business: Learnings and Insights
Potential of AI (Generative AI) in Business: Learnings and Insights
 
Microsoft 365 Copilot: How to boost your productivity with AI – Part one: Ado...
Microsoft 365 Copilot: How to boost your productivity with AI – Part one: Ado...Microsoft 365 Copilot: How to boost your productivity with AI – Part one: Ado...
Microsoft 365 Copilot: How to boost your productivity with AI – Part one: Ado...
 
Kuma Meshes Part I - The basics - A tutorial
Kuma Meshes Part I - The basics - A tutorialKuma Meshes Part I - The basics - A tutorial
Kuma Meshes Part I - The basics - A tutorial
 
JET Technology Labs White Paper for Virtualized Security and Encryption Techn...
JET Technology Labs White Paper for Virtualized Security and Encryption Techn...JET Technology Labs White Paper for Virtualized Security and Encryption Techn...
JET Technology Labs White Paper for Virtualized Security and Encryption Techn...
 
Glenn Lazarus- Why Your Observability Strategy Needs Security Observability
Glenn Lazarus- Why Your Observability Strategy Needs Security ObservabilityGlenn Lazarus- Why Your Observability Strategy Needs Security Observability
Glenn Lazarus- Why Your Observability Strategy Needs Security Observability
 
Infrared simulation and processing on Nvidia platforms
Infrared simulation and processing on Nvidia platformsInfrared simulation and processing on Nvidia platforms
Infrared simulation and processing on Nvidia platforms
 
Landscape Catalogue 2024 Australia-1.pdf
Landscape Catalogue 2024 Australia-1.pdfLandscape Catalogue 2024 Australia-1.pdf
Landscape Catalogue 2024 Australia-1.pdf
 
Bridging Between CAD & GIS: 6 Ways to Automate Your Data Integration
Bridging Between CAD & GIS:  6 Ways to Automate Your Data IntegrationBridging Between CAD & GIS:  6 Ways to Automate Your Data Integration
Bridging Between CAD & GIS: 6 Ways to Automate Your Data Integration
 
A Journey Into the Emotions of Software Developers
A Journey Into the Emotions of Software DevelopersA Journey Into the Emotions of Software Developers
A Journey Into the Emotions of Software Developers
 
Genislab builds better products and faster go-to-market with Lean project man...
Genislab builds better products and faster go-to-market with Lean project man...Genislab builds better products and faster go-to-market with Lean project man...
Genislab builds better products and faster go-to-market with Lean project man...
 
[Webinar] SpiraTest - Setting New Standards in Quality Assurance
[Webinar] SpiraTest - Setting New Standards in Quality Assurance[Webinar] SpiraTest - Setting New Standards in Quality Assurance
[Webinar] SpiraTest - Setting New Standards in Quality Assurance
 
Emixa Mendix Meetup 11 April 2024 about Mendix Native development
Emixa Mendix Meetup 11 April 2024 about Mendix Native developmentEmixa Mendix Meetup 11 April 2024 about Mendix Native development
Emixa Mendix Meetup 11 April 2024 about Mendix Native development
 
Generative Artificial Intelligence: How generative AI works.pdf
Generative Artificial Intelligence: How generative AI works.pdfGenerative Artificial Intelligence: How generative AI works.pdf
Generative Artificial Intelligence: How generative AI works.pdf
 
Microsoft 365 Copilot: How to boost your productivity with AI – Part two: Dat...
Microsoft 365 Copilot: How to boost your productivity with AI – Part two: Dat...Microsoft 365 Copilot: How to boost your productivity with AI – Part two: Dat...
Microsoft 365 Copilot: How to boost your productivity with AI – Part two: Dat...
 

Preon (J-Fall 2008)