SlideShare ist ein Scribd-Unternehmen logo
1 von 60
Downloaden Sie, um offline zu lesen
Perlsonal
Perl 6 compiler
or
How to speed up
 your Perl 6 app
How to speed up
  your Perl 6 app
    and make it
10 000 times faster
-O fun
Let’s take a simple

   programme
Let’s take a simple
but CPU consuming
   programme
say
is_prime(@*ARGS[0]);

sub
is_prime($n)
{




for
2
..
$n
‐
1
‐>
$d
{








return
0
unless
$n
%
$d;




}









return
1;
}
$
perl6
$
perl6
is_prime.p6
$
perl6
is_prime.p6
37
$
perl6
is_prime.p6
37
1
$
perl6
is_prime.p6
38
0
$
perl6
is_prime.p6
15511
$
perl6
is_prime.p6
15511
1

     20 seconds with Rakudo :-(
Perl 6 can be fast!
Perl 6 can be fast!
Perl 6 can be fast!
Boost it!
Boost it!
OK, go to boost.org :-)
struct
p6grammar:
public
grammar<p6grammar>
{




template<typename
ScannerT>




struct
definition
{








definition(p6grammar
const&
self)
{
struct
p6grammar:
public
grammar<p6grammar>
{




template<typename
ScannerT>




struct
definition
{








definition(p6grammar
const&
self)
{












program
















=
statement_list
>>
end_p;
struct
p6grammar:
public
grammar<p6grammar>
{




template<typename
ScannerT>




struct
definition
{








definition(p6grammar
const&
self)
{












program
















=
statement_list
>>
end_p;












statement_list

















=
*statement;
struct
p6grammar:
public
grammar<p6grammar>
{




template<typename
ScannerT>




struct
definition
{








definition(p6grammar
const&
self)
{












program
















=
statement_list
>>
end_p;












statement_list

















=
*statement;












statement
















=
statement_code



















>>
!statement_separator;












statement_code
















=
comment
















|
statement_control

















|
sub_def
















|
sub_call
















|
expression;












statement_code
















=
comment
















|
statement_control

















|
sub_def
















|
sub_call
















|
expression;












comment
















=
ch_p('#')



















>>
lexeme_d[*~ch_p('n')];






















statement_code
















=
comment
















|
statement_control

















|
sub_def
















|
sub_call
















|
expression;












comment
















=
ch_p('#')



















>>
lexeme_d[*~ch_p('n')];












sub_call
















=
sub_name



















>>
!sub_arguments;













sub_body
struct
p6grammar:
public
grammar<p6grammar>
{
                                                      











argument                                   















=
ch_p('{')[&a_sub_def_body_start]





template<typename
ScannerT>
struct
definition
{
                                                      















=
expression                           >>
!statement_list
>>
ch_p('}');








definition(p6grammar
const&
self)
{
                                                      















|
variable;                            




























program
                                                      











                                           











statement_control
















=
statement_list
>>
end_p;
                                                      











variable                                   















=
for_cycle













                                                      















=
array                                















|
conditional_block;












statement_list

                                                      















|
scalar;                              
































=
*statement;
                                                      















                                       











conditional_block

















                                                      











scalar                                     















=
(str_p("if")
|
str_p("unless"))












statement
                                                      















=
constant                             [&a_condition_start]
>>
expression[&a_condition_end]

















=
statement_code
>>
!
                                                      















|
ch_p('$')
>>
identifier[&a_scalar]   >>
code_block[&a_conditional_block_end];
statement_separator[&a_statement];
                                                      















|
array_element;                       

































                                                      











                                           











code_block












statement_code
                                                      











array                                      















=
ch_p('{')
>>
statement_list
>>

















=
comment
                                                      















=
simple_array                         ch_p('}');
















|
statement_control

                                                      















|
global_array;                        
































|
sub_def
                                                      















                                       











for_cycle
















//|
(sub_call[&a_sub_call_start]

                                                      











simple_array                               















=
str_p("for")[&a_for_cycle_start]
>>
!statement_modifier)[&a_sub_call_end]
                                                      















=
ch_p('@')
>>
(identifier
>>
         















>>
(range
>>
!(str_p("‐>")
>>

















|
sub_call
                                                      ~eps_p('['))[&a_array];                                ch_p('$')
>>
identifier[&a_for_cycle_variable]))
















|
expression;
                                                                                                             [&a_for_cycle_range]













                                                      











global_array                               















>>













comment
                                                      















=
str_p("@*")
>>
(identifier
>>
       for_cycle_body[&a_for_cycle_body];
















=
ch_p('#')
>>

                                                      ~eps_p('['))[&a_global_array];                         
















lexeme_d[*~ch_p('n')];
                                                      











                                           











range

















                                                      











array_element                              















=
ch_p('(')
>>
range_content
>>













statement_separator
                                                      















=
simple_array_element                 ch_p(')')
















=
ch_p(';');
                                                      















|
global_array_element;                















|
range_content;













                                                      















                                       




























sub_call
                                                      











simple_array_element                       











range_content
















=
(sub_name
>>
!sub_arguments)
                                                      















=
(ch_p('@')
>>
                       















=
expression
>>
str_p("..")
[&a_sub_called];
                                                      array_element_name_and_index)[&a_array_element];       [&a_range_sep]
>>
expression;

















                                                                                                             
























sub_name
                                                      











global_array_element                       











expression
















=
builtin_sub_name
                                                      















=
(str_p("@*")
>>
                     















=
ch_p('(')[&a_paren]
>>

















|
identifier[&a_sub_name]
                                                      array_element_name_and_index)                          expression_content

>>
ch_p(')')[&a_paren]
[&a_sub_calling];
                                                      [&a_global_array_element];                             















|
expression_content;

















                                                      











                                           




























builtin_sub_name
                                                      











array_element_name_and_index               











expression_content
















=
str_p("say")[&a_builtin_say]
                                                      















=
                                     















=
scalar
>>
*(math_op[&a_math_op]
>>

















|
str_p("print")[&a_builtin_print]
                                                      identifier[assign_a(array_element_name)]               expression)
















|
str_p("return")
                                                      

















>>
ch_p('[')
>>
array_index          















|
sub_call;
[&a_builtin_return];
                                                      

















>>
ch_p(']');                        

































                                                      



















                                   











math_op












identifier
                                                      











array_index                                















=
ch_p('+')
















=
lexeme_d[+(alpha_p
|
'_')
>>

                                                      















=
                                     















|
ch_p('‐')
>>
eps_p(~ch_p('>'))
*(alnum_p
|
'_')];
                                                      int_p[assign_a(array_element_index)];                  















|
ch_p('*')

















                                                      















                                       















|
ch_p('/')












sub_arguments
                                                      











constant                                   















|
ch_p('%');
















=
ch_p('(')
>>
!argument_list
>>

                                                      















=
real_p[&a_constant];                 












ch_p(')')
                                                      















                                       











for_cycle_body
















|
argument_list;
                                                      











sub_def                                    















=
sub_body;

















                                                      















=
str_p("sub")[&a_sub_def_start]       




























argument_list
                                                      















>>
sub_name                            











statement_modifier
















=
list_p(argument,
ch_p(',')
                                                      















>>
!                                   















=
(str_p("unless")
|
str_p("if"))
>>

[&a_argument_list_sep]);
                                                      sub_arguments[&a_sub_def_arguments_end]                expression;

















                                                      















>>
sub_body[&a_sub_def_end];
say
is_prime(@*ARGS[0]);

sub
is_prime($n)
{




for
2
..
$n
‐
1
‐>
$d
{

















return
0
unless
$n
%
$d;













}









return
1;
}
say
is_prime(@*ARGS[0]);

sub
is_prime($n)
{




for
2
..
$n
‐
1
‐>
$d
{

















return
0
unless
$n
%
$d;













}









return
1;
}
say
is_prime(@*ARGS[0]);

sub
is_prime($n)
{




for
2
..
$n
‐
1
‐>
$d
{








unless
$n
%
$d
{












return
0;








}




}









return
1;
}
Programme 1

Checks if the argument is a prime
say
is_prime(@*ARGS[0]);

sub
is_prime($n)
{




for
2
..
$n
‐
1
‐>
$d
{








unless
$n
%
$d
{












return
0;








}




}









return
1;
}
./p++
<
t/is_prime.p6
#include<iostream>
#include<string>

using
namespace
std;

typedef
int
variable_t;
typedef
int
scalar_t;
typedef
int
range_boundary_t;

variable_t
sub_is_prime(scalar_t
var_scalar_n)
{




for
(range_boundary_t
var_scalar_d
=
2;
var_scalar_d
<=
var_scalar_n
‐
1
var_scalar_d++)
{




if(!(var_scalar_n
%
var_scalar_d))
{




return
0;
}




}




return
1;
}

int
main(int
argn,
char**
var_global_array_ARGS)
{




cout
<<
sub_is_prime(atoi(var_global_array_ARGS[1
+
0]))
<<
"n";




return
0;
}
say
is_prime(@*ARGS[0]);




cout
<<
sub_is_prime(
    






atoi(var_global_array_ARGS[1
+
0])
    


)





<<
"n";
sub
is_prime($n)
{




variable_t
sub_is_prime(scalar_t
var_scalar_n)
{
for
2
..
$n
‐
1
‐>
$d
{





for
(range_boundary_t
var_scalar_d
=
2;







var_scalar_d
<=
var_scalar_n
‐
1;






var_scalar_d++)
{
$
time
./is_prime
15511
1
$
time
./is_prime
15511
1

real
 0m0.002s
Programme 2

 Checks if the argument is a prime
and displays the first denominator
say
is_prime(@*ARGS[0]);

sub
is_prime($n)
{




for
2
..
$n
‐
1
‐>
$d
{








unless
$n
%
$d












say
$d;












return
0;








}




}









return
1;
}
Programme 3

Generates prime numbers below 1 000 000
S2 recommends


@primes
=





grep
*.prime,
2..*;
for
2
..
1000000
‐>
$n
{




if
is_prime($n)
{








say
$n;




}
}

sub
is_prime($n)
{




for
2
..
$n
‐
1
‐>
$d
{








unless
$n
%
$d
{











return
0;








}




}




return
1;
}
Sparse ideas behind p6c
1. C++‘s type casts
my
$var
=
100;
say
$var;

$var
=
"string";
say
$var;

my
$var
=
100;
say
$var;

$var
=
"string";
say
$var;



variable_var.set(100);
cout
<<
variable_var;

variable_var.set("string");
cout
<<
variable_var;
class
PerlVariable
{



.
.
.
public:



operator
int();



operator
string();
}
2. Intensive use of C++ compiler
class
MyClass
{



has
$member;



method
meth()
{...}
}
class
MyClass
{



has
$member;



method
meth()
{...}
}

class
MyClass
{
public:




PerlVariable
member_member;




void
meth_method();
}
3. What to implement
(base principle)
a) Write Perl 6 programme
I’d like to have in production
a) Write Perl 6 programme
I’d like to have in production

b) Implement that part
of the compiler
a) Write Perl 6 programme
I’d like to have in production

b) Implement that part
of the compiler
(following STD.pm)
svn://svn.shitov.ru/p6c
http://perl6.ru/p6c
svn://svn.shitov.ru/p6c
http://perl6.ru/p6c

         __END__

  Andrew Shitov | mail@andy.sh

Weitere ähnliche Inhalte

Was ist angesagt?

Java script introducation & basics
Java script introducation & basicsJava script introducation & basics
Java script introducation & basics
H K
 
Scripting3
Scripting3Scripting3
Scripting3
Nao Dara
 
PHP Unit 4 arrays
PHP Unit 4 arraysPHP Unit 4 arrays
PHP Unit 4 arrays
Kumar
 
Php Using Arrays
Php Using ArraysPhp Using Arrays
Php Using Arrays
mussawir20
 

Was ist angesagt? (19)

Sorting arrays in PHP
Sorting arrays in PHPSorting arrays in PHP
Sorting arrays in PHP
 
Java script introducation & basics
Java script introducation & basicsJava script introducation & basics
Java script introducation & basics
 
Your code sucks, let's fix it
Your code sucks, let's fix itYour code sucks, let's fix it
Your code sucks, let's fix it
 
Climbing the Abstract Syntax Tree (Bulgaria PHP 2016)
Climbing the Abstract Syntax Tree (Bulgaria PHP 2016)Climbing the Abstract Syntax Tree (Bulgaria PHP 2016)
Climbing the Abstract Syntax Tree (Bulgaria PHP 2016)
 
What are arrays in java script
What are arrays in java scriptWhat are arrays in java script
What are arrays in java script
 
Arrays in PHP
Arrays in PHPArrays in PHP
Arrays in PHP
 
Climbing the Abstract Syntax Tree (IPC Fall 2017)
Climbing the Abstract Syntax Tree (IPC Fall 2017)Climbing the Abstract Syntax Tree (IPC Fall 2017)
Climbing the Abstract Syntax Tree (IPC Fall 2017)
 
Climbing the Abstract Syntax Tree (CodeiD PHP Odessa 2017)
Climbing the Abstract Syntax Tree (CodeiD PHP Odessa 2017)Climbing the Abstract Syntax Tree (CodeiD PHP Odessa 2017)
Climbing the Abstract Syntax Tree (CodeiD PHP Odessa 2017)
 
Closure, Higher-order function in Swift
Closure, Higher-order function in SwiftClosure, Higher-order function in Swift
Closure, Higher-order function in Swift
 
Swift 함수 커링 사용하기
Swift 함수 커링 사용하기Swift 함수 커링 사용하기
Swift 함수 커링 사용하기
 
Climbing the Abstract Syntax Tree (phpDay 2017)
Climbing the Abstract Syntax Tree (phpDay 2017)Climbing the Abstract Syntax Tree (phpDay 2017)
Climbing the Abstract Syntax Tree (phpDay 2017)
 
Scripting3
Scripting3Scripting3
Scripting3
 
PHP Unit 4 arrays
PHP Unit 4 arraysPHP Unit 4 arrays
PHP Unit 4 arrays
 
Perl6 one-liners
Perl6 one-linersPerl6 one-liners
Perl6 one-liners
 
The underestimated power of KeyPaths
The underestimated power of KeyPathsThe underestimated power of KeyPaths
The underestimated power of KeyPaths
 
Climbing the Abstract Syntax Tree (DPC 2017)
Climbing the Abstract Syntax Tree (DPC 2017)Climbing the Abstract Syntax Tree (DPC 2017)
Climbing the Abstract Syntax Tree (DPC 2017)
 
Php array
Php arrayPhp array
Php array
 
Php Using Arrays
Php Using ArraysPhp Using Arrays
Php Using Arrays
 
Functions
FunctionsFunctions
Functions
 

Ähnlich wie Personal Perl 6 compiler

Php tips-and-tricks4128
Php tips-and-tricks4128Php tips-and-tricks4128
Php tips-and-tricks4128
PrinceGuru MS
 
ภาษาซี
ภาษาซีภาษาซี
ภาษาซี
kramsri
 
presentation_arrays_1443553113_140676.ppt
presentation_arrays_1443553113_140676.pptpresentation_arrays_1443553113_140676.ppt
presentation_arrays_1443553113_140676.ppt
NamakkalPasanga
 
ภาษาซี
ภาษาซีภาษาซี
ภาษาซี
kramsri
 
Check whether an Array is sorted or not
Check whether an Array is sorted or notCheck whether an Array is sorted or not
Check whether an Array is sorted or not
Ravi Ranjan
 

Ähnlich wie Personal Perl 6 compiler (20)

Php tips-and-tricks4128
Php tips-and-tricks4128Php tips-and-tricks4128
Php tips-and-tricks4128
 
PHP tips and tricks
PHP tips and tricks PHP tips and tricks
PHP tips and tricks
 
PHP and MySQL Tips and tricks, DC 2007
PHP and MySQL Tips and tricks, DC 2007PHP and MySQL Tips and tricks, DC 2007
PHP and MySQL Tips and tricks, DC 2007
 
Structured data type
Structured data typeStructured data type
Structured data type
 
Chapter 2 wbp.pptx
Chapter 2 wbp.pptxChapter 2 wbp.pptx
Chapter 2 wbp.pptx
 
Regular expressions, Session and Cookies by Dr.C.R.Dhivyaa Kongu Engineering ...
Regular expressions, Session and Cookies by Dr.C.R.Dhivyaa Kongu Engineering ...Regular expressions, Session and Cookies by Dr.C.R.Dhivyaa Kongu Engineering ...
Regular expressions, Session and Cookies by Dr.C.R.Dhivyaa Kongu Engineering ...
 
UNIT IV (4).pptx
UNIT IV (4).pptxUNIT IV (4).pptx
UNIT IV (4).pptx
 
Alexey Tsoy Meta Programming in C++ 16.11.17
Alexey Tsoy Meta Programming in C++ 16.11.17Alexey Tsoy Meta Programming in C++ 16.11.17
Alexey Tsoy Meta Programming in C++ 16.11.17
 
ภาษาซี
ภาษาซีภาษาซี
ภาษาซี
 
CHAPTER 5
CHAPTER 5CHAPTER 5
CHAPTER 5
 
presentation_arrays_1443553113_140676.ppt
presentation_arrays_1443553113_140676.pptpresentation_arrays_1443553113_140676.ppt
presentation_arrays_1443553113_140676.ppt
 
ภาษาซี
ภาษาซีภาษาซี
ภาษาซี
 
Array Methods.pptx
Array Methods.pptxArray Methods.pptx
Array Methods.pptx
 
Array
ArrayArray
Array
 
Programming Fundamentals Arrays and Strings
Programming Fundamentals   Arrays and Strings Programming Fundamentals   Arrays and Strings
Programming Fundamentals Arrays and Strings
 
Arrays and function basic c programming notes
Arrays and function basic c programming notesArrays and function basic c programming notes
Arrays and function basic c programming notes
 
삼성 바다 앱개발 실패 노하우 2부
삼성 바다 앱개발 실패 노하우 2부삼성 바다 앱개발 실패 노하우 2부
삼성 바다 앱개발 실패 노하우 2부
 
Intoduction to php arrays
Intoduction to php arraysIntoduction to php arrays
Intoduction to php arrays
 
Check whether an Array is sorted or not
Check whether an Array is sorted or notCheck whether an Array is sorted or not
Check whether an Array is sorted or not
 
Статичный SQL в С++14. Евгений Захаров ➠ CoreHard Autumn 2019
Статичный SQL в С++14. Евгений Захаров ➠  CoreHard Autumn 2019Статичный SQL в С++14. Евгений Захаров ➠  CoreHard Autumn 2019
Статичный SQL в С++14. Евгений Захаров ➠ CoreHard Autumn 2019
 

Mehr von Andrew Shitov

The Joy of Smartmatch
The Joy of SmartmatchThe Joy of Smartmatch
The Joy of Smartmatch
Andrew Shitov
 

Mehr von Andrew Shitov (20)

Creating a compiler in Perl 6
Creating a compiler in Perl 6Creating a compiler in Perl 6
Creating a compiler in Perl 6
 
Fun with Raspberry PI (and Perl)
Fun with Raspberry PI (and Perl)Fun with Raspberry PI (and Perl)
Fun with Raspberry PI (and Perl)
 
Perl6 in-production
Perl6 in-productionPerl6 in-production
Perl6 in-production
 
Параллельные вычисления в Perl 6
Параллельные вычисления в Perl 6Параллельные вычисления в Perl 6
Параллельные вычисления в Perl 6
 
AllPerlBooks.com
AllPerlBooks.comAllPerlBooks.com
AllPerlBooks.com
 
Perl 6 for Concurrency and Parallel Computing
Perl 6 for Concurrency and Parallel ComputingPerl 6 for Concurrency and Parallel Computing
Perl 6 for Concurrency and Parallel Computing
 
The Joy of Smartmatch
The Joy of SmartmatchThe Joy of Smartmatch
The Joy of Smartmatch
 
YAPC::Europe 2013
YAPC::Europe 2013YAPC::Europe 2013
YAPC::Europe 2013
 
Perl 7, the story of
Perl 7, the story ofPerl 7, the story of
Perl 7, the story of
 
Язык программирования Go для Perl-программистов
Язык программирования Go для Perl-программистовЯзык программирования Go для Perl-программистов
Язык программирования Go для Perl-программистов
 
Как очистить массив
Как очистить массивКак очистить массив
Как очистить массив
 
What's new in Perl 5.14
What's new in Perl 5.14What's new in Perl 5.14
What's new in Perl 5.14
 
Что нового в Perl 5.14
Что нового в Perl 5.14Что нового в Perl 5.14
Что нового в Perl 5.14
 
Perl6 grammars
Perl6 grammarsPerl6 grammars
Perl6 grammars
 
Text in search queries with examples in Perl 6
Text in search queries with examples in Perl 6Text in search queries with examples in Perl 6
Text in search queries with examples in Perl 6
 
There's more than one way to empty it
There's more than one way to empty itThere's more than one way to empty it
There's more than one way to empty it
 
Perl 6 by example
Perl 6 by examplePerl 6 by example
Perl 6 by example
 
How to clean an array
How to clean an arrayHow to clean an array
How to clean an array
 
Perl 5.10 и 5.12
Perl 5.10 и 5.12Perl 5.10 и 5.12
Perl 5.10 и 5.12
 
Say Perl на весь мир
Say Perl на весь мирSay Perl на весь мир
Say Perl на весь мир
 

Kürzlich hochgeladen

Histor y of HAM Radio presentation slide
Histor y of HAM Radio presentation slideHistor y of HAM Radio presentation slide
Histor y of HAM Radio presentation slide
vu2urc
 

Kürzlich hochgeladen (20)

Driving Behavioral Change for Information Management through Data-Driven Gree...
Driving Behavioral Change for Information Management through Data-Driven Gree...Driving Behavioral Change for Information Management through Data-Driven Gree...
Driving Behavioral Change for Information Management through Data-Driven Gree...
 
Understanding Discord NSFW Servers A Guide for Responsible Users.pdf
Understanding Discord NSFW Servers A Guide for Responsible Users.pdfUnderstanding Discord NSFW Servers A Guide for Responsible Users.pdf
Understanding Discord NSFW Servers A Guide for Responsible Users.pdf
 
Strategize a Smooth Tenant-to-tenant Migration and Copilot Takeoff
Strategize a Smooth Tenant-to-tenant Migration and Copilot TakeoffStrategize a Smooth Tenant-to-tenant Migration and Copilot Takeoff
Strategize a Smooth Tenant-to-tenant Migration and Copilot Takeoff
 
GenAI Risks & Security Meetup 01052024.pdf
GenAI Risks & Security Meetup 01052024.pdfGenAI Risks & Security Meetup 01052024.pdf
GenAI Risks & Security Meetup 01052024.pdf
 
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
 
Powerful Google developer tools for immediate impact! (2023-24 C)
Powerful Google developer tools for immediate impact! (2023-24 C)Powerful Google developer tools for immediate impact! (2023-24 C)
Powerful Google developer tools for immediate impact! (2023-24 C)
 
Mastering MySQL Database Architecture: Deep Dive into MySQL Shell and MySQL R...
Mastering MySQL Database Architecture: Deep Dive into MySQL Shell and MySQL R...Mastering MySQL Database Architecture: Deep Dive into MySQL Shell and MySQL R...
Mastering MySQL Database Architecture: Deep Dive into MySQL Shell and MySQL R...
 
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 - 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
 
Connector Corner: Accelerate revenue generation using UiPath API-centric busi...
Connector Corner: Accelerate revenue generation using UiPath API-centric busi...Connector Corner: Accelerate revenue generation using UiPath API-centric busi...
Connector Corner: Accelerate revenue generation using UiPath API-centric busi...
 
A Domino Admins Adventures (Engage 2024)
A Domino Admins Adventures (Engage 2024)A Domino Admins Adventures (Engage 2024)
A Domino Admins Adventures (Engage 2024)
 
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
 
Histor y of HAM Radio presentation slide
Histor y of HAM Radio presentation slideHistor y of HAM Radio presentation slide
Histor y of HAM Radio presentation slide
 
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
 
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
 
A Year of the Servo Reboot: Where Are We Now?
A Year of the Servo Reboot: Where Are We Now?A Year of the Servo Reboot: Where Are We Now?
A Year of the Servo Reboot: Where Are We Now?
 
How to Troubleshoot Apps for the Modern Connected Worker
How to Troubleshoot Apps for the Modern Connected WorkerHow to Troubleshoot Apps for the Modern Connected Worker
How to Troubleshoot Apps for the Modern Connected Worker
 
ProductAnonymous-April2024-WinProductDiscovery-MelissaKlemke
ProductAnonymous-April2024-WinProductDiscovery-MelissaKlemkeProductAnonymous-April2024-WinProductDiscovery-MelissaKlemke
ProductAnonymous-April2024-WinProductDiscovery-MelissaKlemke
 
Workshop - Best of Both Worlds_ Combine KG and Vector search for enhanced R...
Workshop - Best of Both Worlds_ Combine  KG and Vector search for  enhanced R...Workshop - Best of Both Worlds_ Combine  KG and Vector search for  enhanced R...
Workshop - Best of Both Worlds_ Combine KG and Vector search for enhanced R...
 
Boost PC performance: How more available memory can improve productivity
Boost PC performance: How more available memory can improve productivityBoost PC performance: How more available memory can improve productivity
Boost PC performance: How more available memory can improve productivity
 

Personal Perl 6 compiler