Skip to content

Instantly share code, notes, and snippets.

Mike Hearn mikehearn

Block or report user

Report or block mikehearn

Hide content and notifications from this user.

Learn more about blocking users

Contact Support about this user’s behavior.

Learn more about reporting abuse

Report abuse
View GitHub Profile
View nodejvm1.java
import net.plan99.nodejs.NodeJS;
public class Demo {
public static void main(String[] args) {
int result = NodeJS.runJS(() ->
NodeJS.eval("return 2 + 3 + 4").asInt()
);
System.out.println(result);
}
}
@mikehearn
mikehearn / kotin-native-win32.kt
Created Sep 28, 2018
Example of using Kotlin/Native on Windows
View kotin-native-win32.kt
typealias WSTR = CPointer<ShortVar>
private fun WSTR.toKString(): String = memScoped {
// Figure out how much memory we need after UTF-8 conversion.
val sz = WideCharToMultiByte(CP_UTF8, WC_ERR_INVALID_CHARS, this@toKString, -1, null, 0, null, null)
// Now convert to UTF-8 and from there, a String.
val utf8 = allocArray<ByteVar>(sz)
val r = WideCharToMultiByte(CP_UTF8, WC_ERR_INVALID_CHARS, this@toKString, -1, utf8, sz, null, null)
if (r == 0) throw RuntimeException("Could not convert to UTF-8")
utf8.toKString()
@mikehearn
mikehearn / di-helpers.kt
Created Dec 21, 2017
Simple dependency helpers
View di-helpers.kt
package net.corda.node.internal
import java.time.Clock
import java.time.Duration
import java.time.Instant
import java.time.ZoneId
import kotlin.properties.ReadWriteProperty
import kotlin.reflect.KProperty
/**
@mikehearn
mikehearn / hello.html
Last active Sep 30, 2017
HTML version of the JavaFX JavaScript hello world sample
View hello.html
<html>
<head>
<title>Hello World!</title>
<style>
div.centered {
padding: 1em;
position: absolute;
top: 50%;
left: 50%;
margin-right: -50%;
@mikehearn
mikehearn / hello.js
Last active Sep 30, 2017
Hello World in JavaFX using Nashorn
View hello.js
// Run like this: jjs -fx hello.js
load("fx:base.js");
load("fx:controls.js");
load("fx:graphics.js");
// Set the title bar.
$STAGE.title = "Hello World!";
// Create a button and place it in a layout that will center it.
var button = new Button();
button.text = "Say 'Hello World'";
button.onAction = function() print("Hello World!");
View AmazonSearch.kt
enum SortBy {
Featured,
Relevance,
PriceLowToHigh,
PriceHighToLow,
Reviews
}
@PermazenType
class AmazonSearch(
@mikehearn
mikehearn / jlink --list-plugins
Created Jun 19, 2017
Output of jlink --list-plugins in Java 9 EA build 172
View jlink --list-plugins
View tinyram-opcodes.cpp
enum tinyram_opcode {
tinyram_opcode_AND = 0b00000,
tinyram_opcode_OR = 0b00001,
tinyram_opcode_XOR = 0b00010,
tinyram_opcode_NOT = 0b00011,
tinyram_opcode_ADD = 0b00100,
tinyram_opcode_SUB = 0b00101,
// Multiplications
tinyram_opcode_MULL = 0b00110,
View keybase.md

Keybase proof

I hereby claim:

  • I am mikehearn on github.
  • I am hearn (https://keybase.io/hearn) on keybase.
  • I have a public key ASAtBlfHGFrnjtqS-telpy4tveHymEWbfRtzMnMQYgKOMgo

To claim this, I am signing this object:

View BriefLogFormatter.kt
// A couple of inlined utility functions: the first is just a syntax convenience, the second lets us use
// Kotlin's string interpolation efficiently: the message is never calculated/concatenated together unless
// logging at that level is enabled.
inline fun <reified T : Any> loggerFor(): org.slf4j.Logger = LoggerFactory.getLogger(T::class.java)
inline fun org.slf4j.Logger.trace(msg: () -> String) {
if (isTraceEnabled) trace(msg())
}
/**
* A Java logging formatter that writes more compact output than the default.
You can’t perform that action at this time.