Skip to content

Instantly share code, notes, and snippets.

View Shadowfiend's full-sized avatar

Antonio Salazar Cardozo Shadowfiend

View GitHub Profile
Shadowfiend / Turbomint.sol
Created February 16, 2020 00:11
Quick and dirty draft contract to allow matching unqualified tBTC Deposit Token holders with accounts willing to front them TBTC and take on ownership of the TDTs (for a fee).
View Turbomint.sol
pragma solidity >=0.4.22 <0.7.0;
interface IERC721 {
function approve(address to, uint256 tokenId) external;
function transferFrom(address from, address to, uint256 tokenId) external;
function exists(uint256 tokenId) external view returns (bool);
interface IERC20 {
function transferFrom(address sender, address recipient, uint256 amount) external returns (bool);

Keybase proof

I hereby claim:

  • I am shadowfiend on github.
  • I am shadowfiend ( on keybase.
  • I have a public key whose fingerprint is 917B 2CF5 A4D5 8414 E61B 2B90 AFF2 26F4 A6B6 4797

To claim this, I am signing this object:

(function git-branch-for (document)
(let ((directory (((document fileURL) path) stringByDeletingLastPathComponent))
(manager (NSFileManager defaultManager)))
(let (directory-with-git (directory stringByAppendingPathComponent:".git"))
(if (manager directoryExistsNamed:directory-with-git)
(let (previous-directory (manager currentDirectoryPath))
(manager changeCurrentDirectoryPath:directory)
(let (branches ((NSString stringWithShellCommand:"git branch -l")))
(let (current-branch ((/^\* (.*)$/ findInString:branches) groupAtIndex:1))
(manager changeCurrentDirectoryPath:previous-directory)
Shadowfiend / gist:5989309
Last active December 19, 2015 17:09
Fully functional lift-formality example, with some additions for DateMidnight handling (these will move into lift-formality very soon). Drop this in a Lift project and invoke the Tester.doIt snippet on your form (data-lift="Tester.doIt") and you'll be in bidness.
View gist:5989309
class Tester {
import com.withoutincident.formality._
import Formality._
import Html5Validations._
import org.joda.time.DateMidnight
import org.joda.time.format.DateTimeFormat
private implicit val dateMidnightValueConverter = { value: String =>
val locale = S.locale
Shadowfiend / FormHelpers.scala
Created February 26, 2013 20:58
ajaxOnSubmit function to use in CssSelectorTransforms to add ajaxSubmit behavior to both button and input submit elements.
View FormHelpers.scala
package net.liftweb.http
import scala.xml._
import net.liftweb.common._
import js._
import net.liftweb.util.Helpers._
object FormHelpers {
Shadowfiend / Layout.scala
Created November 5, 2012 19:41
Layout snippet that excludes the layout for AJAX requests + JS for retaining functions for AJAX loaded pages.
View Layout.scala
package com.openstudy { package snippet {
import scala.xml._
import net.liftweb.http.S
import net.liftweb.util.Helpers._
class Layout {
def render(xhtml:NodeSeq) = {
if ( == Full(true)) {
S.skipXmlHeader = true
Shadowfiend / gist:3007331
Created June 27, 2012 22:35
Code to rehydrate Lift comets.
View gist:3007331
liftComet.lift_sessionLost = function() {
$('<iframe src="' + location.toString() + '">')
.attr('id', 'reload-iframe')
var newWindow = $('#reload-iframe')[0].contentWindow
function preventInitialCometTransaction() {
if (newWindow.liftComet && typeof newWindow.liftComet.lift_cometEntry == 'function') {
liftComet.lift_cometEntry = newWindow.liftComet.lift_cometEntry;
View gist:3005301
* A structural type for an expression that has a getFirst and a getSecond method
* which both return a Symbols.Type.
type TwoPartExpression = {
def getFirst : Symbols.Type
def getSecond : Symbols.Type
Shadowfiend / Bundles.scala
Created May 25, 2012 21:40
Lift snippet for bundle support in conjunction with Shadowfiend/sbt-resource-management.
View Bundles.scala
package com.openstudy { package snippet {
import scala.xml._
import net.liftweb.common._
import net.liftweb.http._
import LiftRules._
import net.liftweb.util._
import Helpers._
Shadowfiend /
Created May 8, 2012 21:40
DataHolder is used to manage model objects with knockout observable values.
# DataHolder handles most Knockout binding situations for properties
# transparently. You can instantiate a DataHolder with a set of attributes
# that are turned into observable properties of the DataHolder.
# Attributes passed in that are functions are not wrapped in an observable.
# Additionally, all attributes whose names end in `Fn' are ensured to be
# wrapped in functions and set as is, without an observable.
# All attributes are passed through the preprocessAttribute function, which
# can be overridden in child classes. These can be used to do type