biicode openexpoday
DESCRIPTION
TRANSCRIPT
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)
sudo apt-get install opencv
brew install opencv
????? opencv
There are Tons of Windows users
There are Tons of Windows users
SETUP
Your computer
Your system
Your tools
SETUP
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(); }
$ vimfran/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 compatibility between 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
How?
PREMIUM USERS
OPEN SOURCE PROPRIETARY CODE
FREE USERS
€$
REVENUE SPLIT
$
Biicode gives back!
Thanks!