Skip to content

Instantly share code, notes, and snippets.

@Karn
Karn / LazyListScrollStateProvider.kt
Created March 16, 2023 05:22
Scroll Aware Lazy Column
import androidx.compose.foundation.Indication
import androidx.compose.foundation.LocalIndication
import androidx.compose.foundation.clickable
import androidx.compose.foundation.combinedClickable
import androidx.compose.foundation.interaction.MutableInteractionSource
import androidx.compose.foundation.lazy.LazyListState
import androidx.compose.runtime.remember
import androidx.compose.runtime.staticCompositionLocalOf
import androidx.compose.ui.Modifier
@Karn
Karn / LogController.kt
Last active October 18, 2023 14:59
An example implementation of a process to write logs to disk asynchronously using RxJava
typealias LogElement = Triple<String, Int, String?>
object LogController {
private var flush = BehaviorSubject.create<Long>()
private var flushCompleted = BehaviorSubject.create<Long>()
private var LOG_LEVELS = arrayOf("", "", "VERBOSE",
"DEBUG",
"INFO",
Notify.with(context)
// Defines the content of the Notification
.content {
title = "New dessert menu"
text = "The Cheesecake Factory has a new dessert for you to try!"
}
// Bubblize the Notfication!
.bubblize {
// Create bubble intent
val target = Intent(context, BubbleActivity::class.java)
@Karn
Karn / AndroidMainfest.xml
Last active May 31, 2020 16:48
Sample AndroidManifest Configuration for Notification Bubbles
<?xml version="1.0" encoding="utf-8"?>
<manifest ...>
<application
...>
<activity
android:name=".BubbleActivity"
...
<!-- Add the three lines below to the activity being shown -->
@Karn
Karn / BubbleActivity.kt
Last active September 29, 2019 01:13
A sample Activity
class BubbleActivity : AppCompatActivity() {
override fun onCreate(savedInstanceState: Bundle?) {
super.onCreate(savedInstanceState)
setContentView(R.layout.activity_bubble)
}
}
@Karn
Karn / boost.rb
Last active May 10, 2019 19:55
Boost 1.65.1 Formula
class Boost < Formula
desc "Collection of portable C++ source libraries"
homepage "https://www.boost.org/"
url "https://dl.bintray.com/boostorg/release/1.65.1/source/boost_1_65_1.tar.bz2"
sha256 "9807a5d16566c57fd74fb522764e0b134a8bbe6b6e8967b83afefd30dcd3be81"
revision 1
head "https://github.com/boostorg/boost.git"
bottle do
cellar :any
@Karn
Karn / insights-privacy-policy.html
Last active February 17, 2019 11:09
Insights - Privacy Policy
<h5>Updated: Feb 17th 2019.</h5>
<h6><a href="https://gist.github.com/Karn/5c43ca0479613e1f17dd1ee7cbdcd97e/revisions">Changelog</a></h6>
<p>We (the developer(s) of Insights) are serious about privacy. We want to make sure that we are transparent and open about the way we use your data to make your experience better.</p>
<p>This document is our Privacy Policy. It describes what information we collect from you and how we use it. Our Privacy Policy applies to the entire website at <a href="http://karn.io/insights">karn.io/insights</a>, the <a href="http://karn.io/insights">mobile application</a>, and all other services Insights provides. It covers account information - which is information we can link to you personally (with consent). This includes data like your username or mobile device&rsquo;s unique identifier.</p>
<p>As with the nature of technology, Insights reserves the right to update this Privacy Policy to reflect changes in the law, our data use &amp; collection, the features of our services, or advan
@Karn
Karn / insights-faq.html
Last active February 17, 2019 11:05
Insights FAQ
<h5>Updated: Feb 15th 2019.</h5>
<h6><a href="https://gist.github.com/Karn/0c86ef7ce85feba161d15d3c14a27a10/revisions">Changelog</a></h6>
<p>Account security is very important. We want to make sure that we are transparent and open about the way we use your data to make your experience better.</p>
<p>The privacy policy is available <a href="/insights/privacy">here</a></p>
<p>As always, you can get in touch by email at <a href="mailto:hello@karn.io">hello@karn.io</a> with any questions you may have.</p>
&nbsp;
<p><i>1. How does login work?</i></p>
<p>Insights uses your credentials to authenticate with Instagram the same way that the official application does. However, in some cases, we may default to an alternate method of logging you in which can sometimes result in an email notifying you of a login being sent to the email associated with the account.</p>
<p>If you recieve an email, it should indicate your current device and your location as well as date of login (you may need to convert this to your timezone)
@Karn
Karn / states.py
Created July 29, 2017 07:19
Python State Machine - States
class State(object):
"""
We define a state object which provides some utility functions for the
individual states within the state machine.
"""
def __init__(self):
print 'Processing current state:', str(self)
def on_event(self, event):
@Karn
Karn / simple_device.py
Created July 29, 2017 07:18
Python State Machine - Simple State Machine
from states import LockedState
class SimpleDevice(object):
"""
A simple state machine that mimics the functionality of a device from a
high level.
"""
def __init__(self):
""" Initialize the components. """