Skip to content

Instantly share code, notes, and snippets.

View sphrak's full-sized avatar
🐱
hax

Niclas sphrak

🐱
hax
  • Stockholm, Sverige
  • 02:22 (UTC +02:00)
View GitHub Profile
@sphrak
sphrak / benchmark.sh
Last active March 31, 2022 11:58
measure android app startup time
#!/bin/bash
# Simple bash script runs adb to measure startup time of android apps
trap ctrl_c INT
time=()
function ctrl_c() {
total=0
@sphrak
sphrak / terminal.md
Last active February 15, 2022 11:21
List of useful unix commands

Useful unix commands

recursively search files matching *.fileExt for pattern in current directory

grep --color -inr --include \*.kt 'SDK_INT' .

Detect how many gradle daemons are running

@sphrak
sphrak / git_commons.md
Last active January 25, 2021 13:59 — forked from ravibhure/git_rebase.md
Git commons

In your local clone of your forked repository, you can add the original GitHub repository as a "remote". ("Remotes" are like nicknames for the URLs of repositories - origin is one, for example.) Then you can fetch all the branches from that upstream repository, and rebase your work to continue working on the upstream version. In terms of commands that might look like:

Add the remote, call it "upstream":

git remote add upstream https://github.com/whoever/whatever.git

Fetch all the branches of that remote into remote-tracking branches, such as upstream/master:

@sphrak
sphrak / latency.txt
Created October 4, 2020 11:16 — forked from jboner/latency.txt
Latency Numbers Every Programmer Should Know
Latency Comparison Numbers (~2012)
----------------------------------
L1 cache reference 0.5 ns
Branch mispredict 5 ns
L2 cache reference 7 ns 14x L1 cache
Mutex lock/unlock 25 ns
Main memory reference 100 ns 20x L2 cache, 200x L1 cache
Compress 1K bytes with Zippy 3,000 ns 3 us
Send 1K bytes over 1 Gbps network 10,000 ns 10 us
Read 4K randomly from SSD* 150,000 ns 150 us ~1GB/sec SSD
@sphrak
sphrak / MainActivity.kt
Last active July 19, 2020 13:09
MVI Example 2 -- StateModel
class MainActivity : AppCompatActivity(R.layout.activity_main) {
@Inject
lateinit var viewModel: MainActivityViewModel
private var isInitialised: Boolean = false
override fun onCreate(savedInstanceState: Bundle?) {
super.onCreate(savedInstanceState)
@sphrak
sphrak / MainActivity.kt
Last active July 19, 2020 13:08
MVI -- Example 1 -- ConflatedBroadcastChannel
class MainActivity : AppCompatActivity(R.layout.activity_main) {
@Inject
lateinit var viewModel: MainActivityViewModel
@Inject
lateinit eventChannel: ConflatedBroadcastChannel<MainActivityView.Event>
private var isInitialised: Boolean = false
@sphrak
sphrak / kotlin-snippets.md
Last active May 14, 2020 18:05
kotlin-snippets

Kotlin Snippets

A tiny collection of Kotlin snippets that I find useful.

Measure Execution time

Keep in mind this is not an end all be all measurement since the jvm has indeterministic garbage collection but it can give you a general idea of whats taking time.

With return value

@sphrak
sphrak / semverdiff.sh
Last active March 5, 2020 09:55
a tiny script for outputting changelog diff between releases for (semver)
#!/bin/bash
# Usage
# chmod +x semverdiff.sh
# Get diff between 1.0.0..1.0.1
# ./semverdiff 1.0.1
get_diff() {
sed -n "/^## \[$1\]/,/^## /p" CHANGELOG.md | egrep "^(-|\s+)"
}
@sphrak
sphrak / MaskExtension.kt
Created February 8, 2020 20:52 — forked from maiconhellmann/MaskExtension.kt
MaskExtension wrote in Kotlin
import android.support.annotation.StringDef
import android.text.Editable
import android.text.TextWatcher
import android.widget.EditText
@StringDef(PHONE_9_MASK, PHONE_8_MASK, CPF_MASK, ZIP_CODE_PT_BR, MONTH_YEAR, CREDIT_CARD)
@Retention(AnnotationRetention.SOURCE)
annotation class MaskType
const val PHONE_9_MASK = "(##) #####-####"
@sphrak
sphrak / pkglist.txt
Created September 19, 2019 06:12
Archlinux package list
acpi
acpid
alsa-firmware
alsa-utils
android-studio
android-studio-beta
android-studio-canary
android-tools
atop
audacity