Skip to content

Instantly share code, notes, and snippets.

View otikev's full-sized avatar
🏠
Working from home

Kevin Otieno otikev

🏠
Working from home
  • Microsoft
  • Nairobi
  • 22:26 (UTC +03:00)
  • X @Otikev
View GitHub Profile
@otikev
otikev / SillyMpesaMessageParser.java
Created January 24, 2018 18:30
A sample Parser for M-PESA SMSs. This works as of Jan 24th 2018. The format of the SMSs might/will change in future and this will not be relevant any more.
import java.util.HashMap;
import java.util.Map;
import java.util.regex.Matcher;
import java.util.regex.Pattern;
/**
* 24 Jan, 2018
* Parses MPESA SMS String through simple String manipulation. And a tiny bit of regex :-D
*/
public class SillyMpesaMessageParser {
@otikev
otikev / commands.md
Last active February 26, 2020 16:17
Common ADB Commands that I use on a daily basis

Open Settings app

adb shell am start -a android.settings.SETTINGS

Check App version

adb shell dumpsys package <PACKAGE> | grep versionName

Force stop an app

adb shell am force-stop

@otikev
otikev / gist:717b05830bce6cb5b013e97a1bf0c050
Created April 26, 2018 16:13
Postgres trigger for an update
CREATE OR REPLACE FUNCTION categorySyncLogUpdate()
RETURNS trigger AS $$
BEGIN
INSERT INTO shared.sync_logs(record_id,record_type,log_type) VALUES (NEW.id,1,2);
RETURN NEW;
END;
$$ LANGUAGE 'plpgsql';
CREATE TRIGGER update_category_sync_log AFTER UPDATE ON jobs.categories FOR EACH ROW
EXECUTE PROCEDURE categorySyncLogUpdate();
@otikev
otikev / StereoVolumeProcessor.java
Created March 14, 2019 19:16
An ExoPlayer AudioProcessor that can independently set volumes of left or right stereo channels
public class StereoVolumeProcessor implements AudioProcessor {
private int channelCount;
private int sampleRateHz;
private int[] pendingOutputChannels;
private boolean active;
private int[] outputChannels;
private ByteBuffer buffer;
private ByteBuffer outputBuffer;