+ All Categories
Home > Documents > bip - business in progressbip - business in progress Heiner Paulsen, Dennis Junker 17. Apr 2018...

bip - business in progressbip - business in progress Heiner Paulsen, Dennis Junker 17. Apr 2018...

Date post: 27-Jun-2020
Category:
Upload: others
View: 7 times
Download: 0 times
Share this document with a friend
101
bip - business in progress Heiner Paulsen, Dennis Junker 17. Apr 2018 Heiner Paulsen, Dennis Junker bip - business in progress 17. Apr 2018 1 / 10
Transcript
Page 1: bip - business in progressbip - business in progress Heiner Paulsen, Dennis Junker 17. Apr 2018 Heiner Paulsen, Dennis Junker bip - business in progress 17. Apr 2018 1/10 generic DB-access

bip - business in progress

Heiner Paulsen, Dennis Junker

17. Apr 2018

Heiner Paulsen, Dennis Junker bip - business in progress 17. Apr 2018 1 / 10

Page 2: bip - business in progressbip - business in progress Heiner Paulsen, Dennis Junker 17. Apr 2018 Heiner Paulsen, Dennis Junker bip - business in progress 17. Apr 2018 1/10 generic DB-access

bip

Enterprise Resource Planning (ERP) for

Finance & Accounting

Human resources

Order Processing

Supply chain management

Project management

Customer relationship management

...

Heiner Paulsen, Dennis Junker bip - business in progress 17. Apr 2018 2 / 10

Page 3: bip - business in progressbip - business in progress Heiner Paulsen, Dennis Junker 17. Apr 2018 Heiner Paulsen, Dennis Junker bip - business in progress 17. Apr 2018 1/10 generic DB-access

project development

Heiner Paulsen, Dennis Junker bip - business in progress 17. Apr 2018 3 / 10

Page 4: bip - business in progressbip - business in progress Heiner Paulsen, Dennis Junker 17. Apr 2018 Heiner Paulsen, Dennis Junker bip - business in progress 17. Apr 2018 1/10 generic DB-access

generic

DB-access

HTTP-Server

E-Mailing

CSV/Excel import/export

XBRL

odt/pdf printfiles

...

Heiner Paulsen, Dennis Junker bip - business in progress 17. Apr 2018 4 / 10

Page 5: bip - business in progressbip - business in progress Heiner Paulsen, Dennis Junker 17. Apr 2018 Heiner Paulsen, Dennis Junker bip - business in progress 17. Apr 2018 1/10 generic DB-access

overview

Heiner Paulsen, Dennis Junker bip - business in progress 17. Apr 2018 5 / 10

Page 6: bip - business in progressbip - business in progress Heiner Paulsen, Dennis Junker 17. Apr 2018 Heiner Paulsen, Dennis Junker bip - business in progress 17. Apr 2018 1/10 generic DB-access

classes

Page 7: bip - business in progressbip - business in progress Heiner Paulsen, Dennis Junker 17. Apr 2018 Heiner Paulsen, Dennis Junker bip - business in progress 17. Apr 2018 1/10 generic DB-access

classes

Page 8: bip - business in progressbip - business in progress Heiner Paulsen, Dennis Junker 17. Apr 2018 Heiner Paulsen, Dennis Junker bip - business in progress 17. Apr 2018 1/10 generic DB-access

classes

Page 9: bip - business in progressbip - business in progress Heiner Paulsen, Dennis Junker 17. Apr 2018 Heiner Paulsen, Dennis Junker bip - business in progress 17. Apr 2018 1/10 generic DB-access

why Common LISP?

Macrosclass descriptionmethod definitionprint settings

error handlingwriting log filesmessage to browserroll-back on error

process clean uprestart while debuggingaccomplished shutdown

recompiling

...

Heiner Paulsen, Dennis Junker bip - business in progress 17. Apr 2018 9 / 10

Page 10: bip - business in progressbip - business in progress Heiner Paulsen, Dennis Junker 17. Apr 2018 Heiner Paulsen, Dennis Junker bip - business in progress 17. Apr 2018 1/10 generic DB-access

bip - business in progress

Heiner Paulsen, Dennis Junker

17. Apr 2018

Heiner Paulsen, Dennis Junker bip - business in progress 17. Apr 2018 10 / 10

Page 11: bip - business in progressbip - business in progress Heiner Paulsen, Dennis Junker 17. Apr 2018 Heiner Paulsen, Dennis Junker bip - business in progress 17. Apr 2018 1/10 generic DB-access

Self-modifying code(for fun and profit)

Page 12: bip - business in progressbip - business in progress Heiner Paulsen, Dennis Junker 17. Apr 2018 Heiner Paulsen, Dennis Junker bip - business in progress 17. Apr 2018 1/10 generic DB-access

Simple steps

● Ensure that DISASSEMBLE + reassemble is perfectly faithful to the original machine code

● Manipulate the asm (fun) prior to re-assembly

● Reap benefits (profit)

Page 13: bip - business in progressbip - business in progress Heiner Paulsen, Dennis Junker 17. Apr 2018 Heiner Paulsen, Dennis Junker bip - business in progress 17. Apr 2018 1/10 generic DB-access

Example 1: static linking / unlinking

* (defun f (x) (g x))* (disassemble 'f)...; B0: FF7508 PUSH QWORD PTR [RBP+8]; B3: E98002F5FD JMP #x204BA038 #<FDEFN G>

* (disassemble-memory #x204BA038 5); Size: 5 bytes. Origin: #x204BA038; 8: E973FA0A02 JMP #x22569AB0 #<FUNCTION G>

After static linking:; B0: FF7508 PUSH QWORD PTR [RBP+8]; B3: E9F8FCFFFF JMP #x22569AB0 #<FUNCTION G>

Page 14: bip - business in progressbip - business in progress Heiner Paulsen, Dennis Junker 17. Apr 2018 Heiner Paulsen, Dennis Junker bip - business in progress 17. Apr 2018 1/10 generic DB-access

Before: perf stat baseline/sbcl --load make-host-1.sh

27,054,177,733 branches # 766.426 M/sec

35.313061039 seconds time elapsed

After: perf stat experiment/sbcl --load make-host-1.sh

26,135,644,543 branches # 809.109 M/sec

32.360553825 seconds time elapsed

Did it work?

Page 15: bip - business in progressbip - business in progress Heiner Paulsen, Dennis Junker 17. Apr 2018 Heiner Paulsen, Dennis Junker bip - business in progress 17. Apr 2018 1/10 generic DB-access

Example 2: Precise heap use profiler(defun f (n) (list (make-string n :element-type 'base-char)))

; 6B1: 4D8B5D18 MOV R11, [R13+24]; 6B5: 4D85DB TEST R11, R11; 6B8: EB16 JMP L0; 6BA: 660F1F440000 NOP; 6C0: FF14253800B021 CALL QWORD PTR [#x21B00038] ; ENABLE-SIZED-ALLOC-COUNTER; 6C7: 90 NOP; 6C8: 4885C0 TEST RAX, RAX; 6CB: 0F1F440000 NOP; 6D0: L0

Page 16: bip - business in progressbip - business in progress Heiner Paulsen, Dennis Junker 17. Apr 2018 Heiner Paulsen, Dennis Junker bip - business in progress 17. Apr 2018 1/10 generic DB-access

Run it* (sb-aprof::aprof-run (lambda () (f 15))) % Bytes Count Function 100.0 48 F 66.7 32 1 SIMPLE-BASE-STRING 33.3 16 1 LIST

* (disassemble ’f); 6C0: F049FF8318000000 LOCK INC QWORD PTR [R11+24]; 6C8: F049018320000000 LOCK ADD [R11+32], RAX

Page 17: bip - business in progressbip - business in progress Heiner Paulsen, Dennis Junker 17. Apr 2018 Heiner Paulsen, Dennis Junker bip - business in progress 17. Apr 2018 1/10 generic DB-access

Example 3: ELFinating an executable1. Disassemble everything2. Emit as textual assembly into ‘tempfile.s’3. “cc -o exename tempfile.s $(SBCL_OBJS)”4. “perf record exename && perf report --stdio”

3.35% exename (flet with-recursive-system-lock-thunk in gethash3) 3.24% libc-2.24.so __memset_erms 1.68% exename sb-c::lz-compress 1.26% exename cl:equal

Page 18: bip - business in progressbip - business in progress Heiner Paulsen, Dennis Junker 17. Apr 2018 Heiner Paulsen, Dennis Junker bip - business in progress 17. Apr 2018 1/10 generic DB-access

Learning Kanji with Emacs

Wojciech Gac

[email protected]

April 17, 2018

Wojciech [email protected] Learning Kanji with Emacs April 17, 2018 1 / 10

Page 19: bip - business in progressbip - business in progress Heiner Paulsen, Dennis Junker 17. Apr 2018 Heiner Paulsen, Dennis Junker bip - business in progress 17. Apr 2018 1/10 generic DB-access

Motivation

Japanese writing system

I Hiragana - 46 characters (plus modifiers)

I Katakana - 46 characters (plus modifiers)

I Kanji - 2,000 - 3,000 in common use, 13,108 covered by industrial

standards

Wojciech [email protected] Learning Kanji with Emacs April 17, 2018 2 / 10

Page 20: bip - business in progressbip - business in progress Heiner Paulsen, Dennis Junker 17. Apr 2018 Heiner Paulsen, Dennis Junker bip - business in progress 17. Apr 2018 1/10 generic DB-access

Motivation

Japanese writing system

I Hiragana - 46 characters (plus modifiers)

I Katakana - 46 characters (plus modifiers)

I Kanji - 2,000 - 3,000 in common use, 13,108 covered by industrial

standards

Wojciech [email protected] Learning Kanji with Emacs April 17, 2018 2 / 10

Page 21: bip - business in progressbip - business in progress Heiner Paulsen, Dennis Junker 17. Apr 2018 Heiner Paulsen, Dennis Junker bip - business in progress 17. Apr 2018 1/10 generic DB-access

Motivation

Japanese writing system

I Hiragana

- 46 characters (plus modifiers)

I Katakana - 46 characters (plus modifiers)

I Kanji - 2,000 - 3,000 in common use, 13,108 covered by industrial

standards

Wojciech [email protected] Learning Kanji with Emacs April 17, 2018 2 / 10

Page 22: bip - business in progressbip - business in progress Heiner Paulsen, Dennis Junker 17. Apr 2018 Heiner Paulsen, Dennis Junker bip - business in progress 17. Apr 2018 1/10 generic DB-access

Motivation

Japanese writing system

I Hiragana - 46 characters (plus modifiers)

I Katakana - 46 characters (plus modifiers)

I Kanji - 2,000 - 3,000 in common use, 13,108 covered by industrial

standards

Wojciech [email protected] Learning Kanji with Emacs April 17, 2018 2 / 10

Page 23: bip - business in progressbip - business in progress Heiner Paulsen, Dennis Junker 17. Apr 2018 Heiner Paulsen, Dennis Junker bip - business in progress 17. Apr 2018 1/10 generic DB-access

Motivation

Japanese writing system

I Hiragana - 46 characters (plus modifiers)

I Katakana

- 46 characters (plus modifiers)

I Kanji - 2,000 - 3,000 in common use, 13,108 covered by industrial

standards

Wojciech [email protected] Learning Kanji with Emacs April 17, 2018 2 / 10

Page 24: bip - business in progressbip - business in progress Heiner Paulsen, Dennis Junker 17. Apr 2018 Heiner Paulsen, Dennis Junker bip - business in progress 17. Apr 2018 1/10 generic DB-access

Motivation

Japanese writing system

I Hiragana - 46 characters (plus modifiers)

I Katakana - 46 characters (plus modifiers)

I Kanji - 2,000 - 3,000 in common use, 13,108 covered by industrial

standards

Wojciech [email protected] Learning Kanji with Emacs April 17, 2018 2 / 10

Page 25: bip - business in progressbip - business in progress Heiner Paulsen, Dennis Junker 17. Apr 2018 Heiner Paulsen, Dennis Junker bip - business in progress 17. Apr 2018 1/10 generic DB-access

Motivation

Japanese writing system

I Hiragana - 46 characters (plus modifiers)

I Katakana - 46 characters (plus modifiers)

I Kanji

- 2,000 - 3,000 in common use, 13,108 covered by industrial

standards

Wojciech [email protected] Learning Kanji with Emacs April 17, 2018 2 / 10

Page 26: bip - business in progressbip - business in progress Heiner Paulsen, Dennis Junker 17. Apr 2018 Heiner Paulsen, Dennis Junker bip - business in progress 17. Apr 2018 1/10 generic DB-access

Motivation

Japanese writing system

I Hiragana - 46 characters (plus modifiers)

I Katakana - 46 characters (plus modifiers)

I Kanji - 2,000 - 3,000 in common use,

13,108 covered by industrial

standards

Wojciech [email protected] Learning Kanji with Emacs April 17, 2018 2 / 10

Page 27: bip - business in progressbip - business in progress Heiner Paulsen, Dennis Junker 17. Apr 2018 Heiner Paulsen, Dennis Junker bip - business in progress 17. Apr 2018 1/10 generic DB-access

Motivation

Japanese writing system

I Hiragana - 46 characters (plus modifiers)

I Katakana - 46 characters (plus modifiers)

I Kanji - 2,000 - 3,000 in common use, 13,108 covered by industrial

standards

Wojciech [email protected] Learning Kanji with Emacs April 17, 2018 2 / 10

Page 28: bip - business in progressbip - business in progress Heiner Paulsen, Dennis Junker 17. Apr 2018 Heiner Paulsen, Dennis Junker bip - business in progress 17. Apr 2018 1/10 generic DB-access

Two-fold path of su↵ering

Learning the stroke order of characters

Transcribing Kanji to Hiragana

Wojciech [email protected] Learning Kanji with Emacs April 17, 2018 3 / 10

Page 29: bip - business in progressbip - business in progress Heiner Paulsen, Dennis Junker 17. Apr 2018 Heiner Paulsen, Dennis Junker bip - business in progress 17. Apr 2018 1/10 generic DB-access

Two-fold path of su↵ering

Learning the stroke order of characters

Transcribing Kanji to Hiragana

Wojciech [email protected] Learning Kanji with Emacs April 17, 2018 3 / 10

Page 30: bip - business in progressbip - business in progress Heiner Paulsen, Dennis Junker 17. Apr 2018 Heiner Paulsen, Dennis Junker bip - business in progress 17. Apr 2018 1/10 generic DB-access

Two-fold path of su↵ering

Learning the stroke order of characters

Transcribing Kanji to Hiragana

Wojciech [email protected] Learning Kanji with Emacs April 17, 2018 3 / 10

Page 31: bip - business in progressbip - business in progress Heiner Paulsen, Dennis Junker 17. Apr 2018 Heiner Paulsen, Dennis Junker bip - business in progress 17. Apr 2018 1/10 generic DB-access

Stroke order

Position cursor over a character

Wojciech [email protected] Learning Kanji with Emacs April 17, 2018 4 / 10

Page 32: bip - business in progressbip - business in progress Heiner Paulsen, Dennis Junker 17. Apr 2018 Heiner Paulsen, Dennis Junker bip - business in progress 17. Apr 2018 1/10 generic DB-access

Stroke order

Get a diagram of stroke orders

Wojciech [email protected] Learning Kanji with Emacs April 17, 2018 4 / 10

Page 33: bip - business in progressbip - business in progress Heiner Paulsen, Dennis Junker 17. Apr 2018 Heiner Paulsen, Dennis Junker bip - business in progress 17. Apr 2018 1/10 generic DB-access

Transcription

Mark text containing Kanji

Wojciech [email protected] Learning Kanji with Emacs April 17, 2018 5 / 10

Page 34: bip - business in progressbip - business in progress Heiner Paulsen, Dennis Junker 17. Apr 2018 Heiner Paulsen, Dennis Junker bip - business in progress 17. Apr 2018 1/10 generic DB-access

Transcription

Transcribe it to Hiragana

Wojciech [email protected] Learning Kanji with Emacs April 17, 2018 5 / 10

Page 35: bip - business in progressbip - business in progress Heiner Paulsen, Dennis Junker 17. Apr 2018 Heiner Paulsen, Dennis Junker bip - business in progress 17. Apr 2018 1/10 generic DB-access

Oh yeah. The Lisp thing...

( defun kanj i�mode�stroke�order ( p o i n t )

”Take c h a r a c t e r a t p o i n t and t r y to d i s p l a y i t s

s t r o k e o r d e r . ”

( i n t e r a c t i v e ”d” )

( l e t ( ( char ( cha r�a f t e r p o i n t ) ) )

(km: create�buf fe r�with� image (km: char�to�hex

char ) ) ) )

Wojciech [email protected] Learning Kanji with Emacs April 17, 2018 6 / 10

Page 36: bip - business in progressbip - business in progress Heiner Paulsen, Dennis Junker 17. Apr 2018 Heiner Paulsen, Dennis Junker bip - business in progress 17. Apr 2018 1/10 generic DB-access

Oh yeah. The Lisp thing...

( defun km: create�buf fe r�with� image (name)

” Crea te new b u f f e r w i th r e l e v a n t image and sw i t c h

to i t .

Bu f f e r can be c l o s e d by h i t t i n g ‘ q ‘ ”

( w i th�cu r r en t�bu f f e r ( generate�new�buf fe r name )

( l e t ( ( image ( get�svg� for�kanj i�code name) ) )

( iimage�mode )

( i image�mode�buffer t )

( i n s e r t� image image )

( l oca l� s e t�key ( kbd ”q” ) ’ k i l l� t h i s� b u f f e r )

( sw i t ch� to�bu f f e r ( c u r r e n t�bu f f e r ) ) ) ) )

Wojciech [email protected] Learning Kanji with Emacs April 17, 2018 7 / 10

Page 37: bip - business in progressbip - business in progress Heiner Paulsen, Dennis Junker 17. Apr 2018 Heiner Paulsen, Dennis Junker bip - business in progress 17. Apr 2018 1/10 generic DB-access

Oh yeah. The Lisp thing...

( defun get�svg� for�kanj i�code ( code )

”Return an image o b j e c t f o r the Unicode code

p r o v i d ed . ”

( l e t ( ( image�path ( concat ( expand� f i le�name code ⇤kanj i�svg�path ⇤) ” . svg ” ) ) )

( create� image image�path ) ) )

Wojciech [email protected] Learning Kanji with Emacs April 17, 2018 8 / 10

Page 38: bip - business in progressbip - business in progress Heiner Paulsen, Dennis Junker 17. Apr 2018 Heiner Paulsen, Dennis Junker bip - business in progress 17. Apr 2018 1/10 generic DB-access

Shoulders of Giants

KanjiVG (https://kanjivg.tagaini.net/)

Kakasi (http://kakasi.namazu.org/)

Wojciech [email protected] Learning Kanji with Emacs April 17, 2018 9 / 10

Page 39: bip - business in progressbip - business in progress Heiner Paulsen, Dennis Junker 17. Apr 2018 Heiner Paulsen, Dennis Junker bip - business in progress 17. Apr 2018 1/10 generic DB-access

Shoulders of Giants

KanjiVG (https://kanjivg.tagaini.net/)

Kakasi (http://kakasi.namazu.org/)

Wojciech [email protected] Learning Kanji with Emacs April 17, 2018 9 / 10

Page 40: bip - business in progressbip - business in progress Heiner Paulsen, Dennis Junker 17. Apr 2018 Heiner Paulsen, Dennis Junker bip - business in progress 17. Apr 2018 1/10 generic DB-access

Shoulders of Giants

KanjiVG (https://kanjivg.tagaini.net/)

Kakasi (http://kakasi.namazu.org/)

Wojciech [email protected] Learning Kanji with Emacs April 17, 2018 9 / 10

Page 41: bip - business in progressbip - business in progress Heiner Paulsen, Dennis Junker 17. Apr 2018 Heiner Paulsen, Dennis Junker bip - business in progress 17. Apr 2018 1/10 generic DB-access

Thank you

GitHub - https://github.com/wsgac/kanji-mode

MELPA - kanji-mode

Wojciech [email protected] Learning Kanji with Emacs April 17, 2018 10 / 10

Page 42: bip - business in progressbip - business in progress Heiner Paulsen, Dennis Junker 17. Apr 2018 Heiner Paulsen, Dennis Junker bip - business in progress 17. Apr 2018 1/10 generic DB-access

I needed a tool for defining and describingprotocols and test cases

Page 43: bip - business in progressbip - business in progress Heiner Paulsen, Dennis Junker 17. Apr 2018 Heiner Paulsen, Dennis Junker bip - business in progress 17. Apr 2018 1/10 generic DB-access

I needed a tool for defining and describingprotocols and test cases

Page 44: bip - business in progressbip - business in progress Heiner Paulsen, Dennis Junker 17. Apr 2018 Heiner Paulsen, Dennis Junker bip - business in progress 17. Apr 2018 1/10 generic DB-access

I needed a tool for defining and describingprotocols and test cases

Page 45: bip - business in progressbip - business in progress Heiner Paulsen, Dennis Junker 17. Apr 2018 Heiner Paulsen, Dennis Junker bip - business in progress 17. Apr 2018 1/10 generic DB-access

I needed a tool for defining and describingprotocols and test cases

Next year

Next year

Page 46: bip - business in progressbip - business in progress Heiner Paulsen, Dennis Junker 17. Apr 2018 Heiner Paulsen, Dennis Junker bip - business in progress 17. Apr 2018 1/10 generic DB-access

Protocols

„Don’t get so obsessed over protocols.”

Page 47: bip - business in progressbip - business in progress Heiner Paulsen, Dennis Junker 17. Apr 2018 Heiner Paulsen, Dennis Junker bip - business in progress 17. Apr 2018 1/10 generic DB-access

Protocols

„Don’t get so obsessed over protocols.”

~ Robert Strandh, 16th April 2018

Page 48: bip - business in progressbip - business in progress Heiner Paulsen, Dennis Junker 17. Apr 2018 Heiner Paulsen, Dennis Junker bip - business in progress 17. Apr 2018 1/10 generic DB-access

Protocols

● Protocol: a set of bindings between operations and data types

Page 49: bip - business in progressbip - business in progress Heiner Paulsen, Dennis Junker 17. Apr 2018 Heiner Paulsen, Dennis Junker bip - business in progress 17. Apr 2018 1/10 generic DB-access

Protocols

● Protocol: a set of bindings between operations and data types

● Operations: generic functions, macros, ...

Page 50: bip - business in progressbip - business in progress Heiner Paulsen, Dennis Junker 17. Apr 2018 Heiner Paulsen, Dennis Junker bip - business in progress 17. Apr 2018 1/10 generic DB-access

Protocols

● Protocol: a set of bindings between operations and data types

● Operations: generic functions, macros, ...

● Data types: classes, condition types, ...

Page 51: bip - business in progressbip - business in progress Heiner Paulsen, Dennis Junker 17. Apr 2018 Heiner Paulsen, Dennis Junker bip - business in progress 17. Apr 2018 1/10 generic DB-access

Protocols

● Protocol: a set of bindings between operations and data types

● Operations: generic functions, macros, ...

● Data types: classes, condition types, ...

● See http://metamodular.com/protocol.pdf

Page 52: bip - business in progressbip - business in progress Heiner Paulsen, Dennis Junker 17. Apr 2018 Heiner Paulsen, Dennis Junker bip - business in progress 17. Apr 2018 1/10 generic DB-access

Example protocol

Page 53: bip - business in progressbip - business in progress Heiner Paulsen, Dennis Junker 17. Apr 2018 Heiner Paulsen, Dennis Junker bip - business in progress 17. Apr 2018 1/10 generic DB-access

Example protocol

fuelable

Page 54: bip - business in progressbip - business in progress Heiner Paulsen, Dennis Junker 17. Apr 2018 Heiner Paulsen, Dennis Junker bip - business in progress 17. Apr 2018 1/10 generic DB-access

Example protocol

fuelable

Page 55: bip - business in progressbip - business in progress Heiner Paulsen, Dennis Junker 17. Apr 2018 Heiner Paulsen, Dennis Junker bip - business in progress 17. Apr 2018 1/10 generic DB-access

Example protocol

fuelable

Page 56: bip - business in progressbip - business in progress Heiner Paulsen, Dennis Junker 17. Apr 2018 Heiner Paulsen, Dennis Junker bip - business in progress 17. Apr 2018 1/10 generic DB-access

Example protocol

fuelable

Page 57: bip - business in progressbip - business in progress Heiner Paulsen, Dennis Junker 17. Apr 2018 Heiner Paulsen, Dennis Junker bip - business in progress 17. Apr 2018 1/10 generic DB-access

Example protocol

● (fuel fuelable)

● (setf (fuel fuelable) new-value)

fuelable

Page 58: bip - business in progressbip - business in progress Heiner Paulsen, Dennis Junker 17. Apr 2018 Heiner Paulsen, Dennis Junker bip - business in progress 17. Apr 2018 1/10 generic DB-access

Example protocol

● (fuel fuelable)

● (setf (fuel fuelable) new-value)

fuelable

(define-protocol fuelable () (:function fuel (object)) (:function (setf fuel) (new-value object)))

Page 59: bip - business in progressbip - business in progress Heiner Paulsen, Dennis Junker 17. Apr 2018 Heiner Paulsen, Dennis Junker bip - business in progress 17. Apr 2018 1/10 generic DB-access

Example protocol

● (fuel fuelable)

● (setf (fuel fuelable) new-value)

fuelable

(define-protocol fuelable () (:function fuel (object)) (:function (setf fuel) (new-value object)))

(DEFGENERIC FUEL (OBJECT))(DEFGENERIC (SETF FUEL) (NEW-VALUE OBJECT))

Page 60: bip - business in progressbip - business in progress Heiner Paulsen, Dennis Junker 17. Apr 2018 Heiner Paulsen, Dennis Junker bip - business in progress 17. Apr 2018 1/10 generic DB-access

Example protocol

● (fuel fuelable)

● (setf (fuel fuelable) new-value)

fuelable

(define-protocol fuelable () (:function fuel ((object fuelable)) real) (:function (setf fuel) ((new-value real) (object fuelable)) real))

(DEFGENERIC FUEL (OBJECT))(DECLAIM (FTYPE (FUNCTION (FUELABLE) REAL) FUEL))(DEFGENERIC (SETF FUEL) (NEW-VALUE OBJECT))(DECLAIM (FTYPE (FUNCTION (REAL FUELABLE) REAL) (SETF FUEL)))

Page 61: bip - business in progressbip - business in progress Heiner Paulsen, Dennis Junker 17. Apr 2018 Heiner Paulsen, Dennis Junker bip - business in progress 17. Apr 2018 1/10 generic DB-access

Example protocol

● (fuel fuelable)

● (setf (fuel fuelable) new-value)

fuelable

(define-protocol fuelable (:export (fuel)) (:function fuel ((object fuelable)) real) (:function (setf fuel) ((new-value real) (object fuelable)) real))

(DEFGENERIC FUEL (OBJECT))(DECLAIM (FTYPE (FUNCTION (FUELABLE) REAL) FUEL))(DEFGENERIC (SETF FUEL) (NEW-VALUE OBJECT))(DECLAIM (FTYPE (FUNCTION (REAL FUELABLE) REAL) (SETF FUEL)))(EXPORT ‘(FUEL))

Page 62: bip - business in progressbip - business in progress Heiner Paulsen, Dennis Junker 17. Apr 2018 Heiner Paulsen, Dennis Junker bip - business in progress 17. Apr 2018 1/10 generic DB-access

Example protocol

● (fuel fuelable)

● (setf (fuel fuelable) new-value)

fuelable

(define-protocol fuelable (:export (fuel) :documentation „Describes objects which require some sort of fuel in order to function.

Fuel is understood as a numerical value.”) (:function fuel ((object fuelable)) real) „Retrieves the amount of fuel in the fuelable.” (:function (setf fuel) ((new-value real) (object fuelable)) real) „Sets the amount of fuel in the fuelable.”)

Page 63: bip - business in progressbip - business in progress Heiner Paulsen, Dennis Junker 17. Apr 2018 Heiner Paulsen, Dennis Junker bip - business in progress 17. Apr 2018 1/10 generic DB-access

Example protocol

● (fuel fuelable)

● (setf (fuel fuelable) new-value)

fuelable

(define-protocol fuelable (:export (fuel) :documentation „Describes objects which require some sort of fuel in order to function.

Fuel is understood as a numerical value.”) (:function fuel ((object fuelable)) real) „Retrieves the amount of fuel in the fuelable.” (:function (setf fuel) ((new-value real) (object fuelable)) real) „Sets the amount of fuel in the fuelable.”)

(find-protocol ‘fuelable);; => #<PROTOCOL FUELABLE (2 elements)>

Page 64: bip - business in progressbip - business in progress Heiner Paulsen, Dennis Junker 17. Apr 2018 Heiner Paulsen, Dennis Junker bip - business in progress 17. Apr 2018 1/10 generic DB-access

Inheritance

fuelable

Page 65: bip - business in progressbip - business in progress Heiner Paulsen, Dennis Junker 17. Apr 2018 Heiner Paulsen, Dennis Junker bip - business in progress 17. Apr 2018 1/10 generic DB-access

Inheritance

fuelable wheeled

automobile

Page 66: bip - business in progressbip - business in progress Heiner Paulsen, Dennis Junker 17. Apr 2018 Heiner Paulsen, Dennis Junker bip - business in progress 17. Apr 2018 1/10 generic DB-access

Inheritance

fuelable wheeled

automobile

Page 67: bip - business in progressbip - business in progress Heiner Paulsen, Dennis Junker 17. Apr 2018 Heiner Paulsen, Dennis Junker bip - business in progress 17. Apr 2018 1/10 generic DB-access

Future work

PROTEST is a work in progress

Page 68: bip - business in progressbip - business in progress Heiner Paulsen, Dennis Junker 17. Apr 2018 Heiner Paulsen, Dennis Junker bip - business in progress 17. Apr 2018 1/10 generic DB-access

Future work

PROTEST is a work in progress

● Does class FOO participate in protocol BAR?

Page 69: bip - business in progressbip - business in progress Heiner Paulsen, Dennis Junker 17. Apr 2018 Heiner Paulsen, Dennis Junker bip - business in progress 17. Apr 2018 1/10 generic DB-access

Future work

PROTEST is a work in progress

● Does class FOO participate in protocol BAR?

● How does class FOO participate in protocol BAR?

Page 70: bip - business in progressbip - business in progress Heiner Paulsen, Dennis Junker 17. Apr 2018 Heiner Paulsen, Dennis Junker bip - business in progress 17. Apr 2018 1/10 generic DB-access

Future work

PROTEST is a work in progress

● Does class FOO participate in protocol BAR?

● How does class FOO participate in protocol BAR?

● Output HTML/TeX – via CCLDoc

Page 71: bip - business in progressbip - business in progress Heiner Paulsen, Dennis Junker 17. Apr 2018 Heiner Paulsen, Dennis Junker bip - business in progress 17. Apr 2018 1/10 generic DB-access

Future work

PROTEST is a work in progress

● Does class FOO participate in protocol BAR?

● How does class FOO participate in protocol BAR?

● Output HTML/TeX – via CCLDoc

● Broaden the documentation

Page 72: bip - business in progressbip - business in progress Heiner Paulsen, Dennis Junker 17. Apr 2018 Heiner Paulsen, Dennis Junker bip - business in progress 17. Apr 2018 1/10 generic DB-access

Future work

PROTEST is a work in progress

● Does class FOO participate in protocol BAR?

● How does class FOO participate in protocol BAR?

● Output HTML/TeX – via CCLDoc

● Broaden the documentation

● Write a paper

Page 73: bip - business in progressbip - business in progress Heiner Paulsen, Dennis Junker 17. Apr 2018 Heiner Paulsen, Dennis Junker bip - business in progress 17. Apr 2018 1/10 generic DB-access

Future work

PROTEST is a work in progress

● Does class FOO participate in protocol BAR?

● How does class FOO participate in protocol BAR?

● Output HTML/TeX – via CCLDoc

● Broaden the documentation

● Write a paper

● Check if we have any time for questions

Page 74: bip - business in progressbip - business in progress Heiner Paulsen, Dennis Junker 17. Apr 2018 Heiner Paulsen, Dennis Junker bip - business in progress 17. Apr 2018 1/10 generic DB-access

Reddit 1.0(and some table flips)

Page 75: bip - business in progressbip - business in progress Heiner Paulsen, Dennis Junker 17. Apr 2018 Heiner Paulsen, Dennis Junker bip - business in progress 17. Apr 2018 1/10 generic DB-access
Page 76: bip - business in progressbip - business in progress Heiner Paulsen, Dennis Junker 17. Apr 2018 Heiner Paulsen, Dennis Junker bip - business in progress 17. Apr 2018 1/10 generic DB-access
Page 77: bip - business in progressbip - business in progress Heiner Paulsen, Dennis Junker 17. Apr 2018 Heiner Paulsen, Dennis Junker bip - business in progress 17. Apr 2018 1/10 generic DB-access
Page 78: bip - business in progressbip - business in progress Heiner Paulsen, Dennis Junker 17. Apr 2018 Heiner Paulsen, Dennis Junker bip - business in progress 17. Apr 2018 1/10 generic DB-access

● CMUCL-specific code

Page 79: bip - business in progressbip - business in progress Heiner Paulsen, Dennis Junker 17. Apr 2018 Heiner Paulsen, Dennis Junker bip - business in progress 17. Apr 2018 1/10 generic DB-access

● CMUCL-specific code● No documentation or tests

Page 80: bip - business in progressbip - business in progress Heiner Paulsen, Dennis Junker 17. Apr 2018 Heiner Paulsen, Dennis Junker bip - business in progress 17. Apr 2018 1/10 generic DB-access

● CMUCL-specific code● No documentation or tests● Rough code quality

Page 81: bip - business in progressbip - business in progress Heiner Paulsen, Dennis Junker 17. Apr 2018 Heiner Paulsen, Dennis Junker bip - business in progress 17. Apr 2018 1/10 generic DB-access

● CMUCL-specific code● No documentation or tests● Rough code quality● Missing database schema

Page 82: bip - business in progressbip - business in progress Heiner Paulsen, Dennis Junker 17. Apr 2018 Heiner Paulsen, Dennis Junker bip - business in progress 17. Apr 2018 1/10 generic DB-access

● CMUCL-specific code● No documentation or tests● Rough code quality● Missing database schema● Plaintext passwords in database

Page 83: bip - business in progressbip - business in progress Heiner Paulsen, Dennis Junker 17. Apr 2018 Heiner Paulsen, Dennis Junker bip - business in progress 17. Apr 2018 1/10 generic DB-access

(�ಠ⇥ಠ) ┻━┻�⇤

Page 84: bip - business in progressbip - business in progress Heiner Paulsen, Dennis Junker 17. Apr 2018 Heiner Paulsen, Dennis Junker bip - business in progress 17. Apr 2018 1/10 generic DB-access
Page 85: bip - business in progressbip - business in progress Heiner Paulsen, Dennis Junker 17. Apr 2018 Heiner Paulsen, Dennis Junker bip - business in progress 17. Apr 2018 1/10 generic DB-access

● Somewhat understandable code

Page 86: bip - business in progressbip - business in progress Heiner Paulsen, Dennis Junker 17. Apr 2018 Heiner Paulsen, Dennis Junker bip - business in progress 17. Apr 2018 1/10 generic DB-access

● Somewhat understandable code● Very few calls to CMUCL

primitives (sockets and threads)

Page 87: bip - business in progressbip - business in progress Heiner Paulsen, Dennis Junker 17. Apr 2018 Heiner Paulsen, Dennis Junker bip - business in progress 17. Apr 2018 1/10 generic DB-access

● Somewhat understandable code● Very few calls to CMUCL

primitives (sockets and threads)● It worked!

Page 88: bip - business in progressbip - business in progress Heiner Paulsen, Dennis Junker 17. Apr 2018 Heiner Paulsen, Dennis Junker bip - business in progress 17. Apr 2018 1/10 generic DB-access

● Somewhat understandable code● Very few calls to CMUCL

primitives (sockets and threads)● It worked!● It worked well enough to boost

Reddit into its current size

Page 89: bip - business in progressbip - business in progress Heiner Paulsen, Dennis Junker 17. Apr 2018 Heiner Paulsen, Dennis Junker bip - business in progress 17. Apr 2018 1/10 generic DB-access

┬─┬�( º _ º�)

Page 90: bip - business in progressbip - business in progress Heiner Paulsen, Dennis Junker 17. Apr 2018 Heiner Paulsen, Dennis Junker bip - business in progress 17. Apr 2018 1/10 generic DB-access
Page 91: bip - business in progressbip - business in progress Heiner Paulsen, Dennis Junker 17. Apr 2018 Heiner Paulsen, Dennis Junker bip - business in progress 17. Apr 2018 1/10 generic DB-access
Page 92: bip - business in progressbip - business in progress Heiner Paulsen, Dennis Junker 17. Apr 2018 Heiner Paulsen, Dennis Junker bip - business in progress 17. Apr 2018 1/10 generic DB-access
Page 93: bip - business in progressbip - business in progress Heiner Paulsen, Dennis Junker 17. Apr 2018 Heiner Paulsen, Dennis Junker bip - business in progress 17. Apr 2018 1/10 generic DB-access

*actually not that easy

Page 94: bip - business in progressbip - business in progress Heiner Paulsen, Dennis Junker 17. Apr 2018 Heiner Paulsen, Dennis Junker bip - business in progress 17. Apr 2018 1/10 generic DB-access
Page 95: bip - business in progressbip - business in progress Heiner Paulsen, Dennis Junker 17. Apr 2018 Heiner Paulsen, Dennis Junker bip - business in progress 17. Apr 2018 1/10 generic DB-access
Page 96: bip - business in progressbip - business in progress Heiner Paulsen, Dennis Junker 17. Apr 2018 Heiner Paulsen, Dennis Junker bip - business in progress 17. Apr 2018 1/10 generic DB-access
Page 97: bip - business in progressbip - business in progress Heiner Paulsen, Dennis Junker 17. Apr 2018 Heiner Paulsen, Dennis Junker bip - business in progress 17. Apr 2018 1/10 generic DB-access
Page 98: bip - business in progressbip - business in progress Heiner Paulsen, Dennis Junker 17. Apr 2018 Heiner Paulsen, Dennis Junker bip - business in progress 17. Apr 2018 1/10 generic DB-access
Page 99: bip - business in progressbip - business in progress Heiner Paulsen, Dennis Junker 17. Apr 2018 Heiner Paulsen, Dennis Junker bip - business in progress 17. Apr 2018 1/10 generic DB-access
Page 100: bip - business in progressbip - business in progress Heiner Paulsen, Dennis Junker 17. Apr 2018 Heiner Paulsen, Dennis Junker bip - business in progress 17. Apr 2018 1/10 generic DB-access

┻━┻ ⌅ ¯\(⇧)/¯ ┻━┻⌅

Page 101: bip - business in progressbip - business in progress Heiner Paulsen, Dennis Junker 17. Apr 2018 Heiner Paulsen, Dennis Junker bip - business in progress 17. Apr 2018 1/10 generic DB-access

FIN


Recommended