From a5679641aa0eb9e872605b70c263c3e950132647 Mon Sep 17 00:00:00 2001 From: Franck Cuny Date: Thu, 27 Oct 2022 19:24:57 -0700 Subject: ref(users/fcuny): and just like that ... --- users/fcuny/default.nix | 5 - users/fcuny/exp/buckit/.github/workflows/go.yml | 35 ------ users/fcuny/exp/buckit/.gitignore | 1 - users/fcuny/exp/buckit/LICENSE.txt | 20 ---- users/fcuny/exp/buckit/README.org | 57 --------- users/fcuny/exp/buckit/add.go | 16 --- users/fcuny/exp/buckit/delete.go | 27 ----- users/fcuny/exp/buckit/fetch.go | 16 --- users/fcuny/exp/buckit/go.mod | 5 - users/fcuny/exp/buckit/go.sum | 13 -- users/fcuny/exp/buckit/info.go | 16 --- users/fcuny/exp/buckit/list.go | 15 --- users/fcuny/exp/buckit/main.go | 21 ---- users/fcuny/exp/monkey/Makefile | 4 - users/fcuny/exp/monkey/README.org | 3 - users/fcuny/exp/monkey/cmd/repl/main.go | 12 -- users/fcuny/exp/monkey/go.mod | 3 - users/fcuny/exp/monkey/pkg/lexer/lexer.go | 152 ------------------------ users/fcuny/exp/monkey/pkg/lexer/lexer_test.go | 125 ------------------- users/fcuny/exp/monkey/pkg/repl/repl.go | 30 ----- users/fcuny/exp/monkey/pkg/token/token.go | 71 ----------- users/fcuny/resume/default.nix | 32 ----- users/fcuny/resume/readme.org | 6 - users/fcuny/resume/resume.org | 40 ------- users/fcuny/resume/styles/resume.css | 72 ----------- 25 files changed, 797 deletions(-) delete mode 100644 users/fcuny/default.nix delete mode 100644 users/fcuny/exp/buckit/.github/workflows/go.yml delete mode 100644 users/fcuny/exp/buckit/.gitignore delete mode 100644 users/fcuny/exp/buckit/LICENSE.txt delete mode 100644 users/fcuny/exp/buckit/README.org delete mode 100644 users/fcuny/exp/buckit/add.go delete mode 100644 users/fcuny/exp/buckit/delete.go delete mode 100644 users/fcuny/exp/buckit/fetch.go delete mode 100644 users/fcuny/exp/buckit/go.mod delete mode 100644 users/fcuny/exp/buckit/go.sum delete mode 100644 users/fcuny/exp/buckit/info.go delete mode 100644 users/fcuny/exp/buckit/list.go delete mode 100644 users/fcuny/exp/buckit/main.go delete mode 100644 users/fcuny/exp/monkey/Makefile delete mode 100644 users/fcuny/exp/monkey/README.org delete mode 100644 users/fcuny/exp/monkey/cmd/repl/main.go delete mode 100644 users/fcuny/exp/monkey/go.mod delete mode 100644 users/fcuny/exp/monkey/pkg/lexer/lexer.go delete mode 100644 users/fcuny/exp/monkey/pkg/lexer/lexer_test.go delete mode 100644 users/fcuny/exp/monkey/pkg/repl/repl.go delete mode 100644 users/fcuny/exp/monkey/pkg/token/token.go delete mode 100644 users/fcuny/resume/default.nix delete mode 100644 users/fcuny/resume/readme.org delete mode 100644 users/fcuny/resume/resume.org delete mode 100644 users/fcuny/resume/styles/resume.css (limited to 'users/fcuny') diff --git a/users/fcuny/default.nix b/users/fcuny/default.nix deleted file mode 100644 index 05d1444..0000000 --- a/users/fcuny/default.nix +++ /dev/null @@ -1,5 +0,0 @@ -{ pkgs }: - -pkgs.lib.makeScope pkgs.newScope (pkgs: { - resume = pkgs.callPackage ./resume { }; -}) diff --git a/users/fcuny/exp/buckit/.github/workflows/go.yml b/users/fcuny/exp/buckit/.github/workflows/go.yml deleted file mode 100644 index cda28c1..0000000 --- a/users/fcuny/exp/buckit/.github/workflows/go.yml +++ /dev/null @@ -1,35 +0,0 @@ -name: go - -on: - push: - branches: - - main - pull_request: - branches: - - main - -jobs: - build: - name: Build - runs-on: ubuntu-latest - steps: - - name: Set up Go 1.x - uses: actions/setup-go@v2 - with: - go-version: ^1.16 - id: go - - - name: Check out code into the Go module directory - uses: actions/checkout@v2 - - - name: Go fmt - run: go fmt ./... - - - name: Go vet - run: go vet ./... - - - name: Test - run: go test -race -v ./... - - - name: Build - run: go build -v ./... diff --git a/users/fcuny/exp/buckit/.gitignore b/users/fcuny/exp/buckit/.gitignore deleted file mode 100644 index 9b8d4cd..0000000 --- a/users/fcuny/exp/buckit/.gitignore +++ /dev/null @@ -1 +0,0 @@ -/buckit diff --git a/users/fcuny/exp/buckit/LICENSE.txt b/users/fcuny/exp/buckit/LICENSE.txt deleted file mode 100644 index e614d87..0000000 --- a/users/fcuny/exp/buckit/LICENSE.txt +++ /dev/null @@ -1,20 +0,0 @@ -Copyright (c) 2021 Franck Cuny - -Permission is hereby granted, free of charge, to any person obtaining -a copy of this software and associated documentation files (the -"Software"), to deal in the Software without restriction, including -without limitation the rights to use, copy, modify, merge, publish, -distribute, sublicense, and/or sell copies of the Software, and to -permit persons to whom the Software is furnished to do so, subject to -the following conditions: - -The above copyright notice and this permission notice shall be -included in all copies or substantial portions of the Software. - -THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, -EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF -MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND -NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE -LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION -OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION -WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE. diff --git a/users/fcuny/exp/buckit/README.org b/users/fcuny/exp/buckit/README.org deleted file mode 100644 index 5b8caa1..0000000 --- a/users/fcuny/exp/buckit/README.org +++ /dev/null @@ -1,57 +0,0 @@ -#+TITLE: buckit - -~buckit~ is a tool to add files to a GCS bucket. - -* Store -=buckit= is a CLI to upload files to a GCS bucket. A *package* belongs to a *bucket*. A bucket can have multiple *packages*. Each package can have multiple *versions*. - -When a version of a file is added to a bucket, a record is created in the index. - -A record is composed of the following information: -- the version of the file -- the name of the file -- the checksum of the version -- the path in the GCS bucket -- the user who uploaded the version -- the timestamp of when the uploaded happened -- the state of the file - -GCS' ACLs are used to change the visibility of the object in the bucket. - -The index is a single JSON file stored at the root of the bucket. The keys in the index are the packages. Packages contain a list of versions, in order (the most recent version is the last entry in the list). - -A lock is used for both read and write of the file. -** Life cycle of files -*** Deletion -By default, when a file is uploaded, we mark the state has *present*. - -Versions can be deleted. This is a soft-delete: -- the state is changed to *tombstone* -- the expiration date for blob is set 30 days in the future - -When a file is marked for deletion, it can not be fetched anymore. The state can be changed to be mark as present. In which case the expiration date is removed on the blob. -* CLI -** add -#+begin_src sh -buckit add -#+end_src -** list -#+begin_src sh -buckit list -#+end_src -** fetch -#+begin_src sh -buckit fetch -#+end_src -** info -#+begin_src sh -buckit info -#+end_src -** delete -#+begin_src sh -buckit delete -#+end_src -** undelete -#+begin_src sh -bucket undelete -#+end_src diff --git a/users/fcuny/exp/buckit/add.go b/users/fcuny/exp/buckit/add.go deleted file mode 100644 index c29476e..0000000 --- a/users/fcuny/exp/buckit/add.go +++ /dev/null @@ -1,16 +0,0 @@ -package main - -import ( - "github.com/urfave/cli/v2" -) - -var addCmd = &cli.Command{ - Name: "add", - Usage: "Add a package", - Action: addAction, - ArgsUsage: " ", -} - -func addAction(ctx *cli.Context) error { - return nil -} diff --git a/users/fcuny/exp/buckit/delete.go b/users/fcuny/exp/buckit/delete.go deleted file mode 100644 index 7bd2ab2..0000000 --- a/users/fcuny/exp/buckit/delete.go +++ /dev/null @@ -1,27 +0,0 @@ -package main - -import ( - "github.com/urfave/cli/v2" -) - -var deleteCmd = &cli.Command{ - Name: "delete", - Usage: "Delete a version of a package", - Action: deleteAction, - ArgsUsage: " ", -} - -var undeleteCmd = &cli.Command{ - Name: "undelete", - Usage: "Un-delete a version of a package", - Action: undeleteAction, - ArgsUsage: " ", -} - -func deleteAction(ctx *cli.Context) error { - return nil -} - -func undeleteAction(ctx *cli.Context) error { - return nil -} diff --git a/users/fcuny/exp/buckit/fetch.go b/users/fcuny/exp/buckit/fetch.go deleted file mode 100644 index e4204ae..0000000 --- a/users/fcuny/exp/buckit/fetch.go +++ /dev/null @@ -1,16 +0,0 @@ -package main - -import ( - "github.com/urfave/cli/v2" -) - -var fetchCmd = &cli.Command{ - Name: "fetch", - Usage: "Fetch a version of a package", - Action: fetchAction, - ArgsUsage: " ", -} - -func fetchAction(ctx *cli.Context) error { - return nil -} diff --git a/users/fcuny/exp/buckit/go.mod b/users/fcuny/exp/buckit/go.mod deleted file mode 100644 index d0b3c3e..0000000 --- a/users/fcuny/exp/buckit/go.mod +++ /dev/null @@ -1,5 +0,0 @@ -module github.com/fcuny/buckit - -go 1.16 - -require github.com/urfave/cli/v2 v2.3.0 diff --git a/users/fcuny/exp/buckit/go.sum b/users/fcuny/exp/buckit/go.sum deleted file mode 100644 index f8207d7..0000000 --- a/users/fcuny/exp/buckit/go.sum +++ /dev/null @@ -1,13 +0,0 @@ -github.com/BurntSushi/toml v0.3.1/go.mod h1:xHWCNGjB5oqiDr8zfno3MHue2Ht5sIBksp03qcyfWMU= -github.com/cpuguy83/go-md2man/v2 v2.0.0-20190314233015-f79a8a8ca69d h1:U+s90UTSYgptZMwQh2aRr3LuazLJIa+Pg3Kc1ylSYVY= -github.com/cpuguy83/go-md2man/v2 v2.0.0-20190314233015-f79a8a8ca69d/go.mod h1:maD7wRr/U5Z6m/iR4s+kqSMx2CaBsrgA7czyZG/E6dU= -github.com/pmezard/go-difflib v1.0.0 h1:4DBwDE0NGyQoBHbLQYPwSUPoCMWR5BEzIk/f1lZbAQM= -github.com/pmezard/go-difflib v1.0.0/go.mod h1:iKH77koFhYxTK1pcRnkKkqfTogsbg7gZNVY4sRDYZ/4= -github.com/russross/blackfriday/v2 v2.0.1 h1:lPqVAte+HuHNfhJ/0LC98ESWRz8afy9tM/0RK8m9o+Q= -github.com/russross/blackfriday/v2 v2.0.1/go.mod h1:+Rmxgy9KzJVeS9/2gXHxylqXiyQDYRxCVz55jmeOWTM= -github.com/shurcooL/sanitized_anchor_name v1.0.0 h1:PdmoCO6wvbs+7yrJyMORt4/BmY5IYyJwS/kOiWx8mHo= -github.com/shurcooL/sanitized_anchor_name v1.0.0/go.mod h1:1NzhyTcUVG4SuEtjjoZeVRXNmyL/1OwPU0+IJeTBvfc= -github.com/urfave/cli/v2 v2.3.0 h1:qph92Y649prgesehzOrQjdWyxFOp/QVM+6imKHad91M= -github.com/urfave/cli/v2 v2.3.0/go.mod h1:LJmUH05zAU44vOAcrfzZQKsZbVcdbOG8rtL3/XcUArI= -gopkg.in/check.v1 v0.0.0-20161208181325-20d25e280405/go.mod h1:Co6ibVJAznAaIkqp8huTwlJQCZ016jof/cbN4VW5Yz0= -gopkg.in/yaml.v2 v2.2.3/go.mod h1:hI93XBmqTisBFMUTm0b8Fm+jr3Dg1NNxqwp+5A1VGuI= diff --git a/users/fcuny/exp/buckit/info.go b/users/fcuny/exp/buckit/info.go deleted file mode 100644 index f8ad448..0000000 --- a/users/fcuny/exp/buckit/info.go +++ /dev/null @@ -1,16 +0,0 @@ -package main - -import ( - "github.com/urfave/cli/v2" -) - -var infoCmd = &cli.Command{ - Name: "info", - Usage: "Get information about a version of a package", - Action: infoAction, - ArgsUsage: " ", -} - -func infoAction(ctx *cli.Context) error { - return nil -} diff --git a/users/fcuny/exp/buckit/list.go b/users/fcuny/exp/buckit/list.go deleted file mode 100644 index 1c080ab..0000000 --- a/users/fcuny/exp/buckit/list.go +++ /dev/null @@ -1,15 +0,0 @@ -package main - -import ( - "github.com/urfave/cli/v2" -) - -var listCmd = &cli.Command{ - Name: "list", - Usage: "List packages", - Action: listAction, -} - -func listAction(ctx *cli.Context) error { - return nil -} diff --git a/users/fcuny/exp/buckit/main.go b/users/fcuny/exp/buckit/main.go deleted file mode 100644 index 2350264..0000000 --- a/users/fcuny/exp/buckit/main.go +++ /dev/null @@ -1,21 +0,0 @@ -package main - -import ( - "os" - - "github.com/urfave/cli/v2" -) - -func main() { - app := cli.NewApp() - app.Name = "buckit" - app.Commands = []*cli.Command{ - addCmd, - listCmd, - fetchCmd, - infoCmd, - deleteCmd, - undeleteCmd, - } - app.Run(os.Args) -} diff --git a/users/fcuny/exp/monkey/Makefile b/users/fcuny/exp/monkey/Makefile deleted file mode 100644 index 61168f3..0000000 --- a/users/fcuny/exp/monkey/Makefile +++ /dev/null @@ -1,4 +0,0 @@ -test: - go test -v ./... - -.phony: test diff --git a/users/fcuny/exp/monkey/README.org b/users/fcuny/exp/monkey/README.org deleted file mode 100644 index d968f4c..0000000 --- a/users/fcuny/exp/monkey/README.org +++ /dev/null @@ -1,3 +0,0 @@ -#+TITLE: monkey - -Implementation of https://interpreterbook.com/ diff --git a/users/fcuny/exp/monkey/cmd/repl/main.go b/users/fcuny/exp/monkey/cmd/repl/main.go deleted file mode 100644 index 46b865c..0000000 --- a/users/fcuny/exp/monkey/cmd/repl/main.go +++ /dev/null @@ -1,12 +0,0 @@ -package main - -import ( - "fmt" - "monkey/pkg/repl" - "os" -) - -func main() { - fmt.Printf("Welcome to monkey's REPL.") - repl.Start(os.Stdin, os.Stdout) -} diff --git a/users/fcuny/exp/monkey/go.mod b/users/fcuny/exp/monkey/go.mod deleted file mode 100644 index 34c713d..0000000 --- a/users/fcuny/exp/monkey/go.mod +++ /dev/null @@ -1,3 +0,0 @@ -module monkey - -go 1.12 diff --git a/users/fcuny/exp/monkey/pkg/lexer/lexer.go b/users/fcuny/exp/monkey/pkg/lexer/lexer.go deleted file mode 100644 index 3e98cf0..0000000 --- a/users/fcuny/exp/monkey/pkg/lexer/lexer.go +++ /dev/null @@ -1,152 +0,0 @@ -// Package lexer provides a lexer to the monkey language. -package lexer - -import "monkey/pkg/token" - -// Lexer represents the lexer -type Lexer struct { - input string - // current position in input - position int - // current reading position in input (after a char) - readPosition int - // current character under examination - ch byte -} - -// New returns a new lexer -func New(input string) *Lexer { - l := &Lexer{input: input} - l.readChar() - return l -} - -// Read the current character and advances our position in the input string. -func (l *Lexer) readChar() { - // if we've reached the end of the input, we set the current character to 0, - // which is the ASCII code for NUL. - if l.readPosition >= len(l.input) { - l.ch = 0 - } else { - l.ch = l.input[l.readPosition] - } - l.position = l.readPosition - l.readPosition++ -} - -func (l *Lexer) readIdentifier() string { - position := l.position - for isLetter(l.ch) { - l.readChar() - } - return l.input[position:l.position] -} - -func (l *Lexer) readNumber() string { - position := l.position - for isDigit(l.ch) { - l.readChar() - } - return l.input[position:l.position] -} - -// we don't care about white space characters, we skip them when we find them. -func (l *Lexer) skipWhitespace() { - for l.ch == ' ' || l.ch == '\t' || l.ch == '\n' || l.ch == '\r' { - l.readChar() - } -} - -// peekChar returns the character at position (which is the next charatecter), -// but does not increment `readPosition` and `position`. -// This is needed to read tokens that are composed of two characters (e.g. `==`). -func (l *Lexer) peekChar() byte { - if l.readPosition >= len(l.input) { - return 0 - } - return l.input[l.readPosition] -} - -// NextToken reads the next token from the lexer and returns the current token. -func (l *Lexer) NextToken() token.Token { - var tok token.Token - - l.skipWhitespace() - - switch l.ch { - case '=': - if l.peekChar() == '=' { - ch := l.ch - l.readChar() - literal := string(ch) + string(l.ch) - tok = token.Token{Type: token.EQ, Literal: literal} - } else { - tok = newToken(token.ASSIGN, l.ch) - } - case '+': - tok = newToken(token.PLUS, l.ch) - case '-': - tok = newToken(token.MINUS, l.ch) - case '!': - if l.peekChar() == '=' { - ch := l.ch - l.readChar() - literal := string(ch) + string(l.ch) - tok = token.Token{Type: token.NOT_EQ, Literal: literal} - } else { - tok = newToken(token.BANG, l.ch) - } - case '*': - tok = newToken(token.ASTERISK, l.ch) - case '/': - tok = newToken(token.SLASH, l.ch) - case '<': - tok = newToken(token.LT, l.ch) - case '>': - tok = newToken(token.GT, l.ch) - - case ';': - tok = newToken(token.SEMICOLON, l.ch) - case ',': - tok = newToken(token.COMMA, l.ch) - case '(': - tok = newToken(token.LPAREN, l.ch) - case ')': - tok = newToken(token.RPAREN, l.ch) - case '{': - tok = newToken(token.LBRACE, l.ch) - case '}': - tok = newToken(token.RBRACE, l.ch) - case 0: - tok.Literal = "" - tok.Type = token.EOF - default: - if isLetter(l.ch) { - tok.Literal = l.readIdentifier() - tok.Type = token.LookupIdent(tok.Literal) - return tok - } else if isDigit(l.ch) { - tok.Type = token.INT - tok.Literal = l.readNumber() - return tok - } else { - tok = newToken(token.ILLEGAL, l.ch) - } - - } - - l.readChar() - return tok -} - -func newToken(tokenType token.TokenType, ch byte) token.Token { - return token.Token{Type: tokenType, Literal: string(ch)} -} - -func isLetter(ch byte) bool { - return 'a' <= ch && ch <= 'z' || 'A' <= ch && ch <= 'Z' || ch == '_' -} - -func isDigit(ch byte) bool { - return '0' <= ch && ch <= '9' -} diff --git a/users/fcuny/exp/monkey/pkg/lexer/lexer_test.go b/users/fcuny/exp/monkey/pkg/lexer/lexer_test.go deleted file mode 100644 index fdea1d3..0000000 --- a/users/fcuny/exp/monkey/pkg/lexer/lexer_test.go +++ /dev/null @@ -1,125 +0,0 @@ -package lexer - -import ( - "monkey/pkg/token" - "testing" -) - -func TestNextToken(t *testing.T) { - input := `let five = 5; -let ten = 10; - -let add = fn(x, y) { - x + y -}; - -let result = add(five, ten); -!-/*5; -10 > 5; - -if (5 < 10) { - return true; -} else { - return false; -} - -10 == 10; -10 != 9; -` - - tests := []struct { - expectedType token.TokenType - expectedLiteral string - }{ - {token.LET, "let"}, - {token.IDENT, "five"}, - {token.ASSIGN, "="}, - {token.INT, "5"}, - {token.SEMICOLON, ";"}, - - {token.LET, "let"}, - {token.IDENT, "ten"}, - {token.ASSIGN, "="}, - {token.INT, "10"}, - {token.SEMICOLON, ";"}, - - {token.LET, "let"}, - {token.IDENT, "add"}, - {token.ASSIGN, "="}, - {token.FUNCTION, "fn"}, - {token.LPAREN, "("}, - {token.IDENT, "x"}, - {token.COMMA, ","}, - {token.IDENT, "y"}, - {token.RPAREN, ")"}, - {token.LBRACE, "{"}, - {token.IDENT, "x"}, - {token.PLUS, "+"}, - {token.IDENT, "y"}, - {token.RBRACE, "}"}, - {token.SEMICOLON, ";"}, - - {token.LET, "let"}, - {token.IDENT, "result"}, - {token.ASSIGN, "="}, - {token.IDENT, "add"}, - {token.LPAREN, "("}, - {token.IDENT, "five"}, - {token.COMMA, ","}, - {token.IDENT, "ten"}, - {token.RPAREN, ")"}, - {token.SEMICOLON, ";"}, - - {token.BANG, "!"}, - {token.MINUS, "-"}, - {token.SLASH, "/"}, - {token.ASTERISK, "*"}, - {token.INT, "5"}, - {token.SEMICOLON, ";"}, - - {token.INT, "10"}, - {token.GT, ">"}, - {token.INT, "5"}, - {token.SEMICOLON, ";"}, - - {token.IF, "if"}, - {token.LPAREN, "("}, - {token.INT, "5"}, - {token.LT, "<"}, - {token.INT, "10"}, - {token.RPAREN, ")"}, - {token.LBRACE, "{"}, - {token.RETURN, "return"}, - {token.TRUE, "true"}, - {token.SEMICOLON, ";"}, - {token.RBRACE, "}"}, - {token.ELSE, "else"}, - {token.LBRACE, "{"}, - {token.RETURN, "return"}, - {token.FALSE, "false"}, - {token.SEMICOLON, ";"}, - {token.RBRACE, "}"}, - - {token.INT, "10"}, - {token.EQ, "=="}, - {token.INT, "10"}, - {token.SEMICOLON, ";"}, - - {token.INT, "10"}, - {token.NOT_EQ, "!="}, - {token.INT, "9"}, - {token.SEMICOLON, ";"}, - } - - l := New(input) - for i, tt := range tests { - tok := l.NextToken() - if tok.Type != tt.expectedType { - t.Fatalf("tests[%d] - tokentype wrong. expected=%q, got=%q", i, tt.expectedType, tok.Type) - } - - if tok.Literal != tt.expectedLiteral { - t.Fatalf("tests[%d] - tokenliteral wrong. expected=%q, got=%q", i, tt.expectedLiteral, tok.Literal) - } - } -} diff --git a/users/fcuny/exp/monkey/pkg/repl/repl.go b/users/fcuny/exp/monkey/pkg/repl/repl.go deleted file mode 100644 index 5e7b1d1..0000000 --- a/users/fcuny/exp/monkey/pkg/repl/repl.go +++ /dev/null @@ -1,30 +0,0 @@ -// Package repl provides a REPL to the monkey language. -package repl - -import ( - "bufio" - "fmt" - "io" - lexer "monkey/pkg/lexer" - token "monkey/pkg/token" -) - -const PROMPT = ">> " - -func Start(in io.Reader, out io.Writer) { - scanner := bufio.NewScanner(in) - for { - fmt.Print(PROMPT) - scanned := scanner.Scan() - - if !scanned { - return - } - - line := scanner.Text() - l := lexer.New(line) - for tok := l.NextToken(); tok.Type != token.EOF; tok = l.NextToken() { - fmt.Printf("%+v\n", tok) - } - } -} diff --git a/users/fcuny/exp/monkey/pkg/token/token.go b/users/fcuny/exp/monkey/pkg/token/token.go deleted file mode 100644 index 5eadc5e..0000000 --- a/users/fcuny/exp/monkey/pkg/token/token.go +++ /dev/null @@ -1,71 +0,0 @@ -// Package token provides a tokenizer for the monkey language. -package token - -// TokenType represents the type of the token -type TokenType string - -// Token represents a token, with the type and the literal value of the token -type Token struct { - Type TokenType - Literal string -} - -const ( - ILLEGAL = "ILLEGAL" - EOF = "EOF" - - IDENT = "IDENT" - INT = "INT" - - COMMA = "," - SEMICOLON = ";" - - LPAREN = "(" - RPAREN = ")" - LBRACE = "{" - RBRACE = "}" - - // The following tokens are keywords - FUNCTION = "FUNCTION" - LET = "LET" - TRUE = "TRUE" - FALSE = "FALSE" - IF = "IF" - ELSE = "ELSE" - RETURN = "RETURN" - - // The following tokens are for operators - ASSIGN = "=" - PLUS = "+" - MINUS = "-" - BANG = "!" - ASTERISK = "*" - SLASH = "/" - LT = "<" - GT = ">" - - EQ = "==" - NOT_EQ = "!=" -) - -// List of our keywords for the language -var keywords = map[string]TokenType{ - "fn": FUNCTION, - "let": LET, - "true": TRUE, - "false": FALSE, - "if": IF, - "else": ELSE, - "return": RETURN, -} - -// LookupIdent returns the token type for a given identifier. -// First we check if the identifier is a keyword. If it is, we return they -// keyword TokenType constant. If it isn't, we return the token.IDENT which is -// the TokenType for all user-defined identifiers. -func LookupIdent(ident string) TokenType { - if tok, ok := keywords[ident]; ok { - return tok - } - return IDENT -} diff --git a/users/fcuny/resume/default.nix b/users/fcuny/resume/default.nix deleted file mode 100644 index 86fbcf0..0000000 --- a/users/fcuny/resume/default.nix +++ /dev/null @@ -1,32 +0,0 @@ -{ pkgs, ... }: - -pkgs.stdenv.mkDerivation rec { - name = "resume"; - - src = ./.; - - nativeBuildInputs = [ pkgs.pandoc pkgs.git ]; - - installPhase = '' - mkdir -p $out - pandoc --self-contained --css styles/resume.css --from org --to html --output $out/resume.html resume.org - ''; - - publish = pkgs.writers.writeBashBin "publish" '' - set -ueo pipefail - export PATH=${pkgs.lib.makeBinPath [ pkgs.pandoc pkgs.git ]} - - cd $(git rev-parse --show-toplevel)/users/fcuny/resume - - out=$(git rev-parse --show-toplevel)/users/fcuny/blog/static/resume.html - pandoc --self-contained --css styles/resume.css --from org --to html --output $out resume.org - ''; - - meta = with pkgs.lib; { - description = "franck cuny's resume"; - homepage = "https://fcuny.net/resume.html"; - license = licenses.mit; - platforms = platforms.linux; - maintainers = [ ]; - }; -} diff --git a/users/fcuny/resume/readme.org b/users/fcuny/resume/readme.org deleted file mode 100644 index 169536e..0000000 --- a/users/fcuny/resume/readme.org +++ /dev/null @@ -1,6 +0,0 @@ -#+TITLE: Resume - -* Build -Run =nix build .#users.fcuny.resume -o users/fcuny/resume/result= to generate the resume. -* Publish -Running =nix run .#users.fcuny.resume.publish= will update the file [[file:~/workspace/world/users/fcuny/blog/static/resume.html][resume.html]] in the blog directory. After that you can commit and deploy the blog. diff --git a/users/fcuny/resume/resume.org b/users/fcuny/resume/resume.org deleted file mode 100644 index d83db69..0000000 --- a/users/fcuny/resume/resume.org +++ /dev/null @@ -1,40 +0,0 @@ -#+TITLE: Franck Cuny -#+AUTHOR: [[mailto:franck@fcuny.net][franck@fcuny.net]] -#+OPTIONS: toc:nil num:nil title:nil timestamp:nil prop:nil - -I'm a seasoned Site Reliability Engineer with experience in large scale distributed systems. I'm invested in mentoring junior and senior engineers to help them increase their impact. I'm always looking to learn from those around me. - -*Specializations*: distributed systems, containerization, debugging, software development, reliability. - -* Experience -** Roblox, San Mateo -| Site Reliability Engineer | Principal (IC6) | SRE Group | Feb 2022 - to date | -I'm the Team Lead for the Site Reliability group that was started at the end of 2021. - -I'm defining the road-map and identify areas where SREs can partner with different team to improve overall reliability of our services. -** Twitter, San Francisco -*** Compute -| Software Engineer | Senior Staff | Compute Info | Aug 2021 - Jan 2022 | -| Site Reliability Engineer | Senior Staff | Compute SREs | Jan 2018 - Aug 2021 | -Initially the Tech Lead of a team of 6 SREs supporting the Compute infrastructure. In August 2021 I changed to be a Software Engineer and was leading one of the effort to adopt Kubernetes for our on-premise infrastructure. As a Tech Lead I helped define number of internal processes for the team, from on-call rotations to postmortem processes. - -Twitter's Compute is one of the largest Mesos cluster in the world (XXX thousands of nodes across multiple data centers). The team defined KPIs, improved automation to mange the large fleet of bare metal machines, defined APIs for maintenance with partner teams. - -In addition to supporting Aurora/Mesos, I also lead a number of effort related to Kubernetes, both on-premise and in the cloud. - -Finally, I've helped Twitter save XX of millions of dollar in hardware by designing and implementing strategies to significantly improve the hardware utilization of our bare metal infrastructure. -*** Storage -| Site Reliability Engineer | Staff | Storage SREs | Aug 2014 - Jan 2018 | -For 4 years I supported the Messaging and Manhattan teams. I moved all the pub-sub systems from bare-metal deployment to Aurora/Mesos, being the first storage team to adopt the Compute orchestration platform. This helped reducing operations, time to deploy, and improve overall reliability. I pushed for adopting 10Gb+ networking in our data center to help our team to scale. I was the SRE Tech Lead for the Manhattan team, helping with performance, operation and automation. -** Senior Software Engineer - Say Media, San Francisco -| Software Engineer | Senior SWE | Infrastructure | Aug 2011 - Aug 2014 | -During my time at Say Media, I worked on two different teams. I started as a software engineer in the platform team building the various APIs; I then transitioned to the operation team, to develop tooling to increase the effectiveness of the engineering organization. -** Senior Software Engineer - Linkfluence, Paris -| Software Engineer | Senior SWE | Infrastructure | July 2007 - July 2011 | -I was one of the early engineers joining Linkfluence in 2007. I led the development of the company's crawler (web, feeds). I was responsible for defining the early architecture of the company, and designed the internal platforms (Service Oriented Architecture). -I helped the company to contribute to open source projects; contributed to open source projects on behalf of the company; represented the company at numerous open sources conferences in Europe. -* Technical Skills -- *Languages* Python, Go, Ruby, Perl -- *Frameworks* Kubernetes, Aurora, Mesos -- *Databases* RDBMS, NOSql -- *Dev tools* Git diff --git a/users/fcuny/resume/styles/resume.css b/users/fcuny/resume/styles/resume.css deleted file mode 100644 index 13ed9b3..0000000 --- a/users/fcuny/resume/styles/resume.css +++ /dev/null @@ -1,72 +0,0 @@ -body { - font-family: sans-serif; - font-size: 1em; - line-height: 1.8em; - color: #0e0e0b; - margin: 1em auto; - padding: 0 0.55em; - max-width: 50rem; -} - -h1 { - color: #0e0e0b; - font-size: 1.3rem; -} - -h2, h3 { - border-bottom: 1px solid #eee; - font-style: italic; -} -h2 { - margin-top: 1.25em; - margin-bottom: 0.41em; - font-size: 1.2rem; -} -h3 { - margin-top: 1.5em; - margin-bottom: 0.5em; - font-size: 1rem; -} - -hr{ - color:#000111; - background-color:#000111; - border:none; - height:1px -} - -a { - color:#047bc2; - transition:color .1s ease-in-out; -} - -table { - width: 100%; - border-spacing: 0px; - outline: none; -} -td{ - padding-right: 0.7em; -} -td:last-child { - text-align: right; -} -table, th, td { - font-family: monospace; - color: #000; -} - -#title-block-header { - padding-right: 10px; - font-size: 1.4em; - display: flex; - font-family: monospace; - justify-content: space-between; - align-items: center; - padding-top: 0.5rem; - border-bottom: 1px; -} - -#experience { - padding-top: 20px; -} -- cgit 1.4.1