Skip to content

Instantly share code, notes, and snippets.

Avatar

Jef Claes JefClaes

View GitHub Profile
@JefClaes
JefClaes / compare.sh
Last active Aug 18, 2020
Compare image versions between kubernetes contexts
View compare.sh
CONTEXTS=("a" "b" "c")
FILES=()
for CTX in ${CONTEXTS[@]}; do
kubectl config use-context $CTX
FN="$CTX.txt"
kubectl get pods --all-namespaces -o jsonpath="{..image}" | tr -s '[[:space:]]' '\n' | sort | uniq > $FN
FILES+=("$FN")
done
View fast_projectionts.fsx
open System
open System.Collections.Generic
let consoleColor (fc : ConsoleColor) =
let current = Console.ForegroundColor
Console.ForegroundColor <- fc
{ new IDisposable with
member x.Dispose() = Console.ForegroundColor <- current }
let cprintf color str = Printf.kprintf (fun s -> use c = consoleColor color in printf "%s" s) str
View dddeu.md

The Breakers

When we design a model, we unwittingly imbue it with our own naïve view of the world. Once it makes its way to the unforgiving real world, we learn that not everyone shares that view. Then your infant model will actively be put to the test. Breakers will scan the model surface for cracks, trying to poke holes in its core properties, finding a way to abuse the assumptions of its creator.

In this series of tales, I'll take you on a journey, visiting various (broken) models at work in the casino world (and in yours), uncovering their weaknesses and possible remedies.

Each time we find ourselves on unknown territory - your core domain, we put ourselves at risk. How do you foster an environment, where a healthy dose of paranoia and misanthropy, ensures that you build a strong enough defense mechanism, keeping those that are up to no good, at bay?

@JefClaes
JefClaes / gist:6dd5ae9401226e112f70
Last active Aug 29, 2015
Detecting unused code I
View gist:6dd5ae9401226e112f70
1>C:\Paket\src\Paket.Core\Utils.fs(88,9): warning FS1182: The value 'fi' is unused
1>C:\Paket\src\Paket.Core\Utils.fs(361,46): warning FS1182: The value 'econt' is unused
1>C:\Paket\src\Paket.Core\Utils.fs(361,52): warning FS1182: The value 'ccont' is unused
1>C:\Paket\src\Paket.Core\PackageSources.fs(97,25): warning FS1182: The value 'uri' is unused
1>C:\Paket\src\Paket.Core\RemoteDownload.fs(147,18): warning FS1182: The value 'downloaded' is unused
1>C:\Paket\src\Paket.Core\RemoteUpload.fs(71,16): warning FS1182: The value 'whyIsThisNeeded' is unused
1>C:\Paket\src\Paket.Core\RemoteUpload.fs(85,17): warning FS1182: The value 'progressSubscription' is unused
...
@JefClaes
JefClaes / gist:2ec6d6168353f099102f
Created Mar 15, 2015
Scaling promotion codes I
View gist:2ec6d6168353f099102f
public bool TryRedeem(UserId userId)
{
if (HasAlreadyBeenRedeemedByUser(userId)) return false;
if (NoLongerActive()) return false;
if (Depleted()) return false;
Apply(new PromotionCodeRedeemed(userId.Value));
return true;
}
@JefClaes
JefClaes / gist:3bc0f3a52b8389536846
Last active Aug 29, 2015
Playthrough Bonus III
View gist:3bc0f3a52b8389536846
printfn "%A" ( playUntilCleared ( Bonus.Create 10M 30M ) { Payout = 98M; Stake = 0.2M } )
// {Amount = 10M;
// Balance = 4.000M;
// Bets = 300.0M;
// Playthrough = 30M;}
View gist:24f42ef7c715b579711a
let rec playUntilCleared ( bonus : Bonus ) settings =
match bonus.Cleared with
| true -> bonus
| false ->
(
let bet = settings.Stake
let win = settings.Stake / 100M * settings.Payout
match bonus.AcceptsBet bet with
| false -> bonus
View gist:fb1a37ae1ca7b3d71bb5
type Bonus = { Amount : decimal; Balance : decimal; Bets : decimal; Playthrough: decimal; }
with
static member Create amount playthrough =
{ Amount = amount; Balance = amount; Bets = 0M; Playthrough = playthrough }
member x.Win amount =
{ x with Balance = x.Balance + amount }
member x.AcceptsBet amount =
x.Balance - amount >= 0M
member x.Cleared =
( x.Playthrough * x.Amount ) - x.Bets <= 0M
@JefClaes
JefClaes / gist:315fa7a3b66f10e73089
Created Jan 18, 2015
Averages are not good enough (4)
View gist:315fa7a3b66f10e73089
let standardDeviation input =
let avg = input |> Seq.average
let x = input |> Seq.map(fun x -> System.Math.Pow(float x - avg, float 2)) |> Seq.sum
let y = input |> Seq.length |> float
let variance = x / y
System.Math.Sqrt variance
// Average = 45.625; Standard Deviation = 20.87425148
@JefClaes
JefClaes / gist:1229fd20a7f271480b19
Created Jan 18, 2015
Averages are not good enough (3)
View gist:1229fd20a7f271480b19
let frequencyDistribution input =
input |>
Seq.groupBy (fun x ->
match x with
| x when x < 30.0 -> [ 0, 30 ]
| x when x < 70.0 -> [ 30, 70 ]
| x when x < 90.0 -> [ 70, 90 ]
| _ -> [ 90, System.Int32.MaxValue ] ) |>
Seq.map (fun (x, y) -> x, y |> Seq.length)
You can’t perform that action at this time.