Skip to content

Instantly share code, notes, and snippets.

View raboof's full-sized avatar

Arnout Engelen raboof

View GitHub Profile
@raboof
raboof / keybase.md
Created August 12, 2014 05:40
Keybase proof

Keybase proof

I hereby claim:

  • I am raboof on github.
  • I am raboof (https://keybase.io/raboof) on keybase.
  • I have a public key whose fingerprint is B354 2F13 5550 0168 DD4F F2FA 1431 BC1D 5327 EB56

To claim this, I am signing this object:

@raboof
raboof / FinalVersion.scala
Last active August 29, 2015 14:05 — forked from agemooij/FinalVersion.scala
Functional 'add to basket' experiments
def addItem(newItem: BasketItem): BasketState = {
copy(
items.foldRight((false, List.empty[BasketItem])) {
case (item, (_, out)) if (item.matchesProductAndSizeOf(newItem)) ⇒ (true, item.incrementNumberBy(newItem.numberOfProducts) :: out)
case (item, (didSomethingMatch, out)) ⇒ (didSomethingMatch, item :: out)
} match {
case (false, _) ⇒ newItem :: items
case (true, modifiedItems) ⇒ modifiedItems
}
)
import akka.actor.ActorPath
trait AtLeastOnceTransmission[A] extends akka.persistence.AtLeastOnceDelivery {
private var unconfirmed = Map[A, Set[Long]]()
def transmit(destination: ActorPath, transmissionId: A, message: Any): Unit = {
deliver(destination, { deliveryId ⇒
unconfirmed = add(unconfirmed, transmissionId, deliveryId)
message
})
@raboof
raboof / mapValue
Created April 24, 2015 11:59
mapValue
implicit class PimpMyMap[A,B](map: Map[A,B]) {
def mapValue(a: A, f: B =>B) = map.map {
case (`a`, b) => (a, f(b))
case other => other
}
}
@raboof
raboof / MultiMap.scala
Last active February 23, 2016 21:03
MultiMap
type ListMultiMap[A, B] = Map[A, List[B]]
implicit class ListMultiMapOps[A, B](val map: ListMultiMap[A, B]) extends AnyVal {
/** May be overridden */
def makeList: List[B] = Nil
def addBinding(key: A, value: B): ListMultiMap[A, B] = map + (key -> { value :: map.getOrElse(key, makeList) })
def removeBinding(key: A, value: B): ListMultiMap[A, B] = map.get(key) match {
case None => map
@raboof
raboof / .ctags
Last active November 8, 2019 12:40
--fields=+l
--verbose=no
--recurse=yes
--tag-relative=yes
--tag-relative=yes
--exclude=target
--exclude=.git
--langdef=scala
--langmap=scala:.scala
--regex-scala=/^[ \t]*((abstract|final|sealed|implicit|lazy)[ \t]*)*(private|protected)?[ \t]*class[ \t]+([a-zA-Z0-9_]+)/\4/c,classes/
@raboof
raboof / styles.css
Last active February 2, 2016 09:07
Atom.io styles for use on a high-DPI screen
html {
font-size: 22px
}
linter-message {
font-size: 22px
}
@media (min-width: 1920px) {
[theme-one-dark-ui-layoutmode="auto"] { font-size: @font-size + 10px; }
}
@raboof
raboof / onename.txt
Created September 15, 2015 23:06
onename verification
Verifying that +raboof is my blockchain ID. https://onename.com/raboof
@raboof
raboof / jdk8binderror.patch
Created October 9, 2015 20:17
What if... java BindExceptions would actually tell you *which* address is already in use?
diff -r d3b0a91b15b3 make/mapfiles/libjava/mapfile-vers
--- a/make/mapfiles/libjava/mapfile-vers Tue Oct 06 12:54:22 2015 +0300
+++ b/make/mapfiles/libjava/mapfile-vers Fri Oct 09 22:15:40 2015 +0200
@@ -56,6 +56,7 @@
JNU_ThrowArrayIndexOutOfBoundsException;
JNU_ThrowByName;
JNU_ThrowByNameWithLastError;
+ JNU_ThrowByNameWithLastErrorAndMsg;
JNU_ThrowClassNotFoundException;
JNU_ThrowIllegalAccessError;
@raboof
raboof / nametrainer.js
Created October 27, 2015 07:41
Poor man's Xebia name-trainer
/*
* Usage:
* - open https://updates.xebia.com/smoelenboek/
* - paste this file into chrome developer tools js console
* - look at the picture in the top-left corner and choose from the names in the js console
*/
images = jQuery('dt.portrait img')
answer = [ , , , ]