Skip to content

Instantly share code, notes, and snippets.

View berkus's full-sized avatar
🎯
Haptic drift

Berkus Decker berkus

🎯
Haptic drift
View GitHub Profile
@berkus
berkus / wasmRustNodeExample.md
Created April 4, 2019 06:48 — forked from ilyakmet/wasmRustNodeExample.md
WASM Rust to Node Example

WASM Rust to Node Example

Use only > 8.x.x NodeJS version

Install Rust before using this tutorial: curl https://sh.rustup.rs -sSf | sh

Create dirs:

mkdir wasmRustNodeExample

cd wasmRustNodeExample
@berkus
berkus / as_trait.rs
Last active March 29, 2019 16:12 — forked from rust-play/playground.rs
Returning Box<dyn Self> via helper trait
trait Trait: AsTrait {
fn get_answer(&self) -> i32;
}
struct S;
impl Trait for S {
fn get_answer(&self) -> i32 { 42 }
}
@berkus
berkus / FindFilesystem.cmake
Created February 18, 2019 10:11
Use std::filesystem or std::experimental::filesystem
# This is from https://github.com/vector-of-bool/pitchfork/blob/develop/cmake/FindFilesystem.cmake
include(CMakePushCheckState)
include(CheckIncludeFileCXX)
include(CheckCXXSourceCompiles)
cmake_push_check_state(RESET)
set(CMAKE_CXX_STANDARD 17)
set(have_fs FALSE)
@berkus
berkus / README.md
Last active February 1, 2019 11:12
Consuming the Twilio Programmable Chat SDK with debug symbols

For purposes of using fabric.io crashlytics or some other debugging needs, you might need to use version of Chat SDK with debug symbols.

Switching to it is easy:

Where you previously had a line implementation 'com.twilio:chat-android:4.0.2' similar to here you should just replace chat-android with chat-android-with-symbols, the full line would look like:

implementation 'com.twilio:chat-android-with-symbols:4.0.2'
@berkus
berkus / playground.rs
Created January 14, 2019 08:02 — forked from rust-play/playground.rs
Code shared from the Rust Playground
#![feature(result_map_or_else)]
extern crate serde; // 1.0.84
extern crate serde_derive; // 1.0.84
extern crate serde_json; // 1.0.34
use serde::Serialize;
#[derive(Debug, Serialize)]
#[serde(tag = "status", content = "result")]

1. Separation of immutable and mutable logic

Quite a lot of different people have been on the same trail of thought. Gary Bernhardt's formulation of a "functional core, imperative shell" seems to be the most voiced.

"Boundaries" - Gary Bernhardt

"Imperative shell" that wraps and uses your "functional core".. The result of this is that the shell has fewer paths, but more dependencies. The core contains no dependencies, but encapsulates the different logic paths. So we’re encapsulating dependencies on one side, and business logic on the other side. Or put another way, the way to figure out the separation is by doing as much as you can without mutation, and then encapsulating the mutation separately. Functional core — Many fast unit tests. Imperative shell — Few integration tests

https://www.youtube.com/watch?v=yTkzNHF6rMs

class utf8_text_view {
const char *text;
size_t bytes_count;
public:
friend class iterator;
class iterator {
const utf8_text_view &parent;
size_t offset;
public:
// From https://pastebin.com/m8JMuTWz
extern crate pnet;
// use getopts::Options;
use std::env;
use std::net::{IpAddr, Ipv4Addr};
use std::str::FromStr;
use pnet::transport::TransportChannelType::Layer4;
use pnet::transport::TransportProtocol::Ipv4;
use pnet::transport::{transport_channel, ipv4_packet_iter};
@berkus
berkus / channel_state.kt
Created March 20, 2018 12:38
Twilio Chat SDK channel handling
class ClientListener : ChatClientListener {
override fun onChannelSynchronizationChange(channel: Channel) {
// Join channel first to trigger synchronization
if (channel.status == Channel.SynchronizationStatus.ALL) { // Channel is fully synchronized
channel.members // not null
}
}
}
chatClient.setListener(ClientListener())