Skip to content

Instantly share code, notes, and snippets.

Avatar

Senko Rašić senko

View GitHub Profile
@senko
senko / hey-gpt
Created March 29, 2023 17:52
Small bash script to use ChatGPT from command line
View hey-gpt
#!/bin/bash
if test -z "$1"; then
echo "Usage: $0 <prompt>"
exit 1
fi
if test -z "$OPENAI_API_KEY"; then
echo "OpenAI key is missing - \$OPENAI_API_KEY must be set"
exit 1
@senko
senko / sway-toggle-floating
Created December 22, 2022 16:23
Shell script to toggle window with specified ID as visible/hidden on current workspace, or start the app if it's not running
View sway-toggle-floating
#!/bin/bash
if test -z "$2"; then
echo "Usage: $0 <app_id> <command ...>"
exit 1
fi
app_id="$1"
shift
@senko
senko / toplang.py
Last active November 3, 2022 21:40
Get the most popular languages on Hacker News
View toplang.py
#!/usr/bin/env python
#
# Calculate top list of programming languages based on HN stories/comments/points
# More info: https://blog.senko.net/relative-popularity-of-programming-languages-on-hacker-news
from datetime import datetime, timedelta
from json import dump, load
from os.path import join, exists
from tempfile import gettempdir
from typing import Optional
@senko
senko / keybase.md
Created May 13, 2022 15:31
keybase.md
View keybase.md

Keybase proof

I hereby claim:

  • I am senko on github.
  • I am senko_boost (https://keybase.io/senko_boost) on keybase.
  • I have a public key ASAeEgK4it3B4MVJTgPeAhTTI2qYmvtWVXne7x3ZHmHNJgo

To claim this, I am signing this object:

@senko
senko / backup-repo-issues.py
Created July 12, 2019 09:24
Backup GitHub issues from a single repository
View backup-repo-issues.py
#!/usr/bin/env python
#
# Backs up all issues (open and closed) from a specified repository, together with their comments
# Uses GitHub API v3 and requires a valid API token
#
# Installation:
# python3 -m venv /path/to/virtualenv
# source /path/to/virtualenv/bin/activate
# pip install requests
View Why node ecosystem sucks
To anyone who asks why we're rewriting AWW backend in anything other than nodejs, here's an example. This is an output log from an automated server provisioning script that in theory should automatically install AWW. In practice, I have to fudge it every few months because the node packages keep breaking. This is even though we've pinned all our dependencies to an exact version.
Damn them all to hell.
^
/home/aww/.node-gyp/0.12.15/include/node/node.h:273:1: note: in expansion of macro ‘NODE_DEPRECATED’
NODE_DEPRECATED("Use FatalException(isolate, ...)",
^
/home/aww/.node-gyp/0.12.15/include/node/node.h: In function ‘v8::Local<v8::Value> node::Encode(const void*, size_t, node::encoding)’:
/home/aww/.node-gyp/0.12.15/include/node/node.h:287:62: warning: ‘v8::Local<v8::Value> node::Encode(v8::Isolate*, const void*, size_t, node::encoding)’ is deprecated (declared at /home/aww/.node-gyp/0.12.15/include/node/node.h:278): Use FatalException(isolate, ...) [-Wdeprecated-declarations]
@senko
senko / maybe.py
Last active January 28, 2022 09:16
A Pythonic implementation of the Maybe monad
View maybe.py
# maybe.py - a Pythonic implementation of the Maybe monad
# Copyright (C) 2014. Senko Rasic <senko.rasic@goodcode.io>
#
# Permission is hereby granted, free of charge, to any person obtaining a copy
# of this software and associated documentation files (the "Software"), to deal
# in the Software without restriction, including without limitation the rights
# to use, copy, modify, merge, publish, distribute, sublicense, and/or sell
# copies of the Software, and to permit persons to whom the Software is
# furnished to do so, subject to the following conditions:
#
@senko
senko / updated.py
Created July 11, 2013 09:04
updated - create and return a new Python dictionary by merging multiple dictionaries
View updated.py
#!/usr/bin/env python
#
# Written in 2013. by Senko Rasic <senko.rasic@dobarkod.hr>
# This code is Public Domain. You may use it as you like.
__all__ = ['updated']
def updated(dct, *others):
@senko
senko / i18n.py
Created March 21, 2013 14:08
Compile translations for all languages in a single map, for Django.
View i18n.py
from gettext import translation
import os.path
from django.conf import settings
def get_all_translations(domain):
"""Return a language code => translations mapping for all defined
languages. This is useful if in a single view you need to use
different translation catalogs at the same time.
@senko
senko / create-new-lxc.sh
Created March 1, 2013 13:00
Set up a new LXC virtual machine
View create-new-lxc.sh
#!/bin/bash
#
# Initialize new virtual server using LXC and set up networking and HTTP proxy
#
# Written by: Deni Bertovic <deni.bertovic@dobarkod.hr>
#
# Released into Public Domain. You may use, modify and distribute it as you
# see fit.
#
# This script will: