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

From Event to Action: Accelerate Your Decision Making with Real-Time Automation
From Event to Action: Accelerate Your Decision Making with Real-Time AutomationFrom Event to Action: Accelerate Your Decision Making with Real-Time Automation
From Event to Action: Accelerate Your Decision Making with Real-Time AutomationSafe Software
 
IAC 2024 - IA Fast Track to Search Focused AI Solutions
IAC 2024 - IA Fast Track to Search Focused AI SolutionsIAC 2024 - IA Fast Track to Search Focused AI Solutions
IAC 2024 - IA Fast Track to Search Focused AI SolutionsEnterprise Knowledge
 
Bajaj Allianz Life Insurance Company - Insurer Innovation Award 2024
Bajaj Allianz Life Insurance Company - Insurer Innovation Award 2024Bajaj Allianz Life Insurance Company - Insurer Innovation Award 2024
Bajaj Allianz Life Insurance Company - Insurer Innovation Award 2024The Digital Insurer
 
Finology Group – Insurtech Innovation Award 2024
Finology Group – Insurtech Innovation Award 2024Finology Group – Insurtech Innovation Award 2024
Finology Group – Insurtech Innovation Award 2024The Digital Insurer
 
Factors to Consider When Choosing Accounts Payable Services Providers.pptx
Factors to Consider When Choosing Accounts Payable Services Providers.pptxFactors to Consider When Choosing Accounts Payable Services Providers.pptx
Factors to Consider When Choosing Accounts Payable Services Providers.pptxKatpro Technologies
 
Raspberry Pi 5: Challenges and Solutions in Bringing up an OpenGL/Vulkan Driv...
Raspberry Pi 5: Challenges and Solutions in Bringing up an OpenGL/Vulkan Driv...Raspberry Pi 5: Challenges and Solutions in Bringing up an OpenGL/Vulkan Driv...
Raspberry Pi 5: Challenges and Solutions in Bringing up an OpenGL/Vulkan Driv...Igalia
 
Advantages of Hiring UIUX Design Service Providers for Your Business
Advantages of Hiring UIUX Design Service Providers for Your BusinessAdvantages of Hiring UIUX Design Service Providers for Your Business
Advantages of Hiring UIUX Design Service Providers for Your BusinessPixlogix Infotech
 
Strategies for Unlocking Knowledge Management in Microsoft 365 in the Copilot...
Strategies for Unlocking Knowledge Management in Microsoft 365 in the Copilot...Strategies for Unlocking Knowledge Management in Microsoft 365 in the Copilot...
Strategies for Unlocking Knowledge Management in Microsoft 365 in the Copilot...Drew Madelung
 
What Are The Drone Anti-jamming Systems Technology?
What Are The Drone Anti-jamming Systems Technology?What Are The Drone Anti-jamming Systems Technology?
What Are The Drone Anti-jamming Systems Technology?Antenna Manufacturer Coco
 
Handwritten Text Recognition for manuscripts and early printed texts
Handwritten Text Recognition for manuscripts and early printed textsHandwritten Text Recognition for manuscripts and early printed texts
Handwritten Text Recognition for manuscripts and early printed textsMaria Levchenko
 
CNv6 Instructor Chapter 6 Quality of Service
CNv6 Instructor Chapter 6 Quality of ServiceCNv6 Instructor Chapter 6 Quality of Service
CNv6 Instructor Chapter 6 Quality of Servicegiselly40
 
Real Time Object Detection Using Open CV
Real Time Object Detection Using Open CVReal Time Object Detection Using Open CV
Real Time Object Detection Using Open CVKhem
 
Apidays Singapore 2024 - Building Digital Trust in a Digital Economy by Veron...
Apidays Singapore 2024 - Building Digital Trust in a Digital Economy by Veron...Apidays Singapore 2024 - Building Digital Trust in a Digital Economy by Veron...
Apidays Singapore 2024 - Building Digital Trust in a Digital Economy by Veron...apidays
 
Exploring the Future Potential of AI-Enabled Smartphone Processors
Exploring the Future Potential of AI-Enabled Smartphone ProcessorsExploring the Future Potential of AI-Enabled Smartphone Processors
Exploring the Future Potential of AI-Enabled Smartphone Processorsdebabhi2
 
Artificial Intelligence: Facts and Myths
Artificial Intelligence: Facts and MythsArtificial Intelligence: Facts and Myths
Artificial Intelligence: Facts and MythsJoaquim Jorge
 
The 7 Things I Know About Cyber Security After 25 Years | April 2024
The 7 Things I Know About Cyber Security After 25 Years | April 2024The 7 Things I Know About Cyber Security After 25 Years | April 2024
The 7 Things I Know About Cyber Security After 25 Years | April 2024Rafal Los
 
08448380779 Call Girls In Greater Kailash - I Women Seeking Men
08448380779 Call Girls In Greater Kailash - I Women Seeking Men08448380779 Call Girls In Greater Kailash - I Women Seeking Men
08448380779 Call Girls In Greater Kailash - I Women Seeking MenDelhi Call girls
 
A Domino Admins Adventures (Engage 2024)
A Domino Admins Adventures (Engage 2024)A Domino Admins Adventures (Engage 2024)
A Domino Admins Adventures (Engage 2024)Gabriella Davis
 
GenCyber Cyber Security Day Presentation
GenCyber Cyber Security Day PresentationGenCyber Cyber Security Day Presentation
GenCyber Cyber Security Day PresentationMichael W. Hawkins
 
Tata AIG General Insurance Company - Insurer Innovation Award 2024
Tata AIG General Insurance Company - Insurer Innovation Award 2024Tata AIG General Insurance Company - Insurer Innovation Award 2024
Tata AIG General Insurance Company - Insurer Innovation Award 2024The Digital Insurer
 

Recently uploaded (20)

From Event to Action: Accelerate Your Decision Making with Real-Time Automation
From Event to Action: Accelerate Your Decision Making with Real-Time AutomationFrom Event to Action: Accelerate Your Decision Making with Real-Time Automation
From Event to Action: Accelerate Your Decision Making with Real-Time Automation
 
IAC 2024 - IA Fast Track to Search Focused AI Solutions
IAC 2024 - IA Fast Track to Search Focused AI SolutionsIAC 2024 - IA Fast Track to Search Focused AI Solutions
IAC 2024 - IA Fast Track to Search Focused AI Solutions
 
Bajaj Allianz Life Insurance Company - Insurer Innovation Award 2024
Bajaj Allianz Life Insurance Company - Insurer Innovation Award 2024Bajaj Allianz Life Insurance Company - Insurer Innovation Award 2024
Bajaj Allianz Life Insurance Company - Insurer Innovation Award 2024
 
Finology Group – Insurtech Innovation Award 2024
Finology Group – Insurtech Innovation Award 2024Finology Group – Insurtech Innovation Award 2024
Finology Group – Insurtech Innovation Award 2024
 
Factors to Consider When Choosing Accounts Payable Services Providers.pptx
Factors to Consider When Choosing Accounts Payable Services Providers.pptxFactors to Consider When Choosing Accounts Payable Services Providers.pptx
Factors to Consider When Choosing Accounts Payable Services Providers.pptx
 
Raspberry Pi 5: Challenges and Solutions in Bringing up an OpenGL/Vulkan Driv...
Raspberry Pi 5: Challenges and Solutions in Bringing up an OpenGL/Vulkan Driv...Raspberry Pi 5: Challenges and Solutions in Bringing up an OpenGL/Vulkan Driv...
Raspberry Pi 5: Challenges and Solutions in Bringing up an OpenGL/Vulkan Driv...
 
Advantages of Hiring UIUX Design Service Providers for Your Business
Advantages of Hiring UIUX Design Service Providers for Your BusinessAdvantages of Hiring UIUX Design Service Providers for Your Business
Advantages of Hiring UIUX Design Service Providers for Your Business
 
Strategies for Unlocking Knowledge Management in Microsoft 365 in the Copilot...
Strategies for Unlocking Knowledge Management in Microsoft 365 in the Copilot...Strategies for Unlocking Knowledge Management in Microsoft 365 in the Copilot...
Strategies for Unlocking Knowledge Management in Microsoft 365 in the Copilot...
 
What Are The Drone Anti-jamming Systems Technology?
What Are The Drone Anti-jamming Systems Technology?What Are The Drone Anti-jamming Systems Technology?
What Are The Drone Anti-jamming Systems Technology?
 
Handwritten Text Recognition for manuscripts and early printed texts
Handwritten Text Recognition for manuscripts and early printed textsHandwritten Text Recognition for manuscripts and early printed texts
Handwritten Text Recognition for manuscripts and early printed texts
 
CNv6 Instructor Chapter 6 Quality of Service
CNv6 Instructor Chapter 6 Quality of ServiceCNv6 Instructor Chapter 6 Quality of Service
CNv6 Instructor Chapter 6 Quality of Service
 
Real Time Object Detection Using Open CV
Real Time Object Detection Using Open CVReal Time Object Detection Using Open CV
Real Time Object Detection Using Open CV
 
Apidays Singapore 2024 - Building Digital Trust in a Digital Economy by Veron...
Apidays Singapore 2024 - Building Digital Trust in a Digital Economy by Veron...Apidays Singapore 2024 - Building Digital Trust in a Digital Economy by Veron...
Apidays Singapore 2024 - Building Digital Trust in a Digital Economy by Veron...
 
Exploring the Future Potential of AI-Enabled Smartphone Processors
Exploring the Future Potential of AI-Enabled Smartphone ProcessorsExploring the Future Potential of AI-Enabled Smartphone Processors
Exploring the Future Potential of AI-Enabled Smartphone Processors
 
Artificial Intelligence: Facts and Myths
Artificial Intelligence: Facts and MythsArtificial Intelligence: Facts and Myths
Artificial Intelligence: Facts and Myths
 
The 7 Things I Know About Cyber Security After 25 Years | April 2024
The 7 Things I Know About Cyber Security After 25 Years | April 2024The 7 Things I Know About Cyber Security After 25 Years | April 2024
The 7 Things I Know About Cyber Security After 25 Years | April 2024
 
08448380779 Call Girls In Greater Kailash - I Women Seeking Men
08448380779 Call Girls In Greater Kailash - I Women Seeking Men08448380779 Call Girls In Greater Kailash - I Women Seeking Men
08448380779 Call Girls In Greater Kailash - I Women Seeking Men
 
A Domino Admins Adventures (Engage 2024)
A Domino Admins Adventures (Engage 2024)A Domino Admins Adventures (Engage 2024)
A Domino Admins Adventures (Engage 2024)
 
GenCyber Cyber Security Day Presentation
GenCyber Cyber Security Day PresentationGenCyber Cyber Security Day Presentation
GenCyber Cyber Security Day Presentation
 
Tata AIG General Insurance Company - Insurer Innovation Award 2024
Tata AIG General Insurance Company - Insurer Innovation Award 2024Tata AIG General Insurance Company - Insurer Innovation Award 2024
Tata AIG General Insurance Company - Insurer Innovation Award 2024
 

Preon (J-Fall 2008)