SlideShare a Scribd company logo
1 of 265
Download to read offline
Everything but the
   Secret Sauce Contains
                                       No Jifty!
Modules, Magic and Monstrosities created for
Jesse Vincent
   Best Practical
We make Hiveminder


    Hiveminder
It’s not opensource
We built lots of cool
      stuff for Hiveminder

Hiveminder
We opensource
everything we can
Today’s Agenda
Ten tools and techniques to help you:
Find bugs faster
Build web apps
Ship software
Get input from users
Own the Inbox
Find bugs faster
TAP-Harness-Remote
    Run your tests over there.
The Problem
Hiveminder has
   lots of tests


Hiverminder
That's a problem?
Yes.
30 minutes to run
tests on my Macbook


    Macbook   30
(It took the same on
   a Macbook Pro)


    (Macbook Pro   )
What to do?
TAP::Harness 3.0
I have two cores!


          2   !
TAP::Harness::Parallel
prove -j 5 --fork
22 minutes


prove -j 5 22
Better!


     !
Not good.
Run tests on a server!


                     !
rsync -rvp . server:
ssh server quot;prove -j 9 tquot;
Better.
Annoying to run.
TAP::Harness::Remote
Magic Remote Testing
# ~/.remote_test
    ---
    local: /path/to/local/testing/root/
    host:
           - remote1.testing.host.example.com
           - remote2.testing.host.example.com
    root: /where/to/place/local/root/on/remote/
    user: username
    master: 1
    perl: /usr/bin/perl
    ssh: /usr/bin/ssh
    ssh_args:
      - -x
      - -S
      - '~/.ssh/master-%r@%h:%p'
prove --harness TAP::Harness::Remote t/*.t
16.5 minutes


    16.5   !
prove --harness TAP::Harness::Remote -j 5 t/*.t
Magic Parallel
Remote Testing
12 minutes!


    12   !
Not good enough
    for TDD
What I need is...

•   Fast Servers (           )
•   Lots of Fast Servers (           )
•   Right Now (                  )
•   Not Very Often (                     )
A use for cloud
  computing!


                  !
TAP::Harness::Remote::EC2
4 hosts. -j 5
89 seconds


    89
Yatta!
Yatta!
EC2 Caveats
Default Perl builds are really bad
               Perl
Machines are mostly underpowered

(“XL” instances are great, though)
  XL
Machine Setup/Teardown is ~manual


          EC2
What's next for
::Harness::Remote::* ?
More polish on EC2 tools
EC2
Better EC2 instance control
EC2
More widespread usage
Carp::REPL
It's not quite a debugger
How many of you use
 the Perl debugger?


Perl
How many of you
know how to use the
   perl debugger?
I don’t, either.
So, what do I use?
31b:~ jesse$ perl /tmp/contrived.pl
Undefined subroutine &main::does_not_exist called
at /tmp/contrived.pl line 20.

31b:~ jesse$ vim /tmp/contrived.pl

18.sub   c {
19.      my $to_call = shift;
20.      $to_call = quot;does_quot;.$to_call;
21.      no strict refs;
22.      $to_call->();
23.}
31b:~ jesse$ perl /tmp/contrived.pl
Undefined subroutine &main::does_not_exist called
at /tmp/contrived.pl line 22.

31b:~ jesse$ vim /tmp/contrived.pl

18.sub   c {
19.      my $to_call = shift;
20.      $to_call = quot;does_quot;.$to_call;
21.      no strict refs;
22.      use Carp; Carp::cluck(quot;$to_callquot;);
23.      $to_call->();
24.}
Ick. A Print Statement.


         Print
Anyone else here use
   print statement
     debugging?

 print
(Oh god, I hope I'm
    not alone)
Acme, you wrote
           Devel::ebug...


Leon Brocard Devel::ebug    …
Do you use it?
I want a simple
debugger that's easier
than print statements

    print
sartak created
        Carp::REPL


Shawn Moore Carp::REPL
A lightweight, modern,
 interactive debugger
Built on Devel::REPL


 Devel::REPL
Carp::REPL Hooks into
   $SIG{__DIE__}


Carp::REPL   $SIG{__DIE__}
$SIG{__WARN__}
hooks are optional


$SIG{__WARN__}
31b:~ jesse$ perl -MCarp::REPL /tmp/contrived.pl
Undefined subroutine &main::does_not_exist called
at /tmp/contrived.pl line 22.

0: Carp::REPL::repl called at /tmp/contrived.pl:22.
   1: main::c called at /tmp/contrived.pl:15.
   2: main::b called at /tmp/contrived.pl:9.
   3: main::a called at /tmp/contrived.pl:27.
Now at /tmp/contrived.pl:22 (frame 0).
$
That's not a shell
    prompt
31b:~ jesse$ perl -MCarp::REPL /tmp/contrived.pl
Undefined subroutine &main::does_not_exist called
at /tmp/contrived.pl line 22.

0: Carp::REPL::repl called at /tmp/contrived.pl:22.
   1: main::c called at /tmp/contrived.pl:15.
   2: main::b called at /tmp/contrived.pl:9.
   3: main::a called at /tmp/contrived.pl:27.
Now at /tmp/contrived.pl:22 (frame 0).
$ warn $0
/tmp/contrived.pl at (eval 135) line 15, <FIN> line 1.
It's Perl, but
       it's not just Perl


Perl                 Perl
:t   -   Stack trace
:u   -   Up one stack frame
:d   -   Down one stack frame
:e   -   Print this frame's lexical environment
:q   -   Quit this REPL

$_e - ARRAYREF of this frame's @_
$ :t
0: Carp::REPL::repl called at /tmp/contrived.pl:22.
   1: main::c called at /tmp/contrived.pl:15.
   2: main::b called at /tmp/contrived.pl:9.
   3: main::a called at /tmp/contrived.pl:27.
$
$ :e
$Env = { quot;$to_callquot; => do { my $v = 'does_not_exist' } };
$ :u
$ :u
Now at /tmp/contrived.pl:9 (frame 2).
$ :e
$Env = { quot;$to_callquot; => do { my $v = 'exist' } };
$ :u
Now at /tmp/contrived.pl:27 (frame 3).
$ :e
$Env = { quot;$to_callquot; => do { my $v = '' } };
$ :d
Now at /tmp/contrived.pl:9 (frame 2).
$ :e
$Env = { quot;$to_callquot; => do { my $v = 'exist' } };
$ warn join(quot;, quot;,@$_a);
exist at (eval 138) line 18, <FIN> line 4.
Why is my code 'warn'ing?
 Maybe it's in an eval.
 eval
 Or in a CPAN library.
 CPAN
 No problem!

 perl -MCarp::REPL=warn
31b:~ jesse$ perl -MCarp::REPL=warn /tmp/contrived.pl
Use of uninitialized value in concatenation (.) or string at /tmp/contrived.pl
line 8.

0: Carp::REPL::repl called at /tmp/contrived.pl:8.
   1: main::a called at /tmp/contrived.pl:27.
Now at /tmp/contrived.pl:8 (frame 0).
$ :e
$Env = { quot;$to_callquot; => do { my $v = undef } };
$ :q
Undefined subroutine &main::does_not_exist called at /tmp/contrived.pl line 22,
<FIN> line 2.

0: Carp::REPL::repl called at /tmp/contrived.pl:22.
   1: main::c called at /tmp/contrived.pl:15.
   2: main::b called at /tmp/contrived.pl:9.
   3: main::a called at /tmp/contrived.pl:27.
Now at /tmp/contrived.pl:22 (frame 0).
$
Inserting breakpoints
You know your 'print' statements?
  print
Turn them into breakpoints.

Two ways:
2                        :
s/print/warn/ and -MCarp::REPL=warn
Carp::REPL::repl
18.sub   c {
19.      my $to_call = shift;
20.      no strict 'refs';
21.      Carp::REPL::repl(); #Gimme a breakpoint here!
22.      $to_call = quot;does_quot;.$to_call;
23.      $to_call->();
24.}
What's next for
       Carp::REPL?
I have no idea.

It's simple.

It works.
Build web apps
Template::Declare
  A Pure Perl Templating Engine
                                    2007 Talk
                                     Encore
                                  Presentation!
Perl has two big
       templating camps


Perl               2
Template::Toolkit
A DSL for templates
                  DSL
It's NOT Perl

Why should I learn a new language for
templates?
HTML::Mason


There's Perl inside.
         Perl
HTML::Mason

              <mason><is><still>
                  <full><of>
              <angle><brackets>


<   ><   ><           >< ><        ><   >
HTML::Mason

            </brackets></angle>
                </of></full>
            </still></is></mason>


</   ></     ></ ></           ></   ></   >
I'm Just A Simple
   Perl Hacker


      Perl
I needed something
    more Perlish


    Perl
template '/pages/mypage.html' => sub {
    html {
        head {};
        body {
            h1 {'Hey, this is text'};
            }
        }
};
template choices => page {
    h1 { 'My Choices' }
    dl {
        my $choices = Doxory::Model::ChoiceCollection->new;
        $choices->limit(
            column => 'asked_by',
            value => Jifty->web->current_user->id,
        );
        while (my $c = $choices->next) {
            dt { $c->name, ' (', $c->asked_by->name, ')' }
            dd { b { $c->a } em { 'vs' } b { $c->b } }
        }
    }
};
But!
Content! Templates!
           !                  !
Design! Code!
         !            !
OMGWTFBBQ!?
           !?
THAT'S WRONG!
                          !
The person who told
 you it's wrong was
   lying to you.
We're Perl hackers


     Perl
Why are we writing
 our templates in
another language?
This is not 1997


 1997
It’s 2008

 2008
People use CSS
for design now


     CSS
Programmers still have
  to make templates
Templates run like
    CODE
Because they ARE code
Let's use our CODING
  tools to work with
          them
How about
Refactoring?
Have you ever tried to
    refactor HTML?


HTML
template 'mypage.html' => page {
 h1 { 'Two choices' };
 div { attr { class => 'item' };
       h2 { 'Item 1'};
   };
 div { attr { class => 'item' };
       h2 { 'Item 2'};
   };
};
template 'mypage.html' => page {
 h1 { 'Two choices' };
 for (quot;Item 1quot;, quot;Item 2quot;) { item($_); }
};

sub item {
    my $content = shift;
    div {
        attr { class => 'item' };
        h2 {$content};
    };

}
We can refactor
  templates!


             !
Our HTML is
magically valid


HTML
(Syntax errors are...
   Syntax Errors)


                        …
Object Oriented
  Templates
Subclassing

It just works

We're using Perl's symbol table
Perl
(Template::Declare's show() passes the class for you)
Template::Declare show()
Mixins

alias Some::Template::Library under '/path';

That's it.
Closures
Tags as Closures
HTML tags take blocks of content
HTML
Our tag methods take blocks of Perl
                         Perl
They return closures when you want them

They run and output their content when you want them to
sub h1 (&;$) {
  my $code = shift;

    ...

    if (defined wantarray) {
      return sub { ...closure around $code...};
    } else {
      # Actually do our work, run $code and
      # return the output
      return $code->();
    }
}
What's next for
     Template::Declare?
HTML Attribute Validation
HTML

Compile to .js
js
CSS::Squish
A compiler for Cascading Style Sheets




        CSS
The Problem

Many small CSS Files
CSS
 Easy to work with

 Painful to serve
The Problem

One big CSS file
                        CSS
 Painful to work with

 Easy to serve
How CSS works
main.css:
@import quot;yui-fonts.cssquot;;
@import quot;base.cssquot;;
@import quot;layout.cssquot;;
@import quot;nav.cssquot;;
@import quot;forms.cssquot;;
@import quot;boxes.cssquot;;
@import quot;login.cssquot;;
...
                 CSS
How CSS works
• Browser downloads CSS stylesheets listed
  in HTML
• Browser processes each stylesheet for
  @include directives
• Browser fetches each stylesheet found
• This is slow.
            CSS::Squish
How CSS works
To make CSS faster, you can tell browsers to cache stylesheets
                                                      CSS


...then you have trouble if you want to update your styles



Some people add datestamps to the stylesheet names:

          /css/mypagestyle.css?1210362379

                 CSS::Squish
How CSS::Squish works
 It pretends to be a browser.

 You give it the path to a stylesheet.

 It returns the fully computed stylesheet the browser would get
eventually.



 You serve that file out to the user.



                      CSS::Squish
How we use
         CSS::Squish
Instead of:
 <link rel=quot;stylesheetquot; type=quot;text/cssquot;
href=quot;main.css”/>
We have this:
  <link rel=quot;stylesheetquot; type=quot;text/cssquot; href=quot;/
 css/squished/
 4a50a85044a6ba727f7aa0683ac21f7e.css”/>

              CSS::Squish
How we use
                CSS::Squish
 If we have a cached copy of the squished CSS, name the ‘file’ as an
MD5 of the content
           CSS                                             MD5


 Tell browsers to cache it forever

  When users load a page, they will always fetch the squished CSS if
it’s changed. By magic

                                     CSS

                   CSS::Squish
What’s next for
         CSS::Squish
 Refactor the MD5 hash bits from Jifty to
CSS::Squish
 MD5                    Jifty
CSS::Squish
 What else do you want?
Ship software
App::ChangeLogger
    Gorgeous changelogs
We create a lot of
    software
(145 Projects in
 bps-public svn)


                   145
We’re not so good at
   doing releases
Lots of manual work
ShipIt can help with
     most of it


ShipIt
What about
Changelog?
svn log svn://svn.foo.com/MyProj
> Changelog
Ship it!


  ShipIt
Ew. No. Ick.
Wrong. Bad.
App::ChangeLogger
Two commands


• sort-changelog
• generate-changelog

                       2
Ok, three commands:

• svn log --xml svn://svn.bestpractical.com/
  App-Changelogger > changelog.raw.xml
• ./bin/sort-changelog changelog.xml
  changelog.out.xml
• bin/generate-changelog --generate
  changelog.out.xml Changelog

                        3
What's next for
    App::Changelogger?
Use it on itself. (Release it)

Store changelog metadata in repository

Support for Git, Hg
Git Hg
Easier customization
Shipwright
  Build. Ship.
The Problem



CPAN
The Problem


Everything that
 is not CPAN
    : CPAN
We make RT


   RT
RT has Many
Dependencies


  RT
Apache::DBI                  Digest::MD5               HTML::Scrubber                Mail::Mailer                 Test::Warn

Apache::Request              Digest::base              HTML::TokeParser              Module::Refresh              Text::ParseWords

Apache::Session              File::Find                HTML::TreeBuilder             Module::Versions::Report     Text::Quoted

CGI::Cookie                  File::Glob                HTTP::Request::Common         Net::SMTP                    Text::Template

CGI::Fast                    File::ShareDir            HTTP::Server::Simple          PerlIO::eol                  Text::WikiFormat

CGI::SpeedyCGI               File::Spec                HTTP::Server::Simple::Mason   Pod::Usage                   Text::Wrapper

CSS::Squish                  File::Temp                IPC::Run                      Regexp::Common               Time::HiRes

Cache::Simple::TimedExpiry   GD::Graph                 IPC::Run::SafeHandles         Scalar::Util                 Time::ParseDate

Calendar::Simple             GD::Text                  LWP::UserAgent                String::ShellQuote           Tree::Simple

Class::ReturnValue           Getopt::Long              Locale::Maketext              Term::ReadKey                UNIVERSAL::require

DBD::Oracle                  GnuPG::Interface          Locale::Maketext::Fuzzy       Term::ReadLine               WWW::Mechanize

DBD::Pg                      HTML::Entities            Locale::Maketext::Lexicon     Test::Builder                XML::RSS

DBD::SQLite                  HTML::Form                Log::Dispatch                 Test::Deep                   XML::Simple

DBD::mysql                   HTML::FormatText          Log::Dispatch::Perl           Test::Expect

DBIx::SearchBuilder          HTML::Mason               MIME::Entity                  Test::HTTP::Server::Simple

Data::ICal                   HTML::RewriteAttributes   MIME::Types                   Test::WWW::Mechanize
That’s just the non-core
 CPAN dependencies.
   Without all their
     dependencies.
116 CPAN distributions
   once you do the
      recursion

             116
And then there are the
 external libraries and
      programs
• perl        • readline
• expat       • zlib
• fontconfig   • gnupg
• freetype    • mysql
• libgd       • postgresql
• libjpeg
• libpng
Plagger beats RT.
(It has 135 CPAN deps)


Plagger    (Plagger   135   )
RT is hard to install


   RT
RT should be easy to
       install
All software should be
     easy to install
What Shipwright does

Tracks all dependencies in version control

  (As far down as you want. I skip libc.)
                       libc




        Shipwright
What Shipwright does

Computes a full dependency order

No more recursive CPAN installs
        CPAN



        Shipwright
What Shipwright does

Keeps all packages in version control

No more “that site is down”




          Shipwright
What Shipwright does

 Automates multi-package builds

  (No manual intervention)




     Shipwright
What Shipwright does

Makes installed packages relocatable

(Wraps all scripts and binaries)




          Shipwright
What Shipwright does

Makes historical builds reproducible

(No more “Oh. that API changed in 2.0”)
          API 2.0




         Shipwright
Shipwright and CPAN
CPAN-friendly CPAN
  (Not CPAN-only) CPAN
CPAN dist import CPAN
Automatic CPAN dependency resolution

Full build ordering
  No more CPAN dependency hell.



               Shipwright    CPAN
Shipwright and C

 Native support for autoconfiscated packages

 No support for magic C->C dependency
resolutions
  C      C



                Shipwright   C
Shipwright and Ruby

Not Ruby friendly :(
    Ruby
No Gem support yet
Gem
Hackathon this weekend?



                 Shipwright   Ruby
What you can ship

A platform-neutral source distribution



Platform-specific binary distributions
Making a Shipwright
            Vessel
svnadmin create file:///Users/jesse/shiprepo
shipwright create --repository
     svn:file:///Users/jesse/shiprepo/myproject
shipwright import --repository
     svn:file:///Users/jesse/shiprepo/myproject
     cpan:Plagger
Go get a cup of coffee
(Shipwright will chase all 135 dependencies)
                             Shipwright   135



                   Shipwright
Building a Shipwright
            Vessel
svn co file:///Users/jesse/shiprepo/myproject
cd myproject
./bin/shipwright-builder
(Possibly more coffee)
(                          )

tar czvf myproject.tgz /path/to/build



              Shipwright
Using a Shipwright
            Vessel

•   tar xzvf myproject.tgz c /usr/local/
    myproject

•   ln -s /usr/local/myproject/bin/myprogram
    /usr/local/bin




             Shipwright
What's next for
      Shipwright?

Build tool usability improvements

Ruby support?
Ruby
Get input from users
Date::Extract
    Get a date
The Problem
Pick up the drycleaning
on tuesday after school
There are many Date /
Time parsers on CPAN


CPAN
Date::Manip
Time::ParseDate
Date::Parse
DateTime::Format::Natural
Each can parse dates
     and times
None of them are any
good at finding dates in
   a block of text
Timezones are hard
Most parsers generate
 many false positives
use Date::Extract;

my $arbitrary_text = <<EOF;
I need to plan for my trip. On Sunday
afternoon, I'll head on to taiwan.
EOF

my $parser = Date::Extract->new();
my $dt = $parser->extract($arbitrary_text)
or die quot;No date found.quot;;
warn $dt->ymd;
It's simple.
It's unsexy.
It's reliable.
What's next for
         Date::Extract?

Parsing more obscure human-written dates?


Date::Extract::Lingua::* ?
The Feedback Box
Let users make suggestions everywhere
mailto: links?
getsatisfaction.com?
I give up.
Don't let your users
      give up.
Feedback is important!
Feedback can be easy!
If you make it easy for
    users to give you
       feedback...
You can capture lots of
  good information!
From: Jesse Vincent / Feedback <comment-373709-destygrypuju@tasks.hiveminder.com>
Date: Mon, 12 May 2008 12:31:49 -0700
Subject: Up for grabs: I'd really like Hiveminder to do all my work for me! (#EFYG)

Jesse Vincent <jesse@bestpractical.com> created a task and put it up for grabs:

   http://task.hm/EFYG

   I'd really like Hiveminder to do all my work for me!

--
Private debugging information:

    Is a Pro user!

    HTTP_ACCEPT: application/xml, text/xml, */*
    HTTP_ACCEPT_ENCODING: gzip, deflate
    HTTP_ACCEPT_LANGUAGE: en-us
    HTTP_CONNECTION: keep-alive
    HTTP_COOKIE: JIFTY_SID_HIVEMINDER=b58e123456719fd411bb9f3a8123458f;
    HTTP_HOST: hiveminder.com
    HTTP_REFERER: http://hiveminder.com/todo/
    HTTP_USER_AGENT: Mozilla/5.0 (Macintosh; U; Intel Mac OS X 10_5_2; en-us)
                       AppleWebKit/526.5+ (KHTML, like Gecko) Version/3.1.1 Safari/525.18
    HTTP_X_REQUESTED_WITH: XMLHttpRequest
    REMOTE_ADDR: 75.147.59.54
    REMOTE_PORT: 35412
    REQUEST_METHOD: POST
    REQUEST_URI: /todo/
Collect lots of feedback
Reply to lots of
   feedback
Conversations make
   users happy
Happy = Loyal
Own the inbox
Net::IMAP::Server
  An IMAP Server in Pure Perl




  Pure Perl IMAP Server
Why?
Offline Access
iPhone Access


  iPhone
Desktop Access
Really, we just like
  things that are
 sick and wrong.
Now Hiveminder users
 can take their tasks
      with them

Hiveminder
Magic mailboxes
Update your tasks
  while offline
What sort of mailbox
do you use with that?
mbox?
no
maildir?
no
How about Perl?


   Perl
Net::IMAP::Server
Complete RFC 3501
  Implementation


   RFC 3501
Write your own
  backends
Let’s write one now
How about a
Spam server?


Spam
package Demo::IMAP::Auth;
use base 'Net::IMAP::Server::DefaultAuth';

sub auth_plain {
    my ($self, $user, $pass ) = @_;
    # XXX DO AUTH CHECK
    return 1;
}
package Demo::IMAP::Model;
use base 'Net::IMAP::Server::DefaultModel';

sub init {
    my $self = shift;
    $self->root(Demo::IMAP::Mailbox->new());
    $self->root->add_child( name => quot;INBOXquot;,
                            is_inbox => 1);
}
package Demo::IMAP::Mailbox;
use base qw/Net::IMAP::Server::Mailbox/;

my $msg = Net::IMAP::Server::Message->new(<<'EOM');
From: jesse@example.com
To: user@example.com
Subject: This is a test message!

Hello. I am executive assistant to the director of
Bear Stearns, a failed investment Bank. I have
access to USD5,000,000. ...
EOM

sub load_data {
    my $self = shift;
    $self->add_message($msg);
}
#!/usr/bin/perl

use Net::IMAP::Server;
Net::IMAP::Server->new(
        auth_class => quot;Demo::IMAP::Authquot;,
        model_class => quot;Demo::IMAP::Modelquot;,
        user        => 'nobody',
        port        => 143,
        ssl_port    => 993
)->run();
It runs! Ship it!
(Just add SSL certificates)


                 SSL
with.hm
Assign tasks by email
We wanted to make it
 easy to work with
Hiveminder by email.

Hiveminder
We had a few ideas...


                   …
Cc:
Too clumsy
Bcc:
Too likely to break
Commands in the body
Too ugly
hm...
What could we do?
DNS Hacks!
Everybody loves DNS hacks




     DNS
.hm
Hiveminder!
.hm
Heard and McDonald
      Islands!
with.hm
Send your email with
    Hiveminder


       Hiveminder
Wildcard MX Record!


          MX   !
*.with.hm ➡
mail.hiveminder.com
An Example:

From: jesse@bestpractical.com
To: miyagawa@bulknews.net.with.hm
Subject: Could you release a new version of plagger?
My mail server looks up
 bulknews.net.with.hm


        bulknews.net.with.hm
“Oh. That's handled by
 mail.hiveminder.com”


       mail.hiveminder.com
mail.hiveminder.com
  unwraps the address.


mail.hiveminder.com
Hiveminder creates a task
for miyagawa@bulknews.net


miyagawa@bulknews.net
Hiveminder emails
miyagawa@bulknews.net


  miyagawa@bulknews.net
Preventing Spam
miyagawa@bulknews.net.my-
      secret.with.hm


            .
I bet you can come up
with even scarier uses
   of wildcard DNS.

    DNS
Thank you!

More Related Content

What's hot

Golang Project Layout and Practice
Golang Project Layout and PracticeGolang Project Layout and Practice
Golang Project Layout and PracticeBo-Yi Wu
 
Drone CI/CD 自動化測試及部署
Drone CI/CD 自動化測試及部署Drone CI/CD 自動化測試及部署
Drone CI/CD 自動化測試及部署Bo-Yi Wu
 
Global Interpreter Lock: Episode III - cat &lt; /dev/zero > GIL;
Global Interpreter Lock: Episode III - cat &lt; /dev/zero > GIL;Global Interpreter Lock: Episode III - cat &lt; /dev/zero > GIL;
Global Interpreter Lock: Episode III - cat &lt; /dev/zero > GIL;Tzung-Bi Shih
 
The Challenges of Container Configuration
The Challenges of Container ConfigurationThe Challenges of Container Configuration
The Challenges of Container ConfigurationGareth Rushgrove
 
How to stay sane during your Vagrant journey
How to stay sane during your Vagrant journeyHow to stay sane during your Vagrant journey
How to stay sane during your Vagrant journeyJakub Wadolowski
 
Moving from Jenkins 1 to 2 declarative pipeline adventures
Moving from Jenkins 1 to 2 declarative pipeline adventuresMoving from Jenkins 1 to 2 declarative pipeline adventures
Moving from Jenkins 1 to 2 declarative pipeline adventuresFrits Van Der Holst
 
How to make a large C++-code base manageable
How to make a large C++-code base manageableHow to make a large C++-code base manageable
How to make a large C++-code base manageablecorehard_by
 
Global Interpreter Lock: Episode I - Break the Seal
Global Interpreter Lock: Episode I - Break the SealGlobal Interpreter Lock: Episode I - Break the Seal
Global Interpreter Lock: Episode I - Break the SealTzung-Bi Shih
 
How to Write Node.js Module
How to Write Node.js ModuleHow to Write Node.js Module
How to Write Node.js ModuleFred Chien
 
Node.js/io.js Native C++ Addons
Node.js/io.js Native C++ AddonsNode.js/io.js Native C++ Addons
Node.js/io.js Native C++ AddonsChris Barber
 
Profiling and optimizing go programs
Profiling and optimizing go programsProfiling and optimizing go programs
Profiling and optimizing go programsBadoo Development
 
node.js and native code extensions by example
node.js and native code extensions by examplenode.js and native code extensions by example
node.js and native code extensions by examplePhilipp Fehre
 
Infrastructure as code - Python Saati #36
Infrastructure as code - Python Saati #36Infrastructure as code - Python Saati #36
Infrastructure as code - Python Saati #36Halil Kaya
 
Functional Reactive Programming on Android
Functional Reactive Programming on AndroidFunctional Reactive Programming on Android
Functional Reactive Programming on AndroidSam Lee
 

What's hot (20)

Golang Project Layout and Practice
Golang Project Layout and PracticeGolang Project Layout and Practice
Golang Project Layout and Practice
 
Drone CI/CD 自動化測試及部署
Drone CI/CD 自動化測試及部署Drone CI/CD 自動化測試及部署
Drone CI/CD 自動化測試及部署
 
Rest, sockets em golang
Rest, sockets em golangRest, sockets em golang
Rest, sockets em golang
 
Global Interpreter Lock: Episode III - cat &lt; /dev/zero > GIL;
Global Interpreter Lock: Episode III - cat &lt; /dev/zero > GIL;Global Interpreter Lock: Episode III - cat &lt; /dev/zero > GIL;
Global Interpreter Lock: Episode III - cat &lt; /dev/zero > GIL;
 
The Challenges of Container Configuration
The Challenges of Container ConfigurationThe Challenges of Container Configuration
The Challenges of Container Configuration
 
How to stay sane during your Vagrant journey
How to stay sane during your Vagrant journeyHow to stay sane during your Vagrant journey
How to stay sane during your Vagrant journey
 
(Re)discover your AEM
(Re)discover your AEM(Re)discover your AEM
(Re)discover your AEM
 
Moving from Jenkins 1 to 2 declarative pipeline adventures
Moving from Jenkins 1 to 2 declarative pipeline adventuresMoving from Jenkins 1 to 2 declarative pipeline adventures
Moving from Jenkins 1 to 2 declarative pipeline adventures
 
How to make a large C++-code base manageable
How to make a large C++-code base manageableHow to make a large C++-code base manageable
How to make a large C++-code base manageable
 
Global Interpreter Lock: Episode I - Break the Seal
Global Interpreter Lock: Episode I - Break the SealGlobal Interpreter Lock: Episode I - Break the Seal
Global Interpreter Lock: Episode I - Break the Seal
 
Taming AEM deployments
Taming AEM deploymentsTaming AEM deployments
Taming AEM deployments
 
How to Write Node.js Module
How to Write Node.js ModuleHow to Write Node.js Module
How to Write Node.js Module
 
Node.js/io.js Native C++ Addons
Node.js/io.js Native C++ AddonsNode.js/io.js Native C++ Addons
Node.js/io.js Native C++ Addons
 
Statyczna analiza kodu PHP
Statyczna analiza kodu PHPStatyczna analiza kodu PHP
Statyczna analiza kodu PHP
 
Profiling and optimizing go programs
Profiling and optimizing go programsProfiling and optimizing go programs
Profiling and optimizing go programs
 
C++17 now
C++17 nowC++17 now
C++17 now
 
node.js and native code extensions by example
node.js and native code extensions by examplenode.js and native code extensions by example
node.js and native code extensions by example
 
Infrastructure as code - Python Saati #36
Infrastructure as code - Python Saati #36Infrastructure as code - Python Saati #36
Infrastructure as code - Python Saati #36
 
Functional Reactive Programming on Android
Functional Reactive Programming on AndroidFunctional Reactive Programming on Android
Functional Reactive Programming on Android
 
Serverless and React
Serverless and ReactServerless and React
Serverless and React
 

Viewers also liked

Channel Guide
Channel GuideChannel Guide
Channel Guideowauldd
 
Lo Que Ofrece Nuestro Candidato
Lo Que Ofrece Nuestro CandidatoLo Que Ofrece Nuestro Candidato
Lo Que Ofrece Nuestro CandidatoCarlos Perez
 
Clase 7 Ii MèXico Hoy
Clase 7 Ii MèXico HoyClase 7 Ii MèXico Hoy
Clase 7 Ii MèXico HoyGrachela
 
Pueblos Americanos 2º A
Pueblos Americanos 2º APueblos Americanos 2º A
Pueblos Americanos 2º AZebaOne
 

Viewers also liked (8)

Channel Guide
Channel GuideChannel Guide
Channel Guide
 
Lo Que Ofrece Nuestro Candidato
Lo Que Ofrece Nuestro CandidatoLo Que Ofrece Nuestro Candidato
Lo Que Ofrece Nuestro Candidato
 
Yrraj
YrrajYrraj
Yrraj
 
Clase 7 Ii MèXico Hoy
Clase 7 Ii MèXico HoyClase 7 Ii MèXico Hoy
Clase 7 Ii MèXico Hoy
 
Alemania
AlemaniaAlemania
Alemania
 
Pueblos Americanos 2º A
Pueblos Americanos 2º APueblos Americanos 2º A
Pueblos Americanos 2º A
 
Palabras
PalabrasPalabras
Palabras
 
Paseo Chino
Paseo ChinoPaseo Chino
Paseo Chino
 

Similar to Hiveminder - Everything but the Secret Sauce

Beijing Perl Workshop 2008 Hiveminder Secret Sauce
Beijing Perl Workshop 2008 Hiveminder Secret SauceBeijing Perl Workshop 2008 Hiveminder Secret Sauce
Beijing Perl Workshop 2008 Hiveminder Secret SauceJesse Vincent
 
Don't RTFM, WTFM - Open Source Documentation - German Perl Workshop 2010
Don't RTFM, WTFM - Open Source Documentation - German Perl Workshop 2010Don't RTFM, WTFM - Open Source Documentation - German Perl Workshop 2010
Don't RTFM, WTFM - Open Source Documentation - German Perl Workshop 2010singingfish
 
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
 
RubyEnRails2007 - Dr Nic Williams - Keynote
RubyEnRails2007 - Dr Nic Williams - KeynoteRubyEnRails2007 - Dr Nic Williams - Keynote
RubyEnRails2007 - Dr Nic Williams - KeynoteDr Nic Williams
 
PSGI and Plack from first principles
PSGI and Plack from first principlesPSGI and Plack from first principles
PSGI and Plack from first principlesPerl Careers
 
Building Testable PHP Applications
Building Testable PHP ApplicationsBuilding Testable PHP Applications
Building Testable PHP Applicationschartjes
 
Umleitung: a tiny mochiweb/CouchDB app
Umleitung: a tiny mochiweb/CouchDB appUmleitung: a tiny mochiweb/CouchDB app
Umleitung: a tiny mochiweb/CouchDB appLenz Gschwendtner
 
Perl at SkyCon'12
Perl at SkyCon'12Perl at SkyCon'12
Perl at SkyCon'12Tim Bunce
 
When To Use Ruby On Rails
When To Use Ruby On RailsWhen To Use Ruby On Rails
When To Use Ruby On Railsdosire
 
The Essential Perl Hacker's Toolkit
The Essential Perl Hacker's ToolkitThe Essential Perl Hacker's Toolkit
The Essential Perl Hacker's ToolkitStephen Scaffidi
 
Capistrano 2 Rocks My World
Capistrano 2 Rocks My WorldCapistrano 2 Rocks My World
Capistrano 2 Rocks My WorldGraeme Mathieson
 
Building an e:commerce site with PHP
Building an e:commerce site with PHPBuilding an e:commerce site with PHP
Building an e:commerce site with PHPwebhostingguy
 
Background Jobs - Com BackgrounDRb
Background Jobs - Com BackgrounDRbBackground Jobs - Com BackgrounDRb
Background Jobs - Com BackgrounDRbJuan Maiz
 

Similar to Hiveminder - Everything but the Secret Sauce (20)

Beijing Perl Workshop 2008 Hiveminder Secret Sauce
Beijing Perl Workshop 2008 Hiveminder Secret SauceBeijing Perl Workshop 2008 Hiveminder Secret Sauce
Beijing Perl Workshop 2008 Hiveminder Secret Sauce
 
Don't RTFM, WTFM - Open Source Documentation - German Perl Workshop 2010
Don't RTFM, WTFM - Open Source Documentation - German Perl Workshop 2010Don't RTFM, WTFM - Open Source Documentation - German Perl Workshop 2010
Don't RTFM, WTFM - Open Source Documentation - German Perl Workshop 2010
 
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
 
RubyEnRails2007 - Dr Nic Williams - Keynote
RubyEnRails2007 - Dr Nic Williams - KeynoteRubyEnRails2007 - Dr Nic Williams - Keynote
RubyEnRails2007 - Dr Nic Williams - Keynote
 
PSGI and Plack from first principles
PSGI and Plack from first principlesPSGI and Plack from first principles
PSGI and Plack from first principles
 
Building Testable PHP Applications
Building Testable PHP ApplicationsBuilding Testable PHP Applications
Building Testable PHP Applications
 
Umleitung: a tiny mochiweb/CouchDB app
Umleitung: a tiny mochiweb/CouchDB appUmleitung: a tiny mochiweb/CouchDB app
Umleitung: a tiny mochiweb/CouchDB app
 
C++ Core Guidelines
C++ Core GuidelinesC++ Core Guidelines
C++ Core Guidelines
 
Perl at SkyCon'12
Perl at SkyCon'12Perl at SkyCon'12
Perl at SkyCon'12
 
lab4_php
lab4_phplab4_php
lab4_php
 
lab4_php
lab4_phplab4_php
lab4_php
 
When To Use Ruby On Rails
When To Use Ruby On RailsWhen To Use Ruby On Rails
When To Use Ruby On Rails
 
The Essential Perl Hacker's Toolkit
The Essential Perl Hacker's ToolkitThe Essential Perl Hacker's Toolkit
The Essential Perl Hacker's Toolkit
 
Capistrano 2 Rocks My World
Capistrano 2 Rocks My WorldCapistrano 2 Rocks My World
Capistrano 2 Rocks My World
 
Building an e:commerce site with PHP
Building an e:commerce site with PHPBuilding an e:commerce site with PHP
Building an e:commerce site with PHP
 
Capistrano
CapistranoCapistrano
Capistrano
 
Pecl Picks
Pecl PicksPecl Picks
Pecl Picks
 
Api Design
Api DesignApi Design
Api Design
 
Capistrano Overview
Capistrano OverviewCapistrano Overview
Capistrano Overview
 
Background Jobs - Com BackgrounDRb
Background Jobs - Com BackgrounDRbBackground Jobs - Com BackgrounDRb
Background Jobs - Com BackgrounDRb
 

More from Jesse Vincent

Building a keyboard from scratch
Building a keyboard from scratchBuilding a keyboard from scratch
Building a keyboard from scratchJesse Vincent
 
So, I made a keyboard
So, I made a keyboardSo, I made a keyboard
So, I made a keyboardJesse Vincent
 
Dancing App Stores - Android Open 2011
Dancing App Stores - Android Open 2011Dancing App Stores - Android Open 2011
Dancing App Stores - Android Open 2011Jesse Vincent
 
Perl 5.16 and Beyond - YAPC::Asia 2011
Perl 5.16 and Beyond - YAPC::Asia 2011Perl 5.16 and Beyond - YAPC::Asia 2011
Perl 5.16 and Beyond - YAPC::Asia 2011Jesse Vincent
 
Perl 5.16 and beyond
Perl 5.16 and beyondPerl 5.16 and beyond
Perl 5.16 and beyondJesse Vincent
 
OSCON 2011 - Perl 5.16 and beyond
OSCON 2011 - Perl 5.16 and beyondOSCON 2011 - Perl 5.16 and beyond
OSCON 2011 - Perl 5.16 and beyondJesse Vincent
 
RT4 - The whole sordid story
RT4 - The whole sordid storyRT4 - The whole sordid story
RT4 - The whole sordid storyJesse Vincent
 
K-9 Mail for Android
K-9 Mail for AndroidK-9 Mail for Android
K-9 Mail for AndroidJesse Vincent
 
P2P Bug Tracking with SD
P2P Bug Tracking with SDP2P Bug Tracking with SD
P2P Bug Tracking with SDJesse Vincent
 
SD - A peer to peer issue tracking system
SD - A peer to peer issue tracking systemSD - A peer to peer issue tracking system
SD - A peer to peer issue tracking systemJesse Vincent
 
Hacking your Kindle (OSCON Lightning Talk)
Hacking your Kindle (OSCON Lightning Talk)Hacking your Kindle (OSCON Lightning Talk)
Hacking your Kindle (OSCON Lightning Talk)Jesse Vincent
 
Beginning Kindle Hackery
Beginning Kindle HackeryBeginning Kindle Hackery
Beginning Kindle HackeryJesse Vincent
 
SD, a P2P bug tracking system
SD, a P2P bug tracking systemSD, a P2P bug tracking system
SD, a P2P bug tracking systemJesse Vincent
 
Prophet - Beijing Perl Workshop
Prophet - Beijing Perl WorkshopProphet - Beijing Perl Workshop
Prophet - Beijing Perl WorkshopJesse Vincent
 
A brief introduction to RTIR
A brief introduction to RTIRA brief introduction to RTIR
A brief introduction to RTIRJesse Vincent
 
An introduction to RTIR
An introduction to RTIRAn introduction to RTIR
An introduction to RTIRJesse Vincent
 
Prophet: a path out of the Cloud
Prophet: a path out of the CloudProphet: a path out of the Cloud
Prophet: a path out of the CloudJesse Vincent
 
Web 2.0 is Sharecropping
Web 2.0 is SharecroppingWeb 2.0 is Sharecropping
Web 2.0 is SharecroppingJesse Vincent
 
Prophet - A peer to peer replicated disconnected database
Prophet - A peer to peer replicated disconnected databaseProphet - A peer to peer replicated disconnected database
Prophet - A peer to peer replicated disconnected databaseJesse Vincent
 

More from Jesse Vincent (20)

Building a keyboard from scratch
Building a keyboard from scratchBuilding a keyboard from scratch
Building a keyboard from scratch
 
So, I made a keyboard
So, I made a keyboardSo, I made a keyboard
So, I made a keyboard
 
Dancing App Stores - Android Open 2011
Dancing App Stores - Android Open 2011Dancing App Stores - Android Open 2011
Dancing App Stores - Android Open 2011
 
Perl 5.16 and Beyond - YAPC::Asia 2011
Perl 5.16 and Beyond - YAPC::Asia 2011Perl 5.16 and Beyond - YAPC::Asia 2011
Perl 5.16 and Beyond - YAPC::Asia 2011
 
Perl 5.16 and beyond
Perl 5.16 and beyondPerl 5.16 and beyond
Perl 5.16 and beyond
 
OSCON 2011 - Perl 5.16 and beyond
OSCON 2011 - Perl 5.16 and beyondOSCON 2011 - Perl 5.16 and beyond
OSCON 2011 - Perl 5.16 and beyond
 
RT4 - The whole sordid story
RT4 - The whole sordid storyRT4 - The whole sordid story
RT4 - The whole sordid story
 
K-9 Mail for Android
K-9 Mail for AndroidK-9 Mail for Android
K-9 Mail for Android
 
Perl 5.12.0
Perl 5.12.0Perl 5.12.0
Perl 5.12.0
 
P2P Bug Tracking with SD
P2P Bug Tracking with SDP2P Bug Tracking with SD
P2P Bug Tracking with SD
 
SD - A peer to peer issue tracking system
SD - A peer to peer issue tracking systemSD - A peer to peer issue tracking system
SD - A peer to peer issue tracking system
 
Hacking your Kindle (OSCON Lightning Talk)
Hacking your Kindle (OSCON Lightning Talk)Hacking your Kindle (OSCON Lightning Talk)
Hacking your Kindle (OSCON Lightning Talk)
 
Beginning Kindle Hackery
Beginning Kindle HackeryBeginning Kindle Hackery
Beginning Kindle Hackery
 
SD, a P2P bug tracking system
SD, a P2P bug tracking systemSD, a P2P bug tracking system
SD, a P2P bug tracking system
 
Prophet - Beijing Perl Workshop
Prophet - Beijing Perl WorkshopProphet - Beijing Perl Workshop
Prophet - Beijing Perl Workshop
 
A brief introduction to RTIR
A brief introduction to RTIRA brief introduction to RTIR
A brief introduction to RTIR
 
An introduction to RTIR
An introduction to RTIRAn introduction to RTIR
An introduction to RTIR
 
Prophet: a path out of the Cloud
Prophet: a path out of the CloudProphet: a path out of the Cloud
Prophet: a path out of the Cloud
 
Web 2.0 is Sharecropping
Web 2.0 is SharecroppingWeb 2.0 is Sharecropping
Web 2.0 is Sharecropping
 
Prophet - A peer to peer replicated disconnected database
Prophet - A peer to peer replicated disconnected databaseProphet - A peer to peer replicated disconnected database
Prophet - A peer to peer replicated disconnected database
 

Recently uploaded

Generative AI for Technical Writer or Information Developers
Generative AI for Technical Writer or Information DevelopersGenerative AI for Technical Writer or Information Developers
Generative AI for Technical Writer or Information DevelopersRaghuram Pandurangan
 
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
 
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
 
Moving Beyond Passwords: FIDO Paris Seminar.pdf
Moving Beyond Passwords: FIDO Paris Seminar.pdfMoving Beyond Passwords: FIDO Paris Seminar.pdf
Moving Beyond Passwords: FIDO Paris Seminar.pdfLoriGlavin3
 
SALESFORCE EDUCATION CLOUD | FEXLE SERVICES
SALESFORCE EDUCATION CLOUD | FEXLE SERVICESSALESFORCE EDUCATION CLOUD | FEXLE SERVICES
SALESFORCE EDUCATION CLOUD | FEXLE SERVICESmohitsingh558521
 
New from BookNet Canada for 2024: Loan Stars - Tech Forum 2024
New from BookNet Canada for 2024: Loan Stars - Tech Forum 2024New from BookNet Canada for 2024: Loan Stars - Tech Forum 2024
New from BookNet Canada for 2024: Loan Stars - Tech Forum 2024BookNet Canada
 
Unraveling Multimodality with Large Language Models.pdf
Unraveling Multimodality with Large Language Models.pdfUnraveling Multimodality with Large Language Models.pdf
Unraveling Multimodality with Large Language Models.pdfAlex Barbosa Coqueiro
 
The Fit for Passkeys for Employee and Consumer Sign-ins: FIDO Paris Seminar.pptx
The Fit for Passkeys for Employee and Consumer Sign-ins: FIDO Paris Seminar.pptxThe Fit for Passkeys for Employee and Consumer Sign-ins: FIDO Paris Seminar.pptx
The Fit for Passkeys for Employee and Consumer Sign-ins: FIDO Paris Seminar.pptxLoriGlavin3
 
The Role of FIDO in a Cyber Secure Netherlands: FIDO Paris Seminar.pptx
The Role of FIDO in a Cyber Secure Netherlands: FIDO Paris Seminar.pptxThe Role of FIDO in a Cyber Secure Netherlands: FIDO Paris Seminar.pptx
The Role of FIDO in a Cyber Secure Netherlands: FIDO Paris Seminar.pptxLoriGlavin3
 
"Subclassing and Composition – A Pythonic Tour of Trade-Offs", Hynek Schlawack
"Subclassing and Composition – A Pythonic Tour of Trade-Offs", Hynek Schlawack"Subclassing and Composition – A Pythonic Tour of Trade-Offs", Hynek Schlawack
"Subclassing and Composition – A Pythonic Tour of Trade-Offs", Hynek SchlawackFwdays
 
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
 
Transcript: New from BookNet Canada for 2024: Loan Stars - Tech Forum 2024
Transcript: New from BookNet Canada for 2024: Loan Stars - Tech Forum 2024Transcript: New from BookNet Canada for 2024: Loan Stars - Tech Forum 2024
Transcript: New from BookNet Canada for 2024: Loan Stars - Tech Forum 2024BookNet Canada
 
Developer Data Modeling Mistakes: From Postgres to NoSQL
Developer Data Modeling Mistakes: From Postgres to NoSQLDeveloper Data Modeling Mistakes: From Postgres to NoSQL
Developer Data Modeling Mistakes: From Postgres to NoSQLScyllaDB
 
"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
 
SIP trunking in Janus @ Kamailio World 2024
SIP trunking in Janus @ Kamailio World 2024SIP trunking in Janus @ Kamailio World 2024
SIP trunking in Janus @ Kamailio World 2024Lorenzo Miniero
 
Passkey Providers and Enabling Portability: FIDO Paris Seminar.pptx
Passkey Providers and Enabling Portability: FIDO Paris Seminar.pptxPasskey Providers and Enabling Portability: FIDO Paris Seminar.pptx
Passkey Providers and Enabling Portability: FIDO Paris Seminar.pptxLoriGlavin3
 
unit 4 immunoblotting technique complete.pptx
unit 4 immunoblotting technique complete.pptxunit 4 immunoblotting technique complete.pptx
unit 4 immunoblotting technique complete.pptxBkGupta21
 
Merck Moving Beyond Passwords: FIDO Paris Seminar.pptx
Merck Moving Beyond Passwords: FIDO Paris Seminar.pptxMerck Moving Beyond Passwords: FIDO Paris Seminar.pptx
Merck Moving Beyond Passwords: FIDO Paris Seminar.pptxLoriGlavin3
 
What's New in Teams Calling, Meetings and Devices March 2024
What's New in Teams Calling, Meetings and Devices March 2024What's New in Teams Calling, Meetings and Devices March 2024
What's New in Teams Calling, Meetings and Devices March 2024Stephanie Beckett
 
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
 

Recently uploaded (20)

Generative AI for Technical Writer or Information Developers
Generative AI for Technical Writer or Information DevelopersGenerative AI for Technical Writer or Information Developers
Generative AI for Technical Writer or Information Developers
 
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
 
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
 
Moving Beyond Passwords: FIDO Paris Seminar.pdf
Moving Beyond Passwords: FIDO Paris Seminar.pdfMoving Beyond Passwords: FIDO Paris Seminar.pdf
Moving Beyond Passwords: FIDO Paris Seminar.pdf
 
SALESFORCE EDUCATION CLOUD | FEXLE SERVICES
SALESFORCE EDUCATION CLOUD | FEXLE SERVICESSALESFORCE EDUCATION CLOUD | FEXLE SERVICES
SALESFORCE EDUCATION CLOUD | FEXLE SERVICES
 
New from BookNet Canada for 2024: Loan Stars - Tech Forum 2024
New from BookNet Canada for 2024: Loan Stars - Tech Forum 2024New from BookNet Canada for 2024: Loan Stars - Tech Forum 2024
New from BookNet Canada for 2024: Loan Stars - Tech Forum 2024
 
Unraveling Multimodality with Large Language Models.pdf
Unraveling Multimodality with Large Language Models.pdfUnraveling Multimodality with Large Language Models.pdf
Unraveling Multimodality with Large Language Models.pdf
 
The Fit for Passkeys for Employee and Consumer Sign-ins: FIDO Paris Seminar.pptx
The Fit for Passkeys for Employee and Consumer Sign-ins: FIDO Paris Seminar.pptxThe Fit for Passkeys for Employee and Consumer Sign-ins: FIDO Paris Seminar.pptx
The Fit for Passkeys for Employee and Consumer Sign-ins: FIDO Paris Seminar.pptx
 
The Role of FIDO in a Cyber Secure Netherlands: FIDO Paris Seminar.pptx
The Role of FIDO in a Cyber Secure Netherlands: FIDO Paris Seminar.pptxThe Role of FIDO in a Cyber Secure Netherlands: FIDO Paris Seminar.pptx
The Role of FIDO in a Cyber Secure Netherlands: FIDO Paris Seminar.pptx
 
"Subclassing and Composition – A Pythonic Tour of Trade-Offs", Hynek Schlawack
"Subclassing and Composition – A Pythonic Tour of Trade-Offs", Hynek Schlawack"Subclassing and Composition – A Pythonic Tour of Trade-Offs", Hynek Schlawack
"Subclassing and Composition – A Pythonic Tour of Trade-Offs", Hynek Schlawack
 
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
 
Transcript: New from BookNet Canada for 2024: Loan Stars - Tech Forum 2024
Transcript: New from BookNet Canada for 2024: Loan Stars - Tech Forum 2024Transcript: New from BookNet Canada for 2024: Loan Stars - Tech Forum 2024
Transcript: New from BookNet Canada for 2024: Loan Stars - Tech Forum 2024
 
Developer Data Modeling Mistakes: From Postgres to NoSQL
Developer Data Modeling Mistakes: From Postgres to NoSQLDeveloper Data Modeling Mistakes: From Postgres to NoSQL
Developer Data Modeling Mistakes: From Postgres to NoSQL
 
"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
 
SIP trunking in Janus @ Kamailio World 2024
SIP trunking in Janus @ Kamailio World 2024SIP trunking in Janus @ Kamailio World 2024
SIP trunking in Janus @ Kamailio World 2024
 
Passkey Providers and Enabling Portability: FIDO Paris Seminar.pptx
Passkey Providers and Enabling Portability: FIDO Paris Seminar.pptxPasskey Providers and Enabling Portability: FIDO Paris Seminar.pptx
Passkey Providers and Enabling Portability: FIDO Paris Seminar.pptx
 
unit 4 immunoblotting technique complete.pptx
unit 4 immunoblotting technique complete.pptxunit 4 immunoblotting technique complete.pptx
unit 4 immunoblotting technique complete.pptx
 
Merck Moving Beyond Passwords: FIDO Paris Seminar.pptx
Merck Moving Beyond Passwords: FIDO Paris Seminar.pptxMerck Moving Beyond Passwords: FIDO Paris Seminar.pptx
Merck Moving Beyond Passwords: FIDO Paris Seminar.pptx
 
What's New in Teams Calling, Meetings and Devices March 2024
What's New in Teams Calling, Meetings and Devices March 2024What's New in Teams Calling, Meetings and Devices March 2024
What's New in Teams Calling, Meetings and Devices March 2024
 
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
 

Hiveminder - Everything but the Secret Sauce