SlideShare a Scribd company logo
Francisco Fernández Castaño
@fcofdezc
www.biicode.com
Biicode OpenExpoDay
Multiple Paradigms
Code Reuse
➜ node git:(master) ls -l deps
total 0
drwxr-xr-x 13 fran staff 442 16 feb 17:22 cares
drwxr-xr-x 15 fran staff 510 16 feb 17:22 http_parser
drwxr-xr-x 7 fran staff 238 16 feb 17:22 mdb_v8
drwxr-xr-x 21 fran staff 714 16 feb 17:22 npm
drwxr-xr-x 7 fran staff 238 16 feb 17:22 openssl
drwxr-xr-x 25 fran staff 850 16 feb 17:22 uv
drwxr-xr-x 23 fran staff 782 16 feb 17:22 v8
drwxr-xr-x 29 fran staff 986 16 feb 17:22 zlib
➜ node git:(master)
Biicode OpenExpoDay
Biicode OpenExpoDay
Biicode OpenExpoDay
sudo apt-get install opencv
brew install opencv
????? opencv
There are Tonsof
Windows users
There are Tonsof
Windows users
Biicode OpenExpoDay
SETUP
Your computer
Your system
Your tools
SETUP
Biicode OpenExpoDay
biicode way
#include “google/gtest/gtest.h”
bii find
sleep
Talk is cheap.
Show me the code.
Linus Tolvards
Biicode in action
$ bii new hello
$ bii new hello
#include “google/gtest/gtest.h"
!
int sum(int a, int b) {return a+b;}
TEST(Sum, Normal) {
EXPECT_EQ(5, sum(2, 3));
}
int main(int argc, char **argv) {
testing::InitGoogleTest(&argc, argv);
return RUN_ALL_TESTS();
}
$ vim
fran/helloblock/main.cpp
Biicode in action
$ bii new test
$ vim
$ bii find
Biicode in action
$ bii new test
$ vim
$ bii find
$ bii cpp:build
Biicode in action
$ bii new test
$ vim
$ bii find
$ bii cpp:build
$ ./bin/test
Biicode in action
Biicode in action
[==========] Running 1 test from 1 test case.
[----------] Global test environment set-up.
[----------] 1 test from Sum
[ RUN ] Sum.Normal
[ OK ] Sum.Normal (0 ms)
[----------] 1 test from Sum (0 ms total)
!
[----------] Global test environment tear-down
[==========] 1 test from 1 test case ran.
[ PASSED ] 1 test.
Hello Bii!!
$ bii new hello
Hello Bii!!
$ bii new hello
#include “hello.h”
int main(){
hello();
}$ vim
void hello();
#include “hello.h”
void hello(){
cout<<“HelloBii!”<<endl;
}
fran/helloblock/main.cpp
fran/helloblock/hello.h
fran/helloblock/hello.cpp
Hello Bii!!
$ bii new hello
#include “hello.h”
int main(){
hello();
}$ vim
void hello();
#include “hello.h”
void hello(){
cout<<“HelloBii!”<<endl;
}
fran/helloblock/main.cpp
fran/helloblock/hello.h
fran/helloblock/hello.cpp
$ bii cpp:build
HelloBii!!
#include “hello.h”
int main(){
hello();
}
void hello();
#include “hello.h”
void hello(){
cout<<“HelloBii!”<<endl;
}
fran/helloblock/main.cpp
fran/helloblock/hello.h
fran/helloblock/hello.cpp
Dependency Graph
ADD_EXECUTABLE(fran_hello
main.cpp
hello.cpp)
CMakeLists.txt
Automatic building
Publish
$ bii publish
tag: STABLE
msg: MyHello
main.cpp
hello.h
hello.cpp
main.cpp
hello.h
hello.cpp
MacBook Fran
biicode
Just one command is necessary
Reuse & Play
(john) $ bii new hello
Reuse & Play
$ bii new hello
#include “fran/helloblock/hello.h”
void repeat(){
hello();
hello();
}$ vim
void repeat();
#include “repeat.h”
int main(){
repeat();
}
john/repeatblock/repeat.h
john/repeatblock/main.cpp
Reuse & Play
$ bii new hello
#include “fran/helloblock/hello.h”
void repeat(){
hello();
hello();
}$ vim
void repeat();
#include “repeat.h”
int main(){
repeat();
}
john/repeatblock/repeat.h
john/repeatblock/main.cpp
$ bii find
$ bii cpp:build
HelloBii!!
HelloBii!!
Find
main.cpp
hello.h
hello.cpp
biicode
void repeat();
john/repeatblock/repeat.h
john/repeatblock/main.cpp
fran/helloblock/hello.h
fran/helloblock/hello.cpp
src dep
ADD_LIBRARY(fran_hello hello.cpp)
ADD_EXECUTABLE(john_repeat
main.cpp)
TARGET_LINK_LIBRARIES(john_repeat fran_hello)
CMakeLists.txt
Automatic building
Publish
$ bii publish
tag: STABLE
msg: MyRepeat
main.cpp
repeat.h
main.cpp
hello.h
hello.cpp
PC John
biicode
Publish
main.cpp
hello.h
main.cpp
hello.h
hello.cpp
PC John
biicode
main.cpp
repeat.h
Reuse & Play
(carmack)$ bii new doom3
$ vim
void repeat();
#include “john/repeatblock/repeat.h”
int main(){
repeat();
}
john/doom3/main.cpp
$ bii find
$ bii cpp:run
HelloBii!!
HelloBii!!
main.cpp
hello.h
hello.cpp
biicode
main.cpp
repeat.h
Reuse & Play
Update
$ vim #include “hello.h”
void hello(){
cout<<“Bii rocks!”<<endl;
}
fran/helloblock/hello.cpp
$ bii publish
tag: STABLE
msg: 2 version
main.cpp
hello.h
hello.cpp
0
main.cpp
hello.h
hello.cpp
1
hello.cpp
Reuse & Play
#include “repeat.h”
int main(){
repeat();
}
(john)$ bii find —-update
$ bii cpp:build
Bii rocks!
Bii rocks!
dependency resolution policies can be defined
Tags and Versions
Authors
Branches
biicode guarantees compatibilitybetween files
Other features
Data dependencies
Automatic build configuration
Collaboration
real file level usage metrics
main.cpp
hello.h
hello.cpp
biicode
main.cpp
repeat.h
Biicode OpenExpoDay
Biicode OpenExpoDay
Biicode OpenExpoDay
Biicode OpenExpoDay
Biicode OpenExpoDay
How?
Biicode OpenExpoDay
Biicode OpenExpoDay
Biicode OpenExpoDay
PREMIUM USERS
OPEN SOURCE PROPRIETARY CODE
FREE USERS
€$
REVENUE SPLIT
$
Biicode gives back!
Biicode OpenExpoDay
Thanks!

More Related Content

PDF
Gitosis on Mac OS X Server
PDF
Go破壊
PDF
My First Source Code
KEY
PHPerのためのPerl入門@ Kansai.pm#12
PPTX
agri inventory - nouka data collector / yaoya data convertor
PDF
お題でGroovyプログラミング: Part A
ODT
Spatial script for MongoBoulder
PDF
Productivity tips for developers
Gitosis on Mac OS X Server
Go破壊
My First Source Code
PHPerのためのPerl入門@ Kansai.pm#12
agri inventory - nouka data collector / yaoya data convertor
お題でGroovyプログラミング: Part A
Spatial script for MongoBoulder
Productivity tips for developers

What's hot (20)

PPTX
Laravel Day / Deploy
PPTX
Mysql5.1 character set testing
PPTX
Mysql handle socket
PPTX
Compare mysql5.1.50 mysql5.5.8
PDF
PyCon KR 2019 sprint - RustPython by example
PDF
PPTX
2015 555 kharchenko_ppt
PDF
Spatial script for my JS.Everywhere 2012
KEY
サイ本 文
PDF
Go memory
PDF
Go Profiling - John Graham-Cumming
PDF
Go Memory
PDF
Odoo Online platform: architecture and challenges
PDF
Go debugging and troubleshooting tips - from real life lessons at SignalFx
PDF
Building a DSL with GraalVM (VoxxedDays Luxembourg)
PPTX
CouchDB Day NYC 2017: Replication
PDF
PHP 机智问答
PDF
GoLang & GoatCore
PDF
Containers for sysadmins
PDF
Redis as a message queue
Laravel Day / Deploy
Mysql5.1 character set testing
Mysql handle socket
Compare mysql5.1.50 mysql5.5.8
PyCon KR 2019 sprint - RustPython by example
2015 555 kharchenko_ppt
Spatial script for my JS.Everywhere 2012
サイ本 文
Go memory
Go Profiling - John Graham-Cumming
Go Memory
Odoo Online platform: architecture and challenges
Go debugging and troubleshooting tips - from real life lessons at SignalFx
Building a DSL with GraalVM (VoxxedDays Luxembourg)
CouchDB Day NYC 2017: Replication
PHP 机智问答
GoLang & GoatCore
Containers for sysadmins
Redis as a message queue
Ad

Similar to Biicode OpenExpoDay (20)

PDF
An introduction to Google test framework
PDF
O CPAN tem as ferramentas que você precisa para fazer TDD em Perl, o Coding D...
PDF
How to Begin Developing Ruby Core
KEY
Hidden treasures of Ruby
PDF
Gitlab - Creating C++ applications with Gitlab CI
PPTX
Autotools adaptation for integrating autotmatic unit tests and covering for K...
PDF
2013-02-21 - .NET UG Rhein-Neckar: JavaScript Best Practices
PDF
C make tutorial
PDF
Learning Rust with Advent of Code 2023 - Princeton
PDF
PhpUnit Best Practices
PPT
20111018 boost and gtest
PDF
Unit Testing Lots of Perl
PPT
Google test training
PDF
Metaprogramming in Ruby
PDF
R/C++ talk at earl 2014
PDF
Cimplementation
PPT
Google C++ Testing Framework in Visual Studio 2008
PDF
Tracing Software Build Processes to Uncover License Compliance Inconsistencies
An introduction to Google test framework
O CPAN tem as ferramentas que você precisa para fazer TDD em Perl, o Coding D...
How to Begin Developing Ruby Core
Hidden treasures of Ruby
Gitlab - Creating C++ applications with Gitlab CI
Autotools adaptation for integrating autotmatic unit tests and covering for K...
2013-02-21 - .NET UG Rhein-Neckar: JavaScript Best Practices
C make tutorial
Learning Rust with Advent of Code 2023 - Princeton
PhpUnit Best Practices
20111018 boost and gtest
Unit Testing Lots of Perl
Google test training
Metaprogramming in Ruby
R/C++ talk at earl 2014
Cimplementation
Google C++ Testing Framework in Visual Studio 2008
Tracing Software Build Processes to Uncover License Compliance Inconsistencies
Ad

More from fcofdezc (13)

PDF
Knowing your garbage collector - PyCon Italy 2015
PDF
STM on PyPy
PDF
Knowing your garbage collector - FOSDEM 2015
PDF
Extending Python - FOSDEM 2015
PDF
Extending Python - Codemotion Milano 2014
PDF
Understanding PyPy - PyConEs 14
PDF
Knowing your Garbage Collector / Python Madrid
PDF
Knowing your Python Garbage Collector
PDF
Graph databases - EuroPython 2014
PDF
Extending Python - EuroPython 2014
PDF
Graph Databases, a little connected tour (Codemotion Rome)
PDF
biicode, reuse and play
PDF
Graph databases, a little connected tour
Knowing your garbage collector - PyCon Italy 2015
STM on PyPy
Knowing your garbage collector - FOSDEM 2015
Extending Python - FOSDEM 2015
Extending Python - Codemotion Milano 2014
Understanding PyPy - PyConEs 14
Knowing your Garbage Collector / Python Madrid
Knowing your Python Garbage Collector
Graph databases - EuroPython 2014
Extending Python - EuroPython 2014
Graph Databases, a little connected tour (Codemotion Rome)
biicode, reuse and play
Graph databases, a little connected tour

Recently uploaded (20)

PPTX
VMware vSphere Foundation How to Sell Presentation-Ver1.4-2-14-2024.pptx
PDF
NewMind AI Monthly Chronicles - July 2025
PDF
Per capita expenditure prediction using model stacking based on satellite ima...
PDF
Architecting across the Boundaries of two Complex Domains - Healthcare & Tech...
PDF
Network Security Unit 5.pdf for BCA BBA.
PDF
TokAI - TikTok AI Agent : The First AI Application That Analyzes 10,000+ Vira...
PDF
NewMind AI Weekly Chronicles - August'25 Week I
PDF
Bridging biosciences and deep learning for revolutionary discoveries: a compr...
PPTX
Understanding_Digital_Forensics_Presentation.pptx
PDF
Unlocking AI with Model Context Protocol (MCP)
PDF
Peak of Data & AI Encore- AI for Metadata and Smarter Workflows
PDF
Spectral efficient network and resource selection model in 5G networks
PPTX
MYSQL Presentation for SQL database connectivity
PDF
Agricultural_Statistics_at_a_Glance_2022_0.pdf
PDF
Shreyas Phanse Resume: Experienced Backend Engineer | Java • Spring Boot • Ka...
PDF
Diabetes mellitus diagnosis method based random forest with bat algorithm
PPTX
KOM of Painting work and Equipment Insulation REV00 update 25-dec.pptx
PPTX
Detection-First SIEM: Rule Types, Dashboards, and Threat-Informed Strategy
PDF
Machine learning based COVID-19 study performance prediction
PDF
Approach and Philosophy of On baking technology
VMware vSphere Foundation How to Sell Presentation-Ver1.4-2-14-2024.pptx
NewMind AI Monthly Chronicles - July 2025
Per capita expenditure prediction using model stacking based on satellite ima...
Architecting across the Boundaries of two Complex Domains - Healthcare & Tech...
Network Security Unit 5.pdf for BCA BBA.
TokAI - TikTok AI Agent : The First AI Application That Analyzes 10,000+ Vira...
NewMind AI Weekly Chronicles - August'25 Week I
Bridging biosciences and deep learning for revolutionary discoveries: a compr...
Understanding_Digital_Forensics_Presentation.pptx
Unlocking AI with Model Context Protocol (MCP)
Peak of Data & AI Encore- AI for Metadata and Smarter Workflows
Spectral efficient network and resource selection model in 5G networks
MYSQL Presentation for SQL database connectivity
Agricultural_Statistics_at_a_Glance_2022_0.pdf
Shreyas Phanse Resume: Experienced Backend Engineer | Java • Spring Boot • Ka...
Diabetes mellitus diagnosis method based random forest with bat algorithm
KOM of Painting work and Equipment Insulation REV00 update 25-dec.pptx
Detection-First SIEM: Rule Types, Dashboards, and Threat-Informed Strategy
Machine learning based COVID-19 study performance prediction
Approach and Philosophy of On baking technology

Biicode OpenExpoDay